- #include<reg52.h>
- #include"intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- sbit OE =P2^7;
- sbit EOC=P2^6;
- sbit START=P2^5;
- sbit CLK=P2^4;
- sbit CS0=P2^0;
- sbit CS1=P2^1;
- sbit CS2=P2^2;
- sbit CS3=P2^3;
- uint adval,volt;
- uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- void delayms(uint ms)
- {
- uchar j;
- while(ms--)
- {
- for(j=0;j<120;j++);
- }
- }
- void ADC_read()
- {
- START=0;
- START=1;
- START=0;
- while(EOC==0);
- OE=1;
- adval=P1;
- OE=0;
- }
- void volt_result()
- {
- volt=adval*1.96;
- }
- void disp_volt(uint date)
- {
- CS0=1;CS1=0;CS2=0;CS3=0;
- P0=~((~tab[date/100])|0x80);
- delayms(1);
- P0=0xFF;
- CS0=0;CS1=1;CS2=0;CS3=0;
- P0=tab[date%100/10];
- delayms(1);
- P0=0xFF;
- CS0=0;CS1=0;CS2=1;CS3=0;
- P0=tab[date%10];
- delayms(1);
- P0=0xFF;
- CS0=0;CS1=0;CS2=0;CS3=1;
- P0=tab[date%100];
- delayms(1);
- P0=0xFF;
- }
- void t0()interrupt 1
- {
- CLK=~CLK;
- }
- void t0_init()
- {
- TMOD=0x02;
- TH0=0x14;
- TL0=0x00;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void main(void)
- {
- t0_init();
- while(1)
- {
- ADC_read();
- volt_result();
- disp_volt(volt);
- }
- }
復制代碼 |