PIC16F877的应用--AD转换器

发布者:静雅心灵最新更新时间:2019-10-15 来源: eefocus关键字:PIC16F877  AD转换器  电位器 手机看文章 扫描二维码
随时随地手机看文章

PIC16F877单片机片内有8路10位A/D转换器,引脚②~⑤为AN0~AN3、⑦~⑩为AN4~AN7。MPLAB-ICD的实验板上16F877单片机的RA0口接了一只供有电压的10kΩ电位器,在D口(RD0~RD7)接了8只LED,如附图所示。笔者用16F877 A/D转换通道其中一路作A/D转换,以说明A/D转换编写程序的方法和在线调试及编程。

在附图中,笔者把R6的可变输出(电压模拟量)端接到RA0/AN0作为模拟量输入;用D口(RD0~RD7)的8只LED显示A/D转换的结果(按二进制显示)。

一、 建立A/D转换源程序的要点  编写10位的一路A/D转换程序看似简单,但对初学者却有一定难度,因为编写A/D转换程序时,要熟练使用PIC16F877内部的多个特殊功能寄存器。附表列出了与A/D转换有关的部分特殊功能寄存器。在A/D转换器中未用到的寄存器位以空白表示。

1.A/D引脚控制寄存器ADCON1  ADCON1的bit0~bit3(PCFG0~PCFG3)为A/D转换功能选择位,若为1110,则表示AN0(RA0)通道是模拟量输入,其余通道为数字I/O(其他编码功能,请参见书籍介绍)。Bit7(ADFM)为A/D结果格式选择位,1表示结果右移,0表示结果左移。

2.中断标志寄存器PIR1  PIR1的bit6(ADIF)为A/D中断标志位,该位为1表示模数转换已完成,为0表示转换未完成。

3.A/D操作控制寄存器ADCON0  ADCON0的bit0(ADON)为A/D转换允许位,该位为1打开A/D转换器,为0关闭A/D转换器;bit2(GO/DONE)为A/D转换状态位,该位为1启动A/D转换,为0表示A/D转换已完成(A/D转换完成后该位自动清零);bit3~bit5为A/D通道选择位,其值对应于通道号,000为0通道;bit6~Bit7(ADCS0、ADCS1)为A/D转换时钟选择,00=fosc/2,01=fosc/8,10=fosc/32,11=fRC(RC振荡器)。为正确进行A/D转换,A/D转换时钟值不宜选得太小。

4.A/D结果高字节寄存器ADRESH  存放A/D转换结果的高字节。

编写A/D转换的源程序,还会用到STATUS、OPTION、INTCON……寄存器。

二、PIC16F877单片机A/D转换源程序.ASM实例

笔者编写的A/D转换源程序清单如下:
            LIST  P=PIC16F877    ;选单片机型号
            #INCLUDE  P16F877.INC
            ORG     0                       ;复位矢量
            GOTU   START
            ORG     D'20"               ;程序起始
START  BCF     STATUS,6
            BSF     STATUS,5         ;选BANK1
            CLRF   TRISD               ;设D口为输出
            CLRW                            ;0→W
            MOVLW  B'10000111'  ;TMR0,预分频
            MOVWF  OPTION_REG    ;1:256
            CLRW
            MOVLW  B'00000001'
            MOVWF  TRISB              ;设B0为输入
            MOVWF  TRISA
            MOVLW  0
            MOVLW  B'00001110'  ;A/D结果左移
            MOVWF  ADCON1            ;VDD为参考电压
            BCF      STATUS,5        ;复位
                                                ;BANK0
            CLRF    PORTD              ;清D口
            MOVLW  B'01000001'  ;打开A/D选时钟
            MOVWF  ADCON0            ;fosc/8
MAIN    BTFSS  INTCON,T0IF  ;TMR0溢出?
            GOTO    MAIN                ;等待
            BCF      INTCON,T0IF  ;TMR0溢出
            BCF      PIR1,ADIF      ;清标志位
                                                ;T0IF
            BSF      ADCON0,GO      ;启动A/D变换
WAIT    BTFSS  PIR1,ADIF      ;变换判标志位?
            GOTO    WAIT                ;等待
            MOVF    ADRESH,W        ;A/D转换完成
            MOVWF  PORTD              ;高字节到D口
            CLRF    PORTD              ;0→D口
WAITPWSH BTFSS    PORTB,0   ;判0位
            GOTO    WAITPUSH        ;等待
            MOVWF  PORTD              ;高字节送D口
            GOTO    MAIN            
            END                       

说明:1. 因LED显示仅用了8位(D口上),所以A/D转换的低二位未显示。

2. 从源程序中可以看出,A/D转换是通过控制PIC16F877内部特殊功能寄存器来完成的。

三、PIC01.ASM的在线调试和程序固化

上述源程序可按照上期本版介绍的方法进行在线调试。调试时可用MPLAB工具栏中的连续功能键操作。若在操作一次后再连续调试时,应改变附图中电位器中心抽头的电压值,方能观察A/D变换的结果。程序调试好后再把目标码.Hex固化到16F877单片机中,即可观察不同的模拟量变换成数字量的结果,并可用三用表实测进行验证。

关键字:PIC16F877  AD转换器  电位器 引用地址:PIC16F877的应用--AD转换器

上一篇:PIC单片机的I2C读写程序
下一篇:DS18B20和PIC单片机通讯源程序

推荐阅读最新更新时间:2024-11-10 13:00

[单片机][N76E003][MCP4017][MCP4018][MCP4019] 数字电位器 使用方法 例子 代码
7位:电阻分辨率-127电阻器(128步) -- W /* -----------------------------------------宏定义-----------------------------------------*/ /* -----------------------------------------头文件-----------------------------------------*/ #include main.h /* -----------------------------------------结构体定义------------------------------------
[单片机]
[单片机][N76E003][MCP4017][MCP4018][MCP4019] 数字<font color='red'>电位器</font> 使用方法 例子 代码
用单电位器控制双声道的音量
  双声道音响的音量控制,一般采用双联电位器。要求电位器的两个输出必须同步,即输出电压必须一致,否则两个声道的声音会一大一小。即使有一点不同步,在小音量时都会很明显。   当双联电位器损坏后,有时会找不到同型号的电位器代换。为此,笔者设计一款用单电位器控制双声道的音量控制电路。当然。如只用一只电位器,单电位器是无法控制双声道的,必须增加电路才行。用单电位器控制双声道音量的电路如附图所示。   该电路是靠调节 Q1 、 Q2 的导通度来控制音量的。 Q1 、 Q2 的基极并联在一起,当调节 RP 时, Q1 、 Q2 的偏压会发生变化,其导通度也会随之改变,从而使输出电压发生变化,达到调节音量的目的。在这里 Q1 、 Q2
[电源管理]
用单<font color='red'>电位器</font>控制双声道的音量
数控电位器在频率可调信号源中的应用
压控振荡器(VCO)的应用十分广泛,若用直流电压作为控制电压,压控振荡器就成了频率调节十分方便的信号源。本言语采用数控电位器,程序控制其产生不同的直流电压,以达到信号源频率可调的要求。实验证明,该智能信号源系统线性度好,频率漂移小,动态范围宽,工作频率高,以及当控制电压为零时中心频率易于设置。 1 系统硬件结构 本系统包括四个模块:单片机、数控电位器、液晶显示模块和多输出压控振荡器。控制器采用ATMEL公司的AT89C2051,它是一种低功耗,高性能,片内含2kB EEPROM和128 RAM的8位CMOS微控制器,与MCS-51单片机兼容。 1.1 9312模块功能及特点 Xicor X9312为8 脚双列直插式封装形
[测试测量]
数控<font color='red'>电位器</font>在频率可调信号源中的应用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved