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的格式如下:
其中:ADCS1~ADCS0为A/D转换时钟及其频率选择位;
CHS2~CHS0为A/D转换模拟通道选择位;
转换启动控制位兼做状态位;
ADON为A/D转换器开关位。
ADCON1的格式如下:
其中:ADFM为A/D转换转换结果格式选择位;PCFG3~PCFG0为A/D转换引脚功能选择位。
A/D转换流程:
②如果需要A/D中断功能,开放相应的中断使能位。
③等待所需要的采样时间。
④将启动控制兼状态位置1,启动A/D转换过程。
⑤等待A/D转换完成,可以通过查询或中断的方法来判断。
⑥读取A/D转换结果寄存器对ADRESH:ADRESL,如果需要,对转换中断标志清零。
2.2串口发送数据
与串口有关的寄存器除了和中断有关的寄存器外,我们编写程序时主要有4个:发送状态兼控制寄存器TXSTA、接收状态兼控制寄存器RCSTA、发送寄存器TXREG、波特率寄存器SPBRG。
发送状态兼控制寄存器TXSTA格式如下:
其中:TX9D为发送数据的第9位(如果使用9位数据帧结构);
TRMT为发送移位寄存器“空”标志;
BRGH为高波特率选择位(异步方式下使用);
SYNC为USART同步/异步模式选择位;
TXEN为发送使能位;
TX9为发送数据长度选择位;
CSRC为时钟源选择位(异步方式下未用)。
接收状态兼控制寄存器RCSTA格式如下:
我们只使用了最高位SPEN(串行口使能端)。
发送寄存器TXREG:
TXREG是一个用户可读写的寄存器,每次用户发送的数据都是通过写入该缓冲器来实现的。
波特率寄存器SPBRG:
发送流程:
①选择合适的波特率。
②置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单的图形界面的接收与显示程序,主代码如下:
图形界面如图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.