简易直流数字电压表分析.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文档。上传文档
查看更多
电子设计竞赛设计报告 摘要:设计的任务为制作一台简易直流数字电压表,其中AD转换器模块使用分立元件制作双积分型AD转换器。利用运算放大器和比较器搭建积分电路,由四位数码管构成显示电路,AT89C52单片机构成控制模块。本设计完成了基本功能和一部分扩展功能,具有较高的精度和稳定性。 关键词:AD转换器 单片机 四位数码 一、总体方案设计 1. 自行设计制作系统供电电源,输入为220VAC,禁止使用任何成品电源。 2. AD部分禁止使用成品AD芯片。要求仅使用运算放大器、电子开关、基准源、阻容元件等分立元件设计一个双积分型AD转换器。 3. 直流电压测量范围为0~2V,要求分辨率达到0.01V,满量程测量精度优于3%。 4. 电压采样周期小于1s。 5. 显示器必须使用LED数码管显示器制作,禁止使用LCD。 6. 结构设计合理,外表整洁美观。 二、原理描述 双积分式AD转换器又称双斜式AD转换器,其原理框图和工作波形图如下图所示。整个逻辑转换过程在控制器的控制下按一下三个阶段进行: 图2-1 双积分AD转换器原理图 图2-2 双积分型AD转换器波形 预备阶段 逻辑控制电路发出复位指令,使积分器的输出为零。 定时积分阶段T1 定时积分阶段,电子开关接通输入端和待测电压,同时打开定时器,当定时器计满时,进入定时器中断。 定值积分阶段T2 定时积分阶段结束后,打开电子开关使输入端接通基准电压,开始反向积分,积分器的输出在比较器的输入端与地电压进行比较,当积分器的输出为正值时积分器产生下降沿,触发单片机外部中断,同时记录T2值。积分器输出电压有以下公式 推导可得 因此只要记录T2值即可求得输入电压Ux的值。 三、 模块设计 本设计分为三大模块:控制模块、显示模块、AD转换模块。 图3-1 设计总框图 1. AD转换模块: 图3-2 AD转换模块 AD转换模块由基准电压源、电子开关、运放、比较器组成。运算放大器完成正向积分和反向积分,经由比较器将脉冲输入单片机。 2. 时序控制模块: 图3-3 控制模块 本设计由单片机AT89C52控制AD转换器的时序和显示模块的控制。 显示模块: 图3-4 显示模块 本设计由四位共阳数码管完成对待测电压值的显示。 5. 程序框图 图3-5 程序框图 四、结果测试 表4-1 结果测试表 待测电压值 测量结果 0.025 0.038 0.124 0.123 0.265 0.301 0.547 0.544 1.201 1.21 1.497 1.504 1.644 1.641 1.841 1.839 2.004 2.01 结果分析:由表4-1可观察测量结果基本准确,误差均在可控范围之内。 四、总结 本设计基本完成了基本要求和部分扩展功能的设计,不足之处有: 电压显示不够稳定。 精度有所缺失。 改进措施: 采用基准源,提高基准电压的精度和稳定性。 积分电路采用精密电阻和积分电容,提高积分时间的精确性。 采用数字校准,提高精度和减小误差。 附录: 代码: #include reg52.h /* macro */ sfr WD = 0xE1; #define CLR 0 #define TIM 1 #define VAL 2 //#define Time1 50000 sbit AddrA = P3^0; sbit AddrB = P3^1; #define LED P0 #define SEL P2 #define nAve 23 /*25取平均*/ #define FEED WD=0x3B /* global */ int stateFlag; /* 不同阶段定时标志位 */ unsigned short nCount=0,save[nAve]={0},Time2=0,tCount=0,buff=0; unsigned char code CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; /* fun dec */ void delay1ms(int T); // 12MHz~12T void ClearSW(); // 校准 void TimeSW(); // 定时积曋 void ValueSW(); // 定值积曋 void StartADC() ; /* 校准:10000us */ unsigned short Ave(unsigned short* Array); void Display(u

文档评论(0)

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

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

1亿VIP精品文档

相关文档