首页 理论教育项目软件程序设计-优质实战教程,帮你入门

项目软件程序设计-优质实战教程,帮你入门

【摘要】:表6-2 流水灯流水样式描述表尝试从优化程序结构简化程序角度书写流水灯软件程序,从表6-2中可以看出,8只流水灯从左到右依次循环闪烁,将8只LED合成一个整体来考虑,利用循环移位指令,采用循环程序结构进行程序设计,在程序开始给P0口置数使得P0.0先为低电平,其他位为高电平,然后延时一段时间,再让这个数据向高位移动,然后再输出至P0口,从而实现“流水”效果。

从花样流水灯原理图6-2中可以看出,如果使其在P0.0口的LED1亮起来,那么只要置P0.0电平为低电平即可,如果使P0.0位的LED1熄灭,则P1.0电平置高电平。以此类推,P0.1~P0.7位连接的其他7只LED点亮和熄灭的方法与LED1点亮和熄灭方式相同。所以,为了实现流水灯功能,只要将发光二极管LED1~LED8依次点亮、熄灭。流水灯流水样式见表6-2,从表6-2可以看到通过逐个控制P0口的每个位来实现LED1~LED8的亮灭,8只LED便会一亮一暗做流水灯样式。但是如果按照8只LED亮灭顺序书写驱动软件,程序书写复杂。

表6-2 流水灯流水样式描述表

978-7-111-47690-0-Part02-13.jpg

尝试从优化程序结构简化程序角度书写流水灯软件程序,从表6-2中可以看出,8只流水灯从左到右依次循环闪烁,将8只LED合成一个整体来考虑,利用循环移位指令,采用循环程序结构进行程序设计,在程序开始给P0口置数使得P0.0先为低电平,其他位为高电平,然后延时一段时间,再让这个数据向高位移动,然后再输出至P0口,从而实现“流水”效果。由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,所以控制发光二极管亮、灭的时间间隔应该延时一段时间,恰当的流水延迟时间设置非常重要,否则看不到“流水”效果。采用循环结构设计的流水灯右移循环闪烁程序流程图如图6-3所示。

978-7-111-47690-0-Part02-14.jpg

978-7-111-47690-0-Part02-15.jpg(www.chuimin.cn)

978-7-111-47690-0-Part02-16.jpg

图6-3 流水灯程序流程图

结合2.3节关于单片机开发环境Keil C51的学习,建立工程LED2文件,并将上述代码在Keil环境下进行编译,程序成功编译结果如图6-4所示。同时在创建工程路径LED2文件夹下生成一个扩展名为.hex文件,供下载软件将生成的.hex文件下载到单片机中。

978-7-111-47690-0-Part02-17.jpg

图6-4 程序成功编译结果图