汇编语言交通灯

合集下载

红绿灯(汇编语言)

红绿灯(汇编语言)
START1:
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语言 汇编语言

值得和即为另外一个方向红灯的时长。
上述两个程序的写法可以相互结合,在汇编语言编写的程序中,使用的是对 位进行赋值的方式控制的,书写麻烦,但是易懂。C 语言使用的是对 P 口进行赋 值,书写简单,可读性稍差。
4
delay(nbhd); P2=0X2D; //东西绿灯,南北红灯
delay(dxld); P2=0X2B; //东西黄灯,南北红灯
delay(dxhd);
}
} 注意:因为一个方向绿灯与黄灯的时长正好等于另外一个方向红灯的时长,因此
在程序开头进行定义时,仅仅定义了东西和南北方向绿灯与黄灯的时长,这两个
1
在进行原理图搭建的过程中需要注意: 1 发光二极管的极性。如果发光二极管在电路中接反了,即使程序正确,也 无法点亮发光二极管。只有当发光二极管中的电流充阳极流到阴极的时候,才能 点亮发光二极管。可以将原理图中发光二极管的的三角形看做箭头,只有电流沿 着箭头方向流动,才可以点亮发光二极管。 2 分压电阻。发光二极管最好串联分压电阻,否则在仿真软件中,单片机引 脚的电平状态显示将错误(注意:即使不添加也不影响发光二极管的点亮状态, 最好添加)。在实物制作时,由于单片机引脚的驱动能力有限,因此即使不串联 分压电阻,也可以。另外分压电阻的阻值需要注意,不可以太大,太大会导致发 光二极管不亮或者发光较暗。在仿真软件中设置为 200Ω 就可以。 3 交通灯组件。在进行交通灯实验时,可以不适用带颜色的数码管,直接使 用交通灯组件,这样绘制电路图非常方便。交通灯组件的关键词是“traffic lights”。 该组件使用的是正逻辑驱动,也就是说当引脚的电平为高电平时,旁边对应的 LED 点亮。 在上述原理图中,我将发光二极管组成的交通灯以及交通灯组件组成的交通 灯放在一个仿真原理图中(东西方向用 LED 灯绘制,南北方向用交通灯组件绘 制),读者如果需要使用相同的交通灯组件,只需要直接修改原理就可以,程序 不需要修改。 虽然交通灯的点亮状态有 3 种,但是将东西和南北的点亮状态组合却又 4 种,在编程的时候需要注意。控制流程:东西红灯,南北绿灯→东西红灯,南北 黄灯→东西绿灯,南北红灯→东西黄灯,南北红灯→······

单片机交通灯实验汇编语言程序

单片机交通灯实验汇编语言程序

单片机交通灯实验汇编语言程序经过几天的整理,终于将网络上得到交通灯仿真文件,用汇编自己编写了一个程序,实验结果完全符合本人的思路,实验成功。

程序比较长,估计还会用更好的办法重新写。

编写心得是:单片机编程,不一定要背指令,用时可以查,也不必去默写子程序,用时还是可以查,但是,很关键的就是,你的程序,你自己要清楚整个的执行过程,也就是单片机的执行流程。

而在实际的应用中,要注意驱动电路的设计,特别是单片机上电复位输出高电平可能造成的影响。

程序如下:如果网页显示格式错乱可从51hei/f/jtda.rar 处下载. ORG 0000HSTART:MOV R2,#30SU0:MOV P0,#00HMOV P1,#00HMOV P2,#00HMOV P3,#00111111BMOV A,R2MOV R4,AMOV A,R4MOV R0,AMOV B,#5DIV ABMOV B,#3MUL ABMOV R1,ASETB P0.4SETB P0.7SETB P2.2SETBP2.5AJMP KEYSU1A: DEC R0DEC R1SUL5: CJNE R1,#5,SUL6SETB P2.7SUL6: CJNE R1,#4,SUL7SETB P2.7SUL7: CJNE R1,#3,SUL1SETB P2.7SUL1: CJNE R1,#2,SUL2SETB P2.7SUL2: CJNE R1,#1,SUL3SETB P2.7SUL3: CJNE R1,#0,SUL4MOV A,R0MOV R1,ACLR P2.5CLR P0.7SETB P0.5SETB P2.4SUL4: CJNE R0,#0,KEYAJMP SU0BKEY: JB P3.5,KEY1 LCALL DELAY MOVR2,#45KEY1:JB P3.2,KEY2 LCALL DELAY MOV R2,#60KEY2:JB P3.3,KEY3 LCALL DELAY MOV A,R2 ADD A,#5 MOV R2,A CJNE R2,#95,DD MOVR2,#95KEY3:JB P3.4,DD LCALL DELAY MOV A,R2 SUBB A,#5 MOV R2,A CJNE R2,#0,DD MOV R2,#0DD:MOV R3,#50;数码1DD1: MOV P1,#00H MOV A,R0 MOV B,#10 DIV AB MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A SETB P0.0 LCALL DELAY1 CLR P0.0 MOV A,B MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A SETB P0.1 LCALL DELAY1 CLR P0.1;数码2 MOV。

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

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

汇编语言课程设计交通信号灯控制系统初始界面:实现功能齐全。

思路清晰~~~~~~~~~~~~一、设计要求利用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是输出端。

单片机之交通灯汇编语言设计

单片机之交通灯汇编语言设计

单片机控制交通灯源程序:DISPLAY11 EQU 40H ; 东西显示码缓冲区1 DISPLAY12 EQU 41H ; 东西显示码缓冲区2 DISPLAY21 EQU 42H ;南北显示码缓冲区1 DISPLAY22 EQU 43H ;南北显示码缓冲区2 ORG 0000H SJMP MAIN ORG 0003H ;外部中断0入口入口LJMP PINT0 ORG 0013H ;外部中断1入口入口LJMP PINT1 MAIN:MOV SP,#60H ;设栈底;设栈底MOV IE,#85H ;外部中断0、外部中断1设置设置 S0:MOV R0,#20 MOV R1,#80 MOV P1,#21H ;点亮东西左转绿灯;点亮东西左转绿灯SETB P3.0 CLR P3.1 CLR P3.4 SETB P3.5 LP0:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R0,#6, LP0 ;R0﹥6,转LP0 MOV R3, #0 LP1:CPL P1.0 ;绿灯闪烁3次LCALL DISP LCALL DELAY1 INC R3 CJNE R3,#2, LP1 MOV R3, #0 DEC R0 DEC R1 CJNE R0,#3, LP1 ;R0﹥3,转LP1 S1:MOV P1,#22H ;点亮东西左转黄灯点亮东西左转黄灯LP2:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R0,#0, LP2 ;R0﹥0,转LP2 S2:MOV P1,#0CH ;点亮东西绿灯点亮东西绿灯MOV R0,#60 LP3:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R0,#6, LP3 ;R0﹥6,转LP3 MOV R3, #0 LP4:CPL P1.0 ;绿灯闪烁3次LCALL DISP LCALL DELAY1 INC R3 CJNE R3,#2, LP4 MOV R3, #0 DEC R0 DEC R1 CJNE R0,#3, LP4 ;R0﹥3,转LP4 S3:MOV P1,#14H ;点亮东西黄灯点亮东西黄灯LP5:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R0,#0, LP5 ;R0﹥0,转LP5 S4:MOV R0,#60 MOV R1,#20 MOV P1,#64H ;点亮南北左转绿灯点亮南北左转绿灯CLR P3.0 CLR P3.1 CLR P3.4 SETB P3.5 LP10:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R1,#6, LP10 ;R1﹥6,转LP10 MOV R3, #0 LP11:CPL P1.6 ;绿灯闪烁3次LCALL DISP LCALL DELAY1 INC R3 CJNE R3,#2, LP11 MOV R3, #0 DEC R0 DEC R1 CJNE R1, #3, LP11 ;R1﹥3,转LP11 S5:MOV P1, #0A4H ;点亮南北左转黄灯点亮南北左转黄灯LP12:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R1, #0, LP12 ;R1﹥0,转LP12 S6:MOV P1, #24H ;点亮南北绿灯点亮南北绿灯SETB P3.0 SETB P3.1 CLR P3.4 CLR P3.5 MOV R1, #40 LP13:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R1,#6, LP13 ;R1﹥6,转LP13 MOV R3, #0 LP14:CPL P1.0 ;绿灯闪烁3次LCALL DISP LCALL DELAY1 INC R3 CJNE R3,#2, LP14 MOV R3, #0 DEC R0 DEC R1 CJNE R1,#3, LP14 ;R0﹥3,转LP14 S7:MOV P1, #24H ;点亮南北黄灯点亮南北黄灯SETB P3.0 CLR P3.1 SETB P3.4 CLR P3.5 LP15:LCALL DISP LCALL DELAY DEC R0 DEC R1 CJNE R1,#0, LP15 ;R0﹥0,转LP15 LJMP S0 DISP :MOV A,R0 ;东西时间显示(CD4511) MOV B,#1 0 DIV AB SW AP A MOV DISPLAY11, A MOV DISPLAY12, B ANL DISPLAY11, 0F0H ANL DISPLAY12, F0H MOV A, DISPLAY11 ORL A, DISPLAY12 MOV P0, A MOV A, R1 ;南北时间显示(CD4511) MOV B,#1 0 DIV AB SW AP A MOV DISPLAY21, A MOV DISPLAY22, B ANL DISPLAY21, 0F0H ANL DISPLAY22, F0H MOV A, DISPLAY21 ORL A, DISPLAY22 MOV P2, A RET DELA Y:MOV R5,#05H ;1S延时(6MH Z晶体)晶体)K1:MOV R6,# 200 K2:MOV R7,#248 NOP K3:DJNZ R7, K3 DJNZ R6, K2 DJNZ R5, K1 RET DELAY1:MOV R5, #05H ;0.5S延时延时K11:MOV R6, #100 K12:MOV R7, #248 NOP K13:DJNZ R7, K13 DJNZ R6, K12 DJNZ R5, K11 RET PINT0:PUSH 90H ;中断子0程序,紧急情况(东西通行),保存P1口原来状态口原来状态 PUSH B0H ;保存P3口原来状态口原来状态MOV P1,#0CH ;点亮东西绿灯点亮东西绿灯SETB P3.0 CLR P3.1 CLR P3.4 SETB P3.5 POP B0H POP 90H PINT1:PUSH 90H ;中断子1程序,紧急情况(南北通行),保存P1口原来状态口原来状态PUSH B0H ;保存P3口原来状态口原来状态 MOV P1, #24H ; 点亮南北绿灯点亮南北绿灯 SETB P3.0 SETB P3.1 CLR P3.4 CLR P3.5 POP B0H POP 90H RETI END S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 P1= 21H P1= 2 P1= 2 P1= P1= P1= P1= P1= P1= P1= P1= P1= P3= 9FH P3= 9FH P3= 9FH P3= 9FH P3= 9FH P3= 9FH P3= 8FH P3= 8FH P3= 8FH P3= 3FH P3= P3= 5FH S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 P1.0 1 闪0 0 0 0 0 0 0 0 0 0 P1.1 0 0 1 0 0 0 0 0 0 0 0 0 P1.2 0 0 0 1 1 1 1 1 1 1 1 1 P1.3 0 0 0 1 闪0 0 0 0 0 0 0 P1.4 0 0 0 0 0 1 0 0 0 0 0 0 P1.5 1 1 1 0 0 0 1 1 1 1 1 1 P1.6 0 0 0 0 0 0 1 闪0 0 0 0 P1.7 0 0 0 0 0 0 0 0 1 0 0 0 P3.4 1 1 1 1 1 1 0 0 0 1 1 1 P3.5 0 0 0 0 0 0 0 0 0 1 闪0 P3.6 0 0 0 0 0 0 0 0 0 0 0 1 P3.7 1 1 1 1 1 1 1 1 1 0 0 0 初始值:P1=21H P3=9FH 。

汇编语言交通灯程序及专周报告

汇编语言交通灯程序及专周报告

一、实验名称:单片机设计交通灯二、实验目的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. 学生能够运用汇编语言编写简单的交通灯控制程序。

技能目标:1. 学生能够运用所学知识,设计并实现一个简单的交通灯控制系统。

2. 学生能够通过编程实践,培养逻辑思维能力和问题解决能力。

3. 学生能够进行团队协作,共同完成项目任务,提高沟通与协作能力。

情感态度价值观目标:1. 学生能够认识到交通灯在现实生活中的重要作用,增强社会责任感。

2. 学生在课程学习过程中,培养对编程的兴趣,激发自主学习动力。

3. 学生能够通过团队协作,体验成功解决问题的喜悦,树立自信心。

课程性质:本课程为信息技术学科选修课程,以项目式教学为主,注重实践操作和团队合作。

学生特点:学生为初中年级,具有一定的信息技术基础,对编程有初步了解,好奇心强,喜欢动手实践。

教学要求:课程内容要与课本紧密关联,注重理论与实践相结合,充分调动学生的主观能动性,培养其创新精神和实践能力。

在教学过程中,关注学生的个体差异,引导他们积极参与,确保课程目标的实现。

将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。

二、教学内容1. 交通灯基本原理:讲解交通灯的起源、功能及分类,使学生了解红绿灯、黄灯的作用和意义。

2. 交通灯控制系统组成:介绍交通灯控制系统的硬件和软件组成部分,包括控制器、信号灯、传感器等。

3. 汇编语言基础:回顾汇编语言的基本语法和指令,为编写交通灯控制程序打下基础。

4. 编写交通灯控制程序:结合课本内容,教授如何使用汇编语言编写简单的交通灯控制程序,包括顺序结构、循环结构和条件结构。

5. 实践操作:指导学生分组进行交通灯控制系统的设计和编程实践,培养学生的动手能力和团队协作能力。

6. 交通灯控制系统优化:探讨如何优化交通灯控制系统,提高交通效率,降低拥堵。

教学内容安排和进度:第一课时:交通灯基本原理及汇编语言基础回顾。

基于51单片机汇编语言设计的交通灯

基于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。

汇编语言设计方案交通灯控制系统

汇编语言设计方案交通灯控制系统

合肥学院电子系微机实验课程设计任务书摘要随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。

多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基于微机原理与接口技术的简单应用。

运用所学的微机原理和接口技术知识完成交通灯系统。

通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了现代城市交通控制与管理问题的现状,结合交通的实际情况阐述了交通灯控制系统的工作原理,给出了一种简单实用的交通灯控制系统的硬件、软件电路设计方案。

该系统适用于单主干道的十字路口,。

现假定其主干道为东西方向,次干道为南北方向。

可随意进行更改双向的通行时间,该功能能实现加中断控制和手动控制的方式进行,红绿灯切换时有闪烁功能以警示车辆和行人将进行红绿灯切换。

当有交通堵塞或紧急状况时可进行中断手动控制,使交通安全与交通流畅度得以保证。

关键词:延迟 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目录第一部分引言.......................................第二部分交通灯设计的简介......................第三部分交通灯的设计案.......................第四部分交通灯系统的安装与调试.................第五部分程序流程图.................................第六部分设计过程与总结...........................第七部分附源程序..................................第八部分参考文献资料..............................第一部分引言电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。

汇编语言交通灯控制系统设计

汇编语言交通灯控制系统设计

交通灯控制系统一、设计要求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请求中断。

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的端口高低电平的测试和跳转语句来实现功能三,并且功能一、二在主程序中实现,没有功能四的的实现程序。

交通灯汇编语言课程设计资料

交通灯汇编语言课程设计资料
2、计数器初值计算 该实验采用定时 / 计数器 T0 定时,循环一秒的子程序。首先采用定时 50ms, 然后再计数 20 次的方法实现。 (1)T0 工作在定时方式 1 时,控制字 TMOD配置: M1M0=01,GATE=0,C/`T=,0 可取方式控制字 01H. ( 2)计算计数初值 X:晶振为 12MHz,所以机器周期 1us。计算后将 3CH送入 TH0 中, 0E1H送入 TL0 中。 2、计数器初值计算
源程序如下: 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)闯红灯报警系统(用开关代替红外设备进行模拟)
五、 结论与心得 通过这次课程设计,加深了对很多知识的理解,自己做一个东西的时候,才
会知道理论与实际的差别。 这过对交通灯的设计, 也学到了很多原来不熟悉或没 有掌握好的知识,像查询及其数码管的应用。 对于肯本上的指令理解的更深入了, 原来没有记住的指令,通过这次设计,都能熟悉的运用。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计报告一、设计方法: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实现两位数的倒计时,并实现基本的十字路口,两路显示,能够实现最基本的运行。

相关文档
最新文档