程序我也查了半天了,奈何小白总是照不出来问题,仿真电路也看了半天,好像也没啥问题。我先给大家看看电路图吧。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^0;
sbit wela=P2^1;
sbit adwr=P3^6;
sbit adrd=P3^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f, //定义一个阴极数码管的编码表。
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uchar xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar bai,uchar shi,uchar ge )
{
wela=0;
dula=0;
P0=0X00;
P0=table[bai];
dula=1;
dula=0;
P0=0xff;
P0=0x7e;
wela=1;
wela=0;
delayms(10);
wela=0;
dula=0;
P0=0X00;
P0=table[shi];
dula=1;
dula=0;
P0=0xff;
P0=0x7d;
wela=1;
wela=0;
delayms(10);
wela=0;
dula=0;
P0=0X00;
P0=table[ge];
dula=1;
dula=0;
P0=0xff;
P0=0x7b;
wela=1;
wela=0;
delayms(10);
}
void main()
{
uchar a,A1,A2,A3,adval;
while(1)
{
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;
_nop_();
P1=0xff;
adrd=1;
_nop_();
adrd=0;
_nop_();
adval=P1;
adrd=1;
delayms(10);
A1=adval/100;
A2=adval%100/10;
A3=adval%10;
for(a=10;a>0;a--)
{
display(A1,A2,A3);
}
}
}