PIC16F877A PICC AD转换程序

发布者:温柔花香最新更新时间:2017-01-10 来源: eefocus关键字:PIC16F877A  PICC  AD转换 手机看文章 扫描二维码
随时随地手机看文章

//软件思路:选择RAO做为模拟输入通道;   

//          连续转换4次再求平均值做为转换结果   

//          最后结构只取低8位   

//          结果送数码管的低3位显示   

#include              //包含内部资源预定义   

 __CONFIG(0x1832);           

//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡   

 const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};    

 //定义常数0-9的数据表格   

 void  DELAY();              //delay函数申明   

 void  init();               //I/O口初始化函数申明   

 void  display(int x);       //显示函数申明   

//------------------------------------------------   

  //主程序开始   

 void  main()                  

 {   

   int result=0x00;          //定义转换结果寄存器   

   while(1)                  //死循环   

   {   

   int i;                    //定义循环次数控制寄存器   

   result=0x00;              //转换结果清0   

   for(i=5;i>0;i--)          //求5次转换结果的平均值   

     {   

      init();                //调用初始化函数   

      ADGO=0X1;              //开启转换过程   

      while(ADGO);           //等待转换完成   

      result=result+ADRESL;  //累计转换结果   

      }   

      result=result/5;       //求5次结果的平均值   

     display(result);        //调用显示函数   

   }   

  }   

//-----------------------------------------------   

 //初始化函数   

 void  init()                  

  {   

   PORTA=0XFF;                  

   PORTD=0XFF;               //熄灭所有显示   

   TRISA=0X1;                //设置RA0为输入,其他为输出               

   TRISD=0X00;               //设置D口全为输出   

   ADCON1=0X8E;              //转换结果左对齐,RA0做模拟输入口,其它做普通I/O   

   ADCON0=0X41;              //系统时钟Fosc/8,选择RA0通道,允许ADC工作   

   DELAY();                  //保证采样延时   

   }   

//-----------------------------------------------   

//显示函数   

 void display(int x)             

   {   

     int  bai,shi,ge,temp;   //定义4个临时变量   

     temp=x;                 //暂存AD转换的结果   

     bai=temp/0x64;          //求显示的百位   

     shi=(temp%0x64)/0xa;    //求显示的十位   

     ge=(temp%0x64)%0xa;     //求显示的个位   

     PORTD=TABLE[bai];       //查表得百位显示的代码   

     PORTA=0x37;             //RA3输出低电平,点亮百位显示   

     DELAY();                //延时一定时间,保证显示亮度   

     PORTD=TABLE[shi];       //查表得十位显示的代码   

     PORTA=0x2F;             //RA4输出低电平,点亮十位显示   

     DELAY();                //延时一定时间,保证亮度   

     PORTD=TABLE[ge];        //求个位显示的代码   

     PORTA=0x1F;             //RA5输出低电平,点亮个位显示   

     DELAY();                //延时一定时间,保证亮度   

   }   

  

//----------------------------------------------   

//延时程序   

void  DELAY()              //延时程序   

    {   

     int i;                 //定义整形变量   

     for(i=0x100;i--;);     //延时   

    }   


关键字:PIC16F877A  PICC  AD转换 引用地址:PIC16F877A PICC AD转换程序

上一篇:pic的第一个测试程序
下一篇:大联大品佳推出PIC32MZ系列VR解决方案

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

AD转换器的保真度测试技巧
引言 对正弦波进行精确数字化的能力是高分辨率 A→D 转换器保真度的一项敏感度测试。该测试需要一个具接近 1ppm 残留失真分量的正弦波发生器。此外,还需要一个基于计算机的 A→D 输出监视器,用于读取和显示转换器输出频谱成分。若想以合理的成本和复杂程度来实施此项测试,就必需进行其元件的设计并在使用之前完成性能验证。 概要 图 1 给出了系统的示意图。一个低失真振荡器通过一个放大器来驱动 A→D。A→D 输出接口对转换器输出进行格式化,并与负责执行频谱分析软件和显示结果数据的计算机进行通信。 振荡器电路 振荡器是系统中难度最大的电路设计部分。为了对 18 位 A→D 进行有意义的测试,振荡器的不纯度必须超低,而且这些特
[模拟电子]
<font color='red'>AD转换</font>器的保真度测试技巧
PIC16F877A单片机 (IIC总线+AT24C02芯片)
1 基本原理 1.1 IIC总线 需要注意的是,高四位对于同种芯片而言,都是一样的。例如AT24C02芯片的高四位固定为1010。 1.2 AT24C02芯片 2 源代码 /*---------------------函数功能: IIC总线 AT24C02 -----------------------------------------*/ #include pic.h // 调用PIC16f87XA单片机的头文件 #include delay.h //调用延时子函数的头文件 __CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关
[单片机]
<font color='red'>PIC16F877A</font>单片机 (IIC总线+AT24C02芯片)
PIC16F877A串口发送字符串问题
PIC16F877A串口发送,查询方式,就为了调出这个费了我一天时间,原来是串口芯片电压问题,现总结如下: 1、注意232串口芯片供电电压,有5V和3.3V的 2、注意TXD、RXD接线,单片机的TXD接232芯片的R2OUT,单片机的RXD接232芯片的T2IN 3、注意ESP8266的UTXD接MCU的RX,URXD接MCU的TX 4、注意ESP8266的UTXD接232的T2IN,URXD接232的R2OUT 5、串口波特率设置成9600 6、注意连接线的可靠性,如果用线连的话一定要检查线和插座是否稳定连接 PIC16F877A串口发送 //以下是串口发送程序 #include #define ucharunsigned
[单片机]
基于PIC16F877A单片机的LED点阵手写屏设计
  本文采用PIC16F877A单片机为主要核心控制元件,设计了一个32×32 LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324 比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。   系统系统总体构成   本系统设计包括三大部分:PIC16F877A单片机主控器、光笔控制器、点阵显示屏。系统的结构如图1所示。
[单片机]
基于<font color='red'>PIC16F877A</font>单片机的LED点阵手写屏设计
液晶显示低功耗3 1/2位AD转换
电路 的功能 这是一种数字显示式A-D转换器,适用于便携式小型测量仪器。因为采用液晶显示,功耗小,满量程显示电压为1.999V。如果输入电压大于该值,应加衰减器。 本电路多用于测量仪表其 电源 电压用正负5V。 电路工作原理 3 1/2位A-D转换器ICL7106是一种可以直接 驱动 液晶显示器的单片LSI,是通用仪表用IC,其他公司也有加工产品。 A-D转换方式为普通的双积分型,差动输入电路可输入正负1V左右的同相电压,内部进行自动调零。电路只用VR1调节即可。 C2、C3、C3是积分定时电路,无严格的误差要求,可选用普通的聚酯薄膜 电容 。C4是基准 电容 ,按要求,电容量取0.1UF。 时钟振荡频率由R4、
[模拟电子]
STM32学习之路(六)——AD转换
ADC输入通道管理模式可分为规则组和注入组。规则组指正常的转换;而注入组是由外部触发或者软件触发,打断正常的规则组转换。规则组可以是某单一的通道,也可以是某几个通道的组合。多通道的转换次序可编程,转换次序长度最大为16,注入通道最长为4. 1、单词转换模式,即可以通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动,也可通过外部触发启动(都适用),此时CONT位为0. 规则通道被转换后:数据存储在ADC_DR中 EOC(转换结果)标志置位 设置了EOCIE,则产生中断 注入通道被转换后:数据存储在ADC_DRJ1中
[单片机]
PICC编程的位操作示例程序
由于P IC 处理器对位操作是最高效的,所以把一些BOOL 变量放在一个内存的位中,既可以达到运算 速度快,又可以达到最大限度节省空间的目的。在C 中的位操作有多种选择。 ********************************************* 如:char x;x=x|0B00001000; /*对X 的4 位置1。*/ char x;x=x&0B11011111; /*对X 的5 位清0。*/ 把上面的变成公式则是: #define bitset(var,bitno)(var |=1 bitno) #define bitclr(var,bitno)(var &=~(1 bitno)) 则上面的操
[单片机]
基于PIC16F877A的混沌信号发生器的设计
  混沌科学得到广泛研究应该得益于20世纪60年代洛伦兹(Lorenz)的“蝴蝶效应”。混沌信号具有初值敏感性、内随机性、遍历性和有界性等特点,近几年得到深入的研究和探索,并开始广泛应用于信号处理、保密通信、生物医学等领域,特别是在医疗器械的应用,有着重大的突破。科学研究表明:生物体是一个高度的非线性系统,而非线性系统的运动通常表现出混沌现象,人体的生理活动呈现众多的混沌现象。所以,研究混沌信号源的产生对生物医学的研究有着极其重要的意义。    1 混沌信号产生的数学建模与仿真   1.1 混沌信号系统数学模型的选用   该设计中,考虑到人体生理活动本身也是一个混沌系统,主要是要产生一个具有混沌特性的信号源,来调节人体的生
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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