急需8051单片机的红绿灯程序 哪位高手指教下 感激~~

急需8051单片机的红绿灯程序 哪位高手指教下 感激~~,第1张

好多书上都有,你看看把,实际就是一个定时,来计算时间,然后在定时到了后将,所需的2进制吗,送的I/O口变下就可以了

P1.0/P1.1/P1.2分别控制主干道的红、黄、绿灯P1.3/P1.4/P1.5分别控制次干道的红、黄、绿灯P1.6/P1.7驱动光电耦合器/P1.7为干道红灯亮输出0主干道绿灯亮41秒、亮0.5秒、灭0.5秒4次计45秒次干道绿灯亮27秒、亮0.5秒、灭0.5秒4次计31秒黄灯亮3秒****************************************************SEC EQU 36H 秒

DEDA EQU 37H 毫秒

ORG 0000H

SJMP START

ORG 0BHT0中断入口

JMP TIM0

ORG 30H

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 SEC,#0

MOV TMOD,#11H

MOV TL0,#0B0H

MOV TH0,#3CH

SETB EA

SETB ET0

SETB TR0

START1:NOP

NOP

MOV 0A6H,#01EH看门狗

MOV 0A6H,#0E1H看门狗

MOV A,#11101101B

MOV P1,A双方向黄灯亮3秒

BK1: MOV 0A6H,#01EH看门狗

MOV 0A6H,#0E1H看门狗

MOV A,SEC S

NOP

NOP

CJNE A,#3,BK1

MOV A,DEDA MS

NOP

NOP

CJNE A,#19,BK1

MOV A,#10110011B

MOV P1,A 主干道绿灯亮、次干道红亮MOV DEDA,#0

MOV SEC,#0B

K2: MOV 0A6H,#01EH看门狗 MOV 0A6H,#0E1H看门狗 MOV A,SECNOPNOPCJNE A,#41,BK2 CPL P1.2MOV R0,#8 BK3: MOV 0A6H,#01EH看门狗 MOV 0A6H,#0E1H看门狗 MOV A,DEDANOPNOPCJNE A,#10,BK3CPL P1.2MOV DEDA,#0DJNZ R0,BK3MOV A,#11101101BMOV P1,A 双方向黄灯亮3秒MOV DEDA,#0MOV SEC,#0BK4: MOV 0A6H,#01EH看门狗 MOV 0A6H,#0E1H看门狗 MOV A,SECNOPNOPCJNE A,#3,BK4 MOV A,DEDANOPNOPCJNE A,#19,BK4MOV A,#01011110BMOV P1,A 主干道红灯亮、次干绿道亮MOV DEDA,#0MOV SEC,#0BK5: MOV 0A6H,#01EH看门狗 MOV 0A6H,#0E1H看门狗 MOV A,SECNOPNOPCJNE A,#27,BK5CPL P1.5MOV R0,#8 BK6: MOV 0A6H,#01EH看门狗 MOV 0A6H,#0E1H看门狗 MOV A,DEDANOPNOPCJNE A,#10,BK6CPL P1.5MOV DEDA,#0DJNZ R0,BK6MOV DEDA,#0MOV SEC,#0JMP START1TIM0:PUSH ACC T0中断子程序 PUSH PSWMOV TL0,#0B0HMOV TH0,#3CHMOV 0A6H,#01EH看门狗MOV 0A6H,#0E1H看门狗 INC DEDA MSMOV A,DEDANOPNOPCJNE A,#14H,TT1MOV DEDA,#0INC SEC STT1:POP PSW POP ACCRETINOPNOPNOPAJMP START1SJMP $END

嘉定单片机是STC89C52RC这款常用51单片机,推荐用两个74HC573,输入全接P0;输出接16个LED负极(573有一定驱动能力,实际应用可以接LED正极,但是习惯上仍采用灌电流的驱动方式)然后LED另一极接正极,设573的所存分别用P3.7和P3.6控制,程序如下:

#include<reg52.h>sbit suocun1=P3^7

sbit suocun2=P3^6

void delay(int z){

int x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

void main(){

char a

while(1)

{

suocun1=1

suocun2=0

for(a=0a<8a++)

{

P0=0x01<<1

delay(50)

}

suocun2=1

suocun1=0

for(a=0a<8a++)

{

P0=0x01<<1

delay(50)

}

}

}

我在KEIL4上编译0错误0警告

573的接法可以百度 datasheet 很简单的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11511766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存