单片机数字电压表(带仿真图C程序).docxVIP

单片机数字电压表(带仿真图C程序).docx

  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文档。上传文档
查看更多
单片机数字电压表(带仿真图C程序)

基于51单片机数字电压表 本模块采用ADC0832模数转换芯片,LCD1602液晶显示,测量范围0-5V,精度误差0.01V 看了很多网上的课程设计或者毕业论文,得出以下几点: 1.数字电压表的方案有很多种,有的采用ADC0809,或者ADC0808等,他们都是8温AD,并口传输数据,具有速率高的优点。但是硬件复杂,与单片机电路繁琐,焊接起来比较麻烦。 所以本设计采用ADC0832,同样8位AD,特点是串口传输数据,硬件接口简单,且精度误差一致,速率也比较快,对于要求不高的系统非常适合。 2.显示电路,网上采用LED显示居多,本设计采用LCD1602液晶显示,具有硬件搭设简单,显示美观等优点 3.本设计方便移植,只需将LCD1602三个控制端口,ADC0832 四个控制端口修改即可。注意LCD1602数据传输接口是单片机的P0口,如下图,需要接上拉电阻 4.程序采用C代码编写,亲测直接可以使用,若需仿真文件,请用E-mail联系邮系。邮箱: HYPERLINK mailto:gnsywb@ gnsywb@ 5.网上很多设计数据转换程序有误,不够正确。在转换过程中,中间变量需设置为int类型,虽然8位AD输出最高位255,但是余数转换过程中会大于255。若设计char型,会造成显示输出有误。 void convert(uchar a) { uint temp; //特别注意这里需定义int型(余数将大于255) dis[0]=a/51; //取个位 temp=a%51; temp=temp*10; dis[1]=temp/51; //取小数点后第一位 temp=temp%51; temp=temp*10; dis[2]=temp/51; //取小数点后第二位 } 具体电路图如下: 利用电压表与测量显示电压对比 附录:C程序 /******************************************** 功能 :单片机数字电压表 ADC0832+LCD1602 1,测量范围0-5V 2,2路输入电压,可自行设定 3,测量精度误差0.01V,LCD液晶显示 编写者: 小子在西藏 gnsywb@ 编写日期:2012-11-5 *********************************************/ #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char sbit lcdrs=P2^4; sbit lcdrw=P2^5; sbit lcden=P2^6; //1602控制端口 sbit DI=P3^4; sbit DO=P3^4; //DI和DO与单片机共接口 sbit Clk=P3^3; sbit CS=P3^5;//ADC0832控制端口 uchar dis[3]={0x00,0x00,0x00}; //显示缓冲区 uchar date=0; //AD值 uchar CH; //ADC0832通道值 /***************************************** AD0832转换程序 ******************************************/ uchar ADC0832(uchar CH) { uchar i,dis0,dis1; Clk=0; //拉低时钟 DI=1; //初始化 _nop_(); CS=0; //芯片选定 _nop_(); Clk=1; //拉高时钟 _nop_(); if(CH==0) //通道选择 { Clk=0; //第一次拉低时钟 DI=1; //通道0的第一位 _nop_(); Clk=1; //拉高时钟 _nop_(); Clk=0; //第二次拉低时钟,ADC0832 DI接受数据 DI=0; //通道0的第二位 _nop_(); Clk=1; _nop_(); } else { Clk=0; DI=1; //通道1的第一位 _nop_(); Clk=1; _nop_(); Clk=0; DI=1; //通道1的第二位 _nop_(); Clk

文档评论(0)

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

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

1亿VIP精品文档

相关文档