中易网

求基于单片机芯片设计的交通灯电路图及程序?

答案:3  悬赏:60  
解决时间 2021-11-17 11:47
求基于单片机芯片设计的交通灯电路图及程序?
最佳答案
MOV  A, #01111111B
main:  mov  p1, A
      MOV  P3, A
      RR  A
      MOV  R0, #10
      lcall  ccc

     
ljmp    main
;延时20s

ccc:     mov  r1, #200
bbb:     mov  r2, #250
aaa:     djnz  r2, aaa
        djnz  r1, bbb
        djnz  r0, ccc
        ret
全部回答
MOV A, #01111111B main: mov p1, A MOV P3, A RR A MOV R0, #10 lcall ccc ljmp main ;延时20s ccc: mov r1, #200 bbb: mov r2, #250 aaa: djnz r2, aaa djnz r1, bbb djnz r0, ccc
课程设计题目及要求: 1.设计题目 交通信号灯控制系统 2.设计基本要求 · 采用89C52单片机芯片控制交通信号灯。 · 以南北方向的交通灯为例,结合实际情况,控制红、黄、绿交通灯。 · 红、黄、绿交通灯的亮和灭的时间可以调节。 3.设计提高要求 · 采用数码管显示红或绿交通灯的剩余时间。 · 通过按键或拔动开关设定红或绿交通灯亮一次的时间。 · 控制东西方向和南北方向的红、黄、绿交通灯的亮与灭。 · 控制键的原理图和接线图用Protel99绘图软件绘制。 单元电路设计 (一) 振荡电路    由于单片机需要高稳定,高频率的实基脉冲,因此需要晶体振荡器。89C51在XTAL1, XTAL2两管脚接晶体振荡器。在晶体振荡器的两端并联两个电容C1,C2参数为30pF,对振荡器频率有微调作用,振荡范围为1.2MHz — 12MHz。 (二) 复位电路    紧急情况与复位按钮 (三) 共阴极LED显示 主芯片的P1端口接了8个发光二极管,这些发光二极管的负极接到P1端口各引脚,而正极则通过一个排电阻接到正电源端,这样,这些发光二极管亮的条件就U1的P1口相引的引脚为低电平,即如果P1口某引脚输出为0,相应的灯亮,如果输出为1,相应的灯灭。 例:MOV P1,#0FH 该行程序将使发光二极管L1-L4熄灭,而L5-L8点亮。 (四) 数码显示电路   U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,这里LED数码管采用了共阳型,共阳型数码管的笔段引脚是二极管的负极,所有二极管的正极连在一起,构成公共端,即片选端,对于这种数码管的驱动,要求在片选端提供电流,为此,使用了PNP型三极管作为片选端的驱动,共使用5只三极管,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0?P2.4,这样,当P2.0?P2.4中某引脚输出是高电平时,三极管不导通,不能给相应位的数码管供电,该位数码管的所有笔段都不亮,反之,如果某引脚是低电平时,三极管导通,可以给相应的数码管供电,该位数码管是否点亮,点亮哪些笔段,取决于这些笔段引脚是高或低电平。 所有5位数码管的笔段连在一起,通过限流电阻后接到P0口,因此,究竟哪些笔段亮,取决于P0口的8根线是输出高电平还是低电平。注意,为了简化线路板设计,减少跳线,P0口与笔段的连接并不“规矩”,即不是从最高位到最低位依次连接,具体的连接方法可以参考电路图,这是单片机开发中常用的以“软”代“硬”的例子。 测试 如果灯不亮,说明硬件电路工作不正常,大体有这样的几种情况: 1、振荡电路未起振有条件可以用示波器观察89C51的18脚的波形以确定是否起振,如果没有示波器可以用万用表分别测18脚和19脚的对地电压,如果两者的电压差在2V左右,说明振荡正常,否则是未起振,检测电容C1、C2和晶振是否损坏,安装是否正确。 2、复位电路未能正确工作使用万用表测9脚,如果有电压,说明复位电路在正常工作时的状态不正常,查E1、R1、JP1和相关连接,否则说明正常工作时复位端电平正确;可以测一下复位工作过程是否正常,取一根电线,一端接在单片机的第九脚(RST脚),另一端与正电源端短接,然后撤去电线,如果电路已工作正常,说明复位电路工作不正常,同样要查E1、R1、JP1和相关连接。 3、如果以上两处均正确,可能是发光二极管的正负极安装错误导致不亮,用电线短接P1端各引脚与地,看接在该引脚上的发光管是否亮,如果不亮,就是发光管装反了。 将下面的这段测试程序的代码通过伟福仿真器进行测试: 测试程序: MOV A,#0FEH LOOP: MOV P1,A RR A LCALL DELAY AJMP LOOP DELAY: MOV R7,#255 D1: MOV R6,#255 D2: DJNZ R6,D2 DJNZ R7,D1 RET END 如果灯不亮,说明硬件电路工作不正常,大体有这样的几种情况: 1、振荡电路未起振有条件可以用示波器观察89C52的18脚的波形以确定是否起振,如果没有示波器可以用万用表分别测18脚和19脚的对地电压,如果两者的电压差在2V左右,说明振荡正常,否则是未起振,检测电容C1、C2和晶振是否损坏,安装是否正确。 2、复位电路未能正确工作使用万用表测9脚,如果有电压,说明复位电路在正常工作时的状态不正常,查E1、R1、JP1和相关连接,否则说明正常工作时复位端电平正确;可以测一下复位工作过程是否正常,取一根电线,一端接在单片机的第九脚(RST脚),另一端与正电源端短接,然后撤去电线,如果电路已工作正常,说明复位电路工作不正常,同样要查E1、R1、JP1和相关连接。 3、如果以上两处均正确,可能是发光二极管的正负极安装错误导致不亮,用电线短接P1端各引脚与地,看接在该引脚上的发光管是否亮,如果不亮,就是发光管装反了。 实际中我们遇到过这样的问题,电容被安装了一个为27P,另一个为103(0.01uf),以上的测试一切正常,但是不能正常工作,因此,安装时要细心,出现问题还要注意查看。以上测试如果通过,说明电路板部份工作正常,可以利用伟福仿真器对电路板来做进行仿真了。 软件部分 程序分主程序和中断程序,可采用汇编语言编程, 计时采用延时程序进行, 延时程序的执行时间为1 秒(若单片机的晶振频率为6MHZ) 用特殊功能寄存器PSW 的第6 位FO (PSW 15) 作A、B 通道的放行标志, PSW 15= 0 时,A 道放行, PSW 15= 1 时,B道放行。工作寄存器R4 作为计数器(对1 秒计数)。A 道放行时, R4 中存放立即数# 5AH (相当于十进制数90) , R4 计数90 次时,A 道放行正好90 秒; B 道放行时, R4 中存放立即数# 3CH (相当于十进制数60) , R4 计数60 次时,B 道放行正好60 秒, 还可根据控制过程中的实际情况来改变R4 中的数据,就能改变A、B 通道的放行时间。紧急车通过的处理用中断服务程序来控制。 源程序: ORG 0000H LJMP STAR1 A_BIT EQU 20H     ;数码管个位数存放内存位置       B_BIT EQU 21H     ;数码管十位数存放内存位置       TEMP   EQU 22H     ;计数器数值存放内存位置 STAR1: MOV   TEMP,#20     ;初始化计数器,从60开始       CLR   P1.0       ;南北方向红灯亮       CLR   P1.5       ;东西方向绿灯亮 STLOP1: ACALL  DISPLAY1     ;调用显示子程序       DEC   TEMP       ;对计数器减1       MOV   A,TEMP     ;       CJNE   A,#0,STLOP1   ;判断计数器是否满0?      SETB   P1.0      ;南北方向红灯灭       SETB   P1.5      ;东西方向绿灯       ACALL  SHAN       ;调用黄灯闪烁程 STAR2: MOV   TEMP,#20     ;重新开始开始60秒倒数       CLR   P1.2      ;南北方向绿灯亮       CLR   P1.3       ;东西方向红灯亮 STLOP2: ACALL  DISPLAY2     ;调用数码管显示子程序       DEC   TEMP       ;计数器减一       MOV   A,TEMP     ;       CJNE   A,#0,STLOP2   ;判断计数器是否为0?       SETB   P1.2       SETB   P1.3       ACALL SHAN       ;调用黄灯闪烁子程?       SJMP   STAR1       ; DISPLAY1:MOV   A,TEMP       MOV   B,#10       DIV   AB       MOV   B_BIT,B     ;个位在B       MOV   A_BIT,A     ;十位在A       MOV   DPTR,#NUMTAB ;指定查表启始地址       MOV   R0,#12       ; DPL1:  MOV   R1,#250     ; DPLOP1: MOV   A,A_BIT     ;取个位数       MOVC   A,@A+DPTR   ;查个位数的7段代码       MOV   P0,A       ;送出个位的7段代码       CLR  P2.3       ;开个位显示       ACALL  D1MS       ;显示162微秒       SETB   P2.3       ;关闭个位显示,防止鬼影       MOV   A,B_BIT     ;取十位数       MOVC   A,@A+DPTR   ;查十位数的7段代码       MOV   P0,A       ;送出十位的7段代码       CLR   P2.2      ;开十位显?       CLR   P2.0       CLR   P2.1             ACALL D1MS       ;显示162微秒       SETB   P2.2       ;关闭十位显示,防止鬼影       DJNZ   R1,DPLOP1     ;循环执行250次       DJNZ   R0,DPL1     ;循环执行250X4=1000次       RET DISPLAY2:MOV   A,TEMP     ;将TEMP中的十六进制数转换成10进制       MOV   B,#10       ;10进制/10=10进制       DIV   AB         ;       MOV   A_BIT,B     ;个位在B       MOV   B_BIT,A     ;十位在A       MOV   DPTR,#NUMTAB ;指定查表启始地址       MOV   R0,#12       ; DPL2:  MOV   R1,#250     ; DPLOP2: MOV   A,A_BIT     ;取个位数       MOVC   A,@A+DPTR   ;查个位数的7段代码       MOV   P0,A       ;送出个位的7段代码       CLR  P2.0      ;开个位显示       ACALL D1MS       ;显示162微秒       SETB   P2.0       ;关闭个位显示,防止鬼影       MOV   A,B_BIT     ;取十位数       MOVC   A,@A+DPTR   ;查十位数的7段代码       MOV   P0,A       ;送出十位的7段代码       CLR   P2.1       ;开十位显       CLR   P2.2       CLR   P2.3             ACALL D1MS       ;显示162微秒       SETB   P2.1       ;关闭十位显示,防止鬼影       DJNZ   R1,DPLOP2     ;循环执行250次       DJNZ   R0,DPL2     ;循环执行250X4=1000次       RET SHAN:  MOV   R3,#5       ; ROUND: CLR   P1.1       ;       CLR   P1.4       ;       ACALL  DELAY       ;黄灯闪烁五次       SETB   P1.1       ;每次间隔一秒       SETB   P1.4       ;       ACALL DELAY       DJNZ   R3,ROUND     ;       RET             ; D1MS: MOV   R7,#80     ;2+2X80=162微秒,延时按12MHZ计算      DJNZ   R7,$       ;      RET             ; DELAY: MOV   R6,#10    ; YL3: MOV   R4,#100     ; XL2: MOV   R5,#71     ; DL1: NOP             ;一秒延时子程序     NOP     NOP     NOP     NOP DJNZ   R5,DL1     ;    DJNZ   R4,XL2     ;    DJNZ   R6,YL3     ;    RET             ; ;共阴数码管显示代码 NUMTAB: DB   03FH       ;0    DB   006H       ;1    DB   05BH       ;2    DB   04FH       ;3    DB   066H       ;4    DB   06DH       ;5    DB   07DH       ;6    DB   007H       ;7    DB   07FH       ;8    DB   06FH       ;9    END
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦想世界的九转还魂丹的配方是什么?
男人一天最多能射几次
煙岸的意思是什么?煙岸的释义是什么啊?
直排式热水器打不着火怎么办
用银行承兑汇票支付货款后的后续怎么处理??
18岁男孩正常身高体重是多少?
外地人在广西生活久了会有地贫吗
种过指甲草土地能种菜吗?
2016年端午节是公历什么时候
现在去做激光脱毛的话,那激光脱毛费用高吗?
浪放的意思是什么?浪放的释义是什么啊?
莫文蔚的简历
fcciddssdtspce代表什么意思
冷凝恒温燃气热水器什么牌子的好
如果不想睡觉听什么DJ歌提神,给我歌名可以吗
推荐资讯
疯狂大老千国语版下载
大学生如何实现就业
打磨雕刻琥珀蜜蜡打磨后上什么油
爸爸去哪儿中奖短信lf
谁晓得如何关闭联想笔记本电池保护板?
怎么样才能使头发变黑,长的又多
深圳南山有哪里有情侣装专卖啊
离预产期还有十一二天。羊水偏少对小孩有影响
夜来香能驱蚊吗
西安高新买房
大家觉得海尔冰箱三开门风冷和直冷哪个好?
婚庆拱门条幅尺寸一般是多少?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?