灯循环显示速度的按键控制设计
- 格式:doc
- 大小:175.00 KB
- 文档页数:11
. . .. .. .目录第1章硬件电路设计 (2)1.1电路原理 (2)1.2数码管显示方案 (2)1.3 键盘输入方案 (2)1.4 电源 (2)1.5 时钟 (3)1.6晶振电路 (3)1.7复位电路 (3)1.8 LED灯电路 (3)第2章软件设计 (4)2.1 系统流程图 (4)2.2 程序设计 (4)第3章仿真原理图 (8)3.1 仿真原理图 (8)3.2pcb图 (9)3.3 P cb3D输出实物图 (9)参考文献: (10)第1章硬件电路设计1.1 电路原理本硬件的核心是STC12C5A60S2单片机,我们选用AT89C51。
因无需扩展外部RAM。
系统采用8位共阳极数码管,用来显示循环点亮的效果。
单片机时无须外扩存储器因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
系统采用4个按键控制,4个按键分别控制4种不同流水灯速度。
系统在P0.0到P0.8上接了8个发光二极管,在按一下调速按键的时,蜂鸣器鸣叫一声,P0.0的二极管亮,此时从P0.0到P0.8的二极管依次点亮,数码管显示其调速按键的序号。
1.2 数码管显示方案通常数码管显示有两种方式:动态显示和静态显示。
静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。
但占用I/O口线多,每一个LED都要占用一个I/O口,硬件开销大,电路复杂。
需要几个LED就必须占用几个并行I/O口,比较适用于LED数量较少的场合。
当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较复杂。
LED动态显示硬件连接简单,但动态显示扫描方式需要占用CPU较多的时间,在单片机没有太多实时测试任务的情况下可以采用。
本系统需要采用1位LED数码管来显示按键序号,故本系统选择静态显示方案。
1.3 键盘输入方案单片机的键盘结构可以采用独立式按键和矩阵式键盘两种。
独立式按键指直接用I/O口线构成单个按键电路。
可在系统中键较少时使用。
在按键比较多的时候可采用矩阵式键盘。
本系统要设置4个键,这4个按键分别调节流水灯的速度,已达到调速的目的。
1.4 电源VCC-芯片电源,接+5V。
VSS - 接地端。
用万用表测试单片机引脚电流一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。
1.5 时钟XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
1.6 晶振电路对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒(往往用低电压以求低功耗)的系统。
这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振。
这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡。
在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易。
在振荡回路中,晶体既不能过激励(容易振到高次谐波上)也不能欠激励(不容易起振)。
晶体的选择至少必须考虑:谐振频点,负载电容,激励功率,温度特性,长期稳定性。
1.7 复位电路复位是单片机的初始化操作。
单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式。
但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现1.8 LED灯电路LED(Light-Emitting-Diode中文意思为发光二极管)是一种能够将电能转化为可见光的半导体,它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。
据分析,LED的特点非常明显,寿命长、光效高、无辐射与低功耗。
LED的光谱几乎全部集中于可见光频段,其发光效率可达80~90%。
将LED与普通白炽灯、螺旋节能灯及T5三基色荧光灯进行对比,结果显示:普通白炽灯的光效为12lm/W,寿命小于2000小时,螺旋节能灯的光效为60lm/W,寿命小于8000小时,T5荧光灯则为96lm/W,寿命大约为10000小时,而直径为5毫米的白光LED为20~28lm/W,寿命可大于100000小时。
有人还预测,未来的LED寿命上限将无穷大。
发光二极管串联一个510欧姆的电阻后接在5V的电压上。
LED灯电路接在单片机P1口上。
LED灯阳极接电源,阴极接单片机的I/O口,低电平驱动,只要在单片机相应引脚给出低电平,LED就会发亮。
第2章软件设计2.1 系统流程图图2-1 程序流程图2.2 程序设计#include <reg51.h>#include <intrins.h>#define uchar unsigned char //数据类型宏定义#define uint unsigned int#define out P0#define out3 P3/*********************引脚定义********************/sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;sbit sounder=P2^0;sbitdula=P2^7;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; voiddelayms(unit);/*********************主函数**********************/void main(void){uchari,temp;if(key1==0){sounder=0;delayms(1000);sounder=1;while(key2==1&&key3==1&&key4==1){temp=0xfe;for(i=0;i<8&&(key2==1&&key3==1&&key4==1);i++){out=temp; //初始化P0口delayms(1000); //延时temp=_crol_(temp,1);//循环左移1位,点亮下一个LEDdula=1;out3=table[1];}}}if(key2==0){sounder=0;delayms(1000);sounder=1;while(key1==1&&key3==1&&key4==1){temp=0xfe;for(i=0;i<8&&(key1==1&&key3==1&&key4==1);i++){out=temp; //初始化P0口delayms(700); //延时temp=_crol_(temp,1);//循环左移1位,点亮下一个LEDdula=1;out3=table[2];}}}if(key3==0){sounder=0;delayms(1000);sounder=1;while(key1==1&&key2==1&&key4==1){temp=0xfe;for(i=0;i<8&&(key1==1&&key2==1&&key4==1);i++){out=temp; //初始化P0口delayms(400); //延时temp=_crol_(temp,1);//循环左移1位,点亮下一个LEDdula=1;out3=table[3];}}}if(key4==0){sounder=0;delayms(1000);sounder=1;while(key1==1&&key2==1&&key3==1){temp=0xfe;for(i=0;i<8&&(key1==1&&key2==1&&key3==1);i++){out=temp; //初始化P0口delayms(100); //延时temp=_crol_(temp,1);//循环左移1位,点亮下一个LEDdula=1;out3=table[4];}}}}/*********************延时函数********************/ voiddelayms(uint j){uchari;for(;j>0;j--){i=250;while(--i);i=249;while(--i);}}第3章仿真原理图3.1 仿真原理图仿真原理图如图3-1:图3-1 仿真原理图3.2 pcb图Pcb连线图如图3-2:图3-2 Pcb连线图3.3 Pcb3D输出实物图Pcb3D输出实物图如图3-3:图3-3 Pcb3D输出实物图参考文献:[1] 胡汉才.单片机原理与接口技术[M].:清华大学,1995.6.[2] 楼然苗等.51系列单片机设计实例[M].:航空航天,2003.[3] 何立民.单片机高级教程[M].:航空航天大学,2001.[4] 晓安.MCS-51单片机原理及应用[M]. 天津:天津大学,2001.3.[5] 肖洪兵跟我学用单片机[M]. :航空航天大学,2002.8.[6] 于凤明.单片机原理及接口技术[M].:中国轻工业.1998学号天津城建大学单片机原理及应用A设计说明书LED灯循环显示速度的按键控制设计起止日期:2015年6月29日至2015年7月10日学生班级成绩指导教师(签字)控制与机械工程学院2015年7月10日11。