单片机课程设计报告数字电压表.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设 课题名称: 数字电压表 课程原理: 模数转换原理: 试验中,我们选用ADC0809作为模数转换的芯片,其为逐次逼近式AD转换式芯片,其工作时需要一个稳定的时钟输入,根据查找资料,得到ADC0809的时钟频率在10khz~1200khz,我们选择典型值640khz。课题要求测量电压范围是0到5V,又ADC0809的要求:Vref+=Vcc,Vref-=GND,故我们取Vref+=+5V,Vref-=0V。由于ADC0809有8个输入通道可供选择,我们选择IN0通道,直接使ADC0809的A、B、C接地便可以了,在当ADC0809启动时ALE引脚电平正跳变时变可以锁存A、B、C上的地址信息。ADC0809可以将从IN0得到的模拟数据转换为相应的二进制数,由于ADC0809输出为8位的二进制数,转换时将0到5V分为255等分,所以我们可以得到转换公式为x/255*5化简为:x/51,x为得到的模拟数据量,也就是直接得到的电压量。在AD转换完成后,ADC0809将在EOC引脚上产生一个8倍于自身时钟周期的正脉冲,以此来作为转换结束的标志。然后当OE引脚上产生高电平时,ADC0809将允许转换完的二进制数据输出。 数据处理原理: 由ADC0809的转换原理可以知道我们从其得到数据还只是二进制数据,我们还需要进一步处理来的到x的十进制数,并且对其进行精度处理,也就是课题要求的的精确到小数点后两位,在这里我们用51单片机对数据进行处理。我们处理数据的思路是:首先将得到的二进制数直接除以十进制数51,然后取整为x的整数部分,然后就是将得到的余数乘以10,然后再除以51,再取整为x的十分位,最后将得到的余数除以5得到x的百分位。 数据显示原理: 试验中我们用到四位一体的七段数码管,所以我们只能考扫描显示来完成数码管对x的显示,我们用的是四位数码显示管,但是x只是三位的,故我们将将第四位显示为单位U,通过程序的延时,实现四位数码管的稳定显示。 课程电路和仿真图: 实验中我们采用的protus仿真。 我们将单片机得P0口接上拉电阻后与数码管的8位段选相连,若不接上拉电阻将无法驱动数码管,用P2口得4到7位连接数码管的段选,考虑到整体的PCB布线,我选用 P3.2口作为ADC0809的时钟输出端,并用到单片机的定时器。用P3.5传输ADC0809的START启动信号,用P3.6作为ALE的信号传输,P3.3作为OE的连接端。IN0为输入端,而ADC0809的IN1到IN7悬空,不作连接。单片机EA接高电平。而P3口从ADC0809的输出端输入数据。 实验程序代码:   本次实验我用到的是最底层的汇编语言。 ORG 0000H LJMP START ORG 000BH CPL P3.2 MOV TH0,#0FFH MOV TL0,#0FFH RETI ORG 0014H START: MOV PSW,#0FFH MOV R1,#00H MOV R2, #00H MOV R3,#00H //清零寄存器 MOV IE ,#82H //设置IE,开启定时器,关闭其他中断 MOV TMOD ,#01H //定时器T0,方式1,给ADC0809时钟信号 MOV TH0, #0FFH MOV TL0, #0FFH SETB TR0 //启动定时器 LOOP1: CLR P3.5 // 清零并启动ADC0809 CPL P3.5 CPL P3.5 CLR P3.6 //初始化ALE,并启动 SETB P3.6 SETB P3.4 LOOP2: JNB P3.4 , LOOP2 //扫描EOC SETB P3.3 // 允许输出 MOV P1,#0FFH MOV A,P1 MOV B,#51 DIV AB MOV DPTR,#DTAB MOVC A,@A+DPTR ORL A,#20H MOV R1,A //得到个位和小数点存于R1 MOV A,B MOV B,

文档评论(0)

lyxbb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档