
基于AT89C51单片机的流水灯的设计与实现.doc
4页基于AT89C51单片机的流水灯的设计与实现【摘要】单片机具有体积小、控制功能强、功耗低等特点,所以在 工业控制和电子信息技术领域得到了广泛的应用木文设计了基于 AT89C51单片机的流水灯控制系统,介绍了系统硬件电路、软件结构和程 序的设计,对单片机技术的相关应用具有借鉴价值关键词】AT89C51单片机 流水灯在电子信息技术和自动化智能控制领域,单片机正以前所未有的速度 替代了传统的数字逻辑电路构成的控制系统由于单片机具有体积小、功 能强、成本低、应用面广等优点,所以单片机在我们的口常生活和工作中 无处不在、无处不有,可以说单片机已经渗透到了我们生活的各个领域 慕于单片机的流水灯设计与实现,全面的介绍了一个完整的单片机控制系 统,包括系统结构和硬件电路,软件流程和程序编写流水灯的控制对单 片机应用技术的教学入门和基础案例具有参考价值一、控制系统和硬件电路本文采用AT89C51单片机为控制器的流水灯系统,AT89C51是一种带 4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,工作电压范 围4.25〜5. 50V,工作频率0〜24MHz, AT89C51单片机为很多嵌入式控制 系统提供了一种灵活性高且价廉的方案且在使用AT89C51单片机时无须外 扩存储器[1-3] o本流水灯系统实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要 的软件组成的单个单片机控制系统,硬件原理如图1所示。
本流水灯系统使用AT89C51单片机来实现流水灯的控制的设计原理 是:P1的八个接口 Pl・0〜P1.7,都通过限流电阻连接着LED灯的阳极, 所有LED灯的阴极连接在0V,要让接在卩1.0 口的LED1亮起来,那么只耍 把P1.0 口的电平变为高电平就可以了;相反,如果要接在P1.0 口的LED1 熄灭,就要把P1.0 口的电平变为低电平;同样的方式控制接在Pl. 1-P1.7 口的其他7个LED的点亮和熄灭只要将发光二极管LED1-LED8依次点 亮、熄灭,8只LED灯便会一亮一暗的做流水灯了 [3-4] o在此还应注意一 点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们 在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水” 效果了,所以要人眼直接观察到流水灯的状态,需要在每个LED灯状态转 换间隔,进行一定时间的延时二、 系统的软件流程流水灯系统的控制器为单片机,完成硬件的设计和实现后,需耍根据 系统的控制要求告诉单片机怎么来进行工作,即编写程序控制单片机管脚 电平的高低变化,來实现发光二极管的一亮一灭那么通过软件编程的方 法来实现下而本文以最简单的流水灯控制功能,即实现8个LED灯的循 环点亮,图2为实现流水灯控制的系统的软件流程[5]。
三、 系统程序编程设计的思路是在程序一开始就给P1 口送一个数,这个数本身就 让P1・O先高,其他位为低,然后让这个数据向高位移动不就实现“流水” 效果,8051指令中没有让P1数据移动的指令,但有对累加器ACC中数据 左移或右移的指令,ACC在指令中常写为A,累加器A数据左移指令为〃RL A〃,累加器数据右移指令为〃RR A〃,累加器在数据传输和数据处理过程中 作用十分重要,累加器ACC为8位他可与片内所有单字节寄存器交换数 据,实际上卩1和其他端口在单片机中也是一个寄存器[6-7] o这样我们可 以将需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再 转送到P1 口,这样同样可以实现“流水”效果左侧程序就是流水灯的 程序 light water. asmo将上述程序编译并烧写到AT89C51数字芯片中,安装在设计好的实验 板上,可以看到程序的”流水”效果从单片机控制流水灯系统可以得出,设计一个完整的单片机控制系 统,需要对包括整体系统设计、硬件电路、软件设计、程序编写等每个环 节进行系统的规划和多次的动手实践调试,只有这样,才能全面系统的完 成单片机控制系统的要求参考文献:[1] 何立民•单片机应用系统设计[M]・北京:航空航天大学出版社, 1994.[2] 耿德根.AVR高速嵌入式单片机原理与应用[M]・北京:北京航空航 天大学出版社,2002.[3] 胡汉才•单片机原理及其接口技术[M].北京:清华人学出版社, 1996.[4] 易礼智•基于51单片机实现流水灯的若干种编程方法[J]・铜仁学院报,2012 (11): 125-127[5] 周航慈•单片机应用程序设计技术[M]・北京:北京航空航天大学出 版社,2001.[6] 王成瑞•汇编语言程序设计[M]•北京:高等教育出版社,2010.[7] 徐建民,邵艳华•汇编语言程序设计(第3版)[M]・北京:电子工 业出版社,2010.。












