历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2019年10月15日 | PIC16F877的应用--AD转换器

2019-10-15 来源:eefocus

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单片机中,即可观察不同的模拟量变换成数字量的结果,并可用三用表实测进行验证。

推荐阅读

史海拾趣

GainSpan ( Telit)公司的发展小趣事

风华高科自成立以来,一直注重技术创新和产品多元化发展。公司不断投入研发资源,成功开发出多种新型电子元器件和电子材料,如片式电阻器、片式电感器、超小型铝电解电容器等。这些产品广泛应用于通讯、消费、计算机、汽车电子等领域,满足了市场多样化的需求。同时,公司还建立了完善的质量管理体系,确保产品质量符合国际标准。

Advanced Semiconductor, Inc.公司的发展小趣事

随着全球对环保和可持续发展的重视,ASI也积极响应这一趋势,致力于研发更加环保、节能的半导体产品。公司不断投入资源研发低功耗、高性能的芯片技术,为推动绿色电子产业的发展贡献力量。同时,ASI也对未来充满信心,将继续加大在新技术、新应用领域的投入,为半导体行业的未来发展贡献更多的智慧和力量。

这五个故事展示了Advanced Semiconductor, Inc.在电子行业中的发展历程和取得的成就。从创立初期的艰难探索到如今的行业领先地位,ASI凭借其独特的技术、创新的精神和敏锐的市场洞察力,不断突破自我、超越自我,成为了半导体行业的一颗璀璨明星。

Aavid Thermalloy公司的发展小趣事

为了进一步扩大市场份额,ASI积极寻求与全球各大电子企业的合作。通过与这些企业的战略合作,ASI不仅获得了更多的订单和市场份额,还进一步提升了自身的技术水平和创新能力。同时,ASI也积极参与国际半导体行业的交流和合作,与全球同行共同推动半导体技术的发展。

GarrettCom公司的发展小趣事

背景:GarrettCom始创于1989年,专注于工业网络通信产品的研发与制造。在那个工业自动化初具规模的年代,GarrettCom凭借其卓越的产品质量和创新的解决方案,迅速在市场中崭露头角。公司推出的工业以太网交换机和路由器等产品,以其高稳定性和可靠性,赢得了众多工业客户的信赖。

发展:随着工业自动化程度的不断提升,GarrettCom不断加大研发投入,推出了一系列适应恶劣工业环境的产品。这些产品不仅满足了工业自动化对通信稳定性的严苛要求,还推动了工业通信技术的进步。通过不断的技术创新和市场拓展,GarrettCom逐步确立了其在工业通信领域的领先地位。

乔光电子(FTR)公司的发展小趣事

并购:2011年,全球领先的信号传输解决方案提供商Belden成功收购了GarrettCom。这一并购标志着GarrettCom正式成为Belden大家庭的一员,也为其带来了更广阔的发展空间和资源支持。

融合:加入Belden后,GarrettCom继续发挥其在工业通信领域的专长,并与Belden的其他业务线形成协同效应。双方共同为客户提供更全面的信号传输和通信解决方案,进一步提升了市场竞争力。

Cyrix Corp公司的发展小趣事

然而,Cyrix的发展并非一帆风顺。1997年,该公司被美国国民半导体公司收购。这一收购为Cyrix带来了新的机遇和挑战。在新的母公司旗下,Cyrix继续推出了一系列新的CPU产品,但市场竞争的激烈使得其面临巨大的压力。

问答坊 | AI 解惑

四电压比较器LM339的8个典型应用例子

LM339集成块内部装有四个独立的电压比较器,该电压比较器的特点是:1)失调电压小,典型值为2mV;2)电源电压范围宽,单电源为2-36V,双电源电压为±1V-±18V;3)对比较信号源的内阻限制较宽;4)共模范围很大,为0~(Ucc-1.5V)Vo;5)差动输入电 ...…

查看全部问答>

请教:usb serial 问题

平台:S3C2440 + WINCE60 添加了USB FUNCTION的相关组件,把设备映射成 Serial. 但是系统起来后,PC端检测不到设备。没任何反映。 用万用表测试 USB PORT的 D+ 也有3V。(D+用一个IO口控制,已经置为高)。请问PC端什么检测不到呢?谢谢。…

查看全部问答>

WinCe中的两个音频设备的回环问题。

各位,我现在在做的一个项目,是这样的 在Ce下面有两个音频设备,从第一个音频设备里面获取音频数据(比如录音),然后将数据从第二个设备输出。 大致的思路是这样的,使用winInXXX的函数,从第一个设备获得数据,然后将数据通过wavOutXXX,扔到 ...…

查看全部问答>

求购一毕业设计(单片机的无线多路遥控发射接收)

哪位朋友有现成的卖给小弟,学生没多少钱只能出100元 要求 基于单片机的无线多路遥控发射,接收系统 本系统设计成8路受控对象的8种状态进行控制,采用多路遥控发射,接收系统将控制信号调制到高频上, 通过空间传输,实现对远程设备的状态控制.发端通 ...…

查看全部问答>

烧坏的开发板还有救吗?

今天特别郁闷,做实验室一不小心,把外部24V电接到了开发板的地,用的开发板是ST原厂出产的STM3210C-EVAL,两千大洋。 请问版主,是否还有药可救啊。…

查看全部问答>

到底.能不能用现成的开发板.还是必须用最小系统板?

本帖最后由 paulhyde 于 2014-9-15 09:46 编辑 我看文件意思是必须用最小系统板.可是有点事我们老师现在有点事回家了.临走留下交代说用现成开发板就行..说往年也是这么说.用开发板没问题的.纠结了.问问大家意思 谢啦  …

查看全部问答>

2013全国电子大赛电源类过电流保护电路

本帖最后由 paulhyde 于 2014-9-15 03:19 编辑 希望参加比赛的朋友一起进来,能把自己的经验分享一下,大家共同进步    …

查看全部问答>

HELPER2416学习笔记1——LED灯闪烁

本帖最后由 fjjjnk1234 于 2014-7-26 14:45 编辑 HELPER2416学习笔记1——LED灯闪烁参与HELPER2416开发板助学计划学习HELPER2416开发板已经有十天左右时间了,由于之前 一直上不了网,一直没机会提交板子的学习心得,抱歉。今天把之前的心得一起 ...…

查看全部问答>

哪位大神有ADS软件,求分享

哪位大神有ADS软件,求分享。要破解的,不想花钱买。 …

查看全部问答>