- 单片机C语言程序设计实训100例:基于STC8051+Proteus仿真与实战
- 彭伟
- 333字
- 2025-02-24 09:17:49
3.2 双向来回的流水灯
STC15的P1分别连接8只LED的阴极,LED的阳极则通过限流电阻连接VCC。程序运行时LED上下双向循环滚动点亮,产生走马灯效果。双向来回的流水灯电路如图3-3所示。

图3-3 双向来回的流水灯电路
1. 程序设计与调试
仿真电路中8只LED的阳极通过限流电阻接VCC,阴极逐一直接连接P1,将P1初值设为0xFE(11111110)时,将使P1.0连接的第0只LED点亮。当11111110向左循环移位时,可使8只LED形成循环走马灯效果。循环左移由函数_crol_完成,要注意添加头文件intrins.h。
另外,为实现更大延时,本案例程序先使用STC-ISP工具生成1ms延时函数Delay1ms(),然后定义void delay_ms(u16 x),并在其内部循环调用Delay1ms()。由于本例delay_ms的参数是u16,其延时参数取值可为1~65 535。
2. 实训要求
① 将LED改用阳极连接P1,仍实现走马灯效果。
② 将8只LED改接到其他端口,重新设计程序实现同样的功能。
3. 源程序代码
