您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 基于89C51单片机交通灯设计(附设计程序)
单片机课程设计课程名称:微机原理与应用设计题目:基于STC89C51单片机的交通灯设计专业班级:信息工程12-1班姓名:汪菲田宣宣侯宁博李琪陈震宇日期:2014-11-14设计题目:基于STC89C51单片机的交通灯设计1)设计目的在该设计中通过自主地设计和调试某一简单实际系统,综合应用单片机原理、微机原理、微机接口技术等课程方面的知识,熟练掌握单片机仿真系统的使用方法,达到提高综合应用相关知识的能力,掌握单片机系统设计全部设计过程的目的。2)设计要求2.1.1基本要求(1)采用STC89C51单片机控制交通信号灯并用数码管显示时间,LED指示通行。(2)以南北方向的交通灯为例,结合实际情况,控制红、黄、绿交通灯的亮和灭;(3)红、黄、绿交通灯的亮和灭的时间可调节。2.1.2提高要求(1)采用LED数码管显示红或绿交通信号灯亮的剩余时间;(2)可由拨盘开关强制设置为东西红,南北绿//东西绿,南北红//东西南北都为红;(3)控制东西方向和南北方向的红黄绿交通灯的亮和灭;(4)添加蜂鸣器,当绿灯要变成红灯时中间有5秒的黄灯时间,这期间蜂鸣器鸣响,提醒大家绿灯即将变红;(5)1602液晶用于显当下交通灯的功能。摘要:近年来随着科技的飞速发展,一个以微电子技术、计算机技术和通信技术为先导的信息革命正在蓬勃发展。单片机作为计算机技术的一个分支,正在不断的应用到实际生活中,在实时检测和自动控制的应用系统中,针对具体应用对象的特点,配以其它器件来加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊靠的是交通信号灯的自动指挥系统,来实现交通的井然有序。本系统采用STC89C52单片机以及单片机最小系统和三极管驱动电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过两位一体共阴极数码管显示,并能通过按键对定时进行设置。本系统实用性强、操作简单、扩展功能强。设计通过STC89C52单片机以及单片机最小系统和74hc245驱动数码管(数码管更亮,白天看的很清楚)以及外围的按键和数码管显示等部件,数码管倒计时显示时间。设计基本框图总体电路的工作原理南北路处于禁止通行的状态,东西路处于允许通行的状态。南北路亮红灯时,东西路亮绿灯;南北路亮绿灯时,东西路亮红灯。南北路亮红灯时,东西路亮绿灯,当绿灯时间减完之后,东西路换为黄灯同时蜂鸣器报警,南北路仍为红灯。这样东西路与南北路的时间同时减完。减完之后,东西路换为红灯,南北路换为绿灯,再经过一个绿灯时间,南北路换为黄灯,东西路仍为红灯。这时东西路与南北路时间相同,同时减完。减完后,南北路为红灯,东西路为绿灯。如此循环下去。利用89c52单片机控制交通灯系统工作。其中P0口接数据输出口,与外部数码管连接,P2口与数码馆的COM口连接,用于选择数据输出的地址,这样就可以实现时问的动态显示,并且节省了端口数。P1口作为红黄绿灯的控制口,通过上拉电阻将红黄绿灯的正极接高电平,负极接在P1口上,我们可以利用控`制单片机的P1口的输出数据控制红黄绿灯的亮灭。调时可以利用外部中断INT0l单片机红黄绿信号灯8段LED数码管复位电路最小系统外围接口按键控制驱动显示申请中断。当INT0为低电平时,单片机的PC指向INT0的中断入口地址,从而转向中断服务程序。此时我们可以通过判断外部开关量的状态来对红黄绿灯的显示时间进行修改。同时当INT0为低电平时,东西南北方向的都送红灯亮,实现紧急情况下禁止通行。然后通过判断INT0的状态来决定中断是否返回,当INT0为低电平时,说明开关又一次按下,这是退出中断服务程序,继续执行主程序。蜂鸣器作用:当绿灯要变成红灯时中间有5秒的黄灯时间,这期间蜂鸣器鸣响,提醒大家绿灯即将变红。晶振时钟电路复位电路共阴数码管两位八段式数码管其实就是将两个一位八段式数码接相应的电路组合在一起。并引出两控制端1和2,同过其电平的高低来控制两个数码管的高低位工作。其中两个数码管的八个端子A,B,C,D,E,F,G,DP为公共所用。按键控制电路系统总体电路各端口控制作用P1口作为红黄绿灯信号的控制口,即p1.0.,P1.2.,P1.1分别控制南北方向的红黄绿灯信号,P1.4,P1.6,P1.5分别控制东西方向的红黄绿灯信号。P0口作为驱动电路的输入,P.0,P2.1,P2.2,P2.3作为数码管控选端1,2的输入.P3口中的P3.2,P3.3即外部中断0和外部中断1作为紧急情况和调时开关的信号控制。P3.5,p3.6,P3.7是紧急情况下的信号控制口。红灯亮35秒,黄灯亮5秒,绿灯亮30秒。初始状态为东西红灯,南北绿灯。35秒后转状态1。东西红灯,南北黄灯。35S后转状态2,东西绿灯通车,南北红灯。经过30秒绿灯和5S黄灯后转状态3,东西绿灯灭,亮黄灯,南北仍然红灯。整个程序在晶振工作、单片机正常运行的情况下做循环。可由拨盘开关强制设置为东西红,南北绿//东西绿,南北红//东西南北都为红。夜间模式:两方向均为黄灯闪烁,不显示秒倒计。由特殊情形恢复到正常情况后,应当接着切换到特殊情形前的秒倒计和交通灯继续循环。当系统上电时,实验电路开始工作,七段数码管开始从红灯和绿灯时间倒计时。计时起始信号由主控电路给出,定时结束信号也输入到主控芯片,由主控芯片启、闭三色信号灯或启动另一计时电路。在这里正确的程序是核心,应该完成一个时序电路的工作。其状态表1为:东西方向南北方向红30秒绿30秒红5秒黄5秒绿30秒红30秒黄5秒红5秒紧急情况红绿绿红红红夜间:黄黄软件设计首先进行交通灯状态的分析:十字路口交通灯如下图所示,将12个交通灯进行编号这12个交通灯共有四个状态:状态1(S1):东西红灯(4、10)亮,南北绿灯(3、9)亮。状态2(S2):南北绿灯(3、9)灭,黄灯(2、8)闪烁,东西仍为红灯(4、10)亮。状态3(S3):南北红灯(1、7)亮,东西绿灯(6、12)亮。状志4(S4):东西绿灯(6、12)灭,黄灯(5、11)闪烁,南北仍为红灯(1、7)亮。交通灯综合设计实验小结首先,感谢老师和同学们认真聆听我们的设计答辩,感谢老师和同学们在我们实验设计过程中提供的建议和帮助。我们组五个人,历时两周时间,从选题,到焊接,再到调试,总结,完成了本次单片机综合设计任务,在这个过程中,我们在巩固、运用所学知识的同时,更多的收获是实验设计过程的挫折与收获。我们组的题目是交通灯设计,我们选择题目时,就意识到这个题目必须做出自己的创新才有意义。我们组通过上网查询资料,向老师请教等途径,对交通灯电路进行三次改进与尝试,对普通交通灯进行了加蜂鸣器,加减计时以及用LCD屏显示等改进,形成并实施了三种设计方案,并对方案一、三进行了综合仿真,对方案二进行了实物焊接,均达到了预期的效果。在本次单片机综合实验中,我们牢记老师的教诲:勇于创新与发挥团队精神。在改进交通灯过程中,我们五人多次召开小组讨论会,讨论并制定我们要实施三种方案及是否可行,各成员都在讨论中提出自己独特的见解。制定计划后,我们五人分工协作,汪菲同学负责总体统筹工作,负责本次设计的实验程序编写,侯宁博、田宣宣负责采购元件及实物焊接,陈震宇和李琪主要负责论文的撰写与理论分析,大家在分组工作的同时,不定期分享各分组进展及制定新的计划,在这个过程中,我们虽然有时熬夜凌晨,但收获的知识和经历对我们今后的学习、生活影响甚远。微机原理课结束了,我们无论怎样,都向老师和自己交出了属于自己满意的答卷。我们很乐于这种寓教学于实践的教学模式,对于老师的辛勤劳作,我们表示衷心感谢,在今后的学习、生活中,我们会以更加严谨的态度治学和做人,相信,不断努力的我们定会成为未来社会的精英!附录程序changshi3:#includereg51.h//头文件#defineucharunsignedchar#defineuintunsignedint//宏定义voiddelay(intms)//延时子程序{uintj,k;for(j=0;jms;j++)//延时msfor(k=0;k110;k++);//大约1毫秒的延时}ucharnum;uchardatabuf[4];//秒显示的变量uchardatasec_dx=20;//东西数默认uchardatasec_nb=30;//南北默认值uchardataset_timedx=20;//设置东西方向的时间uchardataset_timenb=30;//设置南北方向的时间intn;uchardatacountt0,countt1;//定时器0中断次数ucharcodetable1[]=yellowled;//在第一行现实的字符ucharcodetable2[]=night;//第二行要显示的字符ucharcodetable3[]=nanbeiyes;ucharcodetable4[]=dongxino;ucharcodetable5[]=nanbeino;ucharcodetable6[]=dongxiyes;ucharcodetable7[]=jiaotongdeng;ucharcodetable8[]=zhengchang;sbitlcden=P2^0;//液晶使能端sbitlcdrs=P3^5;//液晶数据命令选择端/***********写命令子函数*************/voidwrite_com(ucharcom){lcdrs=0;//选择些命令模式P1=com;//将要写的命令字符写到数据总线上delay(5);//延时以确定数据稳定lcden=1;//使能端送高脉冲delay(5);//延时lcden=0;//高脉冲结束}/**********写数据子函数**************/voidwrite_data(uchardate){lcdrs=1;//选择写数据模式P1=date;//将要现实的字符数据写到数据总线上delay(5);//延时等到数据稳定lcden=1;//高脉冲delay(5);lcden=0;}/************初始化子函数************/voidinit(){lcden=0;write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口write_com(0x0c);//设置开显示,不显示光标write_com(0x06);//写一个字符后地址指针加1write_com(0x01);//显示清零,数据指针清零}sbitk6=P3^4;//夜间模式sbita=P3^1;//P1.0脚定义为asbitb=P2^7;//P1.1脚定义为bsbitc=P3^6;//P1.2脚定义为csbitd=P3^7;//P1.3脚定义为dH鵽sbitRed_nb=P2^6;//南北红灯标志sbitYellow_nb=P2^5;//南北黄灯标志sbitGreen_nb=P2^4;//南北绿灯标志sbitRed_dx=P2^3;//东西红灯标志sbitYellow_dx=P2^2;//东西黄灯标志sbitGreen_dx=P2^1;//东西绿灯标志sbitBuzz=P3^0;bitset=0;//调时方向切换键标志=1时,南北,=0时,东西bitdx_nb=0;//东西南北控制位bitshanruo=0;//闪烁标志位bityejian=0;//夜间黄灯闪烁标志位ucharcodetable[11]={//共阴极字型码0x3f,//--00x06,//--10x5b,//--20x4f,//--30x66,//--40x6d,//--50x7d,//--60x07,//--70x7f,//--80x6f,//--90x00//--NULL};//函数的声明部分voidkey();//按键扫描子程序voiddisplay();//显示子程序voidBuzzer();voidmain(){TMOD=0X11;//定时器设置TH1=0X3C;TL1=0XB0;TH0=0X3C;//定时器0置初值0.05STL0=0XB0;EA=1;//开总中断ET0=1;//定
本文标题:基于89C51单片机交通灯设计(附设计程序)
链接地址:https://www.777doc.com/doc-3633508 .html