- 51单片机C语言程序设计经典实例(第3版)
- 陈忠平 刘琼编著
- 637字
- 2025-02-24 17:45:19
任务3 “爱心”灯光设计
设计要求
使用单片机P1端口控制32个LED (D1~D32) 实现 “爱心”显示控制。
硬件设计
单片机的P1端口只有8个引脚,不能直接控制32个LED的显示,因此需要单片机外接扩展芯片(如译码器74154)。在桌面上双击图标,打开Proteus 8 Professional窗口。新建一个DEFAULT模板,添加表3-5所列的元器件,并完成如图3-23所示的硬件电路图设计。
表3-5 “爱心”灯光设计所用元器件

程序设计
所谓 “爱心”灯光,是指在图3-23所示电路中,首先是 D1 和 D17 点亮,延时片刻后D2和D18点亮,……,延时片刻后D16和D32点亮;然后是D15和D31点亮,延时片刻后D14和D30点亮,……,延时片刻后D1和D17点亮;循环重复上述过程。从显示规律可以看出,其显示效果可以理解为灯光左移与灯光右移的结合。由于使用了两个译码器芯片(U2和U3),其中U2驱动D1~D16,U3驱动D17~D32,而且每次有两个 LED 同时点亮,所以应该每次给单片机 P1 端口的高、低字节相同的值,如 0x00 可实现 D1 和 D17 点亮,0x11可实现D2和D18点亮,等等。
源程序


图3-23 “爱心”灯光电路图

调试与仿真
首先在Keil中创建项目,输入源代码并生成Debug.OMF文件,然后在Proteus 8 Professional中打开已创建的“爱心”灯光电路图并进行相应设置,以实现Keil与Proteus的联机调试。单击Proteus 8 Professional模拟调试按钮的运行按钮,进入调试状态。此时可以看到“爱心”灯光的显示效果:首先是D1和D17点亮,延时片刻后D2和D18点亮,……,延时片刻后D16和D32点亮,实现了灯光从上到下的显示;然后是D15和D31点亮,延时片刻后D14和D30点亮,……,延时片刻后D1和D17点亮;循环重复上述过程,其运行仿真效果图如图3-24所示。

图3-24 “爱心”灯光运行仿真效果图