PIC16F688的数字电压表设计制作
ADC的数学的准确性取决于在输入端的电阻的精度和稳定的参考电压,VDD = 5 V。我发现,VDD是稳定的,以5.02五,我测R1和R2,和它们的值是1267和3890欧姆 。因此,这给了5.02 V模拟的I / P ---> 0-1023数字计数 =>分辨率=(5.02 - 0)/(1023-0)= 0.004907 V /计数
VA = 1267 * VIN /(1267 3890)= 0.2457 *输入电压
=>我/ P电压= 4.07 * VA = 4.07 *数字计数* 0.004907
= 0.01997 *数字计数
= 0.02 *数字计数(约)
为了避免浮点运算,使用的I / P电压= 2 *计数。
例如,假设VIN = 7.6V。然后,
VA = 0.2457 *输入电压为1.87V
=>数码计数= 1.87/0.004907 = 381
=>计算的I / P电压= 2 * 381 = 0762 = 07.6V(4位产品的前3位数字 )
固件
固件写入和mikroC编译器编译。LCD_D6的代码是在这里。
SBIT LCD_D7 RC3_bit;
在TRISC4_bit SBIT LCD_RS_Direction;
TRISC5_bit SBIT LCD_EN_Direction;
TRISC0_bit SBIT LCD_D4_Direction;
TRISC1_bit SBIT LCD_D5_Direction;
TRISC2_bit SBIT LCD_D6_Direction;
SBIT TRISC3_bit LCD_D7_Direction;
/ /高端液晶模块的连接
字符Message1 [] =“DVM项目“;
unsigned int类型ADC_Value,DisplayVolt;
CHAR *伏=“00.0”;
无效的主要(){
:ANSEL = 0b00000100; / / RA2/AN2是模拟输入
ADCON0的= 0b00001000; / /模拟输入通道选择AN2的
ADCON1 = 0X00;
CMCON0 =为0x07; / / Disbale比较
TRISC = 0b00000000; / / PORTC的所有输出
TRISA = 0b00001100; / / PORTA所有输出,除RA3和RA2的
Lcd_Init(); / /初始化液晶
Lcd_Cmd(_LCD_CLEAR); / /清除显示
Lcd_Cmd(_LCD_CURSOR_OFF) / /游标关闭
Lcd_Out(1,1 Message1);
Lcd_Chr(2,10,“V”);
{
ADC_Value = ADC_Read(2)
DisplayVolt = ADC_Value * 2;
伏[0] = DisplayVolt/1000 + 48 ; ;
伏[1] =(DisplayVolt/100)%10 + 48;
伏[3] =(DisplayVolt/10)10%+ 48;
Lcd_Out(2.5伏);
delay_ms(100);
}(1) ;
}
输出
评论