建议你找一本书很多书上有这种例子的。我用的是PIC16F877A,可以取ADRESH:ASRESL 10位,用除以1000取千位,除100取百位,除以10取十位,余个位的方式,然后经过LED码制转换的方式。注意显示的时候利用的人的视觉暂留效果 回答者: - 2009-5-24 20:19 #include <htc.h> #include <pic18f45j10.h> #define uint unsigned int #define uchar unsigned char #define PORTDIT(adr,bit)((unsigned)(&adr)*8+(bit)) static volatile int table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar ad_hdate,ad_ldate; uint ad; void delay(int a) //延时 { long int i,j; for(j=0;j<a;j++) for(i=0;i<121;i++); } void main() { //TRISA0=1; INTCON=0X00; TRISC=0X00; TRISB=0X00; PORTB=0x00; PORTC=0x00; ADCON1=0X00; ADCON0=0X42; ADCON2=0X93; ADON=1; while(GODONE); ADON=0; ad_hdate=ADRESH; ad_ldate=ADRESL; ad=ad_ldate+ad_hdate*256; while(1) { PORTC=table[ad/100]; PORTB=0X01; delay(10); PORTB=0X00; PORTC=table[ad/10%10]; PORTB=0X02; delay(10); PORTB=0X00; PORTC=table[ad%10]; PORTB=0X04; delay(10); PORTB=0X00; } } 这是我用过的,不过没有转成电压,就是显示ad的数值,或许能给你点帮助 回答者: - 2009-5-25 17:26 |