液位监测系统_单片机课程设计报告.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计报告书 液位监测系统 一、设计目的 1. 采用单片机、ADC0809、压力传感器为主要器件,设计水深检测系统; 2. 通过本次课程设计加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解 3. 掌握定时器、外部中断的设置和编程原理 4. 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 1.压力变送器输出为4-20mA电流信号,通过转换电路把其转换为电压信号; 2.处理模拟信号并显示其实际水的深度数值。 三、设计器材 器件 个数 器件 个数 STC89C52 1 晶振(12M) 1 ADC0809 1 22uf电容 1 RESPACK-8 1 10Ω电阻 1 9012型三极管 4 10KΩ电阻 1 开关 1 液位传感器 1 4位数码管 1 底座 1 四、设计方案及分析 1. 单片机最小系统电路 单片机最小系统电路如图1所示,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。 图1 单片机最小系统 2. 时钟电路 STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19脚(XTAL1)为振荡器反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大器的输出端。在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。晶振频率为12MHz,电容大小为33pF,时钟电路如图所示。 图2 时钟电路(晶振) 3. 复位电路 STC89C52的复位是由外部的复位电路来实现的,复位电路通常采用上电复位和按钮复位两种方式,本设计采用的是最按钮复位电路,其电路图如图所示。 图3 复位电路 4.数码管显示电路 LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示a~g为数字和字符显示段,h段为小数点显示,通过a~g为7个发光段的不同组合,可以显示0~9和A~F共16个数字和字母。LED可以分为共阴极和共阳极两种结构。共阳极结构即把8个发光二极管阳极连在一起。这种装入数码管中显示字形的数据称字形码,又称段选码。 本设计用到的是LED显示器静态显示方式,其电路如图所示是发光二极管显示器(LED)的结构、工作原理及接口电路。 图4 数码管电路 五、问题分析与解决方法 问题1数码管开始显示暗并且数字总是在跳动。 这个问题的结症严格意义上说没有得出答案。当时数码管(共阳)位控,我们用的是9014号PNP型三极管,现象时显示结果暗淡并且跳动。我们没有怀疑三极的问题而是把目标一致对准焊接电路,反复检查没有问题(检查方法:该通的地方通,不该通的地方不通),即使这样也没有解决问题,最后根据数码管显示暗淡一个现象,就猜想通过字样各段的电流小。试着调整三极管的放大倍数,将一个9014型三极管替换成9012型,结果成功了。最后,我试着测试了一下9012和9014的方法倍数,结果显示9012的放大倍数β比9014的β大100左右。 问题2 即使更换了三极管,数码管显示数字仍然在不停地闪动。 这个问题在硬件上已经改变了,相信硬件在显示方面不会出现问题,只能把目标哦对准软件的方面。最初的主程序没有防止电压微小跳动而导致显示转换结果不稳定的,最懂显示结果微小跳动。程序每走一遍,数码管就显示结果就刷新一遍。那么我们就想,在电压输入电相同的情况下,那么记录上次的转换结果,如果本次转换结果与上次的相同,就不需要刷新显示数据,反之,则刷新。这样的想法,促使我们使用了如下关键语,这样显示数组a[]不需要每次刷新,只是在数据变化的情况下刷新。 Temp1=P1; //P1端口读的是AD0809的转换结果 if(temp!=temp1){ temp=temp1; a[3]=temp/1000; a[2]=(temp/100)%10; a[1]=(temp/10)%10; a[0]=temp%10; } 问题3.正确显示范围是0~255,但是一直显示的是85~165。 这个问题没有找到确定的答案。最初怀疑软件,因为硬件电路在开始时已经仔细检出过,而且是不同的人独立检查的(这样利于发现问题,防止可能已犯误人把其他人引入定势思维),但是最终没有发现问题,只能把目光投向软件。软件中AD0809工作需要整脉冲,上升沿是各个寄存器复位,下降沿AD0809开始工作。我们给模拟正脉冲的程序加入了延时程序(st=0;delayus();st=1;delayus();st=0;delayus();),但是这样也没有改变结果。 问

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档