关于8051单片机简单程序-交通信号灯得问题

honeyb2 honeyb2 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这个程序编译没有问题,但是下到板子上面没有效果,灯和数码管一直不停的闪烁,求助啊!
我看了一个例程,使用了中断,但是我觉得这个不用中断也可以,但是这个程序调试出来就是不对

#include <reg52.h>
#define LED P1
#define DATA P0

sbit LATCH1 = P2^2;
sbit LATCH2 = P2^3;

unsigned char DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char WeiMa[2]={0xfe,0xfd};

void delay(unsigned char t);
void time(unsigned char t);
void display(unsigned char t);

unsigned char tempdata[2];

void main(void)
{
while(1)
{
LED = 0xfc; //红灯
display(60);
LED = 0xF3; //黄灯
display(5);
LED = 0xCF; //绿灯
display(50);
}
}

void delay(unsigned char t)
{
while(--t);
}

void time(unsigned char t)
{
tempdata[0] = DuanMa[t/10];
tempdata[1] = DuanMa[t%10];
}

void display(unsigned char t)
{
unsigned char i;

while(t)
{
time(t);
for (i = 0 ; i < 2 ; i++)
{
DATA = 0;
LATCH2 = 1;
LATCH2 = 0;

DATA = WeiMa[i];
LATCH1 = 1;
LATCH1 = 0;

DATA = tempdata[i];
LATCH2 = 1;
LATCH2 = 0;

delay(2000);
}
t--;
delay(50000); //随便弄得时间,为了观察变化
}

}









...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
honeyb2
单片机/工控 27,522 成员 28,796 内容