pic单片机A/D转换程序

发布者:知识的海洋最新更新时间:2017-12-05 来源: eefocus关键字:pic单片机  AD转换 手机看文章 扫描二维码
随时随地手机看文章

//选择RAO做为模拟输入通道;
//连续转换4次再求平均值做为转换结果
//最后结构只取低8位
//结果送数码管的低3位显示

#includeIC.h>              //包含单片机内部资源预定义


 __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--;);     //延时 
    } 


关键字:pic单片机  AD转换 引用地址:pic单片机A/D转换程序

上一篇:PIC16F785 LED流水灯程序
下一篇:pic数码管动态扫描显示程序

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

基于PIC单片机的IAI无线模块测试板
  近年来,由于数据通信需求的推动,加上半导体、计算机等相关电子技术领域的快速发展,短距离无线与移动通信技术也经历了一个快速发展的阶段。短距离无线通信通常指的是l00m到200m以内的通信。   它被广泛应用于无线数据采集、无线水表、煤气表、电力表抄表、工业遥控、遥测、工业数据采集、楼宇自动化、安防、机房设备无线监控、家庭自动化数据网络组网等领域。   美国SILICon Laboratories公司作为专业的无线芯片开发和生产商,它的IAI系列无线芯片具有集成度高,外围元件少,功耗低,性能稳定可靠,芯片内部集成了FSK无线收发必需的全部功能模块,包括多边带PLL合成器、PA、LNA、混频器、基带滤波器、中频放大器、信号强度指
[单片机]
基于<font color='red'>PIC单片机</font>的IAI无线模块测试板
关于PIC单片机的模块和功能总结
PIC 单片机的概述 PIC16F616 是一款 14 引脚、8 位的 CMOS 单片机。采用精简指令集,仅有 35 条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令。这样有利于提高单片机的运行速度和执行效率。 PIC16F616 这款单片机供电电压可以在 2V 到 5。5V 之间,内部集成了一个 RC 振荡器,频率可以配置成 8MHZ 或者 4MHZ,也可以用外部晶振提供时钟。内部集成有 AD 转换、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码保护等功能。三个定时器、PWM 发生器等可以由用户编程。下面我来一一介绍关于 PIC 单片机的这些模块和功能
[单片机]
基于PICC 编译环境编写PIC单片机程序
目前,Microchip 公司生产的PIC系列单片机以其低成本、低功耗、高性能、开发速 度快且一次性用户可编程等优点迅速占领了国内市场,成为国内销售量最大的单片机,但国内介绍他的C语言开发工具的书籍和文章却比较少,而且用的人也不多,在用其开发的过程 中给广大程序员带来了许多困难和不便。 Microchip 公司自己没有针对中低档系列PIC单片机的C 语言编译器,但很多专业的 第三方 公司有众多支持PIC 单片机的C 语言编译器提供,常见的有Hitech,CCS,IAR,Bytecraft 等公司。Hitech 公司的PICC 编译器稳定可靠,编译生成的代码效率高,在用PIC 单片 机进行系统设计和开发的工程师群体中得到广
[单片机]
基于PICC 编译环境编写<font color='red'>PIC单片机</font>程序
STC12C2052AD单片机AD转换程序设计
#include STC12C2052AD.h //定义的 系统头文件和全局变量 #include intrins.h #define uchar unsigned char #define uint unsigned int #define DogReset() WDT_CONTR=0x35 // T1 定时 0.1ms.作为系统计时用, #define vT01ms 2 #define vT10ms 10 #define vT100ms 10 #define vT01S 100 // 1 s = 10 ms * 100 #define vT0HVal 0xfe //0xff //0xfe //0xf6 #de
[单片机]
PICC使用中初学者容易犯得两个错误
我是初次使用PIC单片机,对PICC的编程规范不了解,在编译程序时老是出问题。现在介绍两个最常见的问题给大家,看看有没有和我遇到一样问题的。 错误1:变量定义赋值先后顺序问题很重要 开发环境为MPLAB IDE V7.43 + PICC 。如下两种代码书写方式,在补充完整之后,哪一个会编译出错?( flag_sendKeyByte 为全局位变量,已定义过) A: flag_sendKeyByte = 0; unsign char mbit = 0; B: unsign char mbit = 0; flag_sendKeyByte = 0; 使用正常的C语言习惯来看,似乎都没问题,都是赋值,仅仅是先后位置不一样。但是在P
[单片机]
PIC单片机C语言程序设计(9)
3.pic07.C源程序的编译   在《PIC 单片机 C 语言程序(8)》一文中,我们已在MPLAB IDE7.40 集成开发环境中编辑了pic07.C 源程序(0~99 秒脉冲 发生器 )。对于PIC 单片机来说,所有的C 语言源程序,都要在进行编译并生成目标码。hex 文件后,方能烧写到PIC 单片机中运行,即每编辑一个C 程序都要进行一次编译,所以对C 程序(pic0.7c)的编译操作是十分重要的。下面详细介绍用PICC 编译器对pic07.C 源程序进行编译并生成目标码。hex文件的全过程。    (1)编辑源程序   根据《PIC 单片机C 语言程序(8)》一文介绍的方法,在MPLAB IDE7.40
[单片机]
<font color='red'>PIC单片机</font>C语言程序设计(9)
PIC单片机的SPWM控制技术介绍
在UPS等电力电子设备中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难。SPWM技术较好地克服了这些缺点。目前SPWM的产生方法很多,汇总如下。 1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进; 2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制; 3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器; 4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。 而当今单片机的应用已经从
[单片机]
<font color='red'>PIC单片机</font>的SPWM控制技术介绍
Microchip推出针对PIC单片机的协议栈
全球首家为MCU定制DLMS协议栈的半导体公司,协议栈支持范围广泛的能源类型和通信协议之互操作性 全球领先的整合单片机、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)宣布,与Kalki Communication Technologies Ltd.(Kalkitech)合作推出一款针对16位PIC®单片机(MCU)优化的设备语言报文规范(DLMS)协议栈。DLMS协议已经成为智能表具设计人员实现计量系统互操作性的全球标准选择;其中的计量系统包括大部分能源类型(电、气、热和水)、多种应用(民用、输电和配电)、众多通信媒体(RS-232、RS485、PSTN、GSM、GP
[单片机]
Microchip推出针对<font color='red'>PIC单片机</font>的协议栈
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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