设备准备及分析:
将JP10中的P0引脚与74HC245中的引脚用排线连接,结构如下图所示:
LED流水灯程序代码:
#include <REGX52.H> #include<INTRINS.H> void Delay500ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); i = 4; j = 129; k = 119; do { do { while (--k); } while (--j); } while (--i); } void main() { while(1) { P0=0x01; Delay500ms(); P0=0x02; Delay500ms(); P0=0x04; Delay500ms(); P0=0x08; Delay500ms(); P0=0x10; Delay500ms(); P0=0x20; Delay500ms(); P0=0x40; Delay500ms(); P0=0x80; Delay500ms(); } }
代码分析:
引入头文件:
#include <REGX52.H> #include<INTRINS.H>
右键点击头文件,选择打开查看头文件中的各种声明:
生成延时函数:
void Delay500ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); i = 4; j = 129; k = 119; do { do { while (--k); } while (--j); } while (--i); }
以上图片是由stc-isp软件自动生成的延迟五百毫秒的函数,不会的同学可以参考一下:用stc-isp自动生成延时函数
主函数代码及分析:
void main() { while(1) { P0=0x01; Delay500ms(); P0=0x02; Delay500ms(); P0=0x04; Delay500ms(); P0=0x08; Delay500ms(); P0=0x10; Delay500ms(); P0=0x20; Delay500ms(); P0=0x40; Delay500ms(); P0=0x80; Delay500ms(); } }
提醒:C51系列单片机编程中的数据格式为十六进制。
在while循环中分别将对应引脚赋为1,是其对应的LED灯循环点亮。
视频演示如下:
用C51单片机制作LED流水灯视频演示