PIC452之A/D模数转换

发布者:SereneWhisper最新更新时间:2017-01-04 来源: eefocus关键字:PIC452  模数转换 手机看文章 扫描二维码
随时随地手机看文章

 1 //-----------------------

 2 //单片机内部10位AD,入口参数为(adcon0,adcon1)

 3 // 返回为采样到的AD值

 4 //------------------------------------

 5 uint AD10(uchar m,uchar n)//ADCON1,ADCON0参数设置数

 6 {//    ADCON0=0x01,选择AN0;ADCON1=0x8e

 7     uchar i;uint van;

 8     union            //定义共用体以存每次AD结果

 9     {

10         uint y1;

11         uchar y2[2];

12     }ad_temp;

13     van=0;

14     PIE1=0x00;

15     ADCON1=n;        

16     PEIE=0;            //禁止外设中断

17     PIR1=0x00;

18     ADCON0=m;        //    

19     i=4;while(i--){;}    //采样时间12周期

20     i=8;

21     while(i--)        //连续采样8次,求平均值

22     {

23         ADIF=0;

24         asm("clrwdt");    //清看门狗

25         GODONE=1;         //启动AD   GODONE

26         while(GODONE==1){;}

27         ad_temp.y2[1]=ADRESH;

28         ad_temp.y2[0]=ADRESL;

29         van+=ad_temp.y1;

30     }

31     ADIF=0;

32     //ADCON0=0x00;

33     //ADCON1=0x06;

34     van+=0x04;//四色五入的值((a/8)*10+4)/10=(1/8)*(a+4),a为八次和;    

35     return(van/=8);//如上

36 }

37 

38 //---------------------------------------

39 //名称: 主函数

40 //----------------------------------------- 

41 main(void)

42 {    //float   dis;

43     ADCON1=0x06;

44     TRISA=0B11111111;       //未用设置为输入

45     TRISB=0B11000111;       //RB3-5设置为输出

46     TRISD=0B00000000;       //RD设置为输出  

47     TRISE=0B00000111;       //RE0-2设置为输出入

48     lcdreset();             //初始化1602

49     lcd_write_char(2,0,'-');       

50     lcd_write_char(3,0,'-');           

51     lcd_write_char(4,0,'A'); 

52     lcd_write_char(5,0,'N');       

53     lcd_write_char(6,0,'0'); 

54          

55     lcd_write_char(8,0,'T');

56     lcd_write_char(9,0,'E');       

57     lcd_write_char(10,0,'S');           

58     lcd_write_char(11,0,'T');

59     lcd_write_char(12,0,'-');       

60     lcd_write_char(13,0,'-');

61       while(1)

62       {  

63         lcd_write_char(3,1,'A');       

64         lcd_write_char(4,1,'D');           

65         lcd_write_char(5,1,'=');

66         disbuf=(AD10(0x01,0x8e))*4.88/1.023;//防止溢出

67         lcd_write_char(6,1,(disbuf/1000)+0x30);       //千位

68         lcd_write_char(7,1,(disbuf%1000)/100+0x30);   //百位

69         lcd_write_char(8,1,(disbuf%100)/10+0x30);       //十位

70         lcd_write_char(9,1,(disbuf%10)+0x30);       //个位    

71         lcd_write_char(10,1,'m');

72         lcd_write_char(11,1,'v');      

73       }

74 }


  PIC18F4X2器件的A/D模块有8个输入通道,该模块包括ADCON0和ADCON1寄存器定义,它们与中档系列A/D模块兼容。

  ADCON0寄存器控制A/D模块的操作。ADC0N1寄存器可以配置端口引脚的功能。

      A/D 结果高位寄存器(ADRESH); A/D 结果低位寄存器(ADRESL)。

  ADCON0寄存器:ADCS1    ADCS0   CHS2   CHS1   CHS0   GO/DONE     —      ADON

               A/D时钟设置        A/D通道选择           A/D转换状态位   0      A/D模块使能位(1上电启动,0为关闭)

            GO/DONE =1,正在进行A/D转换(将该位置1 则启动A/D 转换,A/D 转换结束后该位由硬件自动清零)   。

          GO/DONE =0,未进行A/D 转换。

  ADCON1寄存器:ADFM  ADCS2  —  —  PCFG3  PCFG2   PCFG1  PCFG0    

        ADFM:A/D 结果格式选择位。(此系列AD10位,存储容量共16位,因此还有6位为空)

          1=右对齐, ADRESH 寄存器的高6 位读作0。

          0  = 左对齐, ADRESL 寄存器的低6 位读作0。

        ADCS2:A/D 转换时钟选择位。与ADCON1配合使用。

          (当ADCS2=0时,转换时钟为Fosc/2^(2n+1);当ADCS2=1时,转换时钟为Fosc/2^(2n+2);当低两位为11时,则Frc,来自内部A/D RC振荡器的时钟)。

        PCFG3:PCFG0 :A/D 端口配置控制位。

       模拟参考电压可通过软件选择为器件的正电源电压和负电源电压(VDD和VSS)或RA3/AN3/VREF+ 引脚和RA2/AN2/VREF- 引脚上的电压电平。A/D 转换器具备在器件处于休眠状态下仍能工作的独特功能。要使 A/D 模块在休眠状态下运行,A/D 转换时钟必须来自于A/D 模块内部的RC振荡器。

按照以下步骤进行
A/D 转换:
1. 配置A/D 模块:
  •   配置模拟引脚、参考电压和数字I/O(ADCON1)
  •   选择A/D 输入通道(ADCON0)
  •   选择A/D 转换时钟(ADCON0)
  •   打开A/D 模块(ADCON0)
2. 需要时,配置A/D 中断:
  •   将ADIF位清零 
  •   将ADIE位置1 
  •   将GIE 位置1 
  •   将PEIE位置1
3. 等待所需的采集时间。
4. 启动A/D 转换:
  •   将GO/DONE 位置1 (ADCON0)

5. 等待A/D 转换完成,通过以下两种方法之一可判断转换是否完成:
  •   轮询GO/DONE 位是否被清零(中断禁止)   或者     •   等待A/D 转换中断
6. 读取A/D 结果寄存器(ADRESH/ADRESL),需要时将ADIF位清零。
7. 要再次进行A/D 转换,根据要求转入步骤 1 或步骤2 。将每一位的A/D 转换时间定义为TAD。在下一次采集开始前至少需要等待2TAD。

    图示,显示了在GO 位置1 后,A/D 转换器的工作状态。在转换期间将GO/DONE 位清零将中止当前A/D 转换。部分完成的A/D 转换样本不会更新A/D 结果寄存器对。即,ADRESH:ADRESL 寄存器仍然保持上一次转换完成后的结果(即上一次写入ADRESH:ADRESL 寄存器中的值)。中止A/D 转换后,需要等待2TAD 的时间才开始下一次采集。等待2TAD 之后,将自动开始对所选通道进行采集。可以将 GO/DONE 位置1 ,并开始A/D 转换。  不应在打开A/D 模块的同一指令中将GO/DONE 位置1 。

  CCP2 模块的“特殊事件触发器”可以启动A/D 转换。要求将CCP2M3:CCP2M0 位(CCP2CON<3:0>)设置为1011,且使能A/D 模块(ADON 位置1 )。发生触发时,GO/DONE 位被置1,启动 A/D 转换,Timer1(或Timer3)计数器被复位为 0。复位Timer1(或Timer3)可自动重复 A/D 采集周期,最大限度地降低了软件开销(将ADRESH/ADRESL 移到期望的位置)。在“特殊事件触发器”将GO/DONE 位置1 (启动转换)前,必须正确选择模拟输入通道,并要保证最小采集时间。如果未使能A/D 模块(ADON 清零),则“特殊事件触发器”将被 A/D 模块忽略,但它仍会复位 Timer1(或Timer3)计数器。


关键字:PIC452  模数转换 引用地址:PIC452之A/D模数转换

上一篇:PIC初学者常犯的错误
下一篇:PIC16F877A的50HZ正弦波

推荐阅读最新更新时间:2024-03-16 15:28

TI认为物联网MCU的功耗需达到μA等级
物联网这个议题其实已经有讨论了不短的时间,而随着穿戴式应用的兴起加上诸多技术也来到了相对稳定而成熟的阶段,因此吸引了不少厂商的投入。 TI(德州仪器)亚洲区市场开发经理陈俊宏表示,就他观察,物联网讨论到现在,市场才开始进入成长阶段,所以即便诸多MCU业者大举投入的情况下,像是常见的8051、ARM的Cortex-M0与自家的MSP430架构在市场的比重上,也没有一个大略的数字可供参考,再加上物联网涵盖的范畴太大,整个市场就呈现一个混沌不明的情况,但唯一能确定的是,物联网的确是处在成长的阶段。 然而,普遍来说,产业界其实也有个共识:物联网终端都需要相当极低功耗的元件来满足设计需求。以TI旗下的MSP 430的MCU而
[物联网]
vivo再次秀肌肉 3D成像技术下周亮相
上周vivo刚刚发布AI智慧旗舰vivo NEX,屏占比高达91.24%、采用全新的屏幕指纹解锁、升降式摄像头等等众多突破和创新。而且现在vivo又曝光了一项重磅技术,并且即将在下周的6月27号的上海MWC上发布。 3D TOF成像原理   该技术疑似是vivo 3D成像技术,不同于目前大家熟悉的3D结构光,vivo 3D成像技术采用了TOF(Time of Flight)方案,它与3D结构光、双目立体成像是目前行业内所采用的三种3D机器视觉方案。从名字Time of Flight飞行时间理解,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。   相较3D结构光,
[手机便携]
京东发布首款AR图书:3D立体 栩栩如生
近日,京东和小萌童书展开的合作,将AR技术带到了图书领域,不再是单调的平面图形图像、人物角色,而是栩栩如生、生动直观的3D立体形象。   这样的方式非常适合童书出版,为缺乏抽象思维的儿童提供各种直观具体、轻松体验的3D内容。   首款AR图书是《我不跟你走》,京东希望能够通过技术创新帮助更多的家庭了解儿童的自我保护。   官方表示,在模型的制作上,设计了30多个不同的角色和场景模型。为了让表现真实自然,采用了包括卡通渲染、PBR材质等多种不同的3D渲染技术。   此外,在色彩笔触、纹理表现等方面都做到了原画级的表现效果,每个角色动画都使用了标准的人体骨骼,每个关节动作都进行了精细还原。部分角色动画中使用了真人的动作捕捉
[家用电子]
京东发布首款AR图书:3<font color='red'>D</font>立体 栩栩如生
64位处理器 金属边框三星A5000泄露
   三星 GALAXY Alpha看起来不过是 三星 金属机身 手机 即将陆续登场的序曲,三星还将会有三款A系列新款机型正在测试之中,主要特色同样是金属边框设计,并同步提升前置 镜头 的规格。而现在,传闻似乎即将成真,一款型号为SM-A5000的三星A系列新机已经出现在GFXBench数据库中,并显示配有4.8英寸触控屏和64位骁龙410处理器。    4.8英寸触控屏   从此次GFXBench数据库公布的信息来看,这款三星SM-A5000与此前推出的GALAXY Alpha一样也配有720×1280像素分辨率的触控屏,但屏幕尺寸则达到了4.8英寸,相对要稍微大一些。同时该机还搭载有 Android 4.4.4系统,拥有
[手机便携]
没有5G基带的A13芯片是否依旧站在神坛?
一觉醒来,铺天盖地的苹果iPhone发布会消息扑面而来。作为一个多年的吃瓜群众,iPhone发布应该是每年矛盾对立面最激化的时间,喜欢它的人赞美之词不断,但是每年吐槽它的人也是络绎不绝。 我并不想过多去谈论产品本身,我们还是直接来看看苹果最新年度A13仿生旗舰芯片。 在当前的手机领域中,高端旗舰芯片的格局基本已经成形了,高通、三星、华为和苹果是高端手机芯片的四大玩家。尽管这一两年围绕着AI的算力,苹果与高通、华为还是斗得火热,但是苹果能够对芯片进行设计并通过软硬件的结合最大限度发挥出处理器的性能,这也是苹果芯片一向能够在CPUGPU等跑分上战胜其他对手的原因之一。 不过今年苹果A13的发布罕见地放出其与高通骁龙8
[嵌入式]
没有5G基带的<font color='red'>A</font>13芯片是否依旧站在神坛?
7nm工艺,超540亿个晶体管,英伟达安培架构GPU A100问市
5月15日消息,据国外媒体报道,图形处理器厂商英伟达周四推出了他们首款基于安培架构的GPU英伟达A100,采用7nm工艺制造,集成超过540亿个晶体管。 英伟达A100,是英伟达创始人、现任CEO黄仁勋在英伟达GTC 2020大会上推出的首款产品。 英伟达A100,是首款基于英伟达安培(Ampere)架构的图形处理器,这一架构对数据中心大规模的计算进行了优化,统一了人工智能训练和推理,并使灵活、弹性加速成为可能。 基于安培架构的英伟达A100 GPU,为英伟达第8代GPU提供了史上最大的性能飞越,黄仁勋透露性能较前一代提升20倍,它也是为数据分析、科学计算和云图形设计。
[嵌入式]
7nm工艺,超540亿个晶体管,英伟达安培架构GPU <font color='red'>A</font>100问市
ADIADP2325双路5A20V同步降压电源解决方案
ADI公司的ADP2325是双路5A 20V同步降压DC/DC稳压器,集成了两个高边功率MOSFET和两个用来驱动外接N沟MOSFET的低边驱动器.两个PWM通路可配置成两路5A或10A输出,输入电压4.5V到20V,输出电压低至0.6V,主要用在通信设备,网络和服务器,工业和仪表,医疗保健等.本文介绍了ADP2325主要特性,功能方框图,多种典型应用电路,以及评估板ADP2325-EVALZ主要特性,电路图,材料清单和PCB元件布局图.   The ADP2325 is a full featured, dual output, step-down dc-to-dc regulator based on a current mod
[电源管理]
ADIADP2325双路5<font color='red'>A</font>20V同步降压电源解决方案
探索STC12C5A60S2定时器
  STC12C5A60S2单片机集成了共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;   1. 基本特性   STC12C5A60S2单片机集成了两个16位定时/计数器。   1)寄存器   1.1)TMOD 定时器工作方式控制寄存器,包括13位寄存器、16位寄存器、8位寄存器等;   1.2)TCON 定时器控制寄存器,主要包括定时器启动控制位等;   1.3)AUXR 辅助寄存器,用以设置分频;默认12分频   1.4)TH0/1:定时器高8位寄存器   1.5)TL0/1:定时器
[单片机]
探索STC12C5<font color='red'>A</font>60S2定时器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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