我们看到,这是显示的要求是40进制,4进制,20进制。且轮换进行。
很容易想到的就是使用16进制计数器。
设计方法是:
第一个40进制选取两个16进制计数器,第一个计数器的进位输出接入第二个计数器的ENT端,然后再在第二个计数器的输出端接入3-8译码器,我们知道1对应的二进制是00001,40对应二进制是101000。于是在3-8译码器输入端接入前三位,将3-8译码器的第5个输出端接到第一个计数器的LOAD端,然后第一个计数器置数端输入是0001。然后我们就可以发现这两个计数器构成了由1~40的二进制计数器。
同理我们对黄灯用一个16进制计数器设计成1~4的二进制计数器。
同理对南北绿灯用两个16进制计数器设计成1~20的二进制计数器。
然后我们理下思路,要产生你提出的效果,我们接下来要将这些计数器形成循环显示。
具体就是:
1~40二进制计数器(即东西绿灯)当到达40时,进位信号触发后一个1~4二进制计数器(即黄灯),同时这个信号阻断1~40二进制计数器继续计数。
之后,当1~4二进制计数器达到4时,进位信号触发1~20二进制计数器(即南北绿灯),同时这个信号阻断1~4二进制计数器继续计数。
之后同理,1~20到达20后,触发后一个1~4,1~4到达4后,再触发1~40。
于是我们很清晰的看到了这样一个循环,当东西绿灯40秒到后自动停止转到黄灯,到达4秒后自动停止转到南北绿灯。20秒后自动停止转到黄灯。4秒后自动停止并转到东西绿灯然后一直这么循环,完成所要效果。
好,那我们接下来要做的就是怎么联系前后两个计数器。在此仅列举1~40如何转到1~4,之后的1~4转到1~20转到1~4再转到1~40都是一个道理,不再赘述。
如前所述,第一个1~40计数器最终是在3-8译码器的5号输出端返回到第一级的LOAD形成重新的置1从而达到1~40计数的要求的。那么我们如果将这个端口5输出的信号同时接入第一级的ENP端口,那么就行成了一旦达到40,1~40置位回到1,并且由于ENP端口出现0信号,使得整个1~40计数器达到40时重新置1并停止计数。
然后5输出的信号取非后可以用于触发后一级的ENT,触发后一级1~4计数器。然后一样的做法,当1~4达到4时,阻断自己继续计数并将信号触发再后一级的1~20计数器一次类推就达到了你要的结果。
至于显示可以用7段显示器,这个较为简单,列个表画一个卡诺圈就出来了。
希望能解决您的问题。
救命啊!!!求简易交通灯控制逻辑电路设计,跪求!!!
;交通灯模拟实验程序
GEWEI EQU 21H ;个位数据
SHIWEI EQU 23H ;十位数据
SCANLED EQU 25H
SCANMODE EQU 26H
RED EQU 28H ;定义灯的缓冲区
GREEN EQU 29H
YELLOW EQU 32H
NUMTIM EQU 33H
LED EQU 34H
ORG 000H
JMP START
ORG 0BH
JMP TIMER0 ;定时器0中断入口
ORG 100H
START:MOV SP,#50H
MOV R0,#20H
MOV R5,#20
CLR0:MOV @R0,#00H
INC R0
DJNZ R5,CLR0
MOV TMOD,#01H ;设置定时器
MOV TH0,#HIGH(65536-5000)
MOV TL0,#LOW(65536-5000)
SETB TR0
MOV IE,#10000010B ;端口初始化
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#00H
MOV P3,#0FFH
MOV R3,#10
MOV R2,#3
MOV R1,#10
MOV R7,#200
MOV RED,#10
MOV YELLOW,#3
MOV GREEN,#10
MOV NUMTIM,#10
MOV LED,#0FFH
AJMP $
;============================================================= TIMER0:PUSH ACC ;定时器部分,负责交通灯的及时和数码管动态扫描
PUSH PSW
MOV TH0,#HIGH(65536-5000) ;重新赋初值
MOV TL0,#LOW(65536-5000)
DJNZ R7,RET0
MOV R7,#200
MOV A,SCANMODE ;调用扫描
MOV B,#4
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN
JMP @A+DPTR
TAB_SCAN: AJMP RED_LIGHT
AJMP YEL_LIGHT
AJMP GRE_LIGHT
AJMP YEL_LIGHT
RET0: MOV A,NUMTIM
LCALL BIN_BCD
MOV SHIWEI,A
MOV GEWEI,B
INC SCANLED
MOV A,SCANLED
MOV B,#4
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN0
JMP @A+DPTR
TAB_SCAN0:AJMP SCAN_L1
AJMP SCAN_L2
SCAN_L1: MOV P2,#0
MOV A,SHIWEI
JMP END_SCAN
SCAN_L2: MOV P2,#1
MOV A,GEWEI
JMP END_SCAN
END_SCAN:MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,LED
MOV P1,A
POP PSW
POP ACC
RETIRED_LIGHT:MOV LED,#11111100B
MOV NUMTIM,RED
DEC RED
MOV A,RED
CJNE A,#0FFH,RET0
MOV RED,#10
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
JMP RET0
YEL_LIGHT:MOV LED,#11110011B
MOV NUMTIM,YELLOW
DEC YELLOW
MOV A,YELLOW
CJNE A,#0FFH,RET0
MOV YELLOW,#3
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
JMP RET0
GRE_LIGHT:MOV LED,#11001111B
MOV NUMTIM,GREEN
DEC GREEN
MOV A,GREEN
CJNE A,#0FFH,RET1
MOV GREEN,#10
MOV A,SCANMODE
ADD A,#01H
MOV SCANMODE,A
RET1:JMP RET0 BIN_BCD:MOV B,#10
DIV AB
RET DELAY: MOV R5,#02
D1: MOV R6,#200
D2: MOV R7,#200
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH;共阴字码表
DB 07H,7FH,6FH,77H,7CH,39H,5EH
DB 79H,71H,76H,73H,3EH,00HEND
你肯定是考试用的。不能帮你作弊。,给你个参考的~~
灯y0红、橙、黄、绿、青、蓝、紫y1~y7
ld m8000 y0(主题灯亮)
ld m8002
or m0
orp t6
ani t0
out m0(红灯亮)
out t0 k5
ldp t0
or m1
ani t1
out m1(橙灯亮)
out t1 k5
ldp t1
or m2
ani t2
out m2(黄灯亮)
out t2 k5
ldp t2
or m3
ani t3
out m3(绿灯亮)
out t3 k5
ldp t3
or m4
ani t4
out m4(青灯亮)
out t4 k5
ldp t4
or m5
ani t5
out m5(蓝灯亮)
out t5 k5
ldp t5
or m6
ani t6
out m6(紫灯亮)
out t6 k5
ld m0
out y1
ld m1
out y2
ld m2
out y3
ld m3
out y4
ld m4
out y5
ld m5
out y6
ld m6
out y7
end
免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报
举报