用51单片机控制交通灯汇编语言编写

合集下载

单片机交通灯程序(汇编语言),推荐文档(2021年整理)

单片机交通灯程序(汇编语言),推荐文档(2021年整理)

单片机交通灯程序(汇编语言),推荐文档(word版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(单片机交通灯程序(汇编语言),推荐文档(word版可编辑修改))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为单片机交通灯程序(汇编语言),推荐文档(word版可编辑修改)的全部内容。

单片机交通灯程序用p0口德八个引脚控制交通灯闪烁P1。

0——1。

2分别代表东西路口的红黄绿灯P1。

3——1。

5分别代表南北路口的红黄绿灯1.开始时东西红灯亮南北绿灯亮 (延时10s)2.然后东西红灯亮南北黄灯闪烁3次(亮一秒,灭一秒)3.然后东西绿灯亮南北红灯亮(延时10s)4.然后东西黄灯闪烁3次(亮一秒,灭一秒)5. 返回的第一步继续循环ORG 0000HAJMP MAINORG 0030HMAIN:MOV P1,#00HSTATE1:MOV P1,#00100001BLCALL DELAY10sMOV R1,#3CLR P1.5STATE2:SETB P1。

4LCALL DELAY1sCLR P1.4LCALL DELAY1sDJNZ R1,STATE2STATE3:MOV P1,#00001100BLCALL DELAY10sCLR P1。

2 STATE4:SETB P1.1LCALL DELAY1s CLR P1.1LCALL DELAY1s DJNZ R2,STATE4 LJMP STATE1 DELAY1s:MOV R3,#10MOV TMOD,#01H LOOP:MOV TH0,#3CHMOV TL0,#0B0H SETB TR0LOOP1:JBC TF0,LOOP2 SJMP LOOP1 LOOP2:CLR TR0DJNZ R3,LOOPRETDELAY10s:MOV R4,#100 MOV TMOD,#01H LOOP3:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0LOOP4:JBC TF0,LOOP5LOOP5:CLR TR0DJNZ R4,LOOP3 RETEND。

用51单片机控制交通灯汇编语言编写教材

用51单片机控制交通灯汇编语言编写教材

基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。

系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。

关键词:交通灯,单片机,自动控制一引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这个技术在19世纪就已经出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。

红灯亮表示“停止”,绿灯亮表示“通行”。

信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。

1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。

绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。

左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。

红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!二概要设计2.1 设计思路利用单片机实现交通灯的控制,该任务分以下几个方面:a 实现红、绿、黄灯的循环控制。

要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。

usb单片机cs51交通灯程序汇编语言

usb单片机cs51交通灯程序汇编语言

ORG 0000HA_BIT EQU 20H ;用于存放南北十位数B_BIT EQU 21H ;用于存放南北十位数C_BIT EQU 22H ;用于存放东西十位数D_BIT EQU 23H ; 用于存放东西位数TEMP1 EQU 24H ;用于存放第一二南北状态要显示的时间TEMP2 EQU 25H ;用于存放第一二东西状态要显示的时间TEMP3 EQU 26H ;用于存放第三第四南北状态要显示的时间TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间LJMP MAINORG 0003H ;外部中断0入口LJMP INT0 ;跳转到外部0中断ORG 0013H ;外部中断1入口LJMP INT1 ;跳转到外部1中断INT0: MOV A,P1 ;外部0中断PUSH ACCMOV A,P2 ;中断保护PUSH ACCMOV P1,#0FFH ;清除先前状态MOV P2,#0FFHCLR P1.0CLR P1.4 ;南北通行,东西禁止通行CLR P1.6CLR P2.3JNB P3.2 ,$ ;判断是否还在中断状态POP ACCMOV P2,A ;返回中断前状态POP ACCMOV P1,ACCRETI ;中断返回INT1:MOV A,P1 ;外部1中断PUSH ACC ;中断保护MOV A,P2PUSH ACCMOV P1,#0FFH ;清除先前状态MOV P2,#0FFHCLR P1.2CLR P2.1CLR P1.3 ;东西通行,南北禁止通行CLR P1.5JNB P3.3 ,$ ;判断是否还在中断状态POP ACCMOV P2,A ;返回中断前状态POP ACCMOV P1,ARETI ;中断返回MAIN:ORG 0100H ;初始情况MOV P1,#0FFHMOV P2,#0FFH ;灭所有灯MOV TMOD,#55H ;计数方式方式1MOV IE,#85H ;开中断MOV TEMP1,#20 ;MOV TEMP2,#25MOV TEMP3,#25MOV TEMP4,#20STAR:MOV P1,#0FFHMOV P2,#0FFH ;灭所有灯MOV A,24H ;将显示时间送ACJNE A,#20,T40T ;判断时间,选初始值T20T: ;南北通行要显示的时间为20的计数器初始值CLR TF0 ;清TF0CLR TF1 ;清TF1MOV TH1 ,#0FFH ;送20秒时的初始值MOV TL1 ,#0FCH ;在些设计20秒6辆为多车MOV TH0 ,#0FFHMOV TL0 ,#0FCHLJMP TEMP20 ;跳到20秒T40T: ;南北通行要显示的时间为40的计数器初始值CLR TF0 ;清TF0CLR TF1 ;清TF1MOV TH1,#0FFH ;送40秒时的初始值MOV TL1 ,#0F8H ;在些设计40秒8辆为多车MOV TH0 ,#0FFHMOV TL0 ,#0F8HLJMP TEMP40 ;跳到40秒TEMP20: ;TEMP1=20情况SETB TR0 ;开始计数SETB TR1CLR P1.2CLR P2.1 ;南北通行,东西禁止通行CLR P1.3CLR P1.5MOV TEMP1,#20 ;南北要显示的时间,MOV TEMP2,#25 ;东西要显示的时间STLOP:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT ;若显示时间不为0保持现在状态LJMP STAR2 ;若显示时间为 0跳到第二状态NEXT: LJMP STLOPSTAR2: ;状态1SETB P1.2CLR P1.1 ;南北黄灯,东西禁止通行SETB P1.3CLR P1.4MOV TEMP1,#05 ;南北要显示的时间,MOV TEMP2,#05 ;东西要显示的时间,STLOP2:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT2 ;若显示时间不为0保持现在状态JB TF1 ,T40 ;判断南北是否多车JB TF0 ,T40 ;判断北南是否多车MOV TEMP1,#20 ;少车下次显示时间为20秒LJMP STAR3 ;跳到状态3T40:MOV TEMP1,#40 ; 多车下次显示时间为40秒LJMP STAR3 ;若显示时间为 0跳到第三状态NEXT2:LJMP STLOP2TEMP40:;TEM=40 程序SETB TR0 ; 开始计数SETB TR1CLR P1.2CLR P2.1 ;南北通行,东西禁止通行CLR P1.3CLR P1.5MOV TEMP1,#40 ;南北要显示的时间,MOV TEMP2,#45 ;东西要显示的时间STLOP11:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT11 ;若显示时间不为0保持现在状态LJMP STAR22 ;若显示时间为 0跳到第二状态NEXT11: LJMP STLOP11STAR22: ;状态1SETB P1.2CLR P1.1 ;南北黄灯,东西禁止通行SETB P1.3CLR P1.4MOV TEMP1,#05 ;南北要显示的时间,MOV TEMP2,#05 ;东西要显示的时间,STLOP22:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT22 ;若显示时间不为0保持现在状态JB TF1 ,T401 ; 判断是否多车JB TF0 ,T401MOV TEMP1,#20 ;少车下次显示时间为20秒LJMP STAR3T401:MOV TEMP1,#40 ;多车下次显示时间为40秒LJMP STAR3 ;若显示时间为 0跳到第三状态NEXT22:LJMP STLOP22STAR3:MOV A,26HCJNE A,#25,T40T1 ;判断时间,选初始值T20T1: ;南北通行要显示的时间为20的计数器初始值CLR TF0 ; 清溢出位CLR TF1MOV TH1 ,#0FFH ; 给初值MOV TL1 ,#0FCHMOV TH0 ,#0FFHMOV TL0 ,#0FCHLJMP TEMP320T40T1: ;南北通行要显示的时间为40的计数器初始值CLR TF0 ;CLR TF1MOV TH1,#0FFH ;给初值MOV TL1 ,#0F8HMOV TH0 ,#0FFHMOV TL0 ,#0F8HLJMP TEMP340TEMP320:;状态三SETB TR1 ;南北停止计数SETB TR0 ;东西开始计数SETB P1.1 ;东西通行,南北禁止通行CLR P1.0CLR P1.0SETB P1.5CLR P1.6SETB P2.1CLR P2.3MOV TEMP3,#25 ;南北要显示的时间,MOV TEMP4,#20 ;东西要显示的时间,STLOP33:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减1DEC TEMP4MOV A,TEMP4CJNE A,#0,NEXT33 ;若显示时间不为0保持现在状态LJMP STAR34 ;若显示时间为 0跳到第四状态NEXT33:LJMP STLOP33STAR34: ;状态四SETB P2.3CLR P2.2SETB P1.6 ;东西黄灯,南北禁止通行CLR P1.5MOV TEMP3,#05 ;南北要显示的时间,MOV TEMP4,#05 ;东西要显示的时间,STLOP34:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减1DEC TEMP4MOV A,TEMP4CJNE A,#0,NEXT34 ;若显示时间不为0保持现在状态JB TF1 ,T402JB TF0 ,T402MOV TEMP3,#25LJMP START402:MOV TEMP3,#45LJMP STARNEXT34: LJMP STLOP34TEMP340 :SETB TR1 ;南北停止计数SETB TR0 ;东西开始计数SETB P1.1 ;东西通行,南北禁止通行CLR P1.0SETB P1.1CLR P1.0CLR P1.6SETB P2.1CLR P2.3MOV TEMP3,#45 ;南北要显示的时间,MOV TEMP4,#40 ;东西要显示的时间,STLOP43:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减1DEC TEMP4MOV A,TEMP4CJNE A,#0,NEXT43 ;若显示时间不为0保持现在状态LJMP STAR44 ;若显示时间为 0跳到第四状态NEXT43:LJMP STLOP43STAR44: ;状态四SETB P2.3CLR P2.2SETB P1.6 ;东西黄灯,南北禁止通行CLR P1.5MOV TEMP3,#05 ;南北要显示的时间,MOV TEMP4,#05 ;东西要显示的时间,STLOP44:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减1DEC TEMP4MOV A,TEMP3CJNE A,#0,NEXT44 ;若显示时间不为0保持现在状态JB TF1 ,T403JB TF0 ,T403MOV TEMP3,#25LJMP START403:MOV TEMP3,#45LJMP STARNEXT44: LJMP STLOP44;显示DISPLAY1:MOV A,TEMP1 ;将南北要显示的数存放到AMOV B,#10 ;B=10DIV AB ;A除以B商存A,余数BMOV B_BIT,A ; 将A放到20HMOV A_BIT,B ;将B放到21HMOV A,TEMP2 ;将东西要显示的数存放到AMOV B,#10 ;B=10DIV AB ;A除以B商存A,余数B MOV C_BIT,A ;将A放到22HMOV D_BIT,B ;将B放到23HMOV DPTR ,#NUMT ;MOV R0,#2 ;R0=2DPL11: MOV R1,#250 ;R1=250DPLOP1:MOV A,A_BIT ;将南北要显示的10位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示南北10位数CLR P2.7ACALL D1MS;延时1MSSETB P2.7 ;灭南北10位数MOV A,B_BIT ;将南北要显示的个位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示南北个位数CLR P2.6ACALL D1MS ;延时1MSSETB P2.6 ;灭南北个位数MOV A,C_BIT ;将东西要显示的10位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示东西10位数CLR P2.5ACALL D1MS ;延时1MSSETB P2.5 ;灭东西10位数MOV A,D_BIT ;将东西要显示的个位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示东西东西位数CLR P2.4ACALL D1MS ;延时1MSSETB P2.4 ;灭东西个位数DJNZ R1,DPLOP ;循环扫描DJNZ R0,DPL1RET ;等待1秒返回;显示DISPLAY:MOV A,TEMP3 ;将南北要显示的数存放到A MOV B,#10 ;B=10DIV AB ;A除以B商存A,余数BMOV B_BIT,A ; 将A放到20HMOV A_BIT,B ;将B放到21HMOV A,TEMP4 ;将东西要显示的数存放到A MOV B,#10 ;B=10DIV AB ;A除以B商存A,余数BMOV C_BIT,A ;将A放到22HMOV D_BIT,B ;将B放到23HMOV DPTR ,#NUMT ;MOV R0,#2 ;R0=2DPL1: MOV R1,#250 ;R1=250DPLOP:MOV A,A_BIT ;将南北要显示的10位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示南北10位数CLR P2.7ACALL D1MS;延时1MSSETB P2.7 ;灭南北10位数MOV A,B_BIT ;将南北要显示的个位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示南北个位数CLR P2.6ACALL D1MS ;延时1MSSETB P2.6 ;灭南北个位数MOV A,C_BIT ;将东西要显示的10位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示东西10位数CLR P2.5ACALL D1MS ;延时1MSSETB P2.5 ;灭东西10位数MOV A,D_BIT ;将东西要显示的个位数送A MOVC A,@A+DPTR ;查表MOV P0,A ;显示东西东西位数CLR P2.4ACALL D1MS ;延时1MSSETB P2.4 ;灭东西个位数DJNZ R1,DPLOP ;循环扫描DJNZ R0,DPL1RET ;等待1秒返回D1MS: MOV R7,#250 ;1MS延时程序DJNZ R7,$RET;1到10对应电路图数码管表NUMT: DB 7EH,48H,67H,6BH,59HDB 3BH,3FH,68H,7FH,7BH。

51单片机设计交通灯(汇编语言)

51单片机设计交通灯(汇编语言)

题目:智能交通灯控制系统班级:p09电气四班姓名:刘强0903110429一、任务:设计并制作一个城市交道口交通灯控制糸统二、要求:根据下图交道口模型,装上交通灯。

交道口模型如图所示。

交通灯控制规则如下:1)每个街口有左拐、右拐、直行及行人四种指示灯。

每个灯有红、绿两种颜色。

自行车与汽车共用左拐、右拐和直行灯。

2)共有四种通行方式:①车辆南北直行、各路右拐,南北向行人通行。

南北向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。

②南北向左拐、各路右拐,行人禁行。

通行时间为1分钟。

③东西向直行、各路右拐,东西向行人通行。

东西向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。

④东西向左拐、各路右拐。

行人禁行。

通行时间为1分钟。

3)在通行结束前10秒钟,绿灯闪烁直至结束。

1, 基本部分:按照上述控制要求,用发光二极管代替交通灯,用PROTEUS绘制电路图,并仿真调试实现之。

2, 发挥部分:1.有倒计时时间显示。

2若交道口出现紧急情况,交警可将糸统设置成手动:全路口车辆禁行、行人通行。

紧急情况结束后再转成自动状态。

3当有119、120等特种车辆通过时,糸统自动转为特种车放行,其它车辆禁止状态。

特种车辆通过15秒钟后,糸统自动恢复,用模型车演示。

4其它自选措施。

智能交通灯控制系统1.系统功能的确定功能一:可以实现红绿灯的转换以及控制路口的基本功能。

功能二:有倒计时功能和最后十秒绿灯闪烁的功能。

功能三:出现紧急情况时,警察可以手动控制特殊状态,并维持交通。

功能四:119或120等特种车经过时,可转换成为特种车道行驶状态,并在情况消除后15秒,恢复原状。

2.方案论证2.1方案一:如下图所示,为proteus仿真图。

其中,P1,P0端口的8位分别来控制东西,南北方向的红绿灯。

且运用了4个74LS164的8位移位寄存器(串行输入,并行输出)来控制4个LED的数码显示,通过AT89C51单片机的P3.0,P3.1两个扩展端口来接4个并行连接的74LS164的DIN和CLK两个端口来显示倒计时的功能,这会产生乱码使得显示杂乱,而主程序以顺序执行为主,其中穿插着对P3.7的端口高低电平的测试和跳转语句来实现功能三,并且功能一、二在主程序中实现,没有功能四的的实现程序。

基于51单片机控制交通灯的电路图与C语言程序

基于51单片机控制交通灯的电路图与C语言程序
}
}
p2=0x12; //南北黄灯闪烁三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1); //南北黄灯闪烁三秒完毕
}
void main() //主函数入口处
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
东西道为人行道(20秒),南北道为车行道(60秒),黄灯延时最后三秒时,闪烁并切换。
三、硬件电路设计
此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。因此,可加输出锁存器。在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。
p2=0x12; //南北黄灯闪烁三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
else

51单片机用C语言实现交通灯_红绿灯_源程序

51单片机用C语言实现交通灯_红绿灯_源程序

c o d eu n s i g n e dc h a rt a b [ ] = { 0 x 3 f , 0 x 0 6 , 0 x 5 b , 0 x 4 f , 0 x 6 6 , 0 x 6 d , 0 x 7 d , 0 x 0 7 , 0 x 7 f , 0 x 6 f } ; / / 共阴数码管 0 9 u n s i g n e dc h a rD i s _ S h i w e i ; / / 定义十位 u n s i g n e dc h a rD i s _ G e w e i ;/ / 定 g n e di n tc n t ) { w h i l e ( c n t ) ; } m a i n ( ) { T M O D| = 0 x 0 1 ; / / 定时器设置 1 0 m si n1 2 Mc r y s t a l 定时器 0 ,工作方式 1 ,1 6 位定时器 T H 0 = 0 x d 8 ; / / 6 5 5 3 5 1 0 0 0 0 = 5 5 5 3 5 = D 8 F 0 (十六进制) T L 0 = 0 x f 0 ; I E =0 x 8 2 ;/ / 中断控制,E A = 1 开总中断,E T 0 = 1 :定时器 0 中断允许 T R 0 = 1 ; / / 开定时器 0 中断 P 1 = 0 x f c ; / / 红灯亮,根据红黄绿接灯的顺序。 r e d= 1 ; w h i l e ( 1 ) { P 0 = D i s _ S h i w e i ; / / 显示十位,这里实现用 8 位数码管,即左 1 位 P 2 = 0 ; d e l a y ( 3 0 0 ) ; / / 短暂延时 P 0 = D i s _ G e w e i ;/ / 显示个位,左数,2 位 P 2 = 1 ;

单片机实现交通灯控制汇编代码

单片机实现交通灯控制汇编代码

交通灯控制一、课程设计的内容在实验平台上选择两组指示灯,每组分为红,黄,绿代表交通灯。

要求:1. 模拟十字交通路口的实际情况,设计十字路口交通灯自动变换系统。

2. 设计十字路口交通灯手动变换系统,并这两套系统可切换使用。

3. 在实现以上内容的基础上增加允许急救车优先通过的要求。

有急救车到达时,两方向交通信号为全红,以便让急救车通过。

二.设计思路及电路图在单片机实验箱上P0口和P2口不能做I/O接口。

但是为了实现交通灯的状态变化,我要用到I/O接口来对按键进行查询和显示发光二极管的状态,P1口控制四段数码管的显示。

所以我扩展I/O接口,用74LS377的输入端接P0口,其输出线1Q~8Q接8个发光二极管,WR作为锁存控制接74LS377的时钟端,扩展片选信号CS1接在74LS377的使能端G。

我用查询方式来查询按键来转换手动,自动,救护车到来的状态的变化,则把四个按键K4~K7与P3.2~P3.5相接,当按键置高电平时,程序就会转换到相应状态执行相应的模块状态。

在自动状态时,开始4个路口的红灯全亮(东西方向为之路,南北方向为主路)之后,南北路口的绿灯亮,东西口的红灯亮,延时显示并查询开关状态是否发生变化,当两个数码管(一个代表东西方向,一个代表南北方向)从0~3显示,当显示3后交通灯显示下一个状态,一直循环重复过程,直到查询到有按键发生变化。

当P3.3高电平时,自动转换为手动,(同理P3.3低电平时手动转换为自动。

)此时拨动按键使P3.2或P3.5置于高点位,就会转到主路或支路相应状态的交通灯显示,数码管显示0。

P3.4控制救护车来时的状态,当其高电位两个红灯全亮并蜂鸣器响起。

实验电路图:显示电路:三、程序:主程序流程图:输出口初始化化送灯的状态到锁存器,灯自动循环亮调用延时显示 并查询按键状态手动状态JB P3.3JNB P3.3开始JB P3.4P3.4 jnb之前状态JBP3.5 JB P3.2东西绿灯亮 南北红灯亮南北绿灯亮东西红灯亮救护车 东西南北红灯亮并警报显示子程序流程图:DISPL Y子程序流程图:ORG 4000HSTART: MOV DPTR,#0F100HMOV A,#11011110B ;东西南北红灯亮MOVX @DPTR,ALCALL DL1S ; 显示时间,并查询按键状态 LCALL XIANSHILOP1: MOV DPTR,#0F100HMOV A,#11011011B ;南北绿灯亮,东西红灯亮MOVX @DPTR,ALCALL DL1S ;显示时间,并查询按键状态LCALL XIANSHIMOV R0,#2LOP2: MOV DPTR,#0F100HMOV A, #11011001B ; 南北黄灯闪烁2次MOVX @DPTR,ALCALL DL1S ;显示时间,并查询按键状态 LCALL XIANSHILOPD: MOV DPTR,#0F100HMOV A,#11011011BMOVX @DPTR,ALCALL DL1SLCALL XIANSHIDJNZ R0,LOP2LOP3: MOV DPTR,#0F100HMOV A,#01111110B ;东西绿灯亮,南北红灯亮MOVX @DPTR,ALCALL DL1S ;显示时间,并查询按键状态LCALL XIANSHIMOV R0,#2LOP4: MOV DPTR,#0F100HMOV A,#00111110B ; 东西黄灯闪烁2次MOVX @DPTR,ALCALL DL1SLCALL XIANSHILOPE: MOV DPTR,#0F100HMOV A,#01111110B ;显示时间,并查询按键态 MOVX @DPTR,ALCALL DL1SLCALL XIANSHIDJNZ R0,LOP4 ;R0不为0,转L0P4AJMP STARTPK:MOV DPTR,#0F100H ;手动状态两个黄灯亮作为标志MOV A,#10111101BMOVX @DPTR,AJNB P3.3,START ;P3.3低电平转自动JB P3.2,ZHUL ;P3.2高电平转主路状态JB P3.5,ZILU ;P3.2高电平转之路状态JB P3.4,JHC ;P3.4高电平转救护车状态 CLR EA ;关救护车的蜂鸣器LCALL XIANSHI1 ;不显示时间,显示0AJMP PKZHUL:MOV DPTR,#0F100HMOV A,#11011011B ;南北绿灯亮,东西红灯亮MOVX @DPTR,ALCALL XIANSHI1 ;显示0AJMP PKZILU: MOV DPTR,#0F100HMOV A,#01111110B ;东西绿灯亮,南北红灯亮MOVX @DPTR,ALCALL XIANSHI1 ;显示0AJMP PKJHC: MOV TMOD,#01HMOV TH0,#0FCH ;蜂鸣器响起MOV TL0,#05BHSETB TR0SETB EACPL P1.7MOV DPTR,#0F100HMOV A, #11011110B ;东西,南北,红灯亮 MOVX @DPTR,ALCALL XIANSHI1 ;显示0;子程序DL1S: JB P3.3,PK ;查询按键状态JB P3.4,JHCRET;显示子程序XIANSHI:MOV A,#0 ;显示0MOV DPTR,#TB ;查表ANL A,0FHMOVC A,@A+DPTRMOV R1,AMOV P1,#11111111BCALL DISPLYLCALL DL1S1 ;调用延时 MOV A,#1 ;显示1 MOV DPTR,#TBANL A,0FHMOVC A,@A+DPTRMOV R1,AMOV P1,#11111111BCALL DISPLYLCALL DL1S1MOV A,#2 ;显示2MOV DPTR,#TBANL A,0FHMOVC A,@A+DPTRMOV R1,AMOV P1,#11111111BCALL DISPLYLCALL DL1S1MOV A,#3 ;显示3 MOV DPTR,#TBANL A,0FHMOVC A,@A+DPTRMOV R1,AMOV P1,#11111111BCALL DISPLYLCALL DL1S1RETXIANSHI1: MOV A,#0MOV DPTR,#TBANL A,0FH ;显示0的子程序 MOVC A,@A+DPTRMOV R1,AMOV P1,#11111111BCALL DISPLYLCALL DL1S1DISPLY:MOV R7,#8 ;MOV A,R1;MOV A,#8EHT: RLC A ;串形输入SETB P1.1 ;时钟置高MOV P1.0,C ;数据送sdaCLR P1.1 ;时钟置低位DJNZ R7,TMOV P1,#10110111B ;1RETDL1S1: MOV R6,#4DELAYY: MOV R5,#250DELAYE: MOV R3,#250 ;延时子程序DELAYF: DJNZ R3,DELAYFDJNZ R5,DELAYEDJNZ R6,DELAYYRETTB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6 H,0A1H,86H,8EHEND1 / 1。

51单片机c语言交通灯设计报告

51单片机c语言交通灯设计报告

xxxxxxxxx基于AT89S52交通灯设计学院:电子信息工程专业班级: xxxxxxxxxxxxxx姓名: xx xx学号: xxxxxxxxxxx指导老师: xxxxxxxxxx摘要交通灯在我们日常生活中随处可见,它在交通系统中处于至关重要的位置。

交通灯的使用大大减少了交通繁忙路口的事故发生,给行人和车辆提供一个安全的交通环境,人们的生命和财产安全有了保障。

本设计旨在模拟十字路口的交通灯,以AT89S51单片机为基础,结合按键和数码管等元器件设计出一个简单且完全的交通灯系统。

关键词:交通灯 AT89S52 单片机目录一、设计任务 (4)二、AT89S52单片机及其他元器件简介 (4)(1)AT89S52单片机 (4)三、系统硬件电路设计 (6)(1)时钟电路设计 (6)(2)复位电路设计 (6)(3)灯控制电路设计 (7)(4)按键控制电路设计 (7)四、元件清单及实物图 (8)1、程序清单 (8)2、原理图 (9)五、实验心得 (9)附1 源程序代码 (10)附2 原理图 (16)一、设计任务(1)、设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两条交叉道路上的车辆交替运行,每次通行时间都设30秒,时间可设置修改。

(2)、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道,且黄灯亮时,要求每秒亮一次。

(3)、有紧急车辆要求通过时,系统要能禁止东西和南北两条路上所有的车辆通行。

二、AT89S52单片机及其他元器件简介(1)AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2级中断结构,全双工串行口,片内晶振及时钟电路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。

系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。

关键词:交通灯,单片机,自动控制一引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这个技术在19世纪就已经出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。

红灯亮表示“停止”,绿灯亮表示“通行”。

信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。

1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。

绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。

左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。

红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!二概要设计2.1 设计思路利用单片机实现交通灯的控制,该任务分以下几个方面:a 实现红、绿、黄灯的循环控制。

要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。

b 用数码管显示倒计时。

可以利用动态显示或静态显示,串行并出或者并行并出实现。

C 实现急通车。

这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。

当情况解除,让时间回到只能隔断处继续进行。

2.2总体设计框图见图一:三硬件设计3.1LED循环电路设计3.1.1 89cs51单片机概述MCS-51单片机内部结构:89CS51是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。

89CS51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。

*中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。

*数据存储器(RAM):89CS51内部有128个8位用户数及存储单元和128个寄存器单元,他们是统一编址的,专营寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户自定义的字型表。

*程序存储器(ROM):89CS51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

*定时/计数器(ROM):89CS51有两个16位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。

*并行输入输出(I/O )口:89CS51共有4组8位I/O 口(P0、P1、P2或P3),用于对外数据传输。

*全双工串行号:89CS51内置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

*中断系统:89CS51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,客满著不同的控制要求,并具有2级优先级别选择。

*时钟电路:89CS51内置最高频率高达12Hz 的时钟电路,用于产生整个单片机运行的脉冲时序,但89CS51单片继续外置震荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard )结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton )结构。

MCS-51系统的引脚说明: MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直接DIP 结构,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O 口,中断口线与P3口线复用图二8951的抚慰方式可以自动复位,也可以是手动复位,见下图。

除此之外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可以接上没用电源,以保证单片机内部RAM的数据不丢失。

在编程时,EA/Vpp脚还需加上21V的编程电压。

3.1.2 LED循环说明东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。

红灯禁止通行,绿灯亮允许通行。

黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。

状态①②③④①循环时间45s 5s 45s 5s 45s 。

南北通道红灯亮红灯亮绿灯亮黄灯闪红灯亮。

东西通道绿灯亮黄灯闪红灯亮红灯亮绿灯亮。

上表说明东西路口亮绿灯的同时,南北路口红灯亮,同时开始45s倒计时。

倒计时结束后开始5s倒计时,东西黄灯闪烁南北还是亮红灯,计时结束后状态交换然后依次循环下去。

完成一次这样的循环要50s。

电路图如图三所示。

图三3.2 倒计时显示电路3.2.1 74LS164芯片74LS164用于扩展并行输出口。

用89CS51串行口外接164串入-并出移位寄存器扩展8位并行口。

8位并行口的每位分别接到数码显示管的不同显示端。

74LS164芯片管脚排列如下图,管脚1、2相连共同接单片机管脚RXD,8管脚接单片机管脚TXD,9管脚接高电平,7管脚接地,14管脚接高电平,其他管脚依次接数码显示管管脚。

倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。

驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。

倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择。

图四3.2.2 共阴极数码显示管这里列出了共阴和共阳数码管的管脚平排列和内部结构。

数码管3、8管脚内部连在一起。

如果是共阳极则将其接到高电平。

如果是共阴极则将其接地。

为了数码显示管的安全这里用三个二极管与其串联来降压。

图五3.2.3 倒计时电路倒计时显示电路如图六。

利用两个74LS164芯片并联后,其1、2管脚至单片机RXD 管脚8管脚至单片机TXD管脚。

然后其他管脚依次接至数码管个管脚。

对于数码管其3、8管脚经过三个串联的二极管接地。

图六3.2.4 急通车电路为了实现此功能,利用单片机中断达到目的。

利用一个手动按钮开关接至单片机外部中断0,同时在软件设计时将其设为最高优先级。

当有按键按下,四方全为红灯,同时将终端位置的PSW、ACC进栈保护。

当再按下按钮,将PSW、ACC出栈,回到原来的位置继续执行,电路图如下图。

4.2 交通灯中的中断处理流程(1)现场保护和现场恢复:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。

(2)中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。

(3)中断服务程序:有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。

(4)中断返回:执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。

系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块,若干按键组成时间设置和紧急按钮。

4.3.1系统硬件电路构成本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。

其具体的硬件电路总图七四软件按设计4.1 程序流程图:如图八所示。

图八4.2 LED红绿灯显示如图三所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。

我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。

至于循环需要软件控制,程序见附录。

4.3倒计时显示此处采用LED静态显示方式,当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另个字符为止。

89C51的串行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步移位寄存器,其数据由RXD端串行输出或输入;而同步移位时钟由TXD 端串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。

在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可构成一个或多个并行输入\输出口,用于串——并转换或显示器LED驱动。

此利用后者。

4.4 急通车控制将一按钮接到单片机外部中断0端口。

另一端接地,通过在程序里设置外部中断0为最高优先级。

当检测到有按钮按下时,产生中断,停止刚才的程序,转向中断执行。

在此过程必须利用PUSH、POP指令保护现场,这样当情况解除可以回到原来的地方继续执行。

4.5程序代码系统工作原理系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。

时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即K键为低电平时进入中断服务子程序,东西南北路口的保持现有通行状态,再按一下K键,中断结束返回。

其二为通行时间调整中断,若按键有效,进入相应的中断子程序,对时间进行调整,可延长或减少某一路段的通行时间,此后再按键则中断结束返回。

相关文档
最新文档