单片机直流数字电压表设计.docxVIP

  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文档。上传文档
查看更多
实验七 直流数字电压表设计 【实验目的】 掌握LED动态显示和A/D转换接口设计方法。 【实验原理】 实验电路原理图如下图所示。图中显示器采用4位共阴极数码管,并按动态显示方式接线。A/D转换结束标志采用查询法检查,启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生,频率为5KHz。电位器的输出电压送到A/D转换器中转换,转换结果以十进制数形式显示在数码管上。调节电位器可使数码管的显示值发生相应变化。 【实验内容】 学习使用Proteus软件,掌握原理图绘图方法; 学习使用Keil C软件,掌握C51程序编写与调试方法; 理解动态显示与A/D转换工作原理,完成单片机电压采集与显示程序的编写与调试。 【实验步骤】 在Proteus中绘制电路原理图,按照下表将元件添加到编辑环境中。 在Keil中编写C51程序,并使之编译通过。 在Proteus中加载程序,观察仿真结果。 【实验要求】 提交的实验报告中应包括电路原理图,含注释内容的源程序及实验结果分析。 【实验原理图】 【运行结果】 【实验程序及注释】 #include reg51.h sbit _st = P2^5; //定义AD启动位,_st sbit _eoc = P2^6; //定义AD结束位,_eoc sbit _oe = P2^7; //定义AD使能位,_oe sbit led0 = P2^3; //定义数码管最低位,led0 sbit led1 = P2^2; //定义数码管第二位,led1 sbit led2 = P2^1; //定义数码管第三位,led2 unsigned char ad_result=0; //定义AD转换结果变量,ad_result unsigned char table[] = {0x3f,0x06,0x5b, 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义十进制显示字模数组,table[] void delay(unsigned int time) //延时函数 { unsigned int j = 0; for(;time0;time--) for(j=0;j125;j++); } void disp(void) //显示函数 { led3=0; //第四位位码清0 P0=table[ad_result/1000]; //输出第三位的字模 delay(10); //延时10ms led3=1; //第三位位码置1 //动态显示函数 led2=0; //第三位位码清0 P0=table[ad_result/100]; //输出第三位的字模 delay(10); //延时10ms led2=1; //第三位位码置1 led1=0; //第二位位码清0 P0=table[(ad_result/10)%10]; //输出第二位的字模 delay(10); //延时10ms led1=1; //第二位位码置1 led0=0; //最低位位码清0 P0=table[ad_result%10]; //输出最低位的字模 delay(10); //延时10ms led0=1; //最低位位码置1 } void main(void) { while(1) { _st=0;_st=1;_st=0; //模拟启动时序,发出启动AD转换脉冲 while(!_eoc); //查询EOC标志,若EOC=0,原地等待 _oe=1; //若EOC=1,使能OE置1 ad_result=P1; //读取AD转换结果 _oe=0; //使能OE置0 disp(); //动态显示函数调用 } } 【注】 本人辛苦编译加注过,请用修改后再纳为己有。 程序中少了一条很简单的语句,为本人故意所留。稍懂单片机者均可改正。 祝你实验成功

文档评论(0)

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

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

1亿VIP精品文档

相关文档