请选择 进入手机版 | 继续访问电脑版
搜索
热搜: ROHM 模拟 车载
查看: 184|回复: 16

[分享] 使用PIC单片机开发的简易数字电压表

  [复制链接]

该用户从未签到

1347

主题

6659

帖子

0

精华

论坛元老

最后登录
2020-7-26
发表于 2020-7-9 13:16:08 | 显示全部楼层 |阅读模式
对于单片机初学者来说,数字电压表是一个不错的练习项目。在本文中,单片机开发工程师们分享了一个使用PIC单片机开发的简易数字电压表。该数字电压表的范围是0-20V,当然你也可以自己增加或减少输入电压的范围。

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


          一、数字电压表电路图和说明


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


  


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


          


          LCD显示器以4位模式连接。如果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 / AN2输入定义为模拟输入。将ADCON1寄存器的VCFG位清零,以使用Vdd = + 5V作为AD转换的参考电压。ADCON0 = 8将AN2输入通道连接到内部采样和保持电路。端口A和C引脚上的比较器也必须被禁用(分配CMCON0 = 7)。其他设置:


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


          看门狗定时器-》关闭;


          电定时器-》开启;


          主清除启用-》启用;


          代码保护-》关闭;


          数据EE读保护-》关闭;


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


          内部外部切换模式-》启用;


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


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


          sbit LCD_RS at RC4_bit;


          sbit LCD_EN at RC5_bit;


          sbit LCD_D4 at RC0_bit;


          sbit LCD_D5 at RC1_bit;


          sbit LCD_D6 at RC2_bit;


          sbit LCD_D7 at RC3_bit;


          sbit LCD_RS_Direction at TRISC4_bit;


          sbit LCD_EN_DirecTIon at TRISC5_bit;


          sbit LCD_D4_DirecTIon at TRISC0_bit;


          sbit LCD_D5_DirecTIon at TRISC1_bit;


          sbit LCD_D6_DirecTIon at TRISC2_bit;


          sbit LCD_D7_Direction at TRISC3_bit;


          // End LCD module connections


          char Message1[] = “DVM Project”;


          unsigned int ADC_Value, DisplayVolt;


          char *volt = “00.0”;


          void main() {


          ANSEL = 0b00000100; // RA2/AN2 is analog input


          ADCON0 = 0b00001000; // Analog channel select @ AN2


          ADCON1 = 0x00; // Reference voltage is Vdd


          CMCON0 = 0x07 ; // Disable comparators


          TRISC = 0b00000000; // PORTC All Outputs


          TRISA = 0b00001100; // PORTA All Outputs, Except RA3 and RA2


          Lcd_Init(); // Initialize LCD


          Lcd_Cmd(_LCD_CLEAR); // CLEAR display


          Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off


          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)%10 + 48;


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


          Lcd_Out(2,5,volt);


          delay_ms(500); // Hold for 500 ms


          } while(1);


          } // End main()



回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:06:48 | 显示全部楼层
看看
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:07:33 | 显示全部楼层
不错
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:26:33 | 显示全部楼层
加油
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:27:05 | 显示全部楼层
哈哈
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:33:23 | 显示全部楼层
吼吼吼
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:35:43 | 显示全部楼层
嚯嚯嚯
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:36:41 | 显示全部楼层
哼哼哼
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:38:04 | 显示全部楼层
吼吼吼
回复

使用道具 举报

该用户从未签到

204

主题

8501

帖子

0

精华

论坛元老

最后登录
2020-8-6
发表于 2020-7-9 20:56:02 | 显示全部楼层
呵呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2020-8-7 11:48 , Processed in 0.075161 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表