标题:
这个四位数码管动态显示单片机程序,编译没问题,执行无效果
[打印本页]
作者:
shaoliping66
时间:
2019-3-21 22:06
标题:
这个四位数码管动态显示单片机程序,编译没问题,执行无效果
那位师傅,帮我看一下这个陈序。四位数码管动态显示,能编译不错,下载到单片机,不显示。错在那里?
#include <reg52.h>
sbit LED=P0^0;
sbit DT0=P1^0;
sbit DT1=P1^1;
sbit DT2=P1^2;
sbit DT3=P1^3;
unsigned char code LedChar[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,
};
unsigned char LedBuff[4]={
0xFF,0xFF,0xFF,0xFF,
};
void main()
{
unsigned char i=0;
unsigned int cnt=0;
unsigned long sec=0;
LED=1;
DT0=0;
TMOD=0x01;
TH0=0xFC;
TL0=0x67;
TR0=1;
while(1)
{
if(TF0==1)
{
TF0= 0;
TH0 = 0xFC;
TL0=0x67;
cnt++;
if(cnt>=1000)
{
cnt=0;
sec++;
LedBuff[0]=LedChar[sec%10];
LedBuff[1]=LedChar[sec/10%10];
LedBuff[2]=LedChar[sec/100%10];
LedBuff[3]=LedChar[sec/1000%10];
}
if(i==0)
{DT2=0;DT1=0;DT3=0;i++;P0=LedBuff[0];}
else if(i==1)
{DT2=0;DT1=0;DT3=1;i++;P0=LedBuff[1];}
else if(i==2)
{DT2=0;DT1=1;DT3=0;i++;P0=LedBuff[2];}
else if(i==3)
{DT2=0;DT1=1;DT3=1;i++;P0=LedBuff[3];}
}
}
}
作者:
gchq521
时间:
2019-3-22 00:49
会不会是接口不对
作者:
zl2168
时间:
2019-3-22 10:30
硬件软件都可能有问题,提问不清,情况不明。
作者:
wulin
时间:
2019-3-22 16:48
编译没问题只是语法
没问题,
不代表逻辑
没问题。P1.0就被你重复使用。改这样你试试。
无标题.jpg
(188.42 KB, 下载次数: 44)
下载附件
2019-3-22 16:47 上传
#include <reg52.h>
//sbit LED=P0^0;
sbit LED=P3^0;
//sbit DT0=P1^0;
//sbit DT1=P1^1;
//sbit DT2=P1^2;
//sbit DT3=P1^3;
unsigned char code LedChar[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned char LedBuff[4];
void main()
{
unsigned char i=0;
unsigned int cnt=0;
unsigned int sec=0,min;
// LED=1;
// DT0=0;
TMOD=0x01;
TH0=0xFC;
TL0=0x67;
TF0=0;
TR0=1;
while(1)
{
if(TF0==1)
{
TF0 = 0;
TH0 = 0xFC;
TL0 = 0x67;
if(cnt==0||cnt==500)
LED=~LED;//LED以1秒周期闪烁
cnt++;
if(cnt>=1000)
{
cnt=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
}
}
LedBuff[0]=LedChar[min/10];
LedBuff[1]=LedChar[min%10]&0x7f;//加点
LedBuff[2]=LedChar[sec/10];
LedBuff[3]=LedChar[sec%10];
}
if(sec==0)//初始显示00.00
{
if(i==0)
{P1=0x01;P0=0xC0;i++;}
else if(i==1)
{P1=0x02;P0=0xC0&0x7f;i++;}//加点
else if(i==2)
{P1=0x04;P0=0xC0;i++;}
else if(i==3)
{P1=0x08;P0=0xC0;i=0;}
}
if(sec>0)//正常计时显示
{
if(i==0)
{P1=0x01;P0=LedBuff[i];i++;}
else if(i==1)
{P1=0x02;P0=LedBuff[i];i++;}
else if(i==2)
{P1=0x04;P0=LedBuff[i];i++;}
else if(i==3)
{P1=0x08;P0=LedBuff[i];i=0;}
}
}
}
}
复制代码
作者:
shaoliping66
时间:
2019-3-22 22:04
谢谢,师傅,
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1