《基于单片机的跑马灯系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的跑马灯系统的设计与实现.docx(11页珍藏版)》请在优知文库上搜索。
1、单片机及控制系统设计课程设计报告题目:基于单片机的跑马灯系统的设计与实现院(系):机电与自动化学院专业班级:电气自动化技术0901学生姓名:詹志鹏学号:学092822006指导教师:汪媛2011年12月26日至2012年1月10日华中科技大学武昌分校目录1设计题目及要求11.1设计题目11. 2设计目的12. 3控制要求12硬件设计23. 1单片机简介22.1.1单片机的引脚22.1.2单片机的内部结构32.2电源电路42.3时钟电路42.4复位电路52.5EA/VPP(31脚)的功能和接法62.6PO口外接上拉电阻62.7发光二级管72. 8显示电路局部83. 9AT89C51单片机最小系统
2、93软件设计104. 1源程序与注释103.2软件编译、调试与烧入11总结16附录实物图17参考文献18L设计题目及要求LI设计题目单片机小系统版控制LED灯1.2 设计目的1. 单片机最小应用系统的硬件设计技能训练;2. ASM语言或C51语言软件编程与调试技能训练;3. “下载及烧录(固化)程序开发技能训练;4. Protell软件应用技能训练;1.3 控制要求按键及外部中断控制二级管灯(自右向左)1 .按键控制8个LED灯循环自右向左依次点亮2 .间隔时间可以自行设计3 .单号灯亮双号灯灭1- 5-3-*kIfRf5f3f11 .外部中断控制8个LED灯循环自右向左依次点亮2 .间隔时间
3、可以自行设计3 .双号灯亮单号灯灭8f6-4-2f8-6-4f22.硬件设计2.1 单片机简介单片机的引脚(1)电源:40号引脚VCC是芯片电源,接+5V。20号引脚VSS为电源接地端。(2)时钟引脚:XTAL2118号脚)采用内部时钟电路时,外接晶体振荡器;采用外部时钟电路时,此引脚接地。XTALl(19号脚)采用内部时钟电路时,外接晶体振荡器;采用外部时钟电路时,此引脚接外部时钟源。(3)控制引脚:ALE/为地址锁存允许信号,用来把低8位地址锁存到外部地址锁存器。ALE引脚以不变的1/6振荡频率周期性地发出正脉冲信号,可用做对外输出的时钟信号。(4) I/O口线:PO口(3239号脚)为双
4、向输入/输出端口。PI口(18号脚)为准双向输入/输出端口。P2(2128号脚)为准双向输入/输出端口。P3(1017号脚)为准双向输入/输出端口。单片机的内部结构51系列单片机主要包括CPU、程序存储器、数据存储器以及接口电路等各组成局部。单片机内部结构框图单片机的内部结构:1个8位的CPU。时钟电路。程序存储器。数据存储器。定时器/计数器。4个并行口。1个全双工串行口。5个中断源。2.2电源电路电源模块通过7805稳压之后稳定的输出5v电压,以供整个系统工作。7805系列为三端正稳压电路,T0-220封装,能提供多种固定的输出电压,应用范围广。内含过流、过热和过载保护电路。带散热片时,输出
5、电流可达1A。虽然是固定稳压电路,但使用外接元件,可获得不同的电压和电流。主要特点:输出电流可达1A,输出电压有:5V,过热保护,短路保护,输出晶体管SOA保护。2.3时钟电路在设计时钟电路之前,让我们先了解下51单片机上的时钟管脚:XTALl(19脚):芯片内部振荡电路输入端。XTAL2(18脚):芯片内部振荡电路输出端。XTALl和XTAL2是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振
6、荡。一般来说晶振可以在L212MHz之间任选,甚至可以到达24MHZ或者更高,但是频率越高功耗也就越大。在本实验套件中采用的1L0592M的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在2040pF之间选择(本实验套件使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在3050pF之间。通常选取33pF的陶瓷电容就可以了。2. 4复位电路在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。MCS-51系列单片机的复位引脚RST(第9管脚)出现2个机器周期以上的高电平时,单片机
7、就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。复位操作通常有两种根本形式:上电自动复位和开关复位。图中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平到达手动复位的效果。一般来说,只要RST管脚上保持IOmS以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容
8、为经典值,实际制作是可以用同一数量级的电阻和电容代替,也可自行计算RC充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。2.5 EA/VPP(31脚)的功能和接法51单片机的EA/VPP(31脚)是内部和外部程序存储器的选择管脚。当EA保持高电平时,单片机访问内部程序存储器;当EA保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。对于现今的绝大局部单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此根本上不需要外接程序存储器,而是直接使用内部的存储器。在本实验套件中,EA管脚接到了VCC上,只使用内部的程序存储器。2.6 PO口外接上拉电阻51单片机的PO端口为
9、开漏输出,内部无上拉电阻。所以在当做普通I/O输出数据时,由于V2截止,输出级是漏极开路电路,要使“1信号(即高电平)正常输出,必须外接上拉电阻。PO端口的1位结构另外,防止输入时读取数据出错,也需外接上拉电阻。在这里简要的说下其原因:在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q=0,Q=I,场效应管Vl开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q=1,Q=0,场效应管Vl截止。如外接引脚信号为
10、低电平,从引脚上读入的信号就与从锁存器读入的信号不同。所以当PO口作为通用I/O接口输入使用时,在输入数据前,应先向PO口写“1,此时锁存器的Q端为“0,使输出级的两个场效应管VI、V2均截止,引脚处于悬浮状态,才可作高阻输入。总结来说:为了能使PO口在输出时能驱动NMOS电路和防止输入时读取数据出错,需外接上拉电阻。在本实验套件中采用的是外加一个IOK排阻。此外,51单片机在对端口PO-P3的输入操作上,为防止读错,应先向电路中的锁存器写入“1,使场效应管截止,以防止锁存器为“0状态时对引脚读入的干扰。2. 7发光二极管发光二级管是由IIITV族化合物半导体制成的,其核心是PN结。因此它具有
11、一般P-N结的-N特性,即正向导通,反向截止、击穿特性。此外,在一定条件下,它还具有发光特性。在正向电压下,电子由N区注入P区,空穴由P区注入N区。进入对方区域的少数载流子一局部与多数载流子复合而发光。如下图:假设发光是在P区中发生的,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,在与空穴复合发光。除了这种复合发光外,还有些电子被非发光中心捕获,而后在与空穴复合。每次释放的能量不大,不可能形成可见光。发光的复合量相对于非发光的复合量的比例越大,光量子效率越高。由于复合是在少子扩散去内发光的,所以光线仅在靠近PN结面数um以内产生。.发光二极管的特性有极限参数的意义、电参数的意
12、义。极限参数的意义有允许功耗、最大正向直流电流、最大反向电压和工作环境。电参数的意义有光谱分布和峰值波长、发光强度、光谱半宽度、半直角和视角、正向工作电流、正向工作电压和VT特性。发光二极管的应用:由于发光二极管的颜色、尺寸、形状、发光强度及透明情况等不同,所以使用发光二极管时应根据实际需要进行恰中选择。由于发光二极管具有最大正向电流、最大反向电压的限制,使用时,应保证不超过此值。发光二极管被广泛应用于各种电子仪器和电子设备中,可作为电源指示灯、电平指示或微光源之用。红外发光二极管被常用于电视机、录象机等的遥控中。2.8显示电路局部显示局部主要是由八个LED和两个七段数码管组成,八个LED由限
13、流电阻限流后接入Pl,PO口接入上拉电阻,并接限流电阻和数码管DYP-7-1的七段LED,数码管DYP-7-2的七段LED和限流电阻接入p2口,两个数码管的公共端并接限流电阻后接VCCo2.9AT89C51单片机最小系统3.软件设计3.1 源程序与注释ORG0000HLjMPKSORG0003HLJMPMAIN;下一条语句的地址为OOOOH;长跳转到KS标号执行程序;下一条语句的地址为0003H;长跳转到MAlN标号执行程序KS:SETBITOSETBEXO;设置ITO(interrupttype)=1,意思是int下降沿触发;设置EXO(externelextended)-1,意思是翻开外部
14、中断int允许位L:MAIN:DAY:DL2:DLl:SETBEA;设置EA(enableall)=l,意思是翻开总中断开关(即开中断)MOVA,#0BFH;将OBFH立即数送至A存放器MOVPl,ACLLDAYRRARRASJMPLMOVA,#7FHMOVPl,AACALLDAYRRARRAMOVPl,ARETIMOVMOVNOPNOPDJNZDJNZRET;将A存放器的值送到Pl口;调用DAY函数;Rotateright,将A存放器向右循环1次;同上;短跳转到L标号处执行程序;将7FH立即数送至A存放器;将A存放器的值送至Pl口;调用函数DAY;Rotateright,将A存放器向右循环1
15、次;同上;将A存放器的值送至Pl口;中断函数返回R0,#0FFH;将OFFH立即数送至RO工作存放器组Rl,#0FFH;将OFFH立即数送至Rl工作存放器组;空机器周期,什么都不做,亦即等待12个时钟周期;同上Rl,DLl;将Rl的内容-1,测试是否为0,如果不等于0,则跳至DLl标号执行程R0,DL2;将RO的内容T,测试是否为0,如果不等于0,则跳至DL2标号执行程;DAY函数返回ENDKS;程序结束3.2软件编译、调试与烧入1 .启动VisionViSion2是一个标准的WindoWS应用程序,双击KeilViSiOn2图标即可启动,也可以选择“开始一”程序KeilViSion2命令来启动运行。其主界面如下图。2,创立一个工程