汇编语言的交通灯
汇编语言交通灯
设计报告一、设计方法:1、通过老师上课讲的内容及要求来设计。
2、开始时可跟着老师走从基础使用4094实现倒计时开始一步一步实现。
3、实现基础部分后我们就可按着自己的思路结合单片机的学习从而一步一步实现整个功能。
二、设计思路:1、首先在实现整个功能之前我并不清楚自己要设计的界面应是什么样子的,我从最基本的开始先学会使用4094实现一位倒计时,然后使用4094实现两位倒计时,实现了两位倒计时之后基本上就可以实现四个路口的倒计时显示。
2、完成基本型后就要想办法如何才能实现在线修改参数,且按照新的参数执行,而且参数用什么来设置等等,通过单片机的学习我想到了用中断方式的方法来实现,且在中断里来调用子程序来设置参数,并选用了键盘来设置参数。
因为单片机里已学过键盘子程序,现在再来使用这样的键盘,虽比单片机里学过的4*4键盘复杂点,但总不会太难了。
就这样一步一步按照自己的思路完成。
3、以上实现后,我们也可多加些按键来控制暂停、复位、行人按键等等,而这些在完成以上功能后再来实现它们就会很容易了。
流程图:三、选择的芯片:AT89C51、4094、KEYPAD-PHONE、LED-GREEN、LED-RED、LED-YELLOW、TSEG-COM-AN-GRN、3WATT100R、BUTTON 四、硬件设计:五、软件设计:1、部分代码:;30H、34H、35H主干道红、绿、黄灯,33H、31H、32H支干道红、绿、黄灯,修改用外部中断ORG 0000HLJMP MAINORG 0003H ;复位中断入口地址LJMP FWORG 0013H ;修改参数中断入口地址LJMP XGORG 0030HMAIN:MOV 30H,#50MOV 31H,#30MOV 32H,#20MOV 33H,#40MOV 34H,#32MOV 35H,#08LOOP: SETB IT0 ;设置外部中断0的触发方式SETB IT1 ;设置外部中断1的触发方式SETB EX0 ;开启外部中断0SETB EX1 ;开启外部中断1SETB PX0 ;设置优先级CLR PX1SETB EA ;开启总中断STAR1:MOV 40H,30HMOV 41H,31HMOV 42H,32HMOV 43H,33HMOV 44H,34HMOV 45H,35H;主干道的红与支干道的绿ZHUHO:CLR P2.7 ;关门,减震作用MOV 46H,#0F5H ;显示LED亮与灭MOV A,40H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,41H ;显示支干道的绿灯参数LCALL XSLCALL LOPSETB P2.7 ;开门,减震作用LCALL DELAYDEC 40H ;倒计时JNB P1.7,ZHIHODJNZ 41H,ZHUHOCLR P2.7MOV A,40H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,41H ;显示支干道的绿灯参数LCALL XSLCALL LOPSETB P2.7LCALL DELAY;主干道的红与支干道的黄ZIHU:CLR P2.7MOV 46H,#0F6H ;显示LED亮与灭MOV A,42H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,42H ;显示支干道的黄灯参数LCALL XSLCALL LOPSETB P2.7LCALL DELAYJNB P1.7,ZHIHO ;倒计时DJNZ 42H,ZIHUCLR P2.7MOV A,42H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,42H ;显示支干道的黄灯参数LCALL XSLCALL LOPSETB P2.7LCALL DELAY;支干道的红与主干道的绿ZHIHO:CLR P2.7MOV 46H,#0EBH ;显示LED亮与灭MOV A,43H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,44H ;显示主干道的绿灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAYDEC 43HDJNZ 44H,ZHIHOCLR P2.7MOV A,43H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,44H ;显示主干道的绿灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAY;支干道的红与主干道的黄ZUHU:CLR P2.7MOV 46H,#0DBH ;显示LED亮与灭MOV A,45H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,45H ;显示主干道的黄灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAYDJNZ 45H,ZUHUCLR P2.7MOV A,45H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,45H ;显示主干道的黄灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAYLJMP STAR1XG:JB P3.3,EXIT ;修改参数中断服务子程序MOV A,#00H ;使数码管都显示00MOV 46H,#0FFH ;使LED都灭LCALL XSLCALL LPLCALL LOPSJMP FCZFW:CLR EA ;复位中断服务子程序MOV A,#88MOV 46H,#0FFHLCALL XSLCALL LPLCALL LOP;产生中断后对参数重新赋初值FCZ:MOV P0,#0F9HMOV P2,#0BFHLCALL LKEY1 ;设置第一个参数MOV 30H,20HMOV P0,#0A4HMOV P2,#0BFHLCALL LKEY1 ;设置第二个参数MOV 31H,20HMOV P0,#0B0HMOV P2,#0BFHLCALL LKEY1 ;设置第三个参数MOV 33H,20HMOV P0,#99HMOV P2,#0BFHLCALL LKEY1 ;设置第四个参数MOV 34H,20HMOV A,30HSUBB A,31HMOV 32H,AMOV A,33HSUBB A,34HMOV 35H,AMOV 40H,30HMOV 41H,31HMOV 42H,32HMOV 43H,33HMOV 44H,34HMOV 45H,35HMOV P0,#0FFHMOV P2,#0FFHEXIT:RETI ;中断返回DELAY:MOV R3,#10 ;延时0.5s子程序MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB TR0LOOP1:JBC TF0,LOOP2SJMP LOOP1LOOP2:MOV TH0,#3CHMOV TL0,#0B0HDJNZ R3,LOOP1CLR TR0RETXS:MOV DPTR,#TAB ;显示子程序MOV B,#10DIV ABMOVC A,@A+DPTRMOV R5,AMOV A,BMOVC A,@A+DPTRMOV R6,ARETTAB: DB 0C0H,0F9H,0A4H,0B0HDB 99H,92H,82H,0F8HDB 80H,90H,88H,83HDB 0C6H,0A1H,86H,8EHLP:CLR C ;4094主干道显示两位倒计时子程序MOV R0,#08HMOV A,R6LP1:CLR P3.7RLC AMOV P3.6,CSETB P3.7DJNZ R0,LP1MOV A,R5MOV R0,#08HLP2:CLR P3.7RLC AMOV P3.6,CSETB P3.7DJNZ R0,LP2RETLOP:CLR C ;4094支干道显示两位数倒计时子程序MOV R0,#08HMOV A,R6LOP1:CLR P3.5RLC AMOV P3.4,CSETB P3.5DJNZ R0,LOP1MOV A,R5MOV R0,#08HLOP2:CLR P3.5RLC AMOV P3.4,CSETB P3.5DJNZ R0,LOP2XP2:MOV R0,#08H ;四个路口红绿灯LED显示器子程序MOV A,46HLP5:CLR P3.1RLC AMOV P3.0,CSETB P3.1DJNZ R0,LP5RET;键盘扫描子程序KEY16:LCALL KS ; 读键盘JZ KEY16 ; 判是否有键按下,A=0表示无键按下,再读LCALL T10MS ; 延时LCALL KS ; 有键按下的话,再读一次,消除抖动JZ KEY16 ; 判是否有键按下,A=0表示无键按下,再读MOV R2,#0EFH ; 列扫描初值,11101111MOV R4,#00H ; 列扫描计数单元置"0"; 下面进行列扫描(0~3)、读行值(01、04、07、0FF)LK1:MOV P1,R2 ; P1.4=0, 扫描第一列JB P1.0,ONE ; 判是否第0行健按下,否判下一行MOV A,#01H ; 是,行值"01"LJMP KPONE:JB P1.1,TWO ; 判是否第1行健按下,否判下一行MOV A,#04H ;是,行值"04"LJMP KPTWO:JB P1.2,THREE ; 判是否第2行健按下,否判下一行MOV A,#07H ; 是,行值"07"LJMP KPTHREE:JB P1.3,NEXT ; 判是否第3行健按下,否则扫描下一列MOV A,#0FFH ; 是,行值"0ff"LJMP KPNEXT:INC R4 ; 列计数加1MOV A,R2 ; 行扫描完,列移位,继续JNB ACC.6,KND ; 判是否列扫描结束RL A ; 左移,扫下一列MOV R2,AAJMP LK1 ; 转下一列读键KND:AJMP KEY16KP:ADD A,R4 ; 生成键值,A=行基值+列值(0~3)PUSH ACCLK:LCALL KSJNZ LKPOP ACCSETB P1.7RETT10MS:MOV R7,#10H ;T10ms延时子程序TS1:MOV R6,#0FFHTS2:NOPNOPDJNZ R6,TS2DJNZ R7,TS1RETKS:MOV P1,#0FH ; 判有无键按下子程序MOV A,P1CPL AANL A,#0FHRETLKEY1:MOV A,#0LCALL KEY16 ; 读第一个数CJNE A,#0AH,LKEY2 ; 键值>9则重读键SJMP LKEY1LKEY2:JNC LKEY1MOV R0,A ; 保存第一个数SWAP ALCALL XSP0P2 ; 显示第一个数LKEY3:MOV A,#0LCALL KEY16 ; 读第二个数CJNE A,#0AH,LKEY4 ; 键值>9(非数字键)则重读键SJMP LKEY3SJMP LKEY3LKEY4:JNC LKEY3MOV R1,A ; 第二个数存入B中MOV A,R0 ; 取第一个数SWAP A ; 换到高位ADD A,R1 ; 第二个数(低位)与第一个数(高位)合并MOV 20H,APUSH AMOV A,R0MOV B,#10MUL ABADD A,R1MOV 20H,APOP ALCALL XSP0P2 ; 显示两个数JB P1.3,$ ;判确定键有没按下RETXSP0P2:PUSH B ;显示子程序MOV DPTR,#XSTAB ; 取数据表首地址MOV B,A ; 保存原数据ANL A,#0FH ; 截取低4位数MOVC A,@A+DPTR ; 取显示字型码MOV P0,A ; 送P0显示MOV A,B ; 取原数据ANL A,#0F0H ; 截取高4位SWAP A ; 半字节交换MOVC A,@A+DPTR ; 取显示段码MOV P2,A ; 送P2显示MOV A,BPOP BRETXSTAB: DB 0C0H,0F9H,0A4H,0B0HDB 99H,92H,82H,0F8HDB 80H,90H,88H,83HDB 0C6H,0A1H,86H,8EHEND六、时间安排:1、要完成这个项目我们只有两个周的时间,第一个周我们完成了基本的用4094实现两位数的倒计时,并实现基本的十字路口,两路显示,能够实现最基本的运行。
红绿灯(汇编语言)
NOP
NOP
MOV 0A6H,#01EH ;
MOV 0A6H,#0E1H ;
MOV A,#11101101B
MOV P1,A ;双方向黄灯亮3秒
MOV DEDA,#0
MOV SEC,#0B
K2: MOV 0A6H,#01EH ;
MOV 0A6H,#0E1H ;
MOV A,SEC
NOP
INC DEDA ;MS
MOV A,DEDA
NOP
NOP
CJNE A,#14H,TT1
MOV DEDA,#0
INC SEC ;
MOV A,#11101101B
MOV P1,A ;双方向黄灯亮3秒
MOV DEDA,#0
MOV SEC,#0BK4:
MOV 0A6H,#01EH ;
**SEC EQU 36H ;秒
DEDA EQU 37H ;毫秒
ORG 0000H
SJMP START
ORG 0BH ;T0中断入口
JMP TIM0
ORG 30H
NOP
CJNE A,#10,BK6
CPL P1.5
MOV DEDA,#0DJNZ R0,BK6
MOV DEDA,#0
MOV SEC,#0
JMP START1
START: MOV SP,#46H
MOV A,#0FFH
MOV P1,A
MOV A,#0
MOV P0,A
MOV P2,A
MOV P3,A
MOV DEDA,#0
MOV A,DEDA ;MS
NOP
交通灯汇编语言课程设计资料
( 5)闯红灯报警系统(用开关代替红外设备进行模拟)
五、 结论与心得 通过这次课程设计,加深了对很多知识的理解,自己做一个东西的时候,才
会知道理论与实际的差别。 这过对交通灯的设计, 也学到了很多原来不熟悉或没 有掌握好的知识,像查询及其数码管的应用。 对于肯本上的指令理解的更深入了, 原来没有记住的指令,通过这次设计,都能熟悉的运用。
。
1、设计任务与要求的分析 对于具体过程的分析:东西南北红灯( 2S)东西绿南北红( 20S)东西绿灯 闪烁( 3S)东西黄灯亮( 1S)南北绿灯亮( 20S)南北绿灯闪烁( 3S)南北黄灯 亮( 2S) . 上述思路可分为两个循环:一个是在南北绿灯亮之前,南北红灯一直 亮着( 25S)随后是南北灯亮的过程中东西红灯一直亮着( 25S)。分别用数码管 定时 20S,25S 记录红灯和绿灯持续时间。 25 秒后南北方向的持续情况与东西对 调.这样就完成了一次整体循环。 二、 软件设计 1、显示原理 交通信号灯控制逻辑如下: 假设一个十字路口为东西南北走向。 开始为四个 路口的红灯全部亮之后 , 东西路口的绿灯亮 , 南北路口的红灯亮 , 延时一段时间后 , 东西路口的绿灯 , 闪烁若干次后( 3 秒),东西路口的绿灯熄灭,同时东西路口的 黄灯亮 , 延时一段时间后( 2 秒) , 东西路口的红灯亮 , 南北路口的绿灯亮 , 延时一 段时间后 , 南北路口的绿灯闪烁若干次后( 3 秒) , 南北路口的绿灯熄灭,同时南 北路口的黄灯亮,延时一段时间后( 2 秒) , 再切换到东西路口的绿灯亮 , 南北路 口的红灯亮 , 之后重复以上过程。
目录
一、设计任务与要求 ………………………………………………………………… .1
1、设计任务与要求的分析…………………………………………………… 1
简单交通灯实验 C语言 汇编语言
值得和即为另外一个方向红灯的时长。
上述两个程序的写法可以相互结合,在汇编语言编写的程序中,使用的是对 位进行赋值的方式控制的,书写麻烦,但是易懂。C 语言使用的是对 P 口进行赋 值,书写简单,可读性稍差。
4
delay(nbhd); P2=0X2D; //东西绿灯,南北红灯
delay(dxld); P2=0X2B; //东西黄灯,南北红灯
delay(dxhd);
}
} 注意:因为一个方向绿灯与黄灯的时长正好等于另外一个方向红灯的时长,因此
在程序开头进行定义时,仅仅定义了东西和南北方向绿灯与黄灯的时长,这两个
1
在进行原理图搭建的过程中需要注意: 1 发光二极管的极性。如果发光二极管在电路中接反了,即使程序正确,也 无法点亮发光二极管。只有当发光二极管中的电流充阳极流到阴极的时候,才能 点亮发光二极管。可以将原理图中发光二极管的的三角形看做箭头,只有电流沿 着箭头方向流动,才可以点亮发光二极管。 2 分压电阻。发光二极管最好串联分压电阻,否则在仿真软件中,单片机引 脚的电平状态显示将错误(注意:即使不添加也不影响发光二极管的点亮状态, 最好添加)。在实物制作时,由于单片机引脚的驱动能力有限,因此即使不串联 分压电阻,也可以。另外分压电阻的阻值需要注意,不可以太大,太大会导致发 光二极管不亮或者发光较暗。在仿真软件中设置为 200Ω 就可以。 3 交通灯组件。在进行交通灯实验时,可以不适用带颜色的数码管,直接使 用交通灯组件,这样绘制电路图非常方便。交通灯组件的关键词是“traffic lights”。 该组件使用的是正逻辑驱动,也就是说当引脚的电平为高电平时,旁边对应的 LED 点亮。 在上述原理图中,我将发光二极管组成的交通灯以及交通灯组件组成的交通 灯放在一个仿真原理图中(东西方向用 LED 灯绘制,南北方向用交通灯组件绘 制),读者如果需要使用相同的交通灯组件,只需要直接修改原理就可以,程序 不需要修改。 虽然交通灯的点亮状态有 3 种,但是将东西和南北的点亮状态组合却又 4 种,在编程的时候需要注意。控制流程:东西红灯,南北绿灯→东西红灯,南北 黄灯→东西绿灯,南北红灯→东西黄灯,南北红灯→······
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的端口高低电平的测试和跳转语句来实现功能三,并且功能一、二在主程序中实现,没有功能四的的实现程序。
交通信号灯控制系统(汇编语言课程设计)
汇编语言课程设计交通信号灯控制系统初始界面:实现功能齐全。
思路清晰~~~~~~~~~~~~一、设计要求利用PC机键盘和屏幕实现交通灯信号灯,控制系统。
二、设计内容与要求基本要求:1、完成一个十字路口的红绿灯正常状态的控制:实现日常生活中正常的交通路口的控制功能,实现南北、东西方向的切换。
2、显示时间,精确到秒;灯亮时间长短可变。
3、具有自动和手动控制功能。
提高要求:1、完成夜间状态的控制:由于夜间车辆和行人很少,实现南北、东西方向的黄灯闪烁,进入夜间控制状态。
2、完成紧急状态的控制:南北双方向都设置为红灯,利于执行紧急公务。
3、完成交通堵塞状态的控制:由于交通事故等原因出现南北或东西某一方向堵塞,可人为地调整每个方向的红灯时间,进入手动控制状态。
附加要求:必要的辅助功能(设置、修改等)。
三、编程提示要求用汇编语言进行编程,下面是编写过程中主要涉及的知识点(其中举例只是实现方法之一,同学可根据自己对知识的掌握情况进行设计并调试):1、视频显示程序设计:一般由DOS 或BIOS调用来完成。
有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。
用INT 10H即可建立某种显示方式。
用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用,例:要输出多于一个字符时,利用DOS功能调用9。
2、键盘扫描程序设计:检测键盘状态,有无输入,并检测输入各值。
例:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器。
3、定时器中断处理程序:在此中断处理程序中,计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。
例:在系统定时中断处理程序中,有一条中断指令INT 1CH指令,在ROM BIOS中,1CH的处理仅一条IRET指令,实际上它并没有做任何工作而只是为用户提供了一个软中断类型号,所以INT 1CH指令每秒也将执行18.2次,设计中可用这个定时周期性工作的处理程序来代替原有的1CH程序,实现定时。
简易交通灯报告(附源程序——汇编语言)
题目:简易交通灯一、设计目的利用TDN微机原理试验箱及单元电路,实现对一道路交通灯的控制。
当通过车辆计数达到50时,绿灯灭,红灯亮,同时数码块倒计时若干秒(此次设计中设为9秒)。
此时,车辆停止,行人可以通过。
二、参加人员及分工李——试验报告霍——调试程序洪——编写程序三、技术要求1、设计完成交通灯的电路2、采用TDN试验箱上的8255、8259、8253完成3、程序设计中采用软件延时四、试验器材TDN-MD86/51实验箱一台,8253一片,8255一片,8259一片,数码管一组,发光二极管一组。
五、设计和调试环境TDN-MD86/51教学试验系统六、题目分析、工作原理、设计思想题目分析我们所做的交通灯是控制单路口处车辆和行人的通过及停止的简易交通灯。
因此需要两个灯和一块用于显示倒计时的数码块来控制车辆和行人的通行、停留问题。
其中两个灯分为红绿色,主要根据两只灯的亮灭情况来控制车辆,当红灯灭绿灯亮的时候车辆可以通过,而红灯亮绿灯灭时车辆就要停止通行。
数码块用于显示倒计时的时间以控制人,当倒计时开始时人通行,倒计时结束后行人就要等待。
根据题目分析得出以下设计思想及工作原理:设计思想在一开始启动交通灯时设置为红灯灭绿灯亮,让车辆先通行,行人等待,当通过50辆车后,红绿灯都同时灭然后红灯亮绿灯灭且数码快开始倒计时,此时为行人通行时间。
然后当数码块倒计时到0时行人通行的时间结束。
转而红灯灭绿灯亮又改为车辆通行时间。
红绿灯和数码块如此反复工作就构成的交通灯。
工作原理通过向8259写入程序来控制其他器件的工作。
在程序一开始写入中断向量和各芯片的控制方式字,以确保发生中断是正确的响应中断及芯片正确的工作状态。
接下来的程序就是控制8255和8253,8255选择工作方式1,A、B、C、口都做基本的输入输出。
通过8255A 口先让红灯灭绿灯亮。
8253选择工作方式2:计数停止中断,通过8253对车辆的计数达到50辆车是就发出中断请求。
微机原理与汇编语言交通灯
欢迎下载我曾做过的微机原理与汇编语言课程设计:交通灯。
程序在MASM,唐都TDN86/88实验系统上运行通过。
指导老师对你这次编程的构想,这想法看问题出发点在哪问的很少,但是细节会问很多。
当时,他有问我:你每次运行程序时都敲入G=0000:2000这是什么意思。
程序中有“MOV[SI],AX”语句,你知道它干什么的(中断矢量初始化),那它现在内容是什么(看着程序,我也说了),那它为什么里面放的就是这个值,而不是其他值?(我不会了,只说是规定。
心里很生气,不问思想,问什么呢!)后面还有更气人的,你们这系统不符合实际,你一开始在几点启动的它,你怎么就知道过多长时间就进入夜间(0点以后)的?夏天白天长,冬天白天短,我家还睡觉可晚了。
(我当时都疯了,实在没话说。
不过也确实没考虑时间校准的问题,只觉得是个模拟,不用太当真,不过老师说的蛮对的。
)这只是给大家个思路,以时间作为出发点,去完成交通灯的工作时序图。
这份实验报告是不完整的,其中我们小组的流程图没画,同时程序没有语法错误,但是运行起来一个是灯显示不对,一个是绿灯倒记时只有一组(正常是两组)。
硬件连线图也没有。
希望大家多去动手实践,永远都别想着不劳而获。
要是按我这次的思路来,希望可以把时间开始,校准考虑进去。
这次试验我原想着用两8253级连隔1S引起一中断,结果一看实验箱只一个8253,才选用了软件编程加硬件结合起来,得到一固定时间的方法。
万事开头难,这个实验前两天都不知怎么办。
祝大家学习好,身体棒!末了,有什么问题,可以给我在下这个资源的评论区或我的CSDN个人主页上留言中北大学电子与计算机科学技术学院汇编语言课程设计题目:交通灯控制系统班级:04090402指导教师:完成日期:2007年7月13日学号姓名负责模块成绩组长04090402xx8255A成员04090402xx绿灯倒计时成员04090402xx8259中断成员04090402xx夜间控制成员04090402xx82531需求分析在当今社会里,交通越来越发达,车辆也越来越来多,由此也带来了大量交通问题。
交通灯 (汇编语言)
——交通灯设计人:张玉印200800800439李娜200800800099一、设计目标:设计一个工作于支、干路交叉处的交通灯系统,支道和干道各有一组交通灯,依次为绿、黄、红。
主干道红灯20秒、黄灯4秒、红灯14秒,支干道绿灯10秒、黄灯4秒、红灯24秒。
主要功能:1、每一时间段内两组数码管都只有一个灯亮,并且颜色不同,能够实现数码管倒计时计时到零时能够自动的转换成下一个阶段,四个阶段交替周期进行。
2、在道路出现紧急情况时,能够手动中断控制使主道和支道的交通灯都变成红灯,并且紧急情况排除后能够手动控制恢复到原来中断前的状态有序执行。
3、能够报警,根据特殊情况的分类报警器(蜂鸣器)的发生的频率不一样,蜂鸣器的频率能够通过旋钮手动调节。
一、实验器材唐都TS-PITE试验箱,用到的芯片单元有8254单元.、8255单元、8259单元、LED显示单元、数码管显示单元、单脉冲产生单元、A/D 0809转换单元、蜂鸣器单元、时钟源。
二、实验原理与方法:1.、8259工作原理1、数据总线缓冲器:8259A与系统数据总线的接口,是8位双向三态缓冲器。
CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过缓冲器传送的。
2、读/写控制逻辑:CPU通过它实现对8259A的读/写操作。
中断请求寄存器IRR:8位,用以分别保存8个中断请求信号,当响应的中断请求输入脚有中断请求时,该寄存器的相应位置1。
3、在试验中应用到8259的MIR7中断申请口,首先写入中断向量表中,将中断申请口接在KK1+上。
通过手动按下KK1+来决定是否产生中断。
4、中断子程序中必须用STI开中断否则会影响下一个中断的响应。
2、8254的工作原理1)8254是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。
其CLK0~CLK2是计数器0~2的时钟脉冲输入端, GATE0~GATE2是门控脉冲输入端, OUT0~OUT2是输出端。
交通灯汇编语言课程设计资料
源程序如下: DISPLAY: ; 数码显示 MOV A, SECOND1东; 西秒寄存器 MOV B, #10; 拆成两个 10 进制数 DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, A MOV A, SECOND2 MOV B, #10 ;16 进制数拆成两个 10 进制 DIV AB MOV DBUF+3, A MOV A,B MOV DBUF+2, A MOV R0,#DBUF MOV R7,#4 DP10: MOV DPTR,#LEDMAP MOV A,@R0 MOVC A,@A+DPTR MOV @R1,A INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4 DP12: MOV R7,#8 MOV A,@R0 DP13: RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13
( 5)闯红灯报警系统(用开关代替红外设备进行模拟)
五、 结论与心得 通过这次课程设计,加深了对很多知识的理解,自己做一个东西的时候,才
会知道理论与实际的差别。 这过对交通灯的设计, 也学到了很多原来不熟悉或没 有掌握好的知识,像查询及其数码管的应用。 对于肯本上的指令理解的更深入了, 原来没有记住的指令,通过这次设计,都能熟悉的运用。
用51单片机控制交通灯汇编语言编写
⽤51单⽚机控制交通灯汇编语⾔编写基于51单⽚机的交通灯控制系统设计摘要:在⽇常⽣活中,交通信号灯的使⽤,市交通得以有效管理,对于疏导交通流量、提⾼道路通⾏能⼒,减少交通事故有明显效果。
交通灯控制系统由80C51单⽚机、键盘、LED 显⽰、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显⽰功能,市交通实现有效控制。
关键词:交通灯,单⽚机,⾃动控制⼀引⾔当今,红绿灯安装在个个道⼝上,已经成为疏导交通车辆最常见和最有效的⼿段。
但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤⽓为光源的红、蓝两⾊的机械般⼿势信号灯,⽤以指挥马车通⾏。
这是世界上最早的交通信号灯。
1868年,英国机械⼯程师纳伊特在伦敦威斯敏斯特区的会议⼤厦前的⼴场上,安装了世界上最早的煤⽓红绿灯。
它由红绿两以旋转⽅式玻璃提灯组成,红⾊表⽰“停⽌”,绿⾊表⽰“注意”。
1869年1⽉2⽇,煤⽓灯爆炸,是警察受伤,遂被取消!电⽓启动的红绿灯出现在美国,这种红绿灯由红黄绿三⾊圆形的投光器组成,1914年始装于纽约市5号⼤街的⼀座⾼塔上。
红灯亮表⽰“停⽌”,绿灯亮表⽰“通⾏”。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提⾼道路通⾏能⼒、减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯时通⾏信号灯,⾯对绿灯的车辆可以直⾏,左转弯和右转弯,除⾮两⼀种标志禁⽌某⼀种转向。
左右转弯车辆必需让合法的正在路⼝内⾏驶的车辆和过⼈⾏横线的⾏⼈优先通⾏。
红灯是禁⾏信号灯,⾯对红灯的车辆必需在交叉路⼝的停车线后停车。
黄灯是警告信号,⾯对黄灯的车辆不能越过停车线,但车辆已经⼗分接近停车线⽽不能安全停车的可以进⼊交叉路⼝!⼆概要设计2.1 设计思路利⽤单⽚机实现交通灯的控制,该任务分以下⼏个⽅⾯:a 实现红、绿、黄灯的循环控制。
要实现此功能需要表⽰三种不同颜⾊的LED灯分别接在P1个管脚,⽤软件实现。
汇编DSP交通灯报告
1 绪论交通灯发展至今在灯光表示上基本能完全适应道路的所有状况,而十字路口交通灯是行车驾驶中必不可少的安全指示标志,它们为繁忙的道路交通及人们的安全提供了较好的保障。
然而,我们只知道交通灯在红、黄、绿三色之间交替更换来控制人车流量,却对其内部的工作原理及软硬件的设计了解很少,因此要通过此次十字路口交通灯的设计来进一步研究交通灯的内部结构。
同时将学习到的DSP系统的组成与原理应用到交通灯的设计当中,加深对DSP这门课程的了解。
通过DSP课程设计,使学生能将学到的DSP系统的组成与原理用到具体的实际系统中,也是将该门课程与实际问题相连接的关键步骤。
通过DSP课程设计,能够提高学生分析问题,解决问题,从而运用所学知识解决实际问题的能力,并培养基本的,良好的系统软硬件设计等能力。
同时,对学生将来走上工作岗位,遇到相关的问题有很大的帮助。
2 课程设计的内容及要求2.1课程设计的内容DSP课程设计是对《数字信号处理》、《DSP原理及应用》等课程的较全面练习和训练,是实践教学中的一个重要环节。
通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。
初步培养学生对工程设计的独立工作能力,掌握电子系统设计的一般方法。
通过课程设计,基本技能的训练,如查阅设计资料和手册、程序的设计、调试等,提高学生分析问题、解决问题的能力。
本题目为急救车与十字路口交通灯的设计,目的是熟练掌握DSP定时器的控制、中断系统的应用以及程序的编写调试。
2.2 课程设计的要求1、南北、东西各三个灯(红、黄、绿);2、南北、东西两向各有倒计时功能(各两位数码管显示);(1)南北绿灯、东西红灯,延时20秒(2)南北绿灯闪3次、东西红灯(6秒)(3)南北黄灯、东西红灯(4秒)(4)南北红灯、东西绿灯(20秒)(5)南北红灯、东西绿灯闪3次(6秒)(6)南北红灯、东西黄灯延时3秒(4秒)(7)回到(1)3、功能键:(1)启动开关(2)急救灯的启动开关4、启动开关按下时,交通灯开始运行,再按一下表示停止。
基于汇编语言的一种交通灯控制电路设计概要
基于汇编语言的一种交通灯控制电路设计曾正武汉大学电气工程学院,湖北武汉(430072E-mail:zengerzheng@摘要:根据实际中提出的具体要求,对交通灯控制电路进行了改进。
编写了相应的汇编语言程序,在DECE-S98三合一实验系统中调试通过,获得了设计课题所要求的结果。
程序简单,并给出了每步程序的详细注释。
对该问题的进一步工作给出了展望。
关键词:交通灯;控制;DECE-S98系统;汇编语言1. 设计课题内容及要求一般情况下是正常的交通灯,特殊情况下,可人为控制,一路通行,另一路阻止。
具体完成以下控制要求z一般情况下,正常的红绿灯交替状态;z第一个按键控制一个方向通行绿灯,另一个方向红灯;z第二个按键控制一个方向通行绿灯,另一个方向红灯;.z第三个按键控制系统又恢复到正常的红绿灯交替状态。
设计平台:DECE-S98三合一实验系统(启东计算机总厂。
2. 方案与系统组成框图及工作原理说明设计题目的背景是实际中的交通灯控制,实际的交通灯布置情况如图1所示。
每个路口都设置了红绿黄三个灯,当一个路口即将由绿灯转换为红灯时,中间经历一个短暂的黄灯状态。
在每组灯中,可以认为控制交通灯的工作情况,以适应某些特殊要求。
图1 交通灯布置情况2.1 设计方案根据设计题目的要求,选择用8255芯片作为输入输出接口,通过程序向接口发送指令,控制LED 的亮和暗。
其中,输出为1(高电平时,LED 亮;输出为0(低电平时,LED 暗。
为了满足题目中要求:1正常时,红绿灯交替运行;2一个方向绿灯亮,另一个方向红灯亮;3红绿灯的亮暗与2相反。
假定以上各种状态都由一个开关控制,那么需要三个开关作为控制量从8255的某个接口中读入到CPU 中,决定程序执行何种状态。
在设计中,8255的A 口和B 口用作输出口,控制12只LED 的开通和关闭;C 口用作输入口,将3个开关状态读入到CPU 中。
2.2 系统组成框图系统组成框图如图2所示。
基于51单片机汇编语言设计的交通灯
交通灯的控制摘要:本设计以AT89C51单片机为主控模块,主要由按钮开关,数码管,发光二极管组成,利用汇编语言编写程序来模拟对十字路口的交通管理,系统包括左右拐,直行,人行道四个基本的交通等功能。
南北方向亮绿灯60s,然后黄灯闪烁3次,每次一秒(亮灭各40ms),红灯40s,同时东西方向红灯65s,绿灯35s,黄灯闪烁3s.各路灯用LED模拟显示,同时用七段数码管显示两路的倒计时时间。
利用键盘可修改灯亮时间PC机设置灯亮时间,利用PC与单片机串口通信实现。
为防止出现紧急情况(如119,110通过时),该系统还设置了中断,可通过按键使各个路口为红灯其它车辆禁行,特殊车辆通行的状态,当东西方向为通行状态时,南北方向有突发情况,也可通过手动按键使东西方向为红灯,南北方向为绿灯.在对系统的分析基础上,提出了几种设计方案,经比较选择各方较好的LED 动态循环显示方案进行设计,设计包括硬件和软件两大部分单片机最小系统,时间显示,交通等显示三部分。
以AT89C51为控制核心,东西南北各设置3个交通灯,东西,南北方向各设置一个2位的数码管时间显示器,交通灯显示则采用红绿黄三色高亮发光二极管模拟,软件采用模块化的设计方法,主要分为主程序,定时中断服务子程序,倒计时显示子程序,交通灯模拟显示子程序。
软件设计完成,经过对该设计程序模拟测试,可实现对十字路口交通的良好管理,预期目标全部达到,该系统操作简单,实用性强,扩展功能好。
关键词:AT89C51 数码管光二极管中断模拟目录1前言51。
1该课程选题背景51。
2该课程选题现实意义51.3单片机交通灯研究任务52设计方案62.1方案设计目的62。
2方案设计思路62.3方案设计原理73系统硬件设计83.1 AT89C51芯片简介83.2 74LS47芯片简介113。
3系统总框图123.4、交通灯硬件线路123。
5、系统工作原理124.软件设计134.1每秒钟的设定134.2秒的方法134。
汇编语言交通灯程序及专周报告
一、实验名称:单片机设计交通灯二、实验目的1、巩固单片机基础,利用所学单片机知识编写程序。
2、掌握单片机的编程调试过程。
三、设计要求:1、A、B 两路各放行60S,并在数显管上显示各路通行标。
2、绿灯最后5S闪烁。
3、绿灯到红灯间有黄灯并闪4S。
4、在数显管上显示剩余时间。
四、硬件、软件的设计原理1、硬件设计图:见附页。
2、硬件设计说明:(1)、用单片机的P1口接6只二极管模拟交通灯,P1口先输入高电平熄灭星号灯,输出低电平点亮信号灯。
P1口线控制功能及相应控制码如表:(2)用单片机P0口皆数显管闲事剩余时间。
3、软件设计说明;(1)、软件设计思路1)、主程序主要采取调用子程序,由R7寄存器确定交通灯的各时间,并用它来做子减一坐到倒计时和各红灯的剩余时间是否到0,并用RS1中的R1控制A绿B红的倒计时5S时绿灯闪的状态,R4控制A黄灯闪的状态,R5控制A红B绿闪的状态,R6控制B黄灯闪的状态。
利用定时器查询方式定时1S。
2)、程序流程图:见附页五、程序及说明;见附页六、心得这个专周从刚开始的没头绪,到最后终于明白。
下面就是我在专周过程周遇到的一些困难的描述。
1.分析交通灯的状态的时候少了两种状态,导致最后的程序是红灯和黄灯后都有黄灯,最后在老师的提醒下,我又加了倒数5S时绿灯闪的状态。
2.硬件设计好后,开始编程。
3.编程时,我先画好大概的流程图,以致编程时不容易混乱。
4.编好程后就开始调试,通过不断的改程序,以致程序无误,调试过程中,开始的时候用中断定时,但最后数显闪得太快,经过反复的修改,最后定位定时器查询方式。
在此过程中,通过看书,反复改错,问同学、老师,终于完成了专周。
通过这次专周,我更进一步熟悉了单片机,也明白了如何去设计一个东西的思路,如何改错。
在以后的学习生活中我会更加努力,学更多的东西。
汇编程序模拟交通灯实验
模拟交通灯一、实验名称:模拟交通灯二、实验目的:用单片机上的LED灯模拟红绿的工作过程三、实验仪器与设备:1、联想Z560(ITH)笔记本一台(带KEIL4与STC-ISP)2、铁牛单片机3、USB供电线一条4、USB转串口通信线一条四、实验原理流水灯是共阳的,付给相应的位“0”,这个灯就亮,然后加上一些延时程序就可以实现红绿灯变化过程。
以下为原程序:ORG 0000HAJMP MAINMAIN:MOV P2,#0BDHMOV R7,#40PROGRAM1:LCALL DELAYDJNZ R7,PROGRAM1MOV R7,#5PROGRAM2:MOV P2,#0B7HLCALL DELAYMOV P2,#0BFHLCALL DELAYDEC R7MOV A,R7JNZ PROGRAM2MOV P2,#0DBHMOV R7,#40PROGRAM3:LCALL DELAYDJNZ R7,PROGRAM3MOV R7,#00PROGRAM4:MOV P2,#7BHLCALL DELAYMOV P2,#0FBHLCALL DELAYINC R7CJNE R7,#05H,PROGRAM4AJMP MAINDELAY:MOV R3,#5D1:MOV R2,#66D2:MOV R1,#251D3:DJNZ R1,D3DJNZ R2,D2DJNZ R3,D1RETEND五、实验步骤:1、编写汇编程序,并编译产生HEX文件2、实验板连接笔记本,用STC下载软件烧写HEX文件到单片机六、实验结果与分析:通电下载程序后,A线绿灯亮,B线红灯亮,持续10秒后,A线绿灯灭黄灯闪烁5次,B线红灯亮,然后A线红灯亮,B线绿灯亮,持续10秒,A线红灯亮,B线绿灯灭黄灯闪烁5次。
然后重复上述过程。
实验结果达到预期效果,很好地模拟了交通灯工作过程七、实验体会:生活中很多与控制有关的现象都可以用单片机控制实现,在控制领域里,单片机起到很大的作用。
汇编交通灯课程设计
汇编交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握交通灯的基本原理,包括红绿灯变换的逻辑和时间控制。
2. 学生能够通过图表和程序代码,展示交通灯的工作流程。
3. 学生能够运用所学的编程知识,设计并实现一个简单的汇编语言交通灯程序。
技能目标:1. 学生能够运用汇编语言编写基本的控制语句,实现对交通灯状态的改变。
2. 学生通过课程实践,培养逻辑思维和问题解决能力,学会调试和优化程序。
3. 学生能够合作完成项目,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对编程的兴趣,增强对信息技术学科的认识和喜爱。
2. 学生能够在项目实施过程中,体会团队合作的重要性,学会尊重他人意见,培养良好的团队合作精神。
3. 学生通过了解交通灯的运作,认识到科技在生活中的应用,激发学习科学技术的热情。
课程性质:本课程为信息技术学科,以项目式学习方式,结合汇编语言教学,提高学生的实践能力和创新思维。
学生特点:学生处于高年级阶段,具备一定的计算机基础和编程知识,对新鲜事物充满好奇,喜欢挑战。
教学要求:教师需引导学生通过实践活动,掌握汇编语言编程技巧,注重培养学生的实际操作能力和团队协作能力。
同时,关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
在此基础上,将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 交通灯工作原理介绍:包括交通灯的功能、红绿灯变换规则及时序控制。
- 教材章节:第三章《顺序控制》- 内容列举:交通灯状态定义、状态切换条件、时间控制方法。
2. 汇编语言基础知识回顾:重点复习汇编语言中的寄存器、指令、数据定义等基本概念。
- 教材章节:第二章《汇编语言基础》- 内容列举:寄存器的作用、常用指令、数据类型及表示方法。
3. 编写汇编程序实现交通灯控制逻辑:- 教材章节:第四章《分支与循环》- 内容列举:使用if-else语句实现红绿灯切换,利用循环实现倒计时功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计报告一、设计方法:1、通过老师上课讲的内容及要求来设计。
2、开始时可跟着老师走从基础使用4094实现倒计时开始一步一步实现。
3、实现基础部分后我们就可按着自己的思路结合单片机的学习从而一步一步实现整个功能。
二、设计思路:1、首先在实现整个功能之前我并不清楚自己要设计的界面应是什么样子的,我从最基本的开始先学会使用4094实现一位倒计时,然后使用4094实现两位倒计时,实现了两位倒计时之后基本上就可以实现四个路口的倒计时显示。
2、完成基本型后就要想办法如何才能实现在线修改参数,且按照新的参数执行,而且参数用什么来设置等等,通过单片机的学习我想到了用中断方式的方法来实现,且在中断里来调用子程序来设置参数,并选用了键盘来设置参数。
因为单片机里已学过键盘子程序,现在再来使用这样的键盘,虽比单片机里学过的4*4键盘复杂点,但总不会太难了。
就这样一步一步按照自己的思路完成。
3、以上实现后,我们也可多加些按键来控制暂停、复位、行人按键等等,而这些在完成以上功能后再来实现它们就会很容易了。
流程图:开始设置一位数倒计时设置两位数倒计时设置一个路口红灯参数倒计时显示设置另一个路口支路绿灯参数倒计时显示设置十字路口两路红黄绿灯循环倒计时显示设置十字路口红黄绿LED显示设置读写键盘、显示子程序通过调用键盘、显示子程序来赋初值而实现十字路口两路显示先赋初值实现十字路口两路显示,后使用中断服务子程序调用键盘、显示子程序来重新赋初值实现十字路口两路显示使用中断实现设置参数复位功能通过查询方式实现行人按键绿灯显示功能总体完善程序及其功能,将其融合实现整个功能调整完善整个硬件电路图让其美观结束三、选择的芯片:AT89C51、4094、KEYPAD-PHONE、LED-GREEN、LED-RED、LED-YELLOW、TSEG-COM-AN-GRN、3WATT100R、BUTTON 四、硬件设计:五、软件设计:1、部分代码:;30H、34H、35H主干道红、绿、黄灯,33H、31H、32H支干道红、绿、黄灯,修改用外部中断ORG 0000HLJMP MAINORG 0003H ;复位中断入口地址LJMP FWORG 0013H ;修改参数中断入口地址LJMP XGORG 0030HMAIN:MOV 30H,#50MOV 31H,#30MOV 32H,#20MOV 33H,#40MOV 34H,#32MOV 35H,#08LOOP: SETB IT0 ;设置外部中断0的触发方式SETB IT1 ;设置外部中断1的触发方式SETB EX0 ;开启外部中断0SETB EX1 ;开启外部中断 1SETB PX0 ;设置优先级CLR PX1SETB EA ;开启总中断STAR1:MOV 40H,30HMOV 41H,31HMOV 42H,32HMOV 43H,33HMOV 44H,34HMOV 45H,35H;主干道的红与支干道的绿ZHUHO:CLR P2.7 ;关门,减震作用MOV 46H,#0F5H ;显示LED亮与灭MOV A,40H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,41H ;显示支干道的绿灯参数LCALL XSLCALL LOPSETB P2.7 ;开门,减震作用LCALL DELAYDEC 40H ;倒计时DJNZ 41H,ZHUHOCLR P2.7MOV A,40H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,41H ;显示支干道的绿灯参数LCALL XSLCALL LOPSETB P2.7LCALL DELAY;主干道的红与支干道的黄ZIHU:CLR P2.7MOV 46H,#0F6H ;显示LED亮与灭MOV A,42H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,42H ;显示支干道的黄灯参数LCALL XSLCALL LOPSETB P2.7LCALL DELAYJNB P1.7,ZHIHO ;倒计时DJNZ 42H,ZIHUCLR P2.7MOV A,42H ;显示主干道的红灯参数LCALL XSLCALL LPMOV A,42H ;显示支干道的黄灯参数LCALL XSSETB P2.7LCALL DELAY;支干道的红与主干道的绿ZHIHO:CLR P2.7MOV 46H,#0EBH ;显示LED亮与灭MOV A,43H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,44H ;显示主干道的绿灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAYDEC 43HDJNZ 44H,ZHIHOCLR P2.7MOV A,43H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,44H ;显示主干道的绿灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAY;支干道的红与主干道的黄ZUHU:CLR P2.7MOV 46H,#0DBH ;显示LED亮与灭MOV A,45H ;显示支干道的红灯参数LCALL XSMOV A,45H ;显示主干道的黄灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAYDJNZ 45H,ZUHUCLR P2.7MOV A,45H ;显示支干道的红灯参数LCALL XSLCALL LOPMOV A,45H ;显示主干道的黄灯参数LCALL XSLCALL LPSETB P2.7LCALL DELAYLJMP STAR1XG:JB P3.3,EXIT ;修改参数中断服务子程序MOV A,#00H ;使数码管都显示00MOV 46H,#0FFH ;使LED都灭LCALL XSLCALL LPLCALL LOPSJMP FCZFW:CLR EA ;复位中断服务子程序MOV A,#88MOV 46H,#0FFHLCALL XSLCALL LPLCALL LOP;产生中断后对参数重新赋初值FCZ:MOV P0,#0F9HMOV P2,#0BFHLCALL LKEY1 ;设置第一个参数MOV 30H,20HMOV P0,#0A4HMOV P2,#0BFHLCALL LKEY1 ;设置第二个参数MOV 31H,20HMOV P0,#0B0HMOV P2,#0BFHLCALL LKEY1 ;设置第三个参数MOV 33H,20HMOV P0,#99HMOV P2,#0BFHLCALL LKEY1 ;设置第四个参数MOV 34H,20HMOV A,30HSUBB A,31HMOV 32H,AMOV A,33HSUBB A,34HMOV 35H,AMOV 40H,30HMOV 41H,31HMOV 42H,32HMOV 43H,33HMOV 44H,34HMOV 45H,35HMOV P2,#0FFHEXIT:RETI ;中断返回DELAY:MOV R3,#10 ;延时0.5s子程序MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB TR0LOOP1:JBC TF0,LOOP2SJMP LOOP1LOOP2:MOV TH0,#3CHMOV TL0,#0B0HDJNZ R3,LOOP1CLR TR0RETXS:MOV DPTR,#TAB ;显示子程序MOV B,#10DIV ABMOVC A,@A+DPTRMOV R5,AMOV A,BMOVC A,@A+DPTRMOV R6,ARETTAB: DB 0C0H,0F9H,0A4H,0B0HDB 99H,92H,82H,0F8HDB 80H,90H,88H,83HDB 0C6H,0A1H,86H,8EHLP:CLR C ;4094主干道显示两位倒计时子程序MOV R0,#08HLP1:CLR P3.7RLC AMOV P3.6,CSETB P3.7DJNZ R0,LP1MOV A,R5MOV R0,#08HLP2:CLR P3.7RLC AMOV P3.6,CSETB P3.7DJNZ R0,LP2RETLOP:CLR C ;4094支干道显示两位数倒计时子程序MOV R0,#08HMOV A,R6LOP1:CLR P3.5RLC AMOV P3.4,CSETB P3.5DJNZ R0,LOP1MOV A,R5MOV R0,#08HLOP2:CLR P3.5RLC AMOV P3.4,CSETB P3.5DJNZ R0,LOP2XP2:MOV R0,#08H ;四个路口红绿灯LED显示器子程序LP5:CLR P3.1RLC AMOV P3.0,CSETB P3.1DJNZ R0,LP5RET;键盘扫描子程序KEY16:LCALL KS ; 读键盘JZ KEY16 ; 判是否有键按下,A=0表示无键按下,再读LCALL T10MS ; 延时LCALL KS ; 有键按下的话,再读一次,消除抖动JZ KEY16 ; 判是否有键按下,A=0表示无键按下,再读MOV R2,#0EFH ; 列扫描初值,11101111MOV R4,#00H ; 列扫描计数单元置"0"; 下面进行列扫描(0~3)、读行值(01、04、07、0FF)LK1:MOV P1,R2 ; P1.4=0, 扫描第一列JB P1.0,ONE ; 判是否第0行健按下,否判下一行MOV A,#01H ; 是,行值"01"LJMP KPONE:JB P1.1,TWO ; 判是否第1行健按下,否判下一行MOV A,#04H ;是,行值"04"LJMP KPTWO:JB P1.2,THREE ; 判是否第2行健按下,否判下一行MOV A,#07H ; 是,行值"07"LJMP KPTHREE:JB P1.3,NEXT ; 判是否第3行健按下,否则扫描下一列MOV A,#0FFH ; 是,行值"0ff"LJMP KPNEXT:INC R4 ; 列计数加 1MOV A,R2 ; 行扫描完,列移位,继续JNB ACC.6,KND ; 判是否列扫描结束RL A ; 左移,扫下一列MOV R2,AAJMP LK1 ; 转下一列读键KND:AJMP KEY16KP:ADD A,R4 ; 生成键值,A=行基值+列值(0~3)PUSH ACCLK:LCALL KSJNZ LKPOP ACCSETB P1.7RETT10MS:MOV R7,#10H ;T10ms延时子程序TS1:MOV R6,#0FFHTS2:NOPNOPDJNZ R6,TS2DJNZ R7,TS1RETKS:MOV P1,#0FH ; 判有无键按下子程序MOV A,P1CPL AANL A,#0FHRETLKEY1:MOV A,#0LCALL KEY16 ; 读第一个数CJNE A,#0AH,LKEY2 ; 键值>9则重读键SJMP LKEY1LKEY2:JNC LKEY1MOV R0,A ; 保存第一个数SWAP ALCALL XSP0P2 ; 显示第一个数LKEY3:MOV A,#0LCALL KEY16 ; 读第二个数CJNE A,#0AH,LKEY4 ; 键值>9(非数字键)则重读键SJMP LKEY3SJMP LKEY3LKEY4:JNC LKEY3MOV R1,A ; 第二个数存入B中MOV A,R0 ; 取第一个数SWAP A ; 换到高位ADD A,R1 ; 第二个数(低位)与第一个数(高位)合并MOV 20H,APUSH AMOV A,R0MOV B,#10MUL ABADD A,R1MOV 20H,APOP ALCALL XSP0P2 ; 显示两个数JB P1.3,$ ;判确定键有没按下RETXSP0P2:PUSH B ;显示子程序MOV DPTR,#XSTAB ; 取数据表首地址MOV B,A ; 保存原数据ANL A,#0FH ; 截取低4位数MOVC A,@A+DPTR ; 取显示字型码MOV P0,A ; 送P0显示MOV A,B ; 取原数据ANL A,#0F0H ; 截取高4位SWAP A ; 半字节交换MOVC A,@A+DPTR ; 取显示段码MOV P2,A ; 送P2显示MOV A,BPOP BRETXSTAB: DB 0C0H,0F9H,0A4H,0B0HDB 99H,92H,82H,0F8HDB 80H,90H,88H,83HDB 0C6H,0A1H,86H,8EHEND六、时间安排:1、要完成这个项目我们只有两个周的时间,第一个周我们完成了基本的用4094实现两位数的倒计时,并实现基本的十字路口,两路显示,能够实现最基本的运行。