当前位置:首页 > 单片机 > 单片机
[导读]//软件思路:选择RAO做为模拟输入通道; // 连续转换4次再求平均值做为转换结果 // 最后结构只取低8位 // 结果送数码管的低3位显示 #include //包含内部资源预定义 __CONFIG(0x1832); //芯片配

//软件思路:选择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--;); //延时

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

pic单片机功能较强,现实中的诸多器件均可借助pic单片机完成。由此可见,pic单片机的使用意义较大。关注本网站的朋友都知道,小编曾带来诸多pic单片机相关文章。如果你对pic单片机比较感兴趣,可在阅读完本文后翻阅往期文...

关键字: ad转换 pic单片机 单片机

功能:STC12C2052AD AD转换C程序 +PWM输出功能 成功使用。

关键字: ad转换 stc12c2052ad 单片机

#include#define uchar unsigned char#define uint unsigned intsbit cs=P3^0;sbit wr=P3^1;void delayms(uint x){uin...

关键字: 51单片机 ad转换 at89c52

#include#define uchar unsigned char#define uint unsigned int#define PORT P3#define dula_h P2|=0x40#define dula...

关键字: 51单片机 ad转换 at89c52

unsigned char eeprom_read(unsigned char addr);void eeprom_write(unsigned char addr, unsigned char value);这两个函数...

关键字: pic16f877a eeprom使用

//*****************电子园PIC16F877A开发板 SPI总线驱动74595实验***************////CKP=0; 空闲为低电平//CKP=1; 空闲为高电平//STAT_CKE=0;...

关键字: pic16f877a spi总线 驱动74595

用c语言写的一个时闹钟程序单片机用16F877,主时钟用20MHz,用32768作定时时间。可以实现2路定闹,每一路都可分别设置和开关,采用4x4键盘,16x2的字符型LCD显示。连线在程序开头有...

关键字: pic16f877a 时钟 程序 语言

1 /*电压表 精确到小数点后面三位*/2 /*连线:电位器接IN0,AD_CS接CS0,CS1接KEY/LED_CS*/3 #include4 typedef unsigned char uchar;5 xdata u...

关键字: ad转换 电压表实验
关闭
关闭