基于PIC单片机的直流电压测量计

来源:本站
导读:目前正在解读《基于PIC单片机的直流电压测量计》的相关信息,《基于PIC单片机的直流电压测量计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于PIC单片机的直流电压测量计》的详细说明。
简介:介绍了利用PIC单片机制作的直流电压测量计的基本原理,通过串行口与上位机通信,并采用VB的可视化编程技术在计算机上实时显示测量的电压值。

Microchip公司推出的PIC单片机在中国的应用越来越广泛,已形成3个层次、50多个型号,并且朝着SOC(系统单片化)的方向发展。在PIC系列单片机家族中,具备片内ADC模块的型号很多,大多数是8位或10位的。PIC16F87X是一款比较有特色的产品,他可以实现在线调试和在线编程。28脚封装的部分型号,其内部的ADC具有5个模拟通道;40脚封装的部分型号,其内部的ADC具有8个模拟通道。利用其自带的A/D转换功能,本文设计了一种电压测量计,在一定程度上简化了外围电路的设计,使系统工作更加可靠。

1电路设计

如图1所示,电路的原理比较简单,系统接4 MHz晶振,被测的模拟电压信号从RA0/AN0输入;RC6/TX通过MAX232接RS232C串行口的第2脚(在9针RS232C的信号定义中,第2脚RXD是接收数据端),A/D转换后的数据通过串行口发送给计算机。由于PIC单片机的输入、输出电平为TTL电平,而PC机配置的是RS232C标准串行接口,两者电气规范不一致,为此采用电平转换专用芯片MAX232连接PC机。在测量电压的过程中只需从单片机接收数据,所以串口工作在单工传送方式。

2单片机软件设计

软件部分设计要实现2个功能,一个是A/D转换,另一个是把转换的数据通过串口发送给PC机。

2.1A/D转换

ADC模块专用的有4个完整的寄存器:ADC结果高字节寄存器ADRESH,ADC结果低字节寄存器ADRESL,0号ADC控制寄存器ADCON0和1号ADC控制寄存器ADCON1。

ADCON0的格式如下:

基于PIC单片机的直流电压测量计

其中:ADCS1~ADCS0为A/D转换时钟及其频率选择位;

CHS2~CHS0为A/D转换模拟通道选择位;

转换启动控制位兼做状态位;

ADON为A/D转换器开关位。

ADCON1的格式如下:

基于PIC单片机的直流电压测量计

其中:ADFM为A/D转换转换结果格式选择位;PCFG3~PCFG0为A/D转换引脚功能选择位。

A/D转换流程:

②如果需要A/D中断功能,开放相应的中断使能位。

③等待所需要的采样时间。

④将启动控制兼状态位置1,启动A/D转换过程。

⑤等待A/D转换完成,可以通过查询或中断的方法来判断。

⑥读取A/D转换结果寄存器对ADRESH:ADRESL,如果需要,对转换中断标志清零。

基于PIC单片机的直流电压测量计

2.2串口发送数据

与串口有关的寄存器除了和中断有关的寄存器外,我们编写程序时主要有4个:发送状态兼控制寄存器TXSTA、接收状态兼控制寄存器RCSTA、发送寄存器TXREG、波特率寄存器SPBRG。

发送状态兼控制寄存器TXSTA格式如下:

基于PIC单片机的直流电压测量计

其中:TX9D为发送数据的第9位(如果使用9位数据帧结构);

TRMT为发送移位寄存器“空”标志;

BRGH为高波特率选择位(异步方式下使用);

SYNC为USART同步/异步模式选择位;

TXEN为发送使能位;

TX9为发送数据长度选择位;

CSRC为时钟源选择位(异步方式下未用)。

接收状态兼控制寄存器RCSTA格式如下:

基于PIC单片机的直流电压测量计

我们只使用了最高位SPEN(串行口使能端)。

发送寄存器TXREG:

基于PIC单片机的直流电压测量计

TXREG是一个用户可读写的寄存器,每次用户发送的数据都是通过写入该缓冲器来实现的。

波特率寄存器SPBRG:

基于PIC单片机的直流电压测量计

发送流程:

①选择合适的波特率。

②置SYNC=0及SPEN=1,使USART工作于异步模式。

③如果需要中断处理功能,置TXIE=1。

④如果要传送9位数据,置TX9=1。

⑤置TXEN=1,使USART工作于发送器方式。

⑥如果选择传送第9位数据,把第9位数据置入TX9D。

⑦把即将发送的8位数据送入TXREG并启动发送。

2.3软件设计

这里给出了设计流程,如图2所示。A/D转换和由串口发送数据我们都是采用了查询的方法进行设计。在程序设计中对转换结果采用了左对齐方式,忽略最低2位,也就是将10位ADC当作8位来用,降低了分辨率,但已经能够满足电压测量的需要。

利用VB6.0中的控件MSComm,编写了一个简01单的图形界面的接收与显示程序,主代码如下:

基于PIC单片机的直流电压测量计

基于PIC单片机的直流电压测量计

基于PIC单片机的直流电压测量计

图形界面如图3所示,程序中使用的控件为MSComm、定时器、文本框和一个用于退出程序的按钮,可以修改程序使用其他的串行端口。代码行Text1.Text=Asc(DataIn)*0.02&"Volts DC"的作用是把从单片机得到的数据转化成可以在文本框中显示的数据,由程序控制进行实时的显示。

从电路图中看出,测量的电压最大值可以达到5 V(电源电压),而使用8位的ADC模块得到的组合有256种(0~255),电压的最小增量为5/256=0.0195 V,所以转换后的数字量若为250,则测得的电压值为250×0.019 5=4.87 V,若数字量为255,则电压值为255×0.019 5=4.972 5 V,接近5 V,所以可以采用0.02 V的增量,对大多数应用场合已经足够了。

此电压测量计不论在硬件还是软件上都有很大的扩展余地,可以在前面设计的基础上增加新的功能。

参考文献

[1]李学海.PIC单片机实用教程——提高篇[M].北京:北京航空航天大学出版社,2002.

[2]范逸之,陈立元,等.利用VisualBasic实现串并行通信技术[M].北京:清华大学出版社,2001.

提醒:《基于PIC单片机的直流电压测量计》最后刷新时间 2024-03-14 01:16:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于PIC单片机的直流电压测量计》该内容的真实性请自行鉴别。