单片机课程设计2014年6月15日课程单片机课程设计题目花样流水灯院系电气工程及其自动化系专业班级1112班学生姓名温亿锋学生学号201111631227指导教师张瑛花样流水灯1一丶任务设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。二丶设计要求通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。三丶设计方案本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源组成。单片机流水灯循环控制系统硬件框图此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。四丶系统硬件设计4.1直流稳压电源电路AT89C51单片机时钟电路复位电路按键控制电路直流5V电源电路LED流水灯花样流水灯2对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定的直流电。直流稳压电源是电子设备的重要组成部分。本项目直流稳压电源为+5V。直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。三端固定式集成稳压电源电路图AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V直流电源。此处用3节1.5V的干电池供电。4.2单片机最小系统要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。花样流水灯3单片机最小系统4.3LED电路花样流水灯4LED流水灯显示电路LED流水灯显示电路如图所示,实际上是由8个发光二极管和8个电阻构成的电路。发光二极管与电阻对应串联,然后接在与之相对应的P2口上。通过软件编程对P2口输出高低电平来实现不同的闪烁花型。由于发光二极管的导通电压一般为1.7V以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择范围100Ω—3000Ω在此我们这里选用560Ω的电阻。4.4按键控制电路花样流水灯5按键控制电路如下图所示,是由6个按键开关构成的。他们分别接在单片机AT89C51的P1接口和P3.0口,Key1---Key5接在P1.0---P1.4,Key6接在P3.7上。为了一对一的控制LED灯的闪烁方式。当按下开关Key1时,LED流水灯系统闪烁第一种流水灯花型。当按下开关Key2时,LED灯系统闪烁第二种闪烁方式。当闭合Key6时,流水灯闪烁节拍变慢。键盘控制电路4.5串口电路串口电路为单片提供与PC机连接端口,为单片机提供下载程序到单片机程序存储器中。串口原理图如下图所示。串口也称串行通信接口,RS-232是目前最常用的一种串行通讯接口,由于其形状和针脚数量的原因,其接头又被称为DB9接头。RS-232针脚定义:2RXD接收数据、3TXD发送数据、5GND系统接地,一般就用到这几个引脚。花样流水灯6串口原理图MAX232芯片是专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。MAX23内部结构基本可分三个部分:第一部分是电荷泵电路:由1、2、3、4、5、6脚和4只电容构成,功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道:由7、8、9、10、11、12、13、14脚构成两个数据通道,其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道,8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出第三部分是供电:15脚DNG、16脚VCC(+5v)。花样流水灯7五丶系统的软件设计本设计是以单片机AT89C51为核心控制8个发光二极管5种闪烁方式的变换。硬件电路如图所示,八个发光二极管D1-D8分别接在单片机的P2.0-P2.7接口上,当给P2.0口输出“0”时,发光二极管点亮,当输出“1”时,发光二极管熄灭。可以运用输出端口指令MOVP0,A或MOVP0,#DATA,只要给累加器值或常数值,同理,接在P2.1~P2.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的成流水灯了。在此还应注意一点,由于视觉暂留效应以及单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到闪烁效果。程序启动时跳转到键盘判断模块程序中,此程序里面包含Key1-Key5的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应按键的流水灯显示的花型模块,与此同时,当按键Key6有闭合时,程序中调用延时程序时,给延时参数赋值上另一个值,是延时程序延时时间发生改变,以达到不同快慢节奏闪烁的流水灯。具体程序流程如下图所示。判断有无按键按下YN开始当Key1-Key5有键按下时调用延时程序调用彩灯循环程序当Key6按下时设定相应的延时参数R5的值主程序流程图花样流水灯8六丶系统调试与测试结果分析6.1系统仿真本设计使用的KeilC51软件来进行编程。KeilC51提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起。Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。仿真图如下:6.2仿真调试本系统的调试是把在Keil里面写好的程序通过编译不出现任何错误后将生成的后缀名为.HEX的文件加载到AT89C51单片机中。测试结果及状态分析花样流水灯9经以上仿真上测试证实,能实现本设计系统要求的预期的功能。结论本方案以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路,利用软件编程烧录程序到单片机来实现对LED流水灯进行控制,与其他LED流水灯相比该电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,其电路集成度高,工作原理简单,清晰明了,控制图案的花样多,移植性好。附录1程序主程序:ORG0000HLJMPMAINORG0040HMAIN:MOVP1,#0FFHMOVA,P1CJNEA,#11111110b,S1LCALLK1S1:CJNEA,#11111101b,S2LCALLK2S2:CJNEA,#11111011b,S3LCALLK3S3:CJNEA,#11110111b,S4LCALLK4S4:CJNEA,#11101111b,MAINLCALLK5LJMPMAIN按键程序:K1:MOVA,#01111111bC1:RLAMOVP2,ALCALLDelayJNBP1.1,K2序号测试项目测试方法测试结果行状态分析1是否能正常工作打开仿真电路图,加载程序,点击开始运行。无任何错误提示仿真电路正常2流水灯花型控制运行仿真,随机按下任意按键,观察流水灯显示效果。对应按键按下,流水灯出现不同花型。本设计实现了多控制、多闪烁的LED流水灯循环。3节奏快慢控制按闭合Key6,观察流水灯循跳动节奏当闭合Key6是,流水灯循环闪烁变慢。本设计实现了用快慢两种节拍实现花型交换。花样流水灯10JNBP1.2,K3JNBP1.3,K4JNBP1.4,ZLJMPC1K2:MOVP2,#0FEHLCALLDelayMOVP2,#0FCHLCALLDelayMOVP2,#0F8HLCALLDelayMOVP2,#0F0HLCALLDelayMOVP2,#0E0HLCALLDelayMOVP2,#0C0HLCALLDelayMOVP2,#80HLCALLDelayMOVP2,#00HLCALLDelayMOVP2,#80HLCALLDelayMOVP2,#0C0HLCALLDelayMOVP2,#0E0HLCALLDelayMOVP2,#0F0HLCALLDelayMOVP2,#0F8HLCALLDelayMOVP2,#0FCHLCALLDelayMOVP2,#0FEHLCALLDelayMOVP2,#0FFHLCALLDelayLJMPMAINZ:LJMPK5K3:MOVP2,#55HLCALLDelayMOVP2,#0AAHLCALLDelayMOVP2,#0FFHLJMPMAINK4:MOVP2,#01111110BLCALLDelayMOVP2,#00111100BLCALLDelayMOVP2,#00011000BLCALLDelayMOVP2,#00000000BLCALLDelayMOVP2,#10000001BLCALLDelayMOVP2,#11000011BLCALLDelayMOVP2,#11100111BLCALLDelayMOVP2,#11111111BLCALLDelayLJMPMAINK5:MOVP2,#01111110BLCALLDelayMOVP2,#10111111BLCALLDelayMOVP2,#01111110BLCALLDelayMOVP2,#10011111BLCALLDelayMOVP2,#01111110BLCALLDelayMOVP2,#10001111BLCALLDelayMOVP2,#01111110BLCALLDelayMOVP2,#10000111BLCALLDelayMOVP2,#01111110BLCALLDelayMOVP2,#10000011BLCALLDelayMOVP2,#01111110BLCALLDelay花样流水灯11MOVP2,#10000001BLCALLDelayMOVP2,#00HLCALLDelayMOVP2,#0FFHLCALLDelayMOVP2,#00HLCALLDelayMOVP2,#0FFHLCALLDelayLJMPMAIN延时程序:Delay:JNBP3.0,D1movr5,#01hLJMPD5D1:MOVr5,#04hD5:movr6,#0ffhD6:movr7,#0ffhD7:nopdjnzr7,D7djnzr6,D6djnzr5,D5retEND