adc0832ccn可以用于声音检测吗

&&&&ADC0832 程序和电路图(比赛时用的电路和程序)
&ADC0832 程序和电路图(比赛时用的电路和程序)
模数转换,ADC0832,AD转换,AD电路图
参加全国电子大赛时准备的东西,有仿真,有电路图,还有程序,还在实物测试过,简单的电压表实验。
绝对OK,共享资源,减少重复劳动,促进中国电子技术发展。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
课程资源下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
ADC0832 程序和电路图(比赛时用的电路和程序)
所需积分:8
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
ADC0832 程序和电路图(比赛时用的电路和程序)
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员基于proteus的51单片机仿真实例八十、模数转换器ADC0832应用实例 - tiankai001的日志 -
电子工程世界-论坛
基于proteus的51单片机仿真实例八十、模数转换器ADC0832应用实例
已有 11571 次阅读 21:12
|个人分类:|
1、ADC0832是一种8位分辨率,双通道AD转换芯片。它能够对两路模拟信号进行模数转换,可以在单端输入方式和差分输入方式下工作。ADC0832引脚图如下图:
引脚说明如下:
/CS:片选端,低电平时选中芯片
CH0:模拟输入通道0
CH1:模拟输入通道1
GND:电源地
DI:数据信号输入,通道选择控制端
DO:数据信号输出,转换后的数据由此端口输出
CLK:时钟输入端
2、ADC0832的控制原理
ADC0832的工作时序图如下:
。当ADC0832未工作时,必须将片选端CS置于高电平。此时,芯片禁用。当需要进行A/D转换时,应将片选端CS置于低电平并保持到转换结束。芯片开始工作后,还需让单片机想芯片的CLK端输入时钟脉冲,在第一个时钟脉冲的下降沿之前将DI端的输出必须是高电平,表示开始转换。在第2、3个脉冲的下降沿之前。DI端口输入两位数据,这两位数据用于选择数据采集通道。
当DI端依次输入1、0时,选择通道0;
当DI端依次输入1、1时,选择通道1;
当DI端依次输入0、0时,CH0作为正输入端,CH1作为负输入端;
当DI端依次输入0、1时,CH0作为负输入端,CH1作为正输入端;
在第三个脉冲下降沿后,DI端口就失去作用了。此后数据输出端DO开始输出转换后的数据。在第四个脉冲的下降沿输出转换后数据的最高位直到第11个脉冲下降沿输出数据的最低位。至此,一个字节的数据输出完成。然后从此位开始输出下一个相反字节的数据,即从第11个脉冲的下降沿输出数据的最低位,直到第19个脉冲时数据输出完成,也标志着一次AD转换结束。后一相反字节的8个数据位是作为校验位使用的,一般只读出第一个字节的前8个数据位即能满足要求,对于后8位数据,可以将其丢弃。
正常情况下,ADC0832与单片机的接口应为4条数据线:CS,CLK,DI,DO。但由于DI和DO两个端口在通信时并未同时使用,而是先有DI端口输入两位数据来选择通道,再由DO端口输出数据,因此,实际使用中可以将DI和DO并联在一根数据线上使用。
3、作为单通道模拟信号输入时,ADC0832的输入电压范围是0-5V,输入电压为0时,转换后的值0x00,输入电压为5V时,转换后的值0xff,即十进制数255.转换后的输出值(数字量D):D=255/5*V=51V。其中D为转换后的数字量,V为输入的模拟电压。
4、本例利用ADC0832设计一个5V直流数字电压表,将输入的直流电压转换成数字信号后,通过LCD1602液晶显示出来。
实现方法:
1)ADC0832的启动:
首先将ADC0832的片选端口CS置为低电平(接地也可)。然后在第一个CLK脉冲下降沿之前将DI端口置为高电平,启动ADC0832开始工作。
2)通道选择:
本例选择通道CH0作为模拟信号的输入通道,根据通信协议,DI在第2、3个CLK脉冲的下降沿之前应分别输入1和0.
3)数据读取
在第4-11个脉冲下降沿读取8位转换后的数字量。
5、在keil c51中新建工程ex68,编写如下程序代码,编译并生成ex68.hex文件
//基于ADC0832的数字电压表#include&reg51.h&&&& //包含单片机寄存器的头文件#include&intrins.h&& //包含_nop_()函数定义的头文件
//ADC0832端口引脚定义sbit CS=P3^0;&&&&&& //将CS位定义为P3.4引脚sbit CLK=P3^6;&&&&& //将CLK位定义为P1.0引脚sbit DIO=P3^7;&&&&&& //将DIO位定义为P1.1引脚
//全局变量声明unsigned char code digit[10]={""};&& //定义字符数组显示数字unsigned char code Str[]={"Volt="};&&&&&&&&&&& //说明显示的是电压
//液晶端口定义sbit RS=P2^0;&&&&&&&&&& //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1;&&&&&&&&&& //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2;&&&&&&&&&&& //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7;&&&&&&&&&& //忙碌标志位,,将BF位定义为P0.7引脚
/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){&& unsigned char i,j;&& for(i=0;i&10;i++)&& for(j=0;j&33;j++)&&& ;&& &}
/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/&void delaynms(unsigned char n)&{&&&for(i=0;i&n;i++)&&& delay1ms();&}
/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙***************************************************/bit BusyTest(void)& {&&&&RS=0;&&&&&& //根据规定,RS为低电平,RW为高电平时,可以读状态&&& RW=1;&&& E=1;&&&&&&& //E=1,才允许读写&&& _nop_();&& //空操作&&& _nop_();&&& _nop_(); &&& _nop_();&& //空操作四个机器周期,给硬件反应时间&&&& result=BF;& //将忙碌标志电平赋给result&& E=0;&&&&&&&& //将E恢复低电平&&& }
/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void WriteInstruction (unsigned char dictate){&& &&& while(BusyTest()==1);&& //如果忙就等待& RS=0;&&&&&&&&&&&&&&&&& //根据规定,RS和R/W同时为低电平时,可以写入指令& RW=0;&& & E=0;&&&&&&&&&&&&&&&&&& //E置低电平(根据表8-6,写指令时,E为高脉冲,&&&&&&&&&&&&&&&&&&&&&&&&&& // 就是让E从0到1发生正跳变,所以应先置"0"& _nop_();& _nop_();&&&&&&&&&&&&&& //空操作两个机器周期,给硬件反应时间& P0=&&&&&&&&&&& //将数据送入P0口,即写入指令或地址& _nop_();& _nop_();& _nop_();& _nop_();&&&&&&&&&&&&&& //空操作四个机器周期,给硬件反应时间& E=1;&&&&&&&&&&&&&&&&&& //E置高电平& _nop_();& _nop_();& _nop_();& _nop_();&&&&&&&&&&&&&& //空操作四个机器周期,给硬件反应时间&& E=0;&&&&&&&&&&&&&&&&& //当E由高电平跳变成低电平时,液晶模块开始执行命令&}
/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/&void WriteAddress(unsigned char x)&{&&&& WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"&}
/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/&void WriteData(unsigned char y)&{&&& while(BusyTest()==1);& && RS=1;&&&&&&&&&& //RS为高电平,RW为低电平时,可以写入数据&& RW=0;&& E=0;&&&&&&&&&&& //E置低电平(根据表8-6,写指令时,E为高脉冲,&&&&&&&&&&&&&&&&&&&& // 就是让E从0到1发生正跳变,所以应先置"0"&& P0=y;&&&&&&&&&& //将数据送入P0口,即将数据写入液晶模块&& _nop_();&& _nop_();&&& _nop_();&&&& _nop_();&&&&&& //空操作四个机器周期,给硬件反应时间&& E=1;&&&&&&&&&& //E置高电平&& _nop_();&& _nop_();&& _nop_();& _nop_();&&&&&&& //空操作四个机器周期,给硬件反应时间& E=0;&&&&&&&&&&& //当E由高电平跳变成低电平时,液晶模块开始执行命令&}
/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void LcdInitiate(void){&&& delaynms(15);&&&&&&&&&&&&&& //延时15ms,首次写指令时应给LCD一段较长的反应时间&&& WriteInstruction(0x38);&&&& //显示模式设置:16×2显示,5×7点阵,8位数据接口&delaynms(5);&&&&&&&&&&&&&&& //延时5ms ,给硬件一点反应时间&&& WriteInstruction(0x38);&delaynms(5);&&&&&&&&&&&&&& //延时5ms ,给硬件一点反应时间&WriteInstruction(0x38);&&&& //连续三次,确保初始化成功&delaynms(5);&&&&&&&&&&&&&& //延时5ms ,给硬件一点反应时间&WriteInstruction(0x0c);&&&& //显示模式设置:显示开,无光标,光标不闪烁&delaynms(5);&&&&&&&&&&&&&& //延时5ms ,给硬件一点反应时间&WriteInstruction(0x06);&&&& //显示模式设置:光标右移,字符不移&delaynms(5);&&&&&&&&&&&&&&& //延时5ms ,给硬件一点反应时间&WriteInstruction(0x01);&&&& //清屏幕指令,将以前的显示内容清除&delaynms(5);&&&&&&&&&&&& //延时5ms ,给硬件一点反应时间
/*****************************************************函数功能:显示电压符号***************************************************/&& void display_volt(void)&{&&&& WriteAddress(0x03);&&& //写显示地址,将在第2行第1列开始显示& i = 0;&&&&&&&&&&&&&&& //从第一个字符开始显示& while(Str[i] != '\0')& //只要没有写到结束标志,就继续写&& {&&&&&&&& WriteData(Str[i]);&& //将字符常量写入LCD&& i++;&&&&&&&&&&&&&&&& //指向下一个字符&&&&&&}&}
/*****************************************************函数功能:显示电压的小数点***************************************************/&& void &display_dot(void){&&&&&&&& & WriteAddress(0x09);&& //写显示地址,将在第1行第10列开始显示&&&& & WriteData('.');&&&&&& //将小数点的字符常量写入LCD&&}
/*****************************************************函数功能:显示电压的单位(V)***************************************************/&& void &display_V(void){&&& WriteAddress(0x0c); //写显示地址,将在第2行第13列开始显示&& WriteData('V');&&&& //将字符常量写入LCD&&&&&&}
/*****************************************************函数功能:显示电压的整数部分入口参数:x***************************************************/ void display1(unsigned char x){
&WriteAddress(0x08);&&& //写显示地址,将在第2行第7列开始显示&WriteData(digit[x]);&&& //将百位数字的字符常量写入LCD&}
/*****************************************************函数功能:显示电压的小数数部分入口参数:x***************************************************/ &void display2(unsigned char x){&&unsigned char i,j;&i=x/10;&&&&&&&&&&& //取十位(小数点后第一位)&j=x%10;&&&&&&&&&&& //取个位(小数点后第二位)&& WriteAddress(0x0a);&&&&& //写显示地址,将在第1行第11列开始显示&WriteData(digit[i]);&&&& //将小数部分的第一位数字字符常量写入LCD&WriteData(digit[j]);&&&& //将小数部分的第一位数字字符常量写入LCD}
/*****************************************************函数功能:将模拟信号转换成数字信号***************************************************/ unsigned char& A_D(){& unsigned char i,&& CS=1;&& //一个转换周期开始&& CLK=0;& //为第一个脉冲作准备&& CS=0;& //CS置0,片选有效
&& DIO=1;&&& //DIO置1,规定的起始信号& && CLK=1;&& //第一个脉冲&& CLK=0;&& //第一个脉冲的下降沿,此前DIO必须是高电平
&& DIO=1;&& //DIO置1, 通道选择信号& && CLK=1;&& //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0 && CLK=0;&& //第二个脉冲下降沿&&& && DIO=0;&& //DI置0,选择通道0&& CLK=1;&&& //第三个脉冲&& CLK=0;&&& //第三个脉冲下降沿
&& DIO=1;&&& //第三个脉冲下沉之后,输入端DIO失去作用,应置1&& CLK=1;&&& //第四个脉冲&& for(i=0;i&8;i++)& //高位在前&&& {&&&&& CLK=1;&&&&&&&& //第四个脉冲&&&&& CLK=0; &&&&& dat&&=1;&&&&&& //将下面储存的低位数据向右移&& dat|=(unsigned char)DIO; & //将输出数据DIO通过或运算储存在dat最低位 &&& }&& &&&&&&&&& &&& CS=1;&&&&&&&&& //片选无效 && //将读书的数据返回&&&& & }
/*****************************************************函数功能:主函数***************************************************/ main(void){& unsigned int AD_&&& //储存A/D转换后的值& unsigned char Int,D&& //分别储存转换后的整数部分与小数部分&& LcdInitiate();&&&&&&&& //将液晶初始化&& delaynms(5);&&&&&&&&&& //延时5ms给硬件一点反应时间&&display_volt();&&&&&&& //显示温度说明&& display_dot();&&&&&&&& //显示温度的小数点&& display_V();&&&&&&&&&& //显示温度的单位&& while(1)&&&&& {&&& AD_val= A_D();&&& //进行A/D转换&&& Int=(AD_val)/51;& //计算整数部分&&& Dec=(AD_val%51)*100/51;&&& //计算小数部分&&&&&&& display1(Int);&&&& //显示整数部分&&& display2(Dec);&&&& //显示小数部分&&& delaynms(250);&&&& //延时250ms&&}&&&&& }
6、在proteus中新建仿真文件ex68.dsn,电路原理图如下所示
7、将ex68.hex文件载入at89c51中,启动仿真,观察运行结果。下图是某一时刻程序运行结果
作者的其他最新日志
评论 ( 个评论)
呵呵,我一定做到“知无不言、言无不尽”
Powered by您的网站因未备案或涉及违规被禁止访问,请及时联系实际接入商办理备案.ADC0832,最全面的ADC0832文章 - 电子工程世界网
在电子工程世界为您找到如下关于“ADC0832”的新闻
ADC0832资料下载
ADC0832汇编语言代码程序 CLK bit P1.6 DATA_I bit P1.4 DATA_O bit P1.5 CS bit P1.2 org 0000h ajmp start org 0020h adc0832: ;;A/D处理主程序 CLR A MOV R7,A CLR CS SJMP adc_;判断A/D是否准备好? wait_loop: JNB DATA_O...
ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。ADC0832 具有以下特点:· 8位分辨率;· 双通道A/D转换;· 输入输出电平与TTL/CMOS相兼容;· 5V电源供电时输入电...
ADC0832中文资料 ADC0832芯片接口说明:
· CS_ 片选使能,低电平芯片使能。
· CH0 模拟输入通道0,或作为IN+/-使用。
· CH1 模拟输入通道1,或作为IN+/-使用。
· GND 芯片参考0 电位(地)。
· DI 数据信号输入,选择通道控制。
· DO 数据信号输出,转换数据输出。
· CLK 芯片时钟输入。
· Vcc/REF 电源输入及参考电压...
ADC0832中文资料...
用ADC0832调节频率输出1 源代码...
此为ADC0832源程序,可实现ADC0832各部分功能~...
用ADC0832设计的两路电压表 用ADC0832设计的两路电压表1 源代码...
51与adc0832 51与adc0832++++信号发生器+可产生正弦波、方波、三角波+含ISIS仿真...
adc0832转换程序...
ADC0832中文资料...
ADC0832相关帖子
急求!!!!
求ADC0832用P1口两路转换C程序 急求啊...
用ADC0832,高精度电位器赫JC-1A 开发板设计一个能够测量直流电压的电压表。输入被测信号0-20V,显示精度到0.01V。与标准万用表测得电压误差不得大于0.05V 设计一个0-20v量程的直流电压表 0.01V分辨率,最大输入20V,至少2000个码,用0832做不到。
8位的分辨率,测量20V时,最精确地表示到20/256 = 0.078125,这里还不计其它误差。
做一个实时时钟&&。
第四十九节:利用DS18B20做一个温控器&&。
第五十节:利用ADC0832采集电压信号,用平均法和区间法进行软件滤波处理。
从业将近十年!手把手教你单片机程序框架(连载) 第一节:吴坚鸿谈初学单片机的误区。
(1)很难记住繁杂的寄存器?寄存器不用死记硬背,鸿哥我行走江湖多年,连一个寄存器都记不住。需要配置寄存器的时候...
PIC16F877A、ADC0832显示电压表的电压值为什么程序仿真总是出不来结果呢?
程序是没有错,电路图连接没有错。不知道问题出在了哪里?这个问题已经困扰了我很久了,我不知道该如何解决。我真心的绝望了。
没有有人能够帮帮我呢?感激不尽,涕泪满衣裳。
附件是我的电路图及程序,请帮忙查看!
[ 本帖最后由 行书万里 于
21:01 编辑...
,x是温度,y是电压。
然后ADC这边的问题,如果你要想测量的温度范围要覆盖PT100的全部可测范围,那你在ADC上给出的参考电压的最大值必须大于等于8V,给12V是可以的,但太大了,就会降低位数的精度,毕竟从8V-12V是不会出来的,也用不到,这意味着ADC0832的高位总是0,10位ADC变成了少于10位的,这就是浪费。如果参考电压给的低于了8V,比如说是6V,LZ应该会算出这个真实可测的...
();}}//---------------------------------------------------------------void Timer0Interrupt(void) interrupt 1{TH0=0x9e;TL0=0x58;i++;if(i==2){i=0;if(keycount==0){ad8=Adc0832(0);d0=d1=d2=d3=0;wrt_data(disbit[4]);}//电压if(keycount==1...
这是我写的ADC0832的采样和数码管显示程序&&通过按键切换采样通道,调了很久都不行&&真心求助高手& 24M晶振#include&reg52.h&#include &intrins.h&#define uchar unsigned char#define uint unsigned intsbit CS&nbsp...
AD620、ADC0832、51单片机、RS232、模拟信号采集板
/item.htm? ... ;id=&
麻烦大家了! 祝大家龙年工作顺利 财源丰收! 这7个ADC数据采集模块, 请大家帮我看看哪个最好啊 ***********
请大家帮我看第1个和第...
了,跟时序和别人的程序也一样啊,怎么两次的数据都不一样啊现在知道数据不一样是正常了,现在放数码管上小的那个值会闪,应该有时候的值变化很大 ,这要怎么解决啊,以前用ad没碰到过&
[ 本帖最后由 zhongxia2009 于
19:33 编辑 ] adc0832读取两次结果不一样 两次数据相差大吗?有差别是正常的
应用中有时候 是测量几十次 去掉第一次和最大最小的...
这是编写的一个自动切换量程的电压表汇编程序,调试时有个问题,就是只能从0.00调到1.99,不满足题目及程序的编写要求,恳请前辈们悉心指点一二:(题目:采用模数转换芯片ADC0832做电压采集,继电器做量程切换,电压采集结果用3位数码管显示,要求分档采集0-2V的电压。当电压在0~0.2V范围内,显示单位为毫伏mV,如175mV;在0.2~2V范围内,显示单位为V,如0.22V。(单位不显示...
ADC0832视频
ADC0832创意
你可能感兴趣的标签
热门资源推荐}

我要回帖

更多关于 adc0832中文资料 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信