单片机原理及系统课程设计专业:电气工程及其自动化班级姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2013 年 3 月 7 日基于单片机的流水灯设计摘要单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
本设计是以AT89C51单片机为彩灯控制方案,充分利用了8051芯片的I/O引脚。
系统以采用MCS-51系列单片机Intel8051为中心器件来设计LED流水灯系统,实现8组LED霓虹灯的左、右循环显示,并实现循环的速度可调。
本方案以嵌入式方式为基础,软硬件相结合,运用proteus,visio和仿真软件keil完成设计。
本设计优点是实际应用效果好,亮灯花样好,与其他彩灯相比体积小、件硬少、价格低、低能耗、电路结构简单及容易操作和阅读。
在现代社会中,彩灯具有广泛的发展天地。
关键字:AT89C51;单片机;LED流水灯AbstractMCU is a kind of integrated circuit chip, It is the use of large scale integrated ciruit technology has the ability to handle data central processor CPU RAM random access memory, read-only memory ROM, a variety of I/O port and interrupt system, timer / timer functions are integrated into one small but perfect computer system consisting of a silicon chip.The design is based on AT89C51 MCU as the lights control scheme, make full use of the 8051 chip I/O pin. System uses MCS-51 series single-chip microcomputer Intel8051 as the center to design LED water lamp system, the realization of the 8 group LED neon light left, right circular display, and realize the circulation speed adjustable. The scheme is based on the embedded mode, the combination of software and hardware, the use of Proteus, Visio and simulation software keil to complete the design. This design has the advantages of good actual application effect, good lighting pattern, compared with other lights of small size, low price, small pieces of hard, low energy consumption, simple circuit structure and easy to operate and reading. In modern society, with the development of world wide lantern.Keywords: AT89C51,MCU,LED water lamp1 引言1.1设计目的(1)学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力,进一步提高综合运用所学知识和设计能力的目的。
(2)掌握汇编语言程序设计方法。
(3)培养实践技能,提高分析和解决实际问题的能力,并具备一定程度的设计能力。
1.2设计任务及要求(1)掌握MCS-51系列89c51的原理。
(2)设计LED流水灯系统,实现8组LED霓虹灯的左、右循环显示。
(3)用protel软件完成原理电路图的绘制。
1.3设计方法本流水灯实际上就是一个带有八组发光二极管的单片机最小应用系统。
如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7组LED的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭就可以。
2 设计方案及原理2.1总体设计方案此次8组LED流水灯的设计是以AT89C51作为主控芯片,将P1分别接在8组LED实现显示,运用汇编语言编程来实现。
2.2系统组成框图系统组成框图如图1所示。
2.3系统原理组成此系统以AT89C51为主,利用时钟电路产生脉冲控制流水灯的节奏,同时接有复位电路解决故障灯问题,本设计还单独设计一个开关控制8组流水灯的关闭,由于本设计为花样流水灯,因此设计8组不同颜色的LED灯,来显示其花样。
图1 系统组成框图3 硬件设计3.1单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
51单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是反相放大器的输入端和输出端,由这个放大器与作为反馈元件的晶体振荡器和微调电容一起构成了一个稳定的自激振荡器。
此电路采用12MHz的石英晶体。
时钟电路如图2所示。
3.2复位电路第一次上电时,或者死机后,需要重新初始化,进行复位是把寄存器各种设置重新初始化,如图通电电容可以当短路,电容充电,所以RST脚为低电平。
由于复位条件必须51单片机的RET引脚保持两个机器周期以上的高电平,才完成一次复位。
利用RC电路可保持RST有两个机器周期以上的高电平,按下开关达到两个机器周期就成功复位一次。
复位电路如图3所示。
图2时钟电路图3复位电路4 软件设计本次软件设计我采用的是汇编语言编译,运用查表法来控制LED灯的流水作业。
运用查表法能够实现任意方式的流水,而且流水花样无限,只要改变流水花样数据表的流水数据就可以随意的添加或改变流水花样,真正实现随心所欲的流水灯效果。
我们先把流水灯数据建在一个以TAB为标号的数据表中,然后通过指令“MOVC A,@A+DPTR”把数据取到累加器A中,再送到P1口显示。
4.1流程图流程图如图4所示。
4.2程序清单程序清单如附录一所示。
5 系统仿真系统仿真图如附录二所示。
6 总结本次课程设计我设计的是流水灯的设计,以编程软件Proteus和仿真软件keil 为主。
初次实习单片机设计,硬件设计我选择了最为简单的8组LED灯设计,只运用一个AT89C51芯片、三个电路和一个开关,电路图如附录二所示。
软件设计是根据电路图所设计的,由于汇编语言比C语言简明,我选择运用汇编,我的设计可以用循环移位法和查表法,但前一种方法没有后一种流水灯花样灵活,查表法可以根据自己的意愿任意决定流水灯的流水作业,因此我选了查表法。
在程序中我特意加了个开关,由P0.0口控制,这样可以根据人们自己的意愿选择流水灯的打开和断开,最后汇编程序生成hex文件导入AT89C51芯片就可以实现流水灯的运转。
本次设计我特意用了各种颜色的LED灯来显示其花样。
最终本次设计的结果是实现了8组流水灯根据我数据表中的数据来显示流水花样,而且开关可控制开断。
图4 流程图参考文献[1] 王思明,张金敏,张鑫,苟军年,杨乔礼编著.单片机原理及应用系统[M].北京:科学出版社,2012[2] 冯博琴,吴宁主编.微型计算机原理与接口技术[M].北京:清华出版社,2007[3]谭浩强著.C程序设计[M].北京:清华出版社,2005附录一程序清单ORG 0000H ; 单片机上电后从0000H地址执行AJMP START ; 跳转到主程序存放地址处ORG 0030H ; 设置主程序开始地址START:MOV SP,#60H ; 设置堆栈起始地址为60HMOV DPTR,#TAB ; 流水花样表首地址送DPTRSTART1:JNB P0.0,LOOP ; 设计开关,由P0.0控制AJMP START1 ; 开关断开,则继续检查LOOP: CLR A ; 累加器清零MOVC A,@A+DPTR ; 取数据表中的值CJNE A,#0FFH,SHOW ; 检查流水结束标志AJMP START ; 所有花样流完,则从头开始重复流SHOW: MOV P1,A ; 将数据送到P1口ACALL DELAY ; 调用延时子程序INC DPTR ; 取数据表指针指向下一数据AJMP LOOP ; 继续查表取数据DELAY: ; 延时子程序MOV R0,#248 ; 延时一段时间D1: MOV R1,#248DJNZ R1,$DJNZ R0,D1RET ; 子程序返回TAB: ; 下面是流水花样数据表,用户可据要求任意编写DB 11111110B ; 二进制表示的流水花样数据,从低到高左移DB 11111101BDB 11111011BDB 11110111BDB 11101111BDB 11011111BDB 10111111BDB 01111111BDB 01111111B ; 二进制表示的流水花样数据,从高到低右移DB 10111111BDB 11011111BDB 11101111BDB 11110111BDB 11111011BDB 11111101BDB 11111110BDB 0FEH,0FDH,0FBH,0F7H ; 十六进制表示的流水花样数据DB 0EFH,0DFH,0BFH,7FHDB 7FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 3FH,9FH,0CFH,0E7HDB 0F3H,0FCH,7EH,5FHDB 0AFH,0D7H,0EBH,0F5HDB 0FAH,6FH,0B7H,0DBHDB 0EDH,0F6H,77H,0BBHDB 0DDH,0EEH,7BH,0BDHDB 0DEH,7DH,0BEH,7EHDB 1FH,8FH,0C7H,0E3HDB 0F1H,0F8H,7CH,3EHDB 9DH,0CBH,0D3H,0B9HDB 57H,0ABH,0D5H,0EAHDB 0FH,87H,0C3H,0E1HDB 0F0H,78H,3CH,1EHDB 99H,0A5H,5AH,8DHDB 0C3H,07H,83H,0C1HDB 0E0H,70H,38H,1CHDB 0EH,03H,81H,0C0HDB 60H,30H,18H,0CHDB 06H,03H,00H,00HDB 0FFHEND ; 程序结束附录二系统仿真图。