#include <reg51.h>
#define uchar unsigned char
uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar count,getdata;
unsigned int voltage;
sbit ST_A=P3^0;
sbit EOC=P3^1;
sbit OE=P3^2;
sbit CLK=P3^3;
sbit ADD_A=P3^5;
sbit ADD_B=P3^6;
sbit ADD_C=P3^7;
void delayms(uchar ms)//鏁扮爜綆℃壂鎻忓歡鏃?
{
uchar i,j;
for (j=ms;j>0;j--)
for (i=60;i>0;i--);
}
void display (void)
{
P2=0xff;
P0=dispcode[voltage/100]+0x80;
P2=0Xfb;
delayms(10);
P2=0xff;
P0=dispcode[voltage%100/10];
P2=0Xfd;
delayms(10);
P2=0xff;
P0=dispcode[voltage%10];
P2=0Xfe;
delayms(10);
}
main()
{
IE=0x8a;
TMOD=0x21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=256-2;
TL1=256-2;
TR0=1;
TR1=1;
ST_A=0;
OE=0;
ADD_A=0;
ADD_B=0;
ADD_C=0;
while(1)
{voltage=getdata*100;
voltage=voltage/51;
display();
}
}
void time0() interrupt 1
{count++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(count==20)
{ count=0;
ST_A=1;
ST_A=0;
while(EOC==0);
OE=1;
getdata=P1;
OE=0;
}
}
void time1() interrupt 3
{
CLK=~CLK;
}
|