- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机驱动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)