- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目9 数字式电压表的设计 1.提出任务 利用单片机和A/D转换器设计一个测量系统,可以实现0-5V的模拟电压,并在数码管上显示出来。 项目9 数字式电压表的设计 (1)硬件电路设计 系统要求的是实现模拟电压的测量,并实现数字显示,由于单片机输入量和输出量信号都是数字量,因此需要一种特殊的电路,将模拟量转换为单片机能够识别的数字量。A/D转换器就是用来实现这一过程的电路。 根据数字式电压表的实现功能,硬件电路的设计与器件选择,也可从如下4个方面考虑: A/D转换电路、单片机控制器电路、LED显示电路等。这里选择具有内部程序存储器的AT89S51单片机作为控制电路,加上典型的8位并得传输的A/D转换芯片ADC0809作为模/数转换器,硬件电路原理图如图9.1所示。 由于ADC0809的时钟最大是1280kHz,而在系统中使用的是12MHz,超出了ADC0809的极限。在程序设计中为了简化电路,使用定时器来完成ADC0809的时钟输入。电路中使用P2.7作为脉冲输入端。 项目9 数字式电压表的设计 ADC0809芯片的EOC与单片机P2.0连接,START和ALE与单片机P2.6连接,OE与单片机P2.5连接,单片机P0定义为数据读入端口,ADC0809芯片的ADDA、ADDB和ADDC接地。 显示使用的是LED数码管,采用动态显示的方式实现电压的显示。P1.0至P1.4接是数码管的位选,P3接的是数码管的段码。 基准电电压接的是正电源+5V,RV2分压输出作为输入的测试电压,接入ADC0809芯片的INO通道。 仿真试验时可采用A/D转换集成电路ADC0808芯片来进行仿真分析。有些Proteus仿真软件未带A/D转换集成电路ADC0809芯片。 项目9 数字式电压表的设计 项目9 数字式电压表的设计 (2)软件设计思路 对于显示采用动态显示。为了使人能够更好地观看显示结果,显示数据的频率不能过快,程序中设定间隔为1S电压转换一次。 对于ADC0809数据的是如何读取的呢?主要有以下几个步骤: (1)初始化时使START和OE信号全为低电平 (2)将要转换的通道地址送A、B、C端口上,在ALE上加锁存脉冲 (3)在START端给出一个至少有100ns宽的正脉冲信号 (4)是否转换完毕根据EOC信号来判断。如果EOC为低电平,表示在转换过程中;如果EOC变为高电平,表示转换完毕。 (5)使OE为高电平,转换数据就输出给单片机。当数据传送完毕后,将OE置为低电平,使ADC0809输出为高阻状态,让出数据线。 项目9 数字式电压表的设计 根据程序流程图编写的源程序如下: //文件名dy9-1.c #includereg51.h #define uchar unsigned char #include intrins.h code uchar TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数码管显示数值 uchar str_TME[4]={0,0,0,0,}; //定义数码管显示初始值 void delay(uchar ms) //定义延迟程序 { uchar i; while(ms--) for(i=0;i125;i++); } uchar tmel=0; uchar ad_dat; bit sim=1; 项目9 数字式电压表的设计 /***********************计数器中断函数,用于控制电压转********************* *******************时间间隔,此程序设定间隔为1S电压转换一次***************/ void tme_tr0(void) interrupt 1 { TL0=0xb0; TH0=0x3c; if(++tmel==20) { tmel=0; sim=1; } } /*****************定义数码管显示***************************/ sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; void VAL_xs() { P3=(TAB[str_TME[0]])0x7f; //显示小数点 k1=1; delay(5); 项目9 数字式电压表的设计 k1=0; P3=TAB[str_TME[1]]; k2=1; delay(5); k2=0; P3=TAB[str_TME[2]]; k3=1; delay(5); k3=0; P3=TAB[str_TME[3]]; k4=1
您可能关注的文档
最近下载
- 智慧课堂下高中数学定理课的教学设计研究.pdf VIP
- 徕卡DNA03/DNA10 数字水准仪说明书.docx VIP
- 牦牛标准化育肥场布局及圈舍建设规范.docx VIP
- 手术室护理不良事件管理.pptx
- 李脂肪栓塞综合征的护理.ppt
- BS EN IEC 62501-2024 Voltage sourced converter (VSC) valves for high-voltage direct current (HVDC) power transmission — Electrical testing 高压直流动力传输用电压源换流阀ー电气试验.pdf
- 2022年全国甲卷统一高考物理试卷(附答案).pdf VIP
- 个人简历——【标准模板】.doc VIP
- 行政人事管理成套个人简历Word模板(高端绿色).docx VIP
- 一般过去时知识点及练习.docx VIP
文档评论(0)