1 / 56
文档名称:

PIC实例程序.doc

格式:doc   大小:1,445KB   页数:56页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

PIC实例程序.doc

上传人:2072510724 2019/12/19 文件大小:1.41 MB

下载得到文件列表

PIC实例程序.doc

相关文档

文档介绍

文档介绍:[MCD-DEMO2]A/D转换程序实例[PIC16F877A+] //实验目的:熟悉A/D转换//软件思路:选择RA0做为模拟输入通道;//         结果只取低8位//         连续转换5次再求平均值做为转换结果//         结果送数码管的高低3位显示//硬件要求:跳线J18接通//         拨码开关S6全部置ON,S5第4-6位置ON,第1-3位置OFF//         为不影响结果,其他拨码开关置OFF。#include<>             //包含单片机内部资源预定义 __CONFIG(0x1832);       //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 constcharTABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90}; //定义常数0-9的数据表格 void DELAY();             //delay函数申明 void init();              //I/O口初始化函数申明 void display(intx);      //显示函数申明//------------------------------------------------ //主程序开始 void main()               {  intresult=0x00;         //定义转换结果寄存器  while(1)                 //死循环  {  inti;                   //定义循环次数控制寄存器  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();                 //保证采样延时  }//-----------------------------------------------//显示函数 voiddisplay(intx)           {    int bai,shi,ge,temp;  //定义4个临时变量    temp=x;                //暂存AD转换的结果    bai=temp/0x64;         //求显示的百位    shi=(temp%0x64)/0xa;   //求显示的十位    ge=(temp%0x64)%0xa;    //求显示的个位    PORTD=TABLE[bai];      //查表得百位显示的代码    PORTA=0x1f;            //RA3输出低电平,点亮百位显示    DELAY();               //延时一定时间,保证显示亮度    PORTD=TABLE[shi];      //查表得十位显示的代码    PORTA=0x2F;            //RA4输出低电平,点亮十位显示    DELAY();               //延时一定时间,保证亮度    PORTD=TABLE[ge];       //求个位显示的代码    PORTA=0x37;            //RA5