交通信号灯控制系统(汇编语言课程设计)
汇编语言交通灯

设计报告一、设计方法: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实现两位数的倒计时,并实现基本的十字路口,两路显示,能够实现最基本的运行。
交通灯汇编语言课程设计【精选文档】

交通灯汇编语言课程设计【精选文档】(文档可以直接使用,也可根据实际需要修改使用,可编辑推荐下载)课程设计说明书题目交通灯系统设计系(部) 信息工程系专业电气工程及其自动化班级学生姓名学号07081232712 月7 日至12 月18 日共 2 周指导教师(签字)系主任(签字)2009年12 月 4 日课程设计任务书题目交通灯系统设计系(部) 信息工程系专业电气工程及其自动化班级学生姓名学号07081232712 月7 日至12 月18 日共 2 周指导教师(签字)系主任(签字)2009年12 月 4 日成绩评定表目录一、设计任务与要求 (1)1、设计任务与要求的分析 (1)二、软件设计 (2)1、显示原理 (2)2、计数器初值计算 (2)3、每秒钟的设定 (2)4、控制系统、时间显示模块 (3)三、硬件电路设计 (5)1、74LS164的应用 (5)2、LED显示器件工作原理 (5)四、安装与调试 (5)五、结论与心得 (7)六、参考文献 (7)附录:1、源程序2、系统原理图摘要本系统由单片机系统、键盘、LED 显示、数码管显示、交通灯演示系统组成。
系统除基本交通灯功能外,还具有倒计时、时间设置、信号灯闪烁、信号灯颜色分时亮、分时段调整信号灯的点亮时间等功能。
同时给出了软硬件设计方法,设计过程包括硬件电路设计和程序设计两大步骤,关键词:AT80C51单片机、交通灯控制系统、定时循环、数码管显示、延时。
一、设计任务与要求假设一个十字路口为东西南北走向。
开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。
用51单片机控制交通灯汇编语言编写教材

基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。
关键词:交通灯,单片机,自动控制一引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。
左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。
红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!二概要设计2.1 设计思路利用单片机实现交通灯的控制,该任务分以下几个方面:a 实现红、绿、黄灯的循环控制。
要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
汇编语言设计方案交通灯控制系统

合肥学院电子系微机实验课程设计任务书摘要随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基于微机原理与接口技术的简单应用。
运用所学的微机原理和接口技术知识完成交通灯系统。
通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了现代城市交通控制与管理问题的现状,结合交通的实际情况阐述了交通灯控制系统的工作原理,给出了一种简单实用的交通灯控制系统的硬件、软件电路设计方案。
该系统适用于单主干道的十字路口,。
现假定其主干道为东西方向,次干道为南北方向。
可随意进行更改双向的通行时间,该功能能实现加中断控制和手动控制的方式进行,红绿灯切换时有闪烁功能以警示车辆和行人将进行红绿灯切换。
当有交通堵塞或紧急状况时可进行中断手动控制,使交通安全与交通流畅度得以保证。
关键词:延迟 8255 交通灯控制设计AbstractWith the development of electronic technology, computers in the development of modern science and technology play an increasingly importantEffect Multimedia technology, network technology, intelligent information processing technology, control technology from the applicationData Mining and processing and so can not do without the computer. The course design is based on Microcomputer Principle and Interface Technology for simple applications.The use of the computer science principles and technical knowledge to complete the interface traffic light systemThrough a combination of hardware and software, We have just learned to use the assembly language program to simulate the conditions of modern urban traffic control and management of the status quo,The actual situation with traffic light control system described working principle,A simple and practical given the traffic light control system hardware, software The system is suitable for a single main road intersection,. It is assumed that the direction of the east-west trunk road, secondary roads for the north-south direction. Two-way free passage of time changesThis feature can achieve plus interrupt control and manual control of the way, Flashing traffic light switching functions as a warning to vehicles and pedestrians will be traffic lights switch.When there is traffic congestion or an emergency manual control can be interrupted, so that the degree of traffic safety and traffic flow can be guaranteed.Key words: Delayed Traffic Light Control Design 8255目录第一部分引言.......................................第二部分交通灯设计的简介......................第三部分交通灯的设计案.......................第四部分交通灯系统的安装与调试.................第五部分程序流程图.................................第六部分设计过程与总结...........................第七部分附源程序..................................第八部分参考文献资料..............................第一部分引言电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
汇编语言与微型计算机技术课设十字交通灯

2024/6/10
7
七、时间安排:
➢ 时间:2013/12/23~2014/1/9
➢ 1.根据要求,设计出正确的电路原理图,并用 PROTEUS软件绘制电路图2天;
➢ 2.正确布线2天; ➢ 3.编制程序2天; ➢ 4.调试、排错、验收3天; ➢ 5.编写课设报告1天。 ➢ 注:具体时间可自己调整,上交报告为第10天17:
A7
B7
B6
A6
74LS245
A0 DIR
E
B0
2024/6/10
D7
PA7
D6
PA6
8255A
D0PA0Fra bibliotekD7 D6
8253
D0
15
(2)74LS06
2024/6/10
16
8255-RES-74LS06连线实例
2024/6/10
17
(3)74LS138
2024/6/10
18
地址译码电路表
2024/6/10
19
标准地址译码电路
8255CS对应的地址为300H~303H, 8253CS对应的地址为304H~307H。
8255CS 8253CS
2024/6/10
20
简化后的非标准地址译码电路 (本次课程设计采用)
8255CS 8253CS
2024/6/10
21
4.8253定时/计数器
2024/6/10
➢ 6.每个发光二极管的正极接排电阻的从2到9的一个引脚, 排电阻的1脚接VCC(+5V)。
2024/6/10
5
五、设计步骤
➢ 1.设计电路原理图,要求用PROTEUS绘图软件 绘制电路图,电路中应包括地址译码电路。
交通灯汇编语言课程设计资料

( 5)闯红灯报警系统(用开关代替红外设备进行模拟)
五、 结论与心得 通过这次课程设计,加深了对很多知识的理解,自己做一个东西的时候,才
会知道理论与实际的差别。 这过对交通灯的设计, 也学到了很多原来不熟悉或没 有掌握好的知识,像查询及其数码管的应用。 对于肯本上的指令理解的更深入了, 原来没有记住的指令,通过这次设计,都能熟悉的运用。
。
1、设计任务与要求的分析 对于具体过程的分析:东西南北红灯( 2S)东西绿南北红( 20S)东西绿灯 闪烁( 3S)东西黄灯亮( 1S)南北绿灯亮( 20S)南北绿灯闪烁( 3S)南北黄灯 亮( 2S) . 上述思路可分为两个循环:一个是在南北绿灯亮之前,南北红灯一直 亮着( 25S)随后是南北灯亮的过程中东西红灯一直亮着( 25S)。分别用数码管 定时 20S,25S 记录红灯和绿灯持续时间。 25 秒后南北方向的持续情况与东西对 调.这样就完成了一次整体循环。 二、 软件设计 1、显示原理 交通信号灯控制逻辑如下: 假设一个十字路口为东西南北走向。 开始为四个 路口的红灯全部亮之后 , 东西路口的绿灯亮 , 南北路口的红灯亮 , 延时一段时间后 , 东西路口的绿灯 , 闪烁若干次后( 3 秒),东西路口的绿灯熄灭,同时东西路口的 黄灯亮 , 延时一段时间后( 2 秒) , 东西路口的红灯亮 , 南北路口的绿灯亮 , 延时一 段时间后 , 南北路口的绿灯闪烁若干次后( 3 秒) , 南北路口的绿灯熄灭,同时南 北路口的黄灯亮,延时一段时间后( 2 秒) , 再切换到东西路口的绿灯亮 , 南北路 口的红灯亮 , 之后重复以上过程。
目录
一、设计任务与要求 ………………………………………………………………… .1
1、设计任务与要求的分析…………………………………………………… 1
课程设计交通灯8086

课程设计交通灯8086一、教学目标本课程旨在让学生了解和掌握交通灯8086的基本原理和编程方法。
通过本课程的学习,学生应达到以下目标:1.了解交通灯控制系统的工作原理。
2.掌握8086微处理器的基本结构和指令系统。
3.掌握交通灯控制程序的编写和调试方法。
4.能够运用8086汇编语言编写简单的交通灯控制程序。
5.能够使用调试工具对程序进行调试和优化。
情感态度价值观目标:1.培养学生的创新意识和团队合作精神。
2.培养学生对交通安全的重视和责任感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.交通灯控制系统的基本原理和工作原理。
2.8086微处理器的基本结构和指令系统。
3.交通灯控制程序的编写和调试方法。
4.交通灯控制程序的优化和升级。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解交通灯控制系统的基本原理和8086微处理器的指令系统,使学生掌握相关知识。
2.案例分析法:通过分析实际案例,使学生了解交通灯控制程序的编写和调试方法。
3.实验法:让学生亲自动手进行实验,培养学生的实际操作能力和解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《交通灯8086编程指南》。
2.参考书:关于8086微处理器和交通灯控制系统的相关书籍。
3.多媒体资料:交通灯工作原理和8086微处理器的相关视频资料。
4.实验设备:8086微处理器实验板、调试器等。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解能力。
2.作业:布置与课程内容相关的编程作业,评估学生的编程能力和对知识的掌握程度。
3.考试:定期进行考试,测试学生对交通灯8086知识的掌握程度和编程能力。
4.实验报告:评估学生在实验过程中的操作能力和解决问题的能力。
评估结果将以分数或等级形式记录,并及时反馈给学生,以便学生了解自己的学习状况并进行改进。
汇编语言交通灯控制系统设计

交通灯控制系统一、设计要求1.东西方向车辆放行60秒钟。
即东西方向的绿灯和南北方向的红灯同时点亮1分钟;2.1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。
此时南北方向仍维持红灯点亮。
在南北方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从60减为0。
3.东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。
即东西方向的红灯和南北方向的绿灯同时点亮20秒钟;4.南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。
此时东西方向仍维持红灯点亮。
5.南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。
如此循环重复。
二、设计目的⒈了解交通灯管理的基本工作原理⒉熟悉8259A中断控制器的工作原理和应用编程⒊熟悉8255A并行接口的各种工作方式和应用⒋熟悉8254计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法⒌掌握多位LED显示问题的解决三、程序设计流程图主程序流程图,如下图所示。
装入计数初值支路拐走四、总体设计和电路图Ⅰ.芯片选择及端口选择1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。
2. 用实验系统8254的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的1分钟、5秒钟和20秒的定时。
实验系统8254的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接+5V;定时采用软硬件相结合的方式实现。
⒊用实验系统的发光二极管模拟红绿灯。
注:8259A的端口地址为:218H、219H8255A的端口地址为:端口A-200H、端口B-201H、端口C-202H、控制端口-203H8254的端口地址为:计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。
Ⅱ.设计电路图图2-1 交通灯实时控制系统8255原理图图2-2 中断服务原理图图2-3 中断服务电路接线图图2-4电路连线图Ⅲ..交通灯程序本次设计中,选用8254的计数器0定时向实验系统主片8259A的IRQ0请求中断。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言课程设计交通信号灯控制系统初始界面:实现功能齐全。
思路清晰~~~~~~~~~~~~一、设计要求利用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程序,实现定时。
4、显示时间子程序:将计时单元的二进制转换为十进制数加以显示。
参考资料:1.《微型计算机接口技术及应用》2.《汇编语言程序设计》3.《微型计算机汇编语言程序设计》一、教科书中关于IBM-PC/XT机系统硬件的内容,包括8250(串行口控制器),8253,8255,8259等。
二、DOS系统功能调用。
INT 21H1、显示显示单个字符入参:AH=02HDL=字符ASCII值出参:无显示字符串入参:AH=09HDS:DX 此寄存器对指向内存中字符串的首地址,字符串以$结束出参:无2、键盘检查键盘状态入参:AH=0BH出参:AL=00H无输入0FFH有一字符读键盘字符入参:AH=08H出参:AL=字符ASCII值3、其它退出程序,返回系统入参:AH=4CH出参:无取中断矢量入参:AH=35HAL=中断类型号出参:ES:BX 中断矢量,ES为段地址,BX为偏移地址置中断矢量入参:AH=25HAL=中断类型号DS:DX 中断矢量,DS为段地址,DX为偏移地址出参:AL=字符ASCII值三、BIOS屏幕功能调用。
INT 10H1、清屏操作MOV AX,0600HMOV CX,0000HMOV DX,184FHMOV BH,07HINT 10H2、移动光标MOV AH,02HMOV DH,** ;**为目的地行数(0-24)MOV DL,** ;**为目的地列数(0-79)MOV BH,00HINT 10H3、禁止光标显示MOV AH,01HMOV CX,2000HINT 10H4、恢复光标显示MOV AH,01HMOV CX,0C0DHINT 10H;//*****************************************************************//; 微机原理课程设计; 交通信号灯控制系统设计; 电子0803班;;; 2010-4-17 18:55;//****************************************************************//STACK SEGMENT STACKDW 64 DUP(?)STACK ENDS;//***************************************************************************** **//; 功能:显示宏定义;//****************************************************************************// SHOWLINE MACRO STR,STA,LEN,POS,COL ;显示字符串宏PUSH BXPUSH AX ;//10MOV BP,OFFSET STR ;显示起始位置ADD BP,STA ;第几个开始MOV DX,POS ;位置MOV CX,LEN ;长度MOV BX,COL ;颜色MOV AX,1301H ;字符串显示中断INT 10HPOP AXPOP BXPOP DX ;//20ENDM;//***************************************************************************** **//; 宏功能:读取时间子程序;//****************************************************************************// TIMEBUF0 MACRO TIME,BUF ;显示字符串宏PUSH BXPUSH AX ;//10MOV DI,OFFSET BUFMOV AL,TIMEMOV BL,0AHMOV AH,00HDIV BLADD AL,30HADD AH,30HMOV [DI],ALINC DIMOV [DI],AHPOP AXPOP BXENDM;//*********************************************************************//;功能:延时一秒宏定义,8253每秒中断18.2次;//********************************************************************//DELAY MACRO ;延时一秒LOCAL DLOOP ;利用INT 1AH/00H取得中断次数(DX),PUSH AXPUSH BXPUSH DXMOV AH,00H ;BIOS调用//30INT 1AH ;55ms引起一次中断,作为定时信号。
ADD DL,18 ;定时1S,需要18个定时单位MOV BL,DLINC BLDLOOP: MOV AH, 00HINT 1AHCMP DL,BL ;是否累计到1SJNZ DLOOP ;没到,继续读POP DXPOP AX ;//40ENDM;//************************************************************//;功能:;数据定义;//**************************************************************//DA TA SEGMENTTIME_Y DB 2TIME DB 10TIME0 DB 7TIME_G DB 7TIME_R DB 10BUF0 DB 0FHBUF_X DB '00' ;定义交通路口BUF_Y DB '00'BUF DB '00'TABLE01 DB ' Traffic Lights Control System 'TABLE02 DB ' ‘TABLE03 DB '--------------------------------------------------------------------------------------------------------------' TABLE04 DB ' ',0B3H,' | ',0B3H,' | 'TABLE05 DB ' ',0B3H,' ',0B3H,' | SETTING 'TABLE06 DB ' ',0B3H,' | ',0B3H,' | 'TABLE07 DB ' ',0B3H,' N ',0B3H,' | 1. CHANGETIME : [C] 'TABLE08 DB ' ',0B3H,' | ',0B3H,' | 2. DOBY : [D] 'TABLE09 DB ' ',0B3H,' ',0B3H,' | 3. NIGHT : [N] 'TABLE10 DB 13 DUP(0C4h) ,0D9h,' ',0C0h, 11 DUP(0c4h) ,'| 4. EMERGEN : [E] 'TABLE11 DB ' | 5. QUIT : [Q] 'TABLE12 DB ' ',0FH,' | ' ;//60TABLE13 DB ' | 'TABLE14 DB '- - - -E- - ',0FH,' ',0FH,' - -W- - -|---------------------------------------------------------------'TABLE15 DB ' | 'TABLE16 DB ' ',0FH,' | NOW : NORMAL 'TABLE17 DB ' | 'TABLE18 DB 13 DUP(0C4H) ,0BFh,' ',0DAH, 11 DUP(0C4H),'| 1. Quit system [Q] 'TABLE19 DB ' ',0B3H,' ',0B3H,' | 'TABLE20 DB ' ',0B3H,' | ',0B3H,' |--------------------------------------------------------- 'TABLE21 DB ' ',0B3H,' S ',0B3H,' |'TABLE22 DB ' ',0B3H,' | ',0B3H,' | Write by QIULI ' ;//70TABLE23 DB ' ',0B3H,' ',0B3H,' | Tle:1522xxxxxxx 'TABLE24 DB ' ',0B3H,' | ',0B3H,' | Mail:'STR DB 'Please input times R: ;G: ;Y: ;[Y/N] 'STR1 DB 'CHANGETIME 'STR2 DB 'DOBY 'STR3 DB 'NIGHT 'STR4 DB ' Quit system [Q] 'STR5 DB 'NORMAL 'STR6 DB '1. Quit system [Q] 'STR7 DB '2. Back to NORMAL [B] 'STR8 DB 'EMERGEN 'STR9 DB'X--G,Y--R:[X] ;X--R,Y--G:[Y]'STRCL DB ' 'STR10 DB ':'FLG DB 0FLG0 DB 0DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA,SS:STACK;//***********************************************************//;//80;功能:;主函数;//******************************************************//MAIN PROC FARMOV AX, DATAMOV DS, AXMOV ES, AXFUNCT: MOV AH,01H ;清除光标MOV CX,2000HINT 10HCALL INITIALN1: CALL SHOWTIMECALL GETCHARCMP AL,'C' ;调整时间JNE LOOP1CALL CHANGTIMEJMP FUNCTLOOP1: CMP AL,'D' ;手动/自动控制状态JNELOOP2 ;100CALL DOBYLOOP2: CMP AL,'N' ;夜间模式JNE LOOP3CALL NIGHTLOOP3: CMP AL,'E' ;紧急模式JNE LOOP4CALL EMERGENLOOP4: CMP AL,'Q' ;退出JNE N1ESC: MOV AH,4CH ;//145INT 21H;//****************************************************************//;功能:紧急情况子函数;//*************************************************************//EMERGEN PROC NEAR ;//150MOV TIME,20MOV FLG,1TIMEBUF0 TIME,BUFCALL EMTN0:CALL GETCHARCMP AL,'B' ;紧急控制按钮是否按下JNE TN1JMP FUNCTTN1: CMP AL,'Q' ;退出控制按钮是否按下JNE TN0JMP ESCRET;//130EMERGEN ENDP ;//170;//****************************************************************//;功能:紧急情况界面初始化;//*************************************************************//EM PROC NEAR ;//150SHOWLINE BUF,0,2,0A12H,0004H ;红灯;紧急情况SHOWLINE BUF,0,2,1212H,0004H ;红灯;//120SHOWLINE BUF,0,2,0E0CH,0004H ;红灯SHOWLINE BUF,0,2,0E18H,0004H ;红灯SHOWLINE BUF0,0,1,0C12H,0004H ;红灯SHOWLINE BUF0,0,1,1013H,0004H ;红灯SHOWLINE BUF0,0,1,0E0FH,0004H ;红灯;//160SHOWLINE BUF0,0,1,0E16H,0004H ;红灯SHOWLINE STR8,0,10,1038H,000FH ;SHOWLINE STR6,0,25,122CH,000FH ; ;//160SHOWLINE STR7,0,25,132CH,000FH ;RET;//130EM ENDP ;//170;//*************************************************************//;功能:夜晚模式子函数;//**************************************************************//NIGHT PROC NEARMOV TIME,0TIMEBUF0 TIME,BUFNG2: CALL NIDELAYCALL GETCHARCMP AL,'B' ;夜间控制按钮是否按下JNE NG1JMP FUNCTNG1: CMP AL,'Q'JNE NG2JMP ESCRETNIGHT ENDP;//*************************************************************//;功能:夜晚模式显示界面函数;//**************************************************************//NI PROC NEARSHOWLINE BUF,0,2,0A12H,000EH ;黄灯;夜间显示控制SHOWLINE BUF,0,2,1212H,000EH ;黄灯SHOWLINE BUF,0,2,0E0CH,000EH ;黄灯SHOWLINE BUF,0,2,0E18H,000EH ;黄灯SHOWLINE BUF0,0,1,0C12H,000EHSHOWLINE BUF0,0,1,1013H,000EHSHOWLINE BUF0,0,1,0E0FH,000EHSHOWLINE BUF0,0,1,0E16H,000EHSHOWLINE STR3,0,10,1038H,000FH ;SHOWLINE STR6,0,25,122CH,000FH ; ;//160SHOWLINE STR7,0,25,132CH,000FH ;RETNI ENDP;//**************************************************************//; 功能:手动模式子函数;//************************************************************// DOBY PROC NEAR ;开关子函数MOV FLG,0OP: CALL DOOP4: CALL GETCHAR ;调用输入控制字符CMP AL,'Y' ;手动控制下开JNE OP1MOV FLG,1JMP OPOP1: CMP AL,'X' ;手动控制下关JNE OP2MOV FLG,2JMP OPOP2: CMP AL,'Q'JNE OP3 ;退出JMP ESCOP3: CMP AL,'B'JNE OP4 ;手动/自动控制JMP FUNCTRETDOBY ENDP;//****************************************************//;手动模式显示函数;//****************************************************/DO PROC NEAR ;开关子函数CMP FLG,0JA DO0;SHOWLINE BUF,0,2,0A12H,000EH ;黄灯SHOWLINE BUF,0,2,1212H,000EH ;黄灯SHOWLINE BUF,0,2,0E0CH,000EH ;黄灯SHOWLINE BUF,0,2,0E18H,000EH ;黄灯JMP DO2DO0: CMP FLG ,1JNE DO1SHOWLINE BUF,0,2,0A12H,0002H ;SHOWLINE BUF,0,2,1212H,0002H ;SHOWLINE BUF,0,2,0E0CH,0004H ;SHOWLINE BUF,0,2,0E18H,0004H ;JMP DO2DO1: SHOWLINE BUF,0,2,0A12H,0004H ;SHOWLINE BUF,0,2,1212H,0004H ;SHOWLINE BUF,0,2,0E0CH,0002H ;SHOWLINE BUF,0,2,0E18H,0002H ;SHOWLINE BUF0,0,1,0C12H,0004HSHOWLINE BUF0,0,1,1013H,0004HSHOWLINE BUF0,0,1,0E0FH,0002HSHOWLINE BUF0,0,1,0E16H,0002HJMP DO3DO2: CMP FLG,0JNE DO4SHOWLINE BUF0,0,1,0C12H,000EHSHOWLINE BUF0,0,1,1013H,000EHSHOWLINE BUF0,0,1,0E0FH,000EHSHOWLINE BUF0,0,1,0E16H,000EHJMP DO3DO4: CMP FLG,1JNE DO3SHOWLINE BUF0,0,1,0C12H,0002HSHOWLINE BUF0,0,1,1013H,0002HSHOWLINE BUF0,0,1,0E0FH,0004HSHOWLINE BUF0,0,1,0E16H,0004HDO3: SHOWLINE STR9,0,30,112AH,000FH ;SHOWLINE STR2,0,10,1038H,000FH ;SHOWLINE STR6,0,25,122CH,000FH ; ;//160SHOWLINE STR7,0,25,132CH,000FH ;RETDO ENDP;//**************************************************************************// ;功能:改变时间子函数;//*******************************************************************// CHANGTIME PROC NEARCALL CHANSHOWLINE STR10 ,0,1,113AH,000FHMOV AH,01HINT 21HSUB AL,30H ;将输入时间值转化成MOV BL,10 ;输出十进制值;//156MUL BLMOV TIME_R,ALMOV AH,01HINT 21HSUB AL,30HADD TIME_R,ALSHOWLINE STR10 ,0,1,113FH,000FHMOV AH,01HINT 21HSUB AL,30H ;将输入时间值转化成MOV BL,10 ;输出十进制值;//156DDMUL BLMOV TIME_G,ALMOV AH,01HINT 21HSUB AL,30HADD TIME_G,ALSHOWLINE STR10 ,0,1,1144H,000FHMOV AH,01HINT 21HSUB AL,30H ;将输入时间值转化成MOV BL,10 ;输出十进制值MUL BLMOV TIME_Y,ALMOV AH,01HINT 21HSUB AL,30HADD TIME_Y,ALCH1: CALL GETCHARCMP AL,'Y'JE CH2CMP AL,'N'JNE CH1MOV BL,10MOV TIME_R,BLMOV BL,5MOV TIME_G,BLMOV BL,4MOV TIME_Y,BLCH2:RETCHANGTIME ENDP;//*******************************************************************//;改变时间显示函数;//****************************************************************//CHAN PROC NEARSHOWLINE STR,0,40,1126H,000FHSHOWLINE STR1,0,10,1038H,000FHSHOWLINE TABLE17,0,25,122CH,000FHSHOWLINE BUF,0,2,0A12H,000EH ;黄灯SHOWLINE BUF,0,2,1212H,000EH ;黄灯SHOWLINE BUF,0,2,0E0CH,000EH ;黄灯SHOWLINE BUF,0,2,0E18H,000EH ;黄灯SHOWLINE BUF0,0,1,0C12H,000EHSHOWLINE BUF0,0,1,1013H,000EHSHOWLINE BUF0,0,1,0E0FH,000EHSHOWLINE BUF0,0,1,0E16H,000EHRETCHAN ENDP;//***************************************************************************** //; 功能:时钟子程序X方向;//****************************************************************// SHOWTIME PROC NEARXOR AL,ALMOV FLG,ALMOV FLG0,ALXOR AL,ALMOV AL,TIME_RMOV TIME,ALMOV AL,TIME_GMOV TIME0,ALS1: MOV AH,01HINT 16HJNZ S3DELAY ;延时一秒DEC TIMECMP TIME,-1JNE S2 ;不等于-1,显示,否则··CMP FLG,2JE SCMP FLG,1JE S0MOV AL,TIME_GMOV TIME,ALINC FLGJMP S2S0: MOV AL,TIME_YMOV TIME,ALINC FLGJMP S2S: MOV AL,TIME_RMOV TIME,ALMOV FLG,0S2: TIMEBUF0 TIME ,BUF_XCALL OTHERCALL SHOWDJMP S1S3:RETSHOWTIME ENDP;//*******************************************************//;//功能:时钟子程序Y方向;//*****************************************************//OTHER PROC NEARDEC TIME0CMP TIME0,-1JNE S23 ;不等于-1,显示,否则··CMP FLG0,2JE S11CMP FLG0,1JE S10MOV AL,TIME_YMOV TIME0,ALINC FLG0JMP S23S10: MOV AL,TIME_RMOV TIME0,ALINC FLG0JMP S23S11: MOV AL,TIME_GMOV TIME0,ALMOV FLG0,0S23: TIMEBUF0 TIME0 ,BUF_YRETOTHER ENDP;//***************************************************************************// ;功能:显示时钟子程序;//***************************************************//SHOWD PROC NEARCMP FLG,0JNE D0SHOWLINE BUF_X,0,2,0E0CH,0004H ;红灯SHOWLINE BUF_X,0,2,0E18H,0004H ;红灯SHOWLINE BUF0,0,1,0E0FH,0004H ;红灯SHOWLINE BUF0,0,1,0E16H,0004H ;红灯JMP D11D0: CMP FLG,1JNE D1SHOWLINE BUF_X,0,2,0E0CH,0002H ;绿灯SHOWLINE BUF_X,0,2,0E18H,0002H ;绿灯SHOWLINE BUF0,0,1,0E0FH,0002H ;绿灯SHOWLINE BUF0,0,1,0E16H,0002H ;绿灯JMP D11D1: SHOWLINE BUF_X,0,2,0E0CH,000EH ;黄灯SHOWLINE BUF_X,0,2,0E18H,000EH ;黄灯SHOWLINE BUF0,0,1,0E0FH,000EH ;黄灯SHOWLINE BUF0,0,1,0E16H,000EH ;黄灯D11: CMP FLG0,0JNE D2SHOWLINE BUF_Y,0,2,0A12H,0002H ;红灯SHOWLINE BUF_Y,0,2,1212H,0002H ;红灯SHOWLINE BUF0,0,1,0C12H,0002H ;红灯SHOWLINE BUF0,0,1,1013H,0002H ;红灯JMP D4D2: CMP FLG0,1JNE D3SHOWLINE BUF_Y,0,2,0A12H,000EH ;黄灯SHOWLINE BUF_Y,0,2,1212H,000EH ;黄灯SHOWLINE BUF0,0,1,0C12H,000EH ;黄灯SHOWLINE BUF0,0,1,1013H,000EH ;黄灯JMP D4D3: SHOWLINE BUF_Y,0,2,0A12H,0004H ;绿灯SHOWLINE BUF_Y,0,2,1212H,0004H ;绿灯SHOWLINE BUF0,0,1,0C12H,0004H ;绿灯SHOWLINE BUF0,0,1,1013H,0004H ;绿灯D4: RETSHOWD ENDP;//*******************************************************************//;功能:得到字符;//***************************************************************//GETCHAR PROC NEARMOV AH,07HINT 21HRETGETCHAR ENDP;//***************************************************************************// ;功能:实现界面初始化;//***************************************************************************// INITIAL PROC NEAR ;初始化交通路口的显示SHOWLINE TABLE01,0,70,0100H,15SHOWLINE TABLE02,0,70,0200H,15SHOWLINE TABLE03,0,90,0300H,15SHOWLINE TABLE04,0,70,0400H,15SHOWLINE TABLE05,0,70,0500H,15SHOWLINE TABLE06,0,70,0600H,15SHOWLINE TABLE07,0,70,0700H,15SHOWLINE TABLE08,0,70,0800H,15SHOWLINE TABLE09,0,70,0900H,15SHOWLINE TABLE10,0,70,0A00H,15SHOWLINE TABLE11,0,70,0B00H,15SHOWLINE TABLE12,0,70,0C00H,15SHOWLINE TABLE13,0,70,0D00H,15SHOWLINE TABLE14,0,90,0E00H,15SHOWLINE TABLE15,0,70,0F00H,15SHOWLINE TABLE16,0,70,1000H,15SHOWLINE TABLE17,0,90,1100H,15SHOWLINE TABLE18,0,70,1200H,15SHOWLINE TABLE19,0,90,1300H,15SHOWLINE TABLE20,0,80,1400H,15SHOWLINE TABLE21,0,70,1500H,15SHOWLINE TABLE22,0,70,1600H,15SHOWLINE TABLE23,0,70,1700H,15SHOWLINE TABLE24,0,70,1800H,15RETINITIAL ENDP;//************************************************************************// CODE ENDSEND MAIN。