超级版主 
 
主题
回帖0
积分14436
阅读权限150
注册时间2008-11-13
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
 
 
 
 
              现在板上电压测量范围究竟是多少?完全可用以下程序验证! 
 
 
              说明:           AD转换结果      =0-1023 
 
 
                                  可用一稳压电源代替电池。从3.5V起调,当显示为1023时,稳压电源上的电压就是本板的测量电压范围。 
 
 
 
 
 
 
    //编译器:MPLAB IDE v8.83 
//倪大德  12。3。7 
 
#include<pic.h> 
#define uchar unsigned char 
#define uint  unsigned int 
/* 
led     
  a_       
f|  |b   
 |g_|     
e|  |c   
 |__|     
  d .h    
*/ 
const uchar table[]={ 0x3f,0x0a,0x57,0x4f,0x6a,0x6d,0x7d,0x0b,0x7f,0x6f,0X00}; 
void delay(uint x) 
{ 
 uint a,b; 
 for(a=x;a>0;a--) 
  for(b=110;b>0;b--); 
} 
void init() 
{ 
    //配置模拟/数字IO口(手册P148) 
    ANSEL=0B00011010;  //AN1 
 TRISA=0B00011010;  //AN1 
 TRISD=0B00000000; 
    PORTD=0B00000000; 
    TRISB=0B01111000;  //B3-B6 键盘 设置为输入 
    PORTB=0B01111001;   //B3-B6键盘设置高电平,位码b0设置为高电平 
    TRISC=0B00000000;   //C6-C7 位码1,2 
    PORTC=0B11000000;   //位码1,2设置为高电平 
    TRISE=0B00000000;   
    PORTE=0B00000100;   //位码1,2设置为高电平 
 ADCON0=0B10100101;        // 
 delay(10);               //稳定ADC电源 
    ADCON1=0B00010000; 
    RA6=1;                  //使能基准电压 
} 
 
//=================================== 
uint get_ad() 
{ 
 uint adval; 
 GO_DONE=1; 
 while(GO_DONE); 
 adval=ADRESH;//00000000 00000011 
 adval=adval<<8|ADRESL;//00000011 11111111 
    asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); 
 return (adval);  
} 
 
//======================================= 
void disp(uchar num1,uchar num2,uchar num3,uchar num4) 
{ 
 PORTD=table[num1];//显示第一个数码管 
 RC6=0;delay(2);RC6=1;PORTD=0B00000000;  
 PORTD=table[num2]|0X80;//显示第二个数码管 
 RE2=0;delay(2);RE2=1;PORTD=0B00000000; 
 PORTD=table[num3];//显示第三个数码管 
 RB0=0;delay(2);RB0=1;PORTD=0B00000000; 
 PORTD=table[num4];//显示第四个数码管 
 RC7=0;delay(2);RC7=1;PORTD=0B00000000; 
} 
//==================================== 
void main() 
{   //double advalf; 
 uint lednum; 
 uchar a1,a2,a3,a4; 
 init(); 
    delay(100); 
 while(1) 
 { 
  lednum=get_ad(); 
  a1=lednum/1000; 
  a2=lednum%1000/100; 
  a3=lednum%100/10; 
  a4=lednum%10; 
  disp(a1,a2,a3,a4); 
       delay(10); 
 }  
} |   
 
 
 
 |