- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
18AD转换原理及其程序设计
A/D转换及其程序设计 陈虎 tommychen74@ 什么是A/D转换 A/D转换是外部世界模拟信号和计算机之间联系的接口。它将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。 A/D转换器件的种类非常多,其实现方式主要有逐次逼近式,双积分式,计数式、并行式等。比较常用的有双积分和逐次逼近式两种。 逐次逼近式A/D转换器 包括比较器、控制电路、逐次逼近寄存器、D/A转换器构成。其基本原理是逐次逼近寄存器各位首先清”0”,然后设置最高位为”1”形成第一个试探值。该试探值通过D/A转换器后与待测量电压进行比较。如果待测量电压高于试探电压,则保持最高位不变;反之,则将最高位设置为”0”。然后将逼近寄存器的次高位设置为”1”,继续上述试探过程。通过从高位到低位地不断试探逼近寄存器各位值,最后得到转换结果。 逐次逼近式A/D转换器的特点是转换速度比较快,分辨率也较高,但是抗干扰能力比较差。 逐次逼近A/D转换原理图 双积分式A/D转换器 转换过程包括两步:1)对输入电压进行固定时间的积分,获得一个输出电压V0;2)对V0通过参考电压进行反积分,使其降低为0V,并统计反积分时间。 双积分式A/D转换的抗干扰能力比较强,性能稳定,但是转换速度比较慢。 双积分A/D转换原理 A/D转换器的主要参数 量程,指所能转换的模拟输入电压范围,可以分为单极型和双极型两种。 分辨率(LSB),指A/D转换器所分辩的最小模拟输入量。n位A/D转换器能反应1/2n满量程的模拟输入电平。 精度,包括绝对精度和相对精度两种。其中绝对精度是指在A/D转换器输出端产生给定的数字量时,其实际模拟输入值同理想值之差,相对精度是指在满量程值已经校准的情况下,在量程范围内任意数字量输出,所对应的模拟量输入值与理论值之差。 转换时间,指从发出启动命令到转换结束获得整个数字信号为止所需要的时间间隔。 S3C2410中的A/D转换器 8路10位,并支持触摸屏功能。 精度位1.5位,量程为0~3.3V,最大转换速率为500K。 S3C2410中AD转换的寄存器 配置寄存器ADCCON(地址为0 S3C2410中AD转换的寄存器 寄存器ADCDAT0(地址为0x5800000C) A/D转换结果,其中低10位为转换结果。此10位为全1时,表示输入电压为满量程3.3V Linux操作系统中进行A/D转换 需要调用操作系统来完成读取A/D转换结果的操作。A/D转换器被作为一个设备文件供应用程序访问,相应的驱动程序提供了4个操作方法: open(): 打开A/D转换器,并初始设置通道号和转换因子; write(): 设置A/D转换通道号和转换因子; read(): 读取A/D转换结果; close(): 关闭A/D转换器。 一个程序例子 //初始化AD转换器 #define ADC_DEV /dev/adc/0raw“ static int adc_fd = -1; static int init_ADdevice(void){ if((adc_fd=open(ADC_DEV,O_RDWR))0){ printf(Error opening %s adc device\n, ADC_DEV); return -1; } } //读取AD转换的结果 static int GetADresult(int channel){ int PRESCALE=0XFF; int data=ADC_WRITE(channel, PRESCALE); write(adc_fd, data, sizeof(data)); read(adc_fd, data, sizeof(data)); return data; } 主程序 //子线程获取用户输入 static int stop=0; static void* comMonitor(void* data){ getchar(); stop=1; return NULL; } int main(void){ int i; float d; pthread_t th_com; void * retval; if(init_ADdevice()0) return -1; pthread_create(th_com, NULL, comMonitor, 0); while( stop==0 ){ for(i=0; i=2; i++){ d=((float)GetADresult(i)*3.3)/1024.0; prin
您可能关注的文档
最近下载
- 《解析几何》教案--吕林根,许子道.pdf
- 美国加州桥梁抗震caltrans seismic design criteria vlysis.pdf VIP
- 2025云南省临沧市市级单位公开遴选(选调)工作71人笔试参考题库附答案解析.docx VIP
- HSE保障措施优化及实施方案研究.docx VIP
- 2025甘肃省公路交通建设集团武仙公路收费运营人员招聘61人笔试模拟试题及答案解析.docx VIP
- 2025年秋新鲁科版英语四年级上册全册课件.pptx
- 颚式破碎机技术参数.docx VIP
- 2024河南资本集团“方舟”第三批招聘41人笔试参考题库附带答案详解.pdf
- 《时尚配饰设计》课件.ppt VIP
- 高边坡专家论证PPT汇报材料(中建).ppt VIP
文档评论(0)