为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于8051+ADC0809设计数字电压表的汇编实现

2017-10-19 2页 doc 16KB 29阅读

用户头像

is_769254

暂无简介

举报
基于8051+ADC0809设计数字电压表的汇编实现基于8051+ADC0809设计数字电压表的汇编实现 作者:HeChaoyang 日期:2007年5月17日 说明:本文仅讨论“基于8051+ADC0809设计的数字电压表”的软件实现部分,硬件连接较简单,可参阅单片机基础教材或实验指导教材。对51单片机初学者的学习有一定的参考价值和指导意义。 题目如下: 用ADC0809,LED数码管等器件,自行设计一数字电压表(精确到 1/100),电压值在LED上显示效果如下图: 即为用8位AD采样0-5V电压(AD的参考电压为5V),并要在51单片机中直接显示相应的电压值,...
基于8051+ADC0809设计数字电压表的汇编实现
基于8051+ADC0809设计数字电压的汇编实现 作者:HeChaoyang 日期:2007年5月17日 :本文仅讨论“基于8051+ADC0809设计的数字电压表”的软件实现部分,硬件连接较简单,可参阅单片机基础或实验指导教材。对51单片机初学者的学习有一定的参考价值和指导意义。 目如下: 用ADC0809,LED数码管等器件,自行设计一数字电压表(精确到 1/100),电压值在LED上显示效果如下图: 即为用8位AD采样0-5V电压(AD的参考电压为5V),并要在51单片机中直接显示相应的电压值,显示值为十进制,两位小数。 经过各方面资料的搜集,和与Lammy同学的讨论,我整理出了两套实现。 方案一:将5扩大100倍即500,这样要两个字节存储这个参考电压值,再用得到的采样值(一字节)乘以500得到一个3字节的值(调用一个2字节乘1字节的子程序实现),再除以阶数值即得到实际信号电压扩大100倍后的整数值,再转换成BCD码形式,显示时将其第一位显示小数点即可。小数点问题的解决办法:(1)做两张表,一张带小数点,一张不带小数点。(2)只有一张不带小数点的表,第一位显示小数点之前,将字型的值补上与带小数点的差值(减去80H),再送显示。 源代码编写中,需要调用到“三字节二进制无符号数除以单字节二进制数”和“调用2字节乘1字节的子程序”的子程序,我自己试着编写这两个程序,其中乘法子程序我比较熟悉,老师上课也有讲到。但除法一点思路也没有,上网搜索了下,发现了这样一份相当实用的资料《,,,,,,单片机实用子程序库(,,年版)》周航慈,其中包括非常多的工程实践中需要用到的汇编子程序,工程实践中可以直接调用。 方案二:根据要显示的电压值计算式V=A/255*5,扩大100倍后,直接计算出500/255的数值为0.0196,首先要考虑是选择0.019还是0.02还是0.0196与A相乘。如果以0.019与A相乘,当A为255时,0.019×A=4.845,与5.00相差太远,误差较大;如果选择0.02,0.02×255=5.10,同样有太大误差,为了避免太大的误差,可以考虑选择0.0196作为参数(0.0196×255=4.9980)。以196与A相乘,最大的结果为196×255=49980可以用两个字节表示结果,故需要调用“一个字节与一个字节相乘结果为两个字节的程序”,然后根据得到的两个字节的结果进行十进制转换。双字节16进制转换为BCD码可以参考资料《,,,,,,单片机实用子程序库(,,年版)》周航慈。最后根据BCD数的倒数第二位以四舍五入的原则去掉后两位数据,将前三位送显示。 以上两个方案是我对这个问题的分析,可能有更好的实现方案,欢迎有着丰富单片机编程经验的牛人指导。 源代码会在实验调试成功后附上。
/
本文档为【基于8051+ADC0809设计数字电压表的汇编实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索