单片机速通教程
PIC16C71片内A/D转换器及应用

🏠 首页 《无线电》杂志 2001年 🔗 第12期 🔗 第32页 分类:电脑与单片机 🔗 陈伟 🔗

本文将通过对PIC16C71片内A/D转换器的介绍,使大家了解PIC16C7×系列单片机的A/D转换器的特性和应用。最后还将简要介绍PIC单片机的开发工具。

一、 PIC16C71的硬件特性

PIC16C71是片内带有4路高速8位A/D转换器的8位单片机。它是PIC16C5×系列的增强型单片机,所以它使PIC16C5×系列向上兼容,为PIC16C5×编写的程序可以很容易地移植到PIC16C71中。熟悉了PIC16C5×将会很容易学会使用PIC16C71。PIC16C71在PIC16C5×的基础上做了很多改进:PIC16C71将指令字长增加到14位,这使得程序页面寻址及寄存器寻址的能力得到很大的提高;增加了“高位程序计数器”PCLATH来处理程序页面寻址,取消了PIC16C5×中的页面位PA2、PA1、PA0;增加了几条新指令:RETURN、RETFIE、ADDLW和SUBLW,取消了OPTION和TRIS指令功能,但仍承认其形式,以保持和PIC16C5×的兼容性;增加了4种硬件中断:RB口中断、INT中断、RTCC中断和A/D中断,中断向量放在0004H单元;程序堆栈增加到8级,使子程序嵌套更方便;睡眠状态可由中断来唤醒;RB口具备弱上拉电路,并且增加了引脚电平变化引起中断的功能,这使得用RB口来构造一个键盘矩阵显得非常简洁好用,并且由键盘操作来唤醒处于睡眠方式下的单片机,使之进入工作状态。关于更详细的硬件资料,请读者到www.microchip.com.cn上去下载相应的PDF格式文件。

二、 PIC16C71片内A/D转换器

PIC16C7×系列单片机都有片内A/D转换器。PIC16C71有4路模拟输入通道,它们共同复用一个采样/保持电路和A/D转换器,参考电压可来自内部V\(_{DD}\),也可来自外部RA3引脚输入(V\(_{REF}\)输入脚)。PIC16C71的A/D转换器属于逐次逼近型,转换的结果放到ADRES(09H)寄存器中,为8位数字量。

使用A/D转换器必须先定义TRISA寄存器,使RA口成为输入端。RA0~RA3分别对应模拟输入AIN0~AIN3,AIN3还可以作为基准电压V\(_{REF}\)输入。A/D转换器的保持和采样电路由采样开关和保持电容组成。没有专门的命令用来开启和结束采样,当A/D转换过程开始,采样即暂停,CPU对加到保持电容上的电压进行数字转换。当一次A/D转换结束后,经过2tad(tad为A/D转换时钟)的延迟,采样又重新开始。必须清楚这一点,以保证有足够的采样时间。对于模拟量源推荐使用最大10kΩ的源阻抗,以减小A/D转换器的误差。

有两个控制寄存器ADCON0、ADCON1用于设置A/D转换器,寄存器中各位的定义见图1。在ADCON0中,ADON位为A/D转换允许位:为0,关闭A/D转换且不消耗工作电流;为1,启动A/D转换。ADIF位为A/D转换完成中断标志位,A/D转换完成时置位,需用软件清除。GO/DONE为A/D转换状态位,如果ADON为1时,置该位启动A/D转换;当转换完成时该位由硬件自动清零。如果ADON为0,该位被强制为零。CHS1、CHS0为模拟通道选择,为00,选择通道0(AIN0);为01,选择通道1(AIN1);为10,选择通道2(AIN2);为11,选择通道3(AIN3)。ADCS1、ADCS0为A/D转换时钟选择位,为00,选择fosc/2;为01,选择fosc/8;为10,选择fosc/32;为11,选择frc(来自内部RC振荡)。在ADCON1中,PCFG1、PCFG0为A/D转换口配置位,将模拟口配置成不同的工作方式。具体配置见表1。

图1
图1 🔍原图 (850×188)
图3
图3 🔍原图 (567×176)

A/D转换器从设置控制寄存器GO/DONE为1时,即开始进行A/D转换,在转换前,要选择模拟输入通道及设置足够的采样时间。最快转换时间为20μs。当A/D转换结束时,GO/DONE位被自动清零,并且发出A/D完成中断请求。

三、 PIC16C71 A/D转换器的软件设置

与PIC16C71的A/D转换器有关的特殊功能寄存器有控制寄存器ADCON0、ADCON1,中断寄存器INTCON,A/D转换结果寄存器ADRES。通过对这4个寄存器的赋值,完成A/D转换器的设置。

设置A/D转换器的程序流程见图2:

程序清单:

STATUS EQU 03H ;寄存器定义

ADCON0 EQU 08H

ADCON1 EQU 88H

INTCON EQU 0BH

ADRES EQU 09H

ORG 0000H

GOTO MAIN ;复位地址

ORG 0004H ;中断向量入口

……

MOVF ADRES,W ;将A/D的转换结果给W寄存器

…… ;A/D数据处理

RETFIE ;中断返回

MAIN :

……

BSF STATUS,5 ;选寄存器页面1

MOVLW 00000010B ;因为ADCON1(88H)在页面1

MOVWF ADCON1

BCF STATUS,5 ;选寄存器页面0

MOVLW 11000001B ;tad=trc

MOVWF ADCON0

MOVLW 11XXXXXXB ;使能A/D中断

MOVWF INTCON

BSF ADCON0,2 ;启动A/D转换

四、 PIC16C71 的应用

因为PIC16C71片内带有4路8位A/D转换器,可以利用PIC16C71作为模拟量数据采集控制CPU,完成4路通道的模拟输入的数据采集,然后可以把采集的数据保存到数据存储器,也可根据上位机的命令,通过RS-232串行通讯,上传采集数据,也可以设计成多点的数据采集,通过RS-485组成网,上位机对各个点进行配置和控制,并读回各点采集的数据结果。如果对A/D的精度要求不高,可以直接使用V\(_{DD}\)作为电压基准,否则可增加外部电压基准。硬件组成框图见图3。

图2
图2 🔍原图 (567×445)

五、 PIC单片机的开发工具

MPLAB软件是Microchip公司推出的适用于PIC16/17单片机系列的基于Windows的集成开发环境。这种集成开发环境使开发工程师能灵活地编辑、编译、仿真、开发和调试PIC16/17系列单片机的应用程序。

MPLAB集成开发环境包括下列开发工具:


1. MPLAB项目管理程序。
项目管理程序是MPLAB的核心部分。不创建项目就不能进行符号调试。在整个项目管理程序中,可以进行下列操作:创建项目、把源代码文件加入到项目中、汇编或编译源代码、编辑源代码、重建所有源文件或编译单个文件、调试源代码。


2. MPLAB编辑程序。
MPLAB编辑程序使你能编写与编辑固件源文件或其他适用于PIC16/17微控制器的文本文件。


3. MPASM汇编程序。
使用该程序汇编源程序代码,可以不退出MPLAB便可生成各种目标代码格式以支持Microchip开发工具与其他编程工具。


4. MPLAB-SIM软件模拟仿真程序。
该软件可以模拟PIC16/17系列单片机的指令与I/O。通过模拟仿真,可以找出代码问题并调试源程序。


5. PICMASTER仿真器是高性能的在线仿真器。
它能实时地运行目标应用程序同时执行硬件调试操作。


6. PICSTAR PLUS编程器。
它是Microchip公司推出的全系列单片机编程器,可以用来编程PIC16/17系列的单片机。

有了这样一个集成开发环境,用户将会很容易完成应用程序的编写、编译、软件调试和编程芯片。有新型号芯片后,MPLAB可以通过软件升级,支持新的芯片功能。本系列讲座不具体对其进行介绍。

六、 PIC单片机讲座小结

通过对PIC单片机的结构特点、指令系统及3个系列单片机的应用例子的介绍,大家对PIC单片机有了一定的了解,在学习和使用PIC单片机的时候,还要注意两点:


1. 要熟悉PIC单片机的内部功能模块,根据功能的要求,选择合适的单片机。

PIC单片机有多个系列,每个系列又有多种型号。每种型号之间的差异主要是功能模块的不同。所以,要熟悉各个系列的特点,了解各个型号的差异,每个系列在我刊介绍的网站上均有详细的硬件资料。这样,在具体设计时,根据应用的需要和功能的要求,选择最合适的单片机,可避免不必要的硬件资源浪费。


2. 发挥PIC单片机的开发软件功能强的特点,缩短开发周期。

MPLAB是一个功能比较强的集成开发环境,设计、调试、编程芯片等工作都在此完成。它的软件模拟仿真功能非常灵活、方便,编译好源程序后,可通过模拟仿真调试、检测应用程序功能,不需要烧写芯片测试程序。

(陈伟)