基于AT89S52单片机的交通灯设计.doc

上传人:laozhun 文档编号:4148060 上传时间:2023-04-07 格式:DOC 页数:17 大小:137.50KB
返回 下载 相关 举报
基于AT89S52单片机的交通灯设计.doc_第1页
第1页 / 共17页
基于AT89S52单片机的交通灯设计.doc_第2页
第2页 / 共17页
基于AT89S52单片机的交通灯设计.doc_第3页
第3页 / 共17页
基于AT89S52单片机的交通灯设计.doc_第4页
第4页 / 共17页
基于AT89S52单片机的交通灯设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《基于AT89S52单片机的交通灯设计.doc》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的交通灯设计.doc(17页珍藏版)》请在三一办公上搜索。

1、 1 交通灯的设计目的及方案介绍1设计课题的目的 通过单片机的课程设计,加深和巩固单片机知识,提高综合及灵活运用所学的知识来解决日常生活及工业控制的能力,提高针对知识的需要,选择和查阅其他资料书籍、灵活运用其中知识及自学能力,提高组成系统、编程、制版、调试的全方面能力,通过对课题设计方案的分析、选择、比较,熟悉单片机运用于系统开发、研制的过程,软硬件设计的方法、内容及步骤。培养发现问题、分析问题和解决问题的能力以及创新能力和创新思维的提高。1.2设计要求及说明 设计一个具有特定功能的十字路口交通灯。该交通灯上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。按开始键则开始工作,按

2、结束键则返回“P.”状态。要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。1.3方案介绍及工作原理1.3.1 方案介绍系统整体框图如图1.1所示:1.3.2 工作原理 该系统采用的是使用现有单片机最小的硬件电路和P3口控制交通灯,P2口控制数码管各位,P0口控制数码管各段,P1.0、P1.1口线控制数码管各位和P1.2口接收紧急信号电路集合而成,构成交通灯的总体电路,即交通灯。通过对单片机编写对应的程序,控制各个

3、部分,达到预期的效果。2 交通灯的硬件设计及PCB图2.1 交通灯原理图电路原理图如附录一,电路原理图由各功能模块组成。2.2 交通灯各模块功能2.2.1 单片机最小系统电路 单片机最小系统由CPU,复位电路,振荡电路三部分构成,CPU采用的是Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容的AT89S52芯片。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz

4、静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52 。复位电路用于产生复位信号,通过RST引脚送入单片机,进行复位操作。而复位电路又可以分为上电复位,按键电平复位和按键脉冲复位这三种,在这次设计中,选用的是按键电平复位电路。其功能为:上电的同时,RC回路开始充电,RST引脚端出现正脉冲,只要RST段保持10ms以上的高电平,就能够使单片机有效的复位。振荡电路

5、是从AT89S52的XTAL1和XTAL2接入时钟信号的。由外接晶振及电容C1,C2所构成的并联谐振电路接在放大器的反馈回路中。在设计电路板时为减小干扰,晶振和电容应该尽可能的与单片机近些,以减少寄生电容,更好的保证振荡器稳定可靠。其功能为:产生振荡脉冲,为单片机运行提供时序。 上拉电阻是为了拉高电压,增强IO口的驱动能力。2.2.2 显示电路设计单片机应用系统最常用的显示器是LED(发光二极管显示器)、LED(液晶显示器)。这两种显示器可显示数字、字符及系统的状态。它们的驱动电路简单、易于实现且价格低廉,因此,得到了广泛应用。本次设计要显示数字倒计时,用数码管动态显示。将LED显示器各位数码

6、管的所有段控端相应地并联在一起,由P0的8个口线控制,形成段选线多路复用,而各位数码管的共阳极分别由P2口的其中四个口线控制,实现各位的分时选通。共阳极数码管字形代码表如表2.1所示。表2.1 共阳极数码管字形代码表字型共阳代码字型共阳代码0C0H682H1F9H7F8H2A4H880H3B0H990H499HP.0CH592H灭FFH2.2.3 数码管驱动电路设计本设计采用的数码管驱动是采用PNP三极管驱动,有效增强数码管显示的亮度。当给P2口线与三极管的发射极相连,用于连接数码管位控与三极管的集电极相连,三极管的基极通过电阻与地相连,当给P2高电平的同时,输出高电平信号控制数码管的显示位显

7、示。2.2.4 紧急按键电路设计紧急信号为低电平,通过设计紧急按键电路与P1.2口相连接,紧急信号通过P1.2输入单片机内部,当紧急事件过去后,单片机回到原来的地方继续工作。2.2.5 程序下载口电路设计ATMEL公司的89S5XX提供了支持ISP(在线下载程序) 并口下载功能,它只需一块八位锁存器就可以实现了,原理如下:MOSI:数据串行输出 (S52P1.5脚),MISO:串行数据输入(S52 P1.6脚),SCK:同步控制时钟(S51 P1.7脚),RST接单片机复位脚,当有足够的高电平使S51处于复位状态,它就会开启读写程序功能。2.2.6 电源电路设计因为本次设计所需电源的模块有单片

8、机最小系统,数码管显示器,二极管交通灯,它们所需电源都为+5V,因而电源设计只需设计一个+5V电源。为了供电方便,我们直接在插孔处引一根数据线用USB接口供电。 2.2.7 交通灯元器件清单 交通灯元件清单如表2.2。表2.2 交通灯元件清单元件名称元件个数元件特性AT89S521电阻25 4.7K3 1K1 200电容2 33pF极性电容1 22FLED数码管2 4位一体共阳晶振1 12M发光二极管4 红色4 绿色按键9 四角开关1 六角USB电源接口12.3 PCB设计图我们可以根据设计电路原理图,以购买的元器件的尺寸、引脚,仔细封装各个元器件,如果不能在库里找到的我们自己根据实际需要,自

9、己创建封装。2.3.1元器件布局图 交通灯元器件布局图如附录二所示2.3.2PCB图根据电路原理图,将每个元器件放置在适当的位子,按照PCB画线的原则,以正确,美观,认真将各个元器件连接起来。PCB图如附录三所示。3 交通灯的软件设计3.1 单片机资源分配由电路原理图可知,单片机AT89S52的资源分配如下:第9脚RST接复位电路和下载口复位端;第18脚XTAL1、第19脚XTAL2接振荡电路;P0口用于数码管显示器的段控控制;P1口接数码管的位控控制 P3口接LED灯3.2 软件系统各模块功能3.2.1 显示P.模块 该模块的功能是在单片机上电或者复位后,在数码管上显示“P.”,此时系统处于

10、等待工作状态。在按下开始按钮后,跳出此模块,进入正常的工作状态。3.2.2 亮灯模块 该模块的功能是控制交通灯的亮与灭,在程序中,先控制主路的绿灯亮57S,再黄灯闪烁3秒,即每秒亮半秒灭半秒,同时支路上的红灯亮60S;再控制支路上的绿灯亮27S,再黄灯闪烁3秒,即每秒亮半秒灭半秒,同时主路上的红灯亮30S。正常情况下,随着主程序循环。当紧急按钮按下后,控制两个路口的红灯同时亮十秒,待紧急时间过去,主动跳出。3.2.3 显示模块 该模块的功能是主路和支路上的时间显示。当系统开始运行时,同时在主路和支路上显示60S的倒计时,待60S过后,同时在主路和支路上显示30S的倒计时,正常情况下,随着主程序

11、循环。当按下紧急按钮之后,同时在主路和支路上显示10S的倒计时,之后主动跳出。3.2.4 紧急按钮模块 该模块的功能是在出现紧急情况下,按下紧急按钮,送入单片机信号,系统进入紧急状态,在数码管显示10S倒计时,同时主路和支路的红灯都亮。待10S过后,自动跳出。3.2.5 延时模块 该模块的功能是为其他各模块提供延时。不论是数码管显示的延时,红绿灯亮的延时,黄灯的闪烁,都需要此模块来提供延时。采用延时子程序,延时50ms。3.3 程序流程框图交通灯程序流程框图如图3.1所示。 图3.1 程序流程框图3.4 交通灯程序清单 交通灯程序清单如附录四所示。4 交通灯设计仿真4.1 仿真原理图仿真是我们

12、检测我们的硬件设计和软件与硬件的结合好坏的重要方法,也能为我们做实物提供保障。我们采用Kiel结合Proteus仿真,仿真电路原理图如附录五所示。4.2 仿真结果(1)当开始键按下时,数码管显示“P.”。如图4.1所示。图4.1 “P.”显示(2)当按开始按钮时,数码显示管和交通灯均开始正常工作。如图4.2所示。图4.2 正常工作显示(3)当紧急按钮按下时,数码显示管和交通灯均按照计划工作。如图4.3所示。图4.3 紧急情况下显示5 设计体会及出现的问题5.1 设计体会通过这次对交通灯的设计,我们更加认识了单片机,更加熟悉了对单片机的应用。在这次设计的过程中,从电路原理图的设计,就透彻的理解了

13、单片机最小系统的构成及其工作原理。从数码管的选择中,懂得了可以采用不同的元器件,只要我们运用相应的程序,就能达到同样的效果。从三极管的应用中,发现了理论跟实践存在的巨大差别。只有实践才能检验所学的理论,才能发自己对理论认识的误区和盲点。在软件的设计过程中,收获更大。通过此次设计程序,透彻的明白了每一个指令的应用方法和功能,很好的统一复习了单片机的指令系统。也正是在运用中也发现了自己对部分指令的错误认识和误区,在改正错误中获得了收获。在实验的基础上,再一次对keil软件进行了一次全面的运用,更加熟悉了keil软件的各项功能。在做实物的过程中,很好的锻炼了自己的动手能力,同时也提高了自己发现问题,

14、解决问题的能力。当最终看到自己的成果握在手中时,有一种非常美妙的成就感,也激发了自己的学习兴趣。增强了自信,培养了自己的各个方面的能力。5.2 设计中出现的问题 在本次试验中,由于理论和实践经验缺乏,出现了很多问题。首先是先到倒计时的问题,我设计了1秒钟的子程序,然后再按键功能1中调用它,同时在最后3秒钟闪烁灯,后来发现这样根本不能实现灯闪烁一秒,而是两秒,针对这个问题,我就将1秒钟的子程序改为0.5秒,然后再程序里面两次调用它。其次出现了按了一个键实现了功能不能跳往另外一个键功能程序,我就想到了要分别在键功能程序里面再调用子程序,这个问题就解决了。最后在应急的时候我只想到了在应急里面循环,在

15、老师的提点下,我想到了应急之后应该恢复原来的交通秩序,这个就要牵扯到现场的保护和恢复,于是我马上联想到刚学完不久的中断知识,首先我想用外部中断,但是发现外部中断的两根口线已经被LED灯占用,然后我就想到要用定时器中断,编好以后,发现又有新的问题出现了。6 鸣谢 附录一原理图 附录二 程序清单 附录三仿真电路图 附录四PCB图附录二;*;设计者:XX;设计日期:2010年12月24日;*;堆栈栈底:7FH;*;LED数码管设置:;P0.0-P0.7接段控线,分别接a,b,c,d,e,f,g,dp.;P2.0-P2.7接位控线,分别接(从右至左)LED1-LED8;显示缓冲区:LED1-LED8分

16、别对应78H-7FH;*;独立式键盘:;八个按键S0-S7分别接P1.0-P1.7;*;LED流水灯设置:;八个LED灯LED1-LED8分别接P3.0-P3.7;*;项目名称:交通灯;KEYA (S0键键功能程序);KEYB (S1键键功能程序);KEYC (S2键键功能程序);*;常数表格;KKK(系统显示四位序号表);TAB(共阳数码管字型代码表);* ;子程序;DELAY(延时10ms子程序);DL(延时2ms子程序);KEY(键扫描子程序);LOOP0(P1.0口数据处理子程序);LOOP1(P1.1口数据处理子程序);LOOP2(P1.2口数据处理子程序);DISP(数码管显示子程

17、序);KK0(0.5秒显示处理程序);*;起始程序区:ORG0000H LJMP MAIN ORG0030H;*程序初始化*MAIN: MOVSP, #7FH;堆栈初始化MOVR0, #20H ;对RAM区清零 MOVR2, #96QL:MOVR0, #00H INCR0DJNZR2, QL MOVP2, #7FH ;送位控MOVP0, #0CH;送段控显示P.;*监控程序*KEY: LCALL KEYK;监控程序 JB20H.0, LOOP0JB 20H.1, LOOP11JB 20H.2, LOOP22LJMPKEYLOOP11: LJMP LOOP1LOOP22: LJMP LOOP2;

18、*键功能程序*LOOP0: MOVR3, #60;甲通道显示初值60秒 MOV R5, #57;乙通道显示初值57秒MM0:MOVP3, #33H;显示交通灯,甲通道绿,乙通道红LCALL KK0;调显示程序LCL0:LCALL KK0JNB P1.0, LCL0 ;判按键0是否按下 JNB P1.1, LOOP1;判按键1是否按下JNB P1.2, LL0;判按键2是否按下LJMP LK0LL0: LCALL LOOP2LK0:DEC R5 DEC R3CJNE R5, #00H,MM0M1: MOVR3, #03;等于3时显示乙通道黄灯处理 MOVR5, #03MM1: MOVP3, #3

19、3HLCL1:LCALL KK0 JNB P1.1, LOOP1JNB P1.2, LL1 JNB P1.0, LCL1MOVP3, #077H LCALL KK0LJMP LK1LL1: LCALL LOOP2LK1:DEC R3DEC R5CJNE R3, #00H,MM1M2: MOV R3, #30 ;乙通道亮绿灯,甲通道亮红灯 MOV R5, #27MM2:MOVP3, #0CCH ;点亮交通灯LCALL KK0LCL2:LCALL KK0JNB P1.0, LCL2待添加的隐藏文字内容3 JNB P1.1, LOOP1JNB P1.2, LL2 LJMP LK2LL2: LCALL

20、 LOOP2LK2:DEC R3DEC R5 CJNE R5, #05H,MM2M3:MOVR3, #03 MOVR5, #03MM3: MOVP3, #0CCH;等于三秒时甲通道黄灯处理LCL3:LCALL KK0JNB P1.0, LCL3 JNB P1.1, LOOP1JNB P1.2, LL3 LJMP LK3LL3: LCALL LOOP2LK3:MOV P3, #0DDHLCALL KK0DEC R3DEC R5CJNE R3, #00H, MM3;等于三秒时乙通道黄灯处理LJMP LOOP0;没有按键按下则在此程序循环LOOP1: MOVP3, #0FFH;按键1按下处理程序 L

21、CALLFUWEI JNB P1.0, KEY0JNB P1.2, LOOP2 LJMP LOOP1 ;没有按键按下则在此程序循环LOOP2:MOV 24H, R3;按键2按下处理程序 MOV 25H, R5;将原寄存器内容保存 MOVR3, #10 MOVR5, #10 MOVR7, #00HMOVP3, #55HMM5:LCALL KK0 LCALL KK0JNB P1.1, LOOP1DEC R3DEC R5 CJNE R3,#00H,MM5MOV R3, 24H;返回时将原寄存器内容还原MOV R5, 25H;保护现场RET;紧急十秒处理后返回KEY0: LJMP LOOP0KEY1:

22、LJMP KEY;*显示子程序*DISP: PUSH DPH;保护DPTR内容 PUSHDPL PUSHACC PUSHPSW CLRRS0 SETBRS1 MOVR1,#78H MOVR5,#08H MOVR2,#0FEHDISP1: MOVA,R1 MOVDPTR,#TAB MOVCA,A+DPTR MOVP0,A MOVP2,R2 LCALL DL MOVA,R2 RLA MOVR2,A INCR1 DJNZR5, DISP1DISP2: POPPSW POPACC POPDPL POPDPH RET;*显示处理5秒钟处理程序*KK0:MOVDPTR,#KKKMOVR4,#08HMOVR

23、0,#7FHMOVR6,#60G1: CLRA MOVCA,A+DPTRMOVR0,A DEC R0 INC DPTR DJNZR4, G1KK3:MOVA, R3MOVB, #10DIV ABMOV 7DH, AMOV7CH, BKK4: MOVA, R5MOVB, #10DIV ABMOV 79H, A MOV78H, BLS:LCALL DISPDJNZ R6, LS RET;*复位程序* FUWEI: MOVP2, #7FH;位控MOVP0, #0CH;段控显示P.RET;*键扫程序*KEYK: LCALLKEYSAO JZ EXTI LCALL DELAY LCALLKEYSAO J

24、ZEXTI MOVB,20HPSF: LCALLKEYSAO JZ EXTI1 LCALLDELAY LJMP PSFEXTI1: MOV20H,BEXTI: RETKEYSAO: PUSH PSW SETBRS0MOVA, P1;将P1口内容送ACPL AMOV20H, A ;按键值保存POPPSWRET;*制表区*KKK: DB 10,10,6,0,10,10,6,0 TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CH;*延时区*DELAY:MOVR2,#10DL0:MOVR3,#0FFHLLL1:NOPNOP DJNZR3,LLL1DJNZR2,DL0RET DL:MOVR7, #02HDL1:MOVR6, #0FEHDL2:DJNZR6, DL2DJNZR7, DL1RETEND

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号