background image

基于单片机的循环灯设计

1.引言

在科技如此发达的今天,社会对人才的要求的不断提升,当代大学生不仅

需要扎实的理论知识,还需要过硬的动手能力。作为自动化专业的学生,更应
该熟练掌握各种电路编辑软件,作为专业必需的技能更要及时地对这一类软件
的更新版本进行学习,其日趋强大的功能是对我们专业技能的补充。之前由于
培养过自己的动手能力,在本次课程设计中,本人使用单片机作为这次作业的
核心。课程设计通过使用 AT89S52 单片机和共阴二位数码管,综合应用基础电
子电路和单片机的知识,来实现该电路的制作。

通过实际程序设计和调试,逐步掌握块化程序设计方法和调试技术,通过

课程设计,掌握一单片机核心的电路设计的基本方法和技术,了解有关电路参
数的计算方法,通过完成一个包括电路设计和程序设计开发的完整过程,了解
开发单片机应用系统的全过程,为今后从事相应工作打下基础。

2.设计方案及原理

这次单片机课程设计,选择了循环灯控制设计,通过查阅各种文献资料,

再加上自己以前所学单片机课程的基础,大概的设计思路可概括为以下

8 个步

骤:

⑴ 通过累加器 A 给 P1 口送二进制数,驱动八个发光二极管,低电平发光,

高电平熄灭。

⑵ 编写延时一秒的子程序 DELAY,可通过软件定时,也可通过与定时器

中断配合来实现。

⑶ 调用 DELAY 延时程序。
⑷ 送 0FFH 给 P1 口,使发光二极管熄灭,再调用 DELAY 延时程序。使

发光二极管闪烁。

⑸ 送闪烁次数 10 给寄存器 R0,通过 DJNZ 指令,配合 DELAY 延时程序,

实现发关二极管闪烁,当闪烁十次后结束循环。

⑹ 执行 RR(循环右移)指令,指向下一个二极管,重复第 5 步。
⑺ 当 8 个发光二极管从左至右依次闪烁完毕后,执行 RL(循环左移)指

令,重复第

5 步,使二极管从右至左一次循环闪烁。

⑻ 当从右至左循环结束后,重复第 6 步,循环闪烁。
由于在起初的硬件中选择了共阳的二极管接法,所以通过给

P1 口输送低

电平

0,就可以使二极管发光,输送高电平 1 可使二极管熄灭。

单片机中的定时器有四种工作方式,由于工作方式

0 和工作方式 1 计数溢

出后,计数器都全为

0,因此,循环定时或循环计数应用时就存在反复设置计

数初值的问题。这不但影响精度,而且也给程序设计带来了不便。于是,选择
工作方式

2,它具有自动更新重新加载功能,即自动加载计数初值。在这种方