#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阳码
const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};//带小数点的共阳码
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4)
{
PORTC=0x01;//0010 0000
PORTB=~table1[num1];//显示第一个数码管
delay(2);
PORTC=0x02;//0001 0000
PORTB=~table[num2];//显示第二个数码管
delay(2);
PORTC=0x04;//0000 1000
PORTB=~table[num3];//显示第三个数码管
delay(2);
PORTC=0x08;//0000 0100
PORTB=~table[num4];//显示第四个数码管
delay(2);
}
void into()
{ TRISB=0;
PORTB=0;
TRISC=0;
PORTC=0;
TRISA=0X01;
PORTA=0;
ADCON0=0X41;
ADCON1=0X0E;
delay(10);
}
uint get_ad()
{
uint adval;//十六位的数要用 uint来存储
float advalf;
ADGO=1;
while(ADGO);
adval=ADRESH;//00000000 00000011
advalf=adval/255.0*5;//注意,在这句话中255要加“.0”是因为结果出来要是浮点数
adval=advalf*1000;
return (adval);
}
void main()
{ uint i;
uint a,b,c,d;
into();
while(1)
{i=get_ad();
a=i/1000;
b=i%1000/100;
c=i%100/10;
d=i%10;
disp(a,b,c,d);
}
}