资讯详情

基于PIC单片机开发的数字电压表

对于单片机初学者来说,数字电压表是一个很好的练习。在本文中,英瑞恩单片机开发工程师分享了一个用途PIC单片机开发的简单数字电压表。该数字电压表的范围为0-20V,当然,您也可以增加或减少输入电压的范围。

在这个方案中使用microchip的PIC16F688单片机,该PIC输入电压由8个模拟通道之一读取,内部使用ADC将其转换为10位数。ADC数字可以转换为实际测量的电压。电压显示是基于HD44780的字符LCD上。

1、数字电压表电路图及说明

你无法将20V信号直接馈入PIC单片机的输入通道。它的工作电压过高,可能会损坏单片机。因此,我们首先需要一个电压缩放器,它将输入电压缩小到PIC16F688安全工作电压范围。可通过以下简单的电阻分压器实现。

5116fa20c6985faa2f8c1515bc9b37fd.png

使用两个电阻R1和R2,可以将0-20V输入电压转换为0-5V。对于R1和R您可以看到电阻分压器网络的输出(Va)是输入电压的1/4。如果输入电压超过20V,则Va将超过5V,这可能对PIC单片机有害。如果在R电阻两端连接51.1V稳压二极管,输出电压Va永远不会超过5.1V。保护单片机免受高压输入可能造成的任何损坏。电压Va将流到PIC16F688单片机的AN(引脚11)通道。其它电路如下:

LCD显示器以连接显示器。如果LCD模块中只有14个引脚,可能没有背光功能,可以忽略15和16个引脚。通过连接调整对比度 5V和Gnd之间的5K完成电位计。提供在线串行编程(ICSP)以便将来任何变化都能轻松升级头部PIC单片机内部的固件。当单片机因某种原因停止执行程序时,外部复位有助于使整个系统进入已知的初始状态。

基于面包板的完整电路显示在这里。您需要使用此项目 5V稳压电源。因此,可以使用LM7805线性稳压器IC。

该方案采用C语言开发和使用Mikroelektronika的mikroC Pro for PIC编译器。PIC16F688单片机使用4.0 MHz内部时钟振荡器。启用了MCLR并打开启动定时器。你需要通过将军ANSEL寄存器的相应位置1,RA2 / AN输入定义为模拟输入。将ADCON1寄存器的VCFG为使用而清零位置Vdd = 5V作为AD转换的参考电压。ADCON0 = 8将AN输入通道连接到内部采样和维护电路。端口A和C也必须禁用引脚上的比较器(分配CMCON0 = 7)。其他设置:

振荡器->内部RC无时钟;

看门狗定时器->关闭;

电定时器->开启;

主清除启用->启用;

代码保护->关闭;

数据EE读保护->关闭;

欠压检测-> BOD启用,SBOREN禁用;

内外切换模式->启用;

监视器时钟故障保护->启用;

二、基于PIC单片机开发的数字电压表源代码sbitLCD_RSatRC4_bit;

sbitLCD_ENatRC5_bit;

sbitLCD_D4atRC0_bit;

sbitLCD_D5atRC1_bit;

sbitLCD_D6atRC2_bit;

sbitLCD_D7atRC3_bit;

sbitLCD_RS_DirectionatTRISC4_bit;

sbitLCD_EN_DirectionatTRISC5_bit;

sbitLCD_D4_DirectionatTRISC0_bit;

sbitLCD_D5_DirectionatTRISC1_bit;

sbitLCD_D6_DirectionatTRISC2_bit;

sbitLCD_D7_DirectionatTRISC3_bit;

//EndLCDmoduleconnections

charMessage1[]=“DVMProject”;

unsignedintADC_Value,DisplayVolt;

char*volt="00.0";

voidmain(){

ANSEL=0b00000100;//RA2/AN2isanaloginput

ADCON0=0b00001000;//Analogchannelselect@AN2

ADCON1=0x00;//ReferencevoltageisVdd

CMCON0=0x07;//Disablecomparators

TRISC=0b00000000;//PORTCAllOutputs

TRISA=0b00001100;//PORTAAllOutputs,ExceptRA3andRA2

Lcd_Init();//InitializeLCD

Lcd_Cmd(_LCD_CLEAR);//CLEARdisplay

Lcd_Cmd(_LCD_CURSOR_OFF);//Cursoroff

Lcd_Out(1,1,Message1);

Lcd_Chr(2,10,'V');

do{

ADC_Value=ADC_Read(2);

DisplayVolt=ADC_Value*2;

volt[0]=DisplayVolt/1000 48;

volt[1]=(DisplayVolt/100) 48;

volt[3]=(DisplayVolt/10) 48;

Lcd_Out(2,5,volt);

delay_ms(500);//Holdfor500ms

}while(1);

}//Endmain()

以上是基于英瑞恩单片机开发工程师分享的PIC单片机开发的数字电压表。英瑞恩专注于单片机应用程序的设计和开发,提供8台单片机、16台单片机、32台单片机、计算放大器和模拟开关

标签: 简易数字显示稳压电源电路1

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台