- 133
- 0
- 约3.64千字
- 约 14页
- 2020-09-26 发布于浙江
- 举报
单片机驱动ADC0832模数转换程序
ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。 ADC0832具有以下特点:8位分辨率;双通道A/D转换;输入输出电平与TTL/CMOS相兼容;5V电源供电时输入电压在0~5V之间;工作频率为250KHZ,转换时间为32mu;S;一般功耗仅为15mW;8P、14Pmdash;DIP(双列直插)、PICC多种封装;商用级芯片温宽为0deg;C to +70deg;C?,工业级芯片温宽为40℃ to +85℃ 模数转换芯片是用来模拟信号转为数字信号以便电脑处理的,可以用来对传感器的数据进行收集分析。本来想买ADC0809的,它可以对8个模拟量进行采集,假如是一个脚用三个压力传感器,那就正好够用了。这个ADC0832是跟单片机开发板一个淘宝店买的,因为那个淘宝店没有ADC0809。网上搜了个ADC0832的转换函数,拼了个程序在开发板的四位数码管上显示转换过来的数据,要注意的是那个显示函数是调一次只显示四位数码管的一位的,所以不能转换显示转换显示这样,要转换,显示一次二次三次四次,转换,显示一次二次三次四次这样。ADC0832引脚及代码如下:(一晚没睡,等下准备回家过清明扫墓去。归去来兮!问西楼禁烟何处好?绿野晴天道。马穿杨柳嘶,人倚秋千笑,探莺花总教春醉倒。) //头文件:#include ;#include ;//变量定义:unsigned char ly_dis[4]; //定义显示缓冲区 code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//表:共阳数码管 0-9unsigned char l_posit=0; //显示位置//引脚定义:sbit SMG_q = P3^4; //定义数码管阳级控制脚(千位)sbit SMG_b = P3^5; //定义数码管阳级控制脚(百位)sbit SMG_s = P3^7; //定义数码管阳级控制脚(十位)sbit SMG_g = P3^6; //定义数码管阳级控制脚(个位) sbit CS = P0^5; sbit Clk = P0^6;sbit DATI = P0^4;sbit DATO = P0^4; unsigned char dat = 0x00; //AD值 unsigned char count = 0x00; //定时器计数 unsigned char CH; //通道变量 //函数声明: void display(void);//显示函数,显示缓冲区内容void delay(void);//unsigned char GetValue0832(bit Channel);unsigned char adc0832(unsigned char CH); //主函数,C语言的入口函数: void main(){unsigned int i=0;int ltemp;while(1){ if(i==100) { ltemp=adc0832(1); //隔时取模数转换(0~255对应0.00-5.00的电压) ly_dis[0]=ltemp/100; //显示百位值 ltemp=ltemp%100; ly_dis[1]=ltemp/10; //显示 十位值 ltemp=ltemp%10; ly_dis[2]=ltemp/1; //显示 个位值 ly_dis[3]=0; //显示小数点后一位0 } i++; if(i==3000) i=0; display(); //调用显示调一次只显示一位轮流显示四位 delay(); }} //显示函数,参数为显示内容 void display(){P0=0XFF; // switch(l_posit){case 0: //选择千位数码管,关闭其它位 SMG_q=0; SMG_b=1; SMG_s=1; SMG_g=1; P0=table[ly_dis[0]]; //输出显示内容 break; case 1: //选择百位数码管,关闭其它位 SMG_q=1; SMG_b=0; SMG_s=1; SMG_g=1; P0=table[ly_dis[1]]; break;
原创力文档

文档评论(0)