首页 > 编程知识 正文

51单片机流水灯论文,基于51单片机的心形流水灯

时间:2023-05-05 01:26:32 阅读:109426 作者:2316

51单片机通过三种方法实现流水灯一、排列流水灯二、移位函数流水灯三、移位算子流水灯

一.排列流水灯

分别对应LED1~7的点亮定义一组数组

然后,利用for循环代入p2,实现流水灯

# includereg 52.h # defineucharunsignedchar # defineuintunsignedintucharcodetable [8]={0x Fe,0xfd,0xfb,0xfb,0xfb,0xfb,0xf 7 for(x=0; x z; x ) for ) y=0; y 113; y; }void main () {uchar i; wile(1) for ) I=0; i8; I () {P2=table[i]; 延迟(300; } }

二、移位函数流水灯先定义p2为1111 1110

然后使用_crol_和_cror_函数进行移位

_crol_循环左移一位数,地位的补充移动到上位,cror循环右移一位数,上位的补充补充补充下位

# includereg 52.h # includeintrins.h/_crol_和_ crol _头文件# defineuintunsignedint # defineucharunsignededcharuch for(x=z; x 0; x-- ) for(y=114; y 0; y----; }void main () { temp=0xfe; P2=temp; 延迟(100; wile(1) temp=_crol_(temp,1 ); //循环左移一位数,地位互补前P2=temp; //_cror_循环向右移动1位,高位为低位的delay(100 ); }

三、移位算子流水灯先定义p2为1111 1111

然后用for进行循环和换档

将p2值向左移动1比特(高位比特舍弃、低位比特增补0 ),将p2的值向右移动1比特(高位比特舍弃、高位比特增补0 )

#includereg52.h //单片机头文件voiddelay(unsignedintXMS ); //延迟函数声明void main () {unsigned char i,j; //定义无符号字符类型变量I和j (范围为0~255 ) while )1)重复执行while循环体的程序) {i=0xff; 将1111 1111P2=i代入//I=I; //p2端口上的I值delay(500 ); //延迟500msfor(j=0; j8; j//8循环{i=i1; //I的值向左偏移1位(舍弃高位,低位补0 ) P2=i; 将//I的值分配给P2端口延迟(500 ); ///延迟500 ms } } void delay (unsignedintxms ) {unsigned int i,j; //无符号整形变量I (范围0~65535 ) for ) I=XMS; i0; I----//XMS次执行即延迟x毫秒for(j=115; j0; j----; //延迟1ms (给I提供1ms的延迟值,循环体为空时执行115次i--命令为1ms ) }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。