单片机与锁存器控制流水灯实验.doc
文本预览下载声明
实例1
程序如下
#includedelay.h的程序
#ifndef __delay_h__
#define __delay_h__
#includereg51.h
#define uint unsigned int
#define uchar unsigned char
void delay1ms()
{
uchar i,j;
for(i=0;i10;i++)
for(j=0;j33;j++)
;
}
void delaynms(uchar n)
{
uchar i;
for(i=0;in;i++)
delay1ms();
}
void delay(uint i)
{
while(--i);
}
#endif
/* 名称:8 只LED 左右来回点亮
说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/
#includereg51.h
#includedelay.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
void main()
{
uchar i;
P0=0xfe;
while(1)
{
for(i=0;i7;i++)
{
P0=_crol_(P0,1); //P2 的值向左循环移动
delaynms(150);
}
for(i=0;i7;i++)
{
P0=_cror_(P0,1); //P2 的值向右循环移动
delaynms(150);
}
}
}
实例2
#includereg51.h //包含单片机寄存器的头文件
#includedelay.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
uchar aa;
uchar i;
void main()
{
aa=0x7f; // aa=0xfe;
while(1)
{
P0=aa;
delaynms(500);
for(i=0;i7;i++)
{
P0=P01; //P0=P01;
P0=P0|0x80; //P0+=1;
delaynms(500);
}
//aa=_crol_(aa,1); 两个流水灯程序(上移,下移)
}
}
实例3用锁存器控制流水灯
#include reg51.h
#define uint unsigned int
void delay()
{
uint i,j;
for(i=0;i500;i++)
for(j=0;j110;j++)
;
}
void main()
{
uint i=0;
while(1)
{ P1=0x00;
// P1=0x01;
P2 = ~(1(i++%8)); //不考虑异常情况
delay();
P1=0x00;
}
}
显示全部