0013 DEFE djnz r6, DelayLoop 0015 DFFC djnz r7, DelayLoop 0017 22 ret
end
; 实验2:P1口输入输出
KeyLeft equ P1.0 KeyRight equ P1.1 LEDLeft equ P1.2 LEDRight equ P1.3
0000 D290 setb KeyLeft 0002 D291 setb KeyRight Loop:
0004 A290 mov c, KeyLeft 0006 9292 mov LEDLeft, c 0008 A291 mov c, KeyRight 000A 9293 mov LEDRight, c 000C 020004 ljmp Loop
end??
29
实验四 交通灯控制
一、实验要求
用CPU的P1口输出控制信号,控制六个LED灯(红,绿,黄),模拟交通灯管理。
二、实验目的
1. 学习数据输出程序的设计方法。 2. 学习模拟交通灯控制的方法。 3. 了解软件延时方法
三、实验电路及连接 LED0、LED1、LED2 分别表示南北方向红、黄、绿灯 LED3、LED4、LED5 分别表示东西方向红、黄、绿灯
四、实验说明
1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。
2.各用一组红、黄、绿色LED分别表示南北方向和东西方向。
五、程序清单
Flash equ 0 ; LED状态
SR equ p1.0 ; 南北红灯 SY equ p1.1 ; 南北黄灯 SG equ P1.2 ; 南北绿灯
ER equ P1.3 ; 东西红灯 EY equ P1.4 ; 东西黄灯 EG equ p1.5 ; 东西绿灯
0000 D290 setb SR ; 南北, 东西均红灯 0002 C291 clr SY
30
0004 C292 clr SG
0006 D293 setb ER 0008 C294 clr EY 000A C295 clr EG Loop:
000C D290 setb SR ; 南北红灯, 东西绿灯 000E C291 clr SY 0010 C292 clr SG
0012 C293 clr ER 0014 C294 clr EY 0016 D295 setb
0018 7414 mov 001A 12006B call
001D D290 setb 001F C291 clr 0021 C292 clr
0023 C293 clr 0025 C294 clr 0027 C295 clr
0029 C200 clr 002B 7F09 mov Loop1:
002D A200 mov 002F 9294 mov 0031 7401 mov 0033 12006B call 0036 B200 cpl 0038 DFF3 djnz
003A C290 clr 003C C291 clr 003E D292 setb
0040 D293 setb 0042 C294 clr 0044 C295 clr
0046 7414 mov 0048 12006B call
004B C290 clr 004D C291 clr 004F C292 clr
0051 D293 setb 0053 C294 clr 0055 C295 clr
EG a, #20 Delay SR SY SG ER EY EG Flash r7, #9 c, Flash EY, c a, #1 Delay Flash r7, Loop1 SR SY SG ER EY EG a, #20 Delay SR SY SG ER EY EG 31
; 南北红灯, 东西黄灯闪; 南北绿灯, 东西红灯 ; 东西红灯, 南北黄灯闪 0057 C200 clr Flash 0059 7F09 mov r7, #9 Loop2:
005B A200 mov c, Flash 005D 9291 mov SY, c 005F 7401 mov a, #1 0061 12006B call Delay 0064 B200 cpl Flash 0066 DFF3 djnz r7, Loop2
0068 02000C ljmp Loop??
Delay: ; 延时子程序 006B 7900 mov r1, #0 006D 7800 mov r0, #0 DelayLoop:
006F D8FE djnz r0, DelayLoop 0071 D9FC djnz r1, DelayLoop 0073 D5E0F5 djnz ACC, Delay 0076 22 ret
end
六、实验框图
开始
初始状态东西南北都是红灯 状态1南北绿灯,东西红灯 状态2南北绿灯闪转黄灯,东西红灯 状态3南北红灯,东西绿灯 状态4南北红灯,东西绿灯闪转黄灯 程序框图
32
??实验五 八段数码管显示实验
实验五 八段数码管显示实验
一、实验要求
利用实验仪提供的显示电路,动态显示一行数据。
二、实验目的
1.了解数码管动态显示的原理。 2.进一步了解164扩展端口的方法。
三、实验线路及连线
这里只是显示草图,详细原理参见图1
位选通信号
数据位 时钟位 (0FE02H)
(0FE06H) (0FE04H)
四、实验说明
本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,
就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码是由74LS164输出。6位位码由可编程器件CPLD输出,经MC1413反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位和时钟位由可编程器件CPLD输出,写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164中,并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中 数据位输出地址为0FE06H,时钟位输出地址为0FE04H,位选通输出地址为 0FE02H。
七段数码管的字型代码表如下表:
33