单片机课程设计2014年 6月 15日课 程单片机课程设计题 目 花样流水灯 院 系 电气工程及其自动化系 专业班级 1112班学生姓名 温亿锋 学生学号 201111631227 指导教师 张瑛一丶任务设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。
二丶设计要求通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。
三丶设计方案本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。
其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED 发光二极管和5V直流电源组成。
单片机流水灯循环控制系统硬件框图此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。
四丶系统硬件设计4.1 直流稳压电源电路对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。
电子设备除用电池供电外,还采用市电(交流电网)供电。
通过变压、整流、滤波和稳压后,得到稳定的直流电。
直流稳压电源是电子设备的重要组成部分。
本项目直流稳压电源为+5V。
直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。
下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。
三端固定式集成稳压电源电路图AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V 直流电源。
此处用3节1.5V的干电池供电。
4.2 单片机最小系统要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。
时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz 石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。
复位电路:确定单片机工作的起始状态,完成单片机的启动过程。
单片机系统的复位方式有上电自动复位和手动按键复位。
本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。
单片机最小系统4.3 LED电路LED流水灯显示电路LED流水灯显示电路如图所示,实际上是由8个发光二极管和8个电阻构成的电路。
发光二极管与电阻对应串联,然后接在与之相对应的P2口上。
通过软件编程对P2口输出高低电平来实现不同的闪烁花型。
由于发光二极管的导通电压一般为1.7V以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择范围100Ω—3000Ω在此我们这里选用560Ω的电阻。
4.4 按键控制电路按键控制电路如下图所示,是由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系统接地,一般就用到这几个引脚。
串口原理图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)。
五丶系统的软件设计本设计是以单片机AT89C51为核心控制8个发光二极管5种闪烁方式的变换。
硬件电路如图所示,八个发光二极管D1-D8分别接在单片机的P2.0-P2.7接口上,当给P2.0口输出“0”时,发光二极管点亮,当输出“1”时,发光二极管熄灭。
可以运用输出端口指令MOV P0,A或MOV P0,#DATA,只要给累加器值或常数值,同理,接在P2.1~P2.7口的其他7个LED的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的成流水灯了。
在此还应注意一点,由于视觉暂留效应以及单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到闪烁效果。
程序启动时跳转到键盘判断模块程序中,此程序里面包含Key1-Key5的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应按键的流水灯显示的花型模块,与此同时,当按键Key6有闭合时,程序中调用延时程序时,给延时参数赋值上另一个值,是延时程序延时时间发生改变,以达到不同快慢节奏闪烁的流水灯。
具体程序流程如下图所示。
六丶系统调试与测试结果分析6.1 系统仿真本设计使用的Keil C51软件来进行编程。
Keil C51提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起。
Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
仿真图如下:6.2 仿真调试本系统的调试是把在Keil里面写好的程序通过编译不出现任何错误后将生成的后缀名为.HEX的文件加载到AT89C51单片机中。
测试结果及状态分析经以上仿真上测试证实,能实现本设计系统要求的预期的功能。
结论本方案以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路,利用软件编程烧录程序到单片机来实现对LED流水灯进行控制,与其他LED流水灯相比该电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,其电路集成度高,工作原理简单,清晰明了,控制图案的花样多,移植性好。
附录1 程序主程序:ORG 0000HLJMP MAINORG 0040HMAIN:MOV P1,#0FFHMOV A,P1CJNE A,#11111110b,S1LCALL K1S1: CJNE A,#11111101b,S2LCALL K2 S2: CJNE A,#11111011b,S3LCALL K3S3: CJNE A,#11110111b,S4LCALL K4S4: CJNE A,#11101111b,MAIN LCALL K5LJMP MAIN按键程序:K1: MOV A,#01111111bC1: RL AMOV P2,ALCALL DelayJNB P1.1,K2JNB P1.2,K3JNB P1.3,K4JNB P1.4,ZLJMP C1K2: MOV P2,#0FEHLCALL DelayMOV P2,#0FCHLCALL DelayMOV P2,#0F8HLCALL DelayMOV P2,#0F0HLCALL DelayMOV P2,#0E0HLCALL DelayMOV P2,#0C0HLCALL DelayMOV P2,#80HLCALL DelayMOV P2,#00HLCALL DelayMOV P2,#80HLCALL DelayMOV P2,#0C0HLCALL DelayMOV P2,#0E0HLCALL DelayMOV P2,#0F0HLCALL DelayMOV P2,#0F8HLCALL DelayMOV P2,#0FCHLCALL DelayMOV P2,#0FEHLCALL DelayMOV P2,#0FFHLCALL DelayLJMP MAIN Z: LJMP K5K3: MOV P2,#55HLCALL DelayMOV P2,#0AAHLCALL DelayMOV P2,#0FFHLJMP MAINK4: MOV P2,#01111110BLCALL DelayMOV P2,#00111100BLCALL DelayMOV P2,#00011000BLCALL DelayMOV P2,#00000000BLCALL DelayMOV P2,#10000001BLCALL DelayMOV P2,#11000011BLCALL DelayMOV P2,#11100111BLCALL DelayMOV P2,#11111111BLCALL DelayLJMP MAINK5: MOV P2,#01111110BLCALL DelayMOV P2,#10111111BLCALL DelayMOV P2,#01111110BLCALL DelayMOV P2,#10011111BLCALL DelayMOV P2,#01111110BLCALL DelayMOV P2,#10001111BLCALL DelayMOV P2,#01111110BLCALL DelayMOV P2,#10000111BLCALL DelayMOV P2,#01111110BLCALL DelayMOV P2,#10000011BLCALL DelayMOV P2,#01111110BLCALL DelayMOV P2,#10000001BLCALL DelayMOV P2,#00HLCALL DelayMOV P2,#0FFHLCALL DelayMOV P2,#00HLCALL DelayMOV P2,#0FFHLCALL DelayLJMP MAIN延时程序:Delay: JNB P3.0,D1mov r5,#01hLJMP D5D1: MOV r5,#04h D5: mov r6,#0ffh D6: mov r7,#0ffh D7: nopdjnz r7,D7djnz r6,D6djnz r5,D5retEND。