单片机设计对2路电压表进行循环数据采集解析.docVIP

单片机设计对2路电压表进行循环数据采集解析.doc

  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文档。上传文档
查看更多
单片机原理 课程结业报告 题目(14): 数字电压表设计 学号: 姓名: 设计要求 (1)以单片机为核心,设计一个数字电压表。 (2)采用中断方式,对2路0~5V的模拟电压进行循环采集。 (3)采集的数据送LED显示,并存入内存。 (4)超过界线1.25V和2.5V警戒值时指示灯闪烁。 设计原理 (1)根据设计要求,选择AT89C51单片机为核心控制器件。? (2)A/D转换采用ADC0808,与单片机的接口为P1口。 (3)电压显示采用4位一体的LED数码管。 (4)LED数码的段码输入,由并行端口P2产生:位码输入,用并行端P3低四位产生。 以单片机为控制器,ADC0809为ADC器件的AD转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。 为得到可读的电压值,需根据ADC的原理,对采集所得的 68信号进行计算,并显示在LED上。本项目中ADC0808的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为: 而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以 100),其计算的数值为: 将小数点显示在第二位数码管上,即为实际的电压。 本设计程序将1.25 V和2.5 V作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。当AD结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。 设计电路图 3.1硬件电路设计 硬件电路设计由6个部分组成:A/D转换电路、AT89C51单片机系统、LED显示系统、时钟电路、复位电路以及测量电压输入电路。硬件电路设计框图如图一所示。 图一 数字电压表设计框图 3.2总的设计电路 根据以上的的硬件电路框图可以设计出以单片机为核心的数字电压表硬件电路原理图如图二所示。 图二 数字电压表电路图 此电路的工作原理是:+5V模拟电压信号通过变阻器VR1分压后ADC0804 的VIN+,VIN通道进入,经过模/数转换后,产生相应的数字量经过其输出通道DB0-DB,传送给AT89C51芯片的Pl口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给四LED,同时它还通过其四位I/O口P2.0、P2.1、P2.2、P23产生位选信号控制数码管的亮灭。 核心代码设计思路及程序流程图 4.1程序设计总方案 ???据模块的划分原则,该程序划分初始化模块、A/D模块子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图三所示。 图三 数字电压表主程序图 4.2系统子程序设计 4.2.1初始化程序 所谓初始化,是对将要用到的C-51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。 4.2.2A/D转换子程序 A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图四所示。 图四 A/D转换流程图 4.2.3显示子程序 显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又足够的亮度,需要设置适当的扫描频率,当扫描频率在70Hz左右时,能够产生比较好的显示效果,一般采用间隔10ms对LED进行动态扫描一次,没一位LED的显示时间为1ms。在本设计中,采用定时器0溢出中断功能实现定时,通过延时程序来实现5ms的延时。 Proteus仿真图 通过Keil生成.hex文件,然后将.hex文件导入AT89C51中,通过Proteus进行仿真,仿真结果如下: 当输入电压为2.21V时,LED灯不亮,仿真显示结果如下: 当输入电压为2.80V时,LED灯亮,蜂鸣器发出声音,仿真结果如下: Keil核心源代码 主程序: #includereg51.h #includeintrins.h #define uchar unsigned char #define uint unsigned int sbit ST=P2^4; sbit OE=P2^6; sbit ALE=P2^4; sbit EOC=P2^5; sbit BUZZER=P2^3; sbit D1=P2^7; long int datas,bai,she,ge; uchar duan; uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code num_dot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed}; uchar code wei[]={0x0d,0x0b,0x07}; void delay(uint z)

文档评论(0)

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

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

1亿VIP精品文档

相关文档