- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 黔东南州2024——2025学年度第一学期期末文化水平测试九年级化学试卷.docx VIP
- (一模)2025年马鞍山市高三第一次教学质量监测英语试卷(含答案).pdf
- 2025年高考语文大题突破训练:微写作(北京专用)解析版.pdf VIP
- 音乐鉴赏答案-周海宏 .pdf VIP
- 艾灸项目商业计划书.docx VIP
- 线上心理咨询创业项目计划书.pptx VIP
- 2023-2024学年河南省重点中学七年级(上)开学历史试卷(含解析).docx VIP
- 煤矿工程瓦斯抽采系统井下抽采管路安装工程施工组织设计_山西.docx
- JJF(鲁) 194-2024 专用砝码地方校准规范.docx VIP
- 普通职员月度工作总结.docx VIP
原创力文档


文档评论(0)