汇编语言交通灯1.docx
- 文档编号:2388430
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:19
- 大小:108.72KB
汇编语言交通灯1.docx
《汇编语言交通灯1.docx》由会员分享,可在线阅读,更多相关《汇编语言交通灯1.docx(19页珍藏版)》请在冰点文库上搜索。
汇编语言交通灯1
设计报告
一、设计方法:
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支干道红、绿、黄灯,修改用外部中断
ORG0000H
LJMPMAIN
ORG0003H;复位中断入口地址
LJMPFW
ORG0013H;修改参数中断入口地址
LJMPXG
ORG0030H
MAIN:
MOV30H,#50
MOV31H,#30
MOV32H,#20
MOV33H,#40
MOV34H,#32
MOV35H,#08
LOOP:
SETBIT0;设置外部中断0的触发方式
SETBIT1;设置外部中断1的触发方式
SETBEX0;开启外部中断0
SETBEX1;开启外部中断1
SETBPX0;设置优先级
CLRPX1
SETBEA;开启总中断
STAR1:
MOV40H,30H
MOV41H,31H
MOV42H,32H
MOV43H,33H
MOV44H,34H
MOV45H,35H
;主干道的红与支干道的绿
ZHUHO:
CLRP2.7;关门,减震作用
MOV46H,#0F5H;显示LED亮与灭
MOVA,40H;显示主干道的红灯参数
LCALLXS
LCALLLP
MOVA,41H;显示支干道的绿灯参数
LCALLXS
LCALLLOP
SETBP2.7;开门,减震作用
LCALLDELAY
DEC40H;倒计时
JNBP1.7,ZHIHO
DJNZ41H,ZHUHO
CLRP2.7
MOVA,40H;显示主干道的红灯参数
LCALLXS
LCALLLP
MOVA,41H;显示支干道的绿灯参数
LCALLXS
LCALLLOP
SETBP2.7
LCALLDELAY
;主干道的红与支干道的黄
ZIHU:
CLRP2.7
MOV46H,#0F6H;显示LED亮与灭
MOVA,42H;显示主干道的红灯参数
LCALLXS
LCALLLP
MOVA,42H;显示支干道的黄灯参数
LCALLXS
LCALLLOP
SETBP2.7
LCALLDELAY
JNBP1.7,ZHIHO;倒计时
DJNZ42H,ZIHU
CLRP2.7
MOVA,42H;显示主干道的红灯参数
LCALLXS
LCALLLP
MOVA,42H;显示支干道的黄灯参数
LCALLXS
LCALLLOP
SETBP2.7
LCALLDELAY
;支干道的红与主干道的绿
ZHIHO:
CLRP2.7
MOV46H,#0EBH;显示LED亮与灭
MOVA,43H;显示支干道的红灯参数
LCALLXS
LCALLLOP
MOVA,44H;显示主干道的绿灯参数
LCALLXS
LCALLLP
SETBP2.7
LCALLDELAY
DEC43H
DJNZ44H,ZHIHO
CLRP2.7
MOVA,43H;显示支干道的红灯参数
LCALLXS
LCALLLOP
MOVA,44H;显示主干道的绿灯参数
LCALLXS
LCALLLP
SETBP2.7
LCALLDELAY
;支干道的红与主干道的黄
ZUHU:
CLRP2.7
MOV46H,#0DBH;显示LED亮与灭
MOVA,45H;显示支干道的红灯参数
LCALLXS
LCALLLOP
MOVA,45H;显示主干道的黄灯参数
LCALLXS
LCALLLP
SETBP2.7
LCALLDELAY
DJNZ45H,ZUHU
CLRP2.7
MOVA,45H;显示支干道的红灯参数
LCALLXS
LCALLLOP
MOVA,45H;显示主干道的黄灯参数
LCALLXS
LCALLLP
SETBP2.7
LCALLDELAY
LJMPSTAR1
XG:
JBP3.3,EXIT;修改参数中断服务子程序
MOVA,#00H;使数码管都显示00
MOV46H,#0FFH;使LED都灭
LCALLXS
LCALLLP
LCALLLOP
SJMPFCZ
FW:
CLREA;复位中断服务子程序
MOVA,#88
MOV46H,#0FFH
LCALLXS
LCALLLP
LCALLLOP
;产生中断后对参数重新赋初值
FCZ:
MOVP0,#0F9H
MOVP2,#0BFH
LCALLLKEY1;设置第一个参数
MOV30H,20H
MOVP0,#0A4H
MOVP2,#0BFH
LCALLLKEY1;设置第二个参数
MOV31H,20H
MOVP0,#0B0H
MOVP2,#0BFH
LCALLLKEY1;设置第三个参数
MOV33H,20H
MOVP0,#99H
MOVP2,#0BFH
LCALLLKEY1;设置第四个参数
MOV34H,20H
MOVA,30H
SUBBA,31H
MOV32H,A
MOVA,33H
SUBBA,34H
MOV35H,A
MOV40H,30H
MOV41H,31H
MOV42H,32H
MOV43H,33H
MOV44H,34H
MOV45H,35H
MOVP0,#0FFH
MOVP2,#0FFH
EXIT:
RETI;中断返回
DELAY:
MOVR3,#10;延时0.5s子程序
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
LOOP1:
JBCTF0,LOOP2
SJMPLOOP1
LOOP2:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR3,LOOP1
CLRTR0
RET
XS:
MOVDPTR,#TAB;显示子程序
MOVB,#10
DIVAB
MOVCA,@A+DPTR
MOVR5,A
MOVA,B
MOVCA,@A+DPTR
MOVR6,A
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
LP:
CLRC;4094主干道显示两位倒计时子程序
MOVR0,#08H
MOVA,R6
LP1:
CLRP3.7
RLCA
MOVP3.6,C
SETBP3.7
DJNZR0,LP1
MOVA,R5
MOVR0,#08H
LP2:
CLRP3.7
RLCA
MOVP3.6,C
SETBP3.7
DJNZR0,LP2
RET
LOP:
CLRC;4094支干道显示两位数倒计时子程序
MOVR0,#08H
MOVA,R6
LOP1:
CLRP3.5
RLCA
MOVP3.4,C
SETBP3.5
DJNZR0,LOP1
MOVA,R5
MOVR0,#08H
LOP2:
CLRP3.5
RLCA
MOVP3.4,C
SETBP3.5
DJNZR0,LOP2
XP2:
MOVR0,#08H;四个路口红绿灯LED显示器子程序
MOVA,46H
LP5:
CLRP3.1
RLCA
MOVP3.0,C
SETBP3.1
DJNZR0,LP5
RET
;键盘扫描子程序
KEY16:
LCALLKS;读键盘
JZKEY16;判是否有键按下,A=0表示无键按下,再读
LCALLT10MS;延时
LCALLKS;有键按下的话,再读一次,消除抖动
JZKEY16;判是否有键按下,A=0表示无键按下,再读
MOVR2,#0EFH;列扫描初值,11101111
MOVR4,#00H;列扫描计数单元置"0"
;下面进行列扫描(0~3)、读行值(01、04、07、0FF)
LK1:
MOVP1,R2;P1.4=0,扫描第一列
JBP1.0,ONE;判是否第0行健按下,否判下一行
MOVA,#01H;是,行值"01"
LJMPKP
ONE:
JBP1.1,TWO;判是否第1行健按下,否判下一行
MOVA,#04H;是,行值"04"
LJMPKP
TWO:
JBP1.2,THREE;判是否第2行健按下,否判下一行
MOVA,#07H;是,行值"07"
LJMPKP
THREE:
JBP1.3,NEXT;判是否第3行健按下,否则扫描下一列
MOVA,#0FFH;是,行值"0ff"
LJMPKP
NEXT:
INCR4;列计数加1
MOVA,R2;行扫描完,列移位,继续
JNBACC.6,KND;判是否列扫描结束
RLA;左移,扫下一列
MOVR2,A
AJMPLK1;转下一列读键
KND:
AJMPKEY16
KP:
ADDA,R4;生成键值,A=行基值+列值(0~3)
PUSHACC
LK:
LCALLKS
JNZLK
POPACC
SETBP1.7
RET
T10MS:
MOVR7,#10H;T10ms延时子程序
TS1:
MOVR6,#0FFH
TS2:
NOP
NOP
DJNZR6,TS2
DJNZR7,TS1
RET
KS:
MOVP1,#0FH;判有无键按下子程序
MOVA,P1
CPLA
ANLA,#0FH
RET
LKEY1:
MOVA,#0
LCALLKEY16;读第一个数
CJNEA,#0AH,LKEY2;键值>9则重读键
SJMPLKEY1
LKEY2:
JNCLKEY1
MOVR0,A;保存第一个数
SWAPA
LCALLXSP0P2;显示第一个数
LKEY3:
MOVA,#0
LCALLKEY16;读第二个数
CJNEA,#0AH,LKEY4;键值>9(非数字键)则重读键
SJMPLKEY3
SJMPLKEY3
LKEY4:
JNCLKEY3
MOVR1,A;第二个数存入B中
MOVA,R0;取第一个数
SWAPA;换到高位
ADDA,R1;第二个数(低位)与第一个数(高位)合并
MOV20H,A
PUSHA
MOVA,R0
MOVB,#10
MULAB
ADDA,R1
MOV20H,A
POPA
LCALLXSP0P2;显示两个数
JBP1.3,$;判确定键有没按下
RET
XSP0P2:
PUSHB;显示子程序
MOVDPTR,#XSTAB;取数据表首地址
MOVB,A;保存原数据
ANLA,#0FH;截取低4位数
MOVCA,@A+DPTR;取显示字型码
MOVP0,A;送P0显示
MOVA,B;取原数据
ANLA,#0F0H;截取高4位
SWAPA;半字节交换
MOVCA,@A+DPTR;取显示段码
MOVP2,A;送P2显示
MOVA,B
POPB
RET
XSTAB:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
END
六、时间安排:
1、要完成这个项目我们只有两个周的时间,第一个周我们完成了基本的用4094实现两位数的倒计时,并实现基本的十字路口,两路显示,能够实现最基本的运行。
2、第二个周前两天我在基本型的基础上实现在线修改参数,和行人按钮以及其他一些控制按钮,实现后在接下来的几天我就美化界面,修改程序以及写用户使用说明书和设计报告。
七、调试过程:
1、首先用89c51和4094以及数码管连接电路,并用单片机编程,加载进去看是否能实现一位或两位倒计时,不行的就一步一步的调试,从最基本的开始一步一步调试直到实现预定的功能,中间若有不明白的现象就请教老师。
2、在实现了两位倒计时之后,因为是同样的性质,所以就可实现基本的十字路口两路显示了,然后调试,不行的先检查软件设计方面,再看硬件连接有没问题,最后实现。
3、实现基本型之后,可在界面里加按键、控制按钮等等,连接硬件图,然后编程,使用中断,调用修改并用键盘写参数并显示出来的子程序,然后赋初值返回主程序运行,而这所有的过程都是经过一步一步的调试和运行而实现的。
八、硬件清单:
九、设计流程与硬件分配:
开始运行
十字路口,两路倒计时显示
行人按键,主绿支红,行人通过
按修改参数键修改红绿灯参数并按’*’确定键
若修改参数时设错参数,可按复位键而重新设置参数
按照新的参数开始运行
结束
P0口、P2口接两个显示修改参数数码管;
P1口中的P1.0-P1.6接3*4按键中的七个引脚;
P1.7接行人按键;
P2.7接所有4094上的OE接口;
P3.0、P3.1接显示LED的4094上的CLK、D;
P3.7、P3.6接主干道上的四个4094上的CLK、D;
P3.5、P3.4接支干道上的四个4094上的CLK、D;
P3.3、P3.2分别接修改参数键和复位键。
十、设计中的不足:
我觉得设计中还是有不足的:
如:
在修改参数时,在设置一个参数可按确定键,但若在设置参数时想退位删去刚设定的参数时,却没有退位键,而只有复位键,按了它就只能重新开始设置参数了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 交通灯