量程~V直流数字电压表.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文档。上传文档
查看更多
量程~V直流数字电压表

电子作品设计报告 项目名称: 量程0~5V直流数字电压表 学 院: 机电工程学院 专 业: 应用电子技术 班 级: 姓 名: 学 号: 指导老师: 一 方案论证: 方案一:最简单的方式就是采用ICL7106模数转换转换后直接显示, 方案二:被测电压经过ADC0804模数转换后,经过AT89S51的处理,显示于数码管上. 方案三:被测电压经过ADC0804模数转换后,其数值再经过缓冲器传送到AT89C51芯片内,经过处理将数值显示在数码管上 论证: 方案二、三都采用AT89S51作为控制,作为一种新型的处理器,可以通过智能的方式,可以进行扩展,而且能够具有自动控制功能。而方案一没采用控制,方案一可控性差,方案三有增加成本,所以选用方案二较为合适。 二 硬件设计及说明 1、原理图设计 图 1 数字电压表原理图 功能硬件分析: 该原理图由三个模块构成,51最小系统,ADC0804信号采集转换,数码管显示模块。 主要芯片51单片机AT89S52的P3口与ADC0804的输出口相连,用P1口作为输出与数码管相连,输出驱动信号,而用P0口的四脚输出扫描信号,整个芯片就这样控制着各个模块。 2、PCB设计 如图: 图 2 PCB设计图 三.软件设计及说明 用编程软件keil编写代码,系统程序的具体代码见附录1 程序流程图如下: 四.作品调试 1、测试仪器:万能表、稳压电源。 2、测试方法:测量法。 3、测试结果: 输入电压 输出电压 1 1.025 1.5 1.579 3 3.056 4 4.031 根据测试结果分析,输出的电压值要比输入电压值相对偏高(约0.1V),造成测量的精准度不高,输出电压不稳定,未达到产品的标准,造成其原因可能有以下两点: 没有外加稳压电路,造成输入电压不稳定。 制作工艺水平不高,电路设计不好,以致在电压过路时有干扰。 改进方法: 1.外加直流稳压系统,保证输入电压稳定。 2.提高制作水平,按产品要求设计电路,减小干扰。 心得与总结: 此次作品的设计,提高了我们电路设计和制作水平,积累了有效地制作和设计经验。经过各组员交流和讨论,虽然整体上未达到产品的标准,不过,用稳压电源提供工作电压时,测量电压是相当稳定,而且数码管显示明亮。此次作品的设计,提高了我们电路设计和制作水平,积累了有效地制作和设计经验,使我们在今后制作作品时更能考虑周到,为我们下个学期毕业设计奠定了一定的基础。 附录1:代码 #include reg51.h /*声明头文件*/ char TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};/*存储数组*/ unsigned char disp[4]={0,0,0,0}; 声明显示区数组 void display(void); 声明显示函数 void delayms(char); 声明延迟函数 main() 主程序开始 { int results; 声明变量 while(1) 死循环开始 { P2=0xff; results=P2*196; 读取ADC0804转换结果乘以196倍 disp[3]=results/10000; 取得千位数 disp[2]=(results/1000)%10; 取得百位数 disp[1]=(results/100)%10; 取得十位数 disp[0]=(results/10)%10; 取得个位数 display(); 调用显示函数 } } void display(void) 显示函数 { char j,scan; 声明变量 char i=10; 扫描十次 while(--i=0) 循环开始 { scan=1; 初始扫描信号 for(j=0;j4;j++) for循环开始 { P0=0xff;

文档评论(0)

技术支持工程师 + 关注
实名认证
文档贡献者

仪器公司技术支持工程师

1亿VIP精品文档

相关文档