本帖最后由 1032405648 于 2020-3-20 17:32 编辑
仿真时数码管乱码不知道问题在哪,我用开发板可以达到想要效果
单片机程序;
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned long count;
sbit key1=P3^4;
sbit key2=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar ge,shi,bai,qian,wan,sw;
void init();
void read_num(void);
void display(uchar ge,uchar shi,uchar bai,uchar qian ,uchar wan,uchar sw);
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void read_num(void)
{
if (count>999999)
{
TH0=0x00;
TL0=0x00;
count=0;
}
ge=count%10;
shi=count%100/10;
bai=count%1000/100;
qian=count%10000/1000;
wan=count%100000/10000;
sw=count/100000;
}
void main()
{
P3=0xff;
P0=0xff;
P2=0xff;
init();
while(1)
{
if(key1==0)
{
delay(10);
if (key1==0)
{
count++;
}
while(!key1);
delay(10);
while(!key1);
}
else
read_num();
display(ge,shi,bai,qian,wan,sw);
if(key2==0)
{
count=0;
}
}
}
void display(uchar ge,uchar shi,uchar bai,uchar qian ,uchar wan,uchar sw)
{
dula=1;
P0=table[sw];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);
dula=1;
P0=table[wan];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[qian];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(1);
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(1);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(1);
}
void init()
{
TMOD=0x05;
TH0=0x00;
TL0=0;
TR0=1;
}
|