ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:116KB ,
资源ID:19017352      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19017352.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(液位监测系统单片机课程设计报告Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

液位监测系统单片机课程设计报告Word格式文档下载.docx

1、开关液位传感器4位数码管底座四、设计方案及分析. 单片机最小系统电路单片机最小系统电路如图1所示,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。图1 单片机最小系统. 时钟电路STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19脚(XTAL1)为振荡器反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大器的输出端。在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统

2、采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。晶振频率为12MHz,电容大小为33pF,时钟电路如图所示。图2 时钟电路(晶振). 复位电路STC89C52的复位是由外部的复位电路来实现的,复位电路通常采用上电复位和按钮复位两种方式,本设计采用的是最按钮复位电路,其电路图如图所示。图3 复位电路4数码管显示电路LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示ag为数字和字符显示段,h段为小数点显示,通过ag为7个发光段的不同组合,可以显示09和AF共16个数字和字母。LED可以分为共阴极和共阳极两种结构。共阳极结构即把8个发光二极管阳极连在一起。这种装入数码管中

3、显示字形的数据称字形码,又称段选码。本设计用到的是LED显示器静态显示方式,其电路如图所示是发光二极管显示器(LED)的结构、工作原理及接口电路。图4 数码管电路五、问题分析与解决方法问题1数码管开始显示暗并且数字总是在跳动。 这个问题的结症严格意义上说没有得出答案。当时数码管(共阳)位控,我们用的是9014号PNP型三极管,现象时显示结果暗淡并且跳动。我们没有怀疑三极的问题而是把目标一致对准焊接电路,反复检查没有问题(检查方法:该通的地方通,不该通的地方不通),即使这样也没有解决问题,最后根据数码管显示暗淡一个现象,就猜想通过字样各段的电流小。试着调整三极管的放大倍数,将一个9014型三极管

4、替换成9012型,结果成功了。最后,我试着测试了一下9012和9014的方法倍数,结果显示9012的放大倍数比9014的大100左右。问题2 即使更换了三极管,数码管显示数字仍然在不停地闪动。这个问题在硬件上已经改变了,相信硬件在显示方面不会出现问题,只能把目标哦对准软件的方面。最初的主程序没有防止电压微小跳动而导致显示转换结果不稳定的,最懂显示结果微小跳动。程序每走一遍,数码管就显示结果就刷新一遍。那么我们就想,在电压输入电相同的情况下,那么记录上次的转换结果,如果本次转换结果与上次的相同,就不需要刷新显示数据,反之,则刷新。这样的想法,促使我们使用了如下关键语,这样显示数组a不需要每次刷新

5、,只是在数据变化的情况下刷新。Temp1=P1; /P1端口读的是AD0809的转换结果if(temp!=temp1)temp=temp1;a3=temp/1000; a2=(temp/100)%10; a1=(temp/10)%10; a0=temp%10; 问题3.正确显示范围是0255,但是一直显示的是85165。这个问题没有找到确定的答案。最初怀疑软件,因为硬件电路在开始时已经仔细检出过,而且是不同的人独立检查的(这样利于发现问题,防止可能已犯误人把其他人引入定势思维),但是最终没有发现问题,只能把目光投向软件。软件中AD0809工作需要整脉冲,上升沿是各个寄存器复位,下降沿AD080

6、9开始工作。我们给模拟正脉冲的程序加入了延时程序(st=0;delayus();st=1;st=0;),但是这样也没有改变结果。 问题4. 检查硬件发现可能是AD0809没有工作,但是一直找不出来问题。这个问题从始至终都没有找到确切的答案,只是有基于上个问题的一些想法。上个问题中,模拟输入电压在接入5V,数码管显示165,在接入0V显示65,显示结果不是很稳定,但是显示如上结果的概率在95%。最初我们猜想是其他问题,因为输入5V和0V数转换的结果在变化,说明数码管工作了。在过少次检查机想象中,都没能找到问题。我们就试着改变了输入模拟电压,用两个相同的电阻分压,得到了2.5V模拟输入电压,但令我

7、们惊讶的是现实结果没有变,而是接近5V的显示结果,甚至一样。那么,AD0809一定没有工作,显示的只是初始化得乱码。我们再次仔细检查了电路,没有发现问题。经过我们小组几次讨论,得出如下结论:AD0809本身可能就是坏的!六、设计结果1.方案图2.总体电路原理图3.软件流程图4.软件设计#include typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;uint8 a5;uint8 j=0;sbit eoc=P26;sbit oe=P25;sbit st=P27;sbit AD

8、DR0=P20;sbit ADDR1=P21;sbit ADDR2=P22;sbit ADDR3=P23;sbit clock=P24;bit flag=0;code uint8 table=0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90;void delay() /延时子函数 uint16 i,K; for(i=1;i0;i-) for(K=50;KK-);/*void delayus() unsigned int i=1000; while(i0)i-;*/ void diplay() switch(j) case 0: ADDR0=

9、1;ADDR1=1;ADDR2=1;ADDR3=0; j+; P0=tablea0;delay(); /显示第一位数码管 break; case 1:ADDR2=0;ADDR3=1; /显示第二位 P0=tablea1; case 2:ADDR1=0; P0=tablea2; /显示第三位 case 3: ADDR0=0; j=0; P0=tablea3; /显示第四位 default:break;void timer0() interrupt 1 flag=flag; clock=flag;main() uint16 temp1=P1,temp=P1; TMOD=0x02; TH0=0xff

10、;TL0=0xff; TR0=1; EA=1; ET0=1; while(1) st=0; delayus(); /给start一个上升沿脉冲,将内部所有寄存器清零 st=1; /给start一个下降沿脉冲,开启AD转换 while(!eoc); /转换结束标志 oe=1; /允许输出转换后的数据 temp1=P1; /定义temp,用于表示从 ADC来的数据的各个位oe=0; delayus(); if(temp!=temp1) temp=temp1; a1=(temp/10)%10; diplay();七、设计体会与收获课程设计已经结束了,总的结果是我们组的结果没有做出来。实话说,我觉得我

11、们组尽力了,想进各种办法都没有结果。我对结果是一个重视的人,当时心情低落。在这次课程设计中,我是组长,结果没有出来,我觉得不是知识的缺乏,而是合作不佳,任务倒是分配好了,但是各份工作之间的衔接不是很融洽。这可能就是结果没有出现的结症。对于老师所说的分发成果的例子,我觉得这样(27%、25%、25%、23%)最好,最高的是思想和框架的设计,其次是软件,再次是焊接电路板的,最后是整体检测结果的。这个分配可能不符合我们组情况,因为最后一步卡住正确结果。所以针对这种情况,每个人在原有的基础上都减少0.5%,共计2个百分点,作为自由分配项。当然这个权利在我的手里,可以根据每个人的情况决定5个百分点的分配

12、(可以是一个人的,也可以是两个人的,当然更可以是三个或者整个团队均分)。那么最后的分配方式就是:整体思想和框架设计26.5%;软件设计24.5%;硬件焊接布线24.5%;检测调试22.5%;自由分配点2%。在这次课程设计中,我主要负责检测调试的任务。对于这次课程设计,总体感觉挺遗憾的,因为我们组没有出结果,对此,我觉得我的责任很大。在硬件焊接完成并下载进去程序后,发现结果出不来。在反复研究程序和仿真图之后,发现两者都没有问题,然后又多次检查板子,测试是否是焊接的问题,发现焊接也没有问题,之后就陷入了困境。然后又经过反复检测程序和硬件焊接,解决了数码管显示数字暗并且不稳定的问题,但最后还是很遗憾

13、的没有出结果。但是,在这次课程设计中,我还是学到了很多东西,不仅是关于数电、模电、单片机方面的,还有关于团队合作方面的。相信这些一定会是我以后工作和学习中的财富!在这次课程设计中,我主要负责了程序设计和ISIS仿真模块的任务。在最初的时候,我其实不知道如何下手,经过全组的讨论,我整体的把握了设计的方向与脉络。在此之后我自己在网上搜集资料,观看有关的教学视频,翻查教学课本,补充了这次课程设计需要用到的相关知识。在ISIS中把电路搭好以后,我先从显示入手,编写简单程序,让数码管显示预期的效果,之后再慢慢一步一步往下走。在此期间,我也遇到了一些问题,比如四个数码管只有三个显示,我在不断调试后添加了一

14、条switch语句,就解决了这一问题。再比如ADC0809的时钟脉冲我不知道如何在硬件中给出,请教了老师以后,知道了可以用上课时老师讲过的定时和中断来实现。在最后仿真顺利完成,队友们开始搭建硬件电路。电路完成,又出现了一些问题,排除线路等硬件的问题,我开始修改程序,后来发现,由于最后显示模块刷新的太慢造成了显示的不稳定,于是我又加入了三个display(),形成四个刷新模块一起顺序执行,就顺利的一次性将四个数码管的显示刷新完毕,从而解决了这一问题。虽然在最后我们没有得到想要的最终结果,但是我在这次课程设计中,学到很多,我知道了如何在调试中发现错误,解决问题,学会了如何团队合作,如何在仿真与实际

15、不一致的情况下用实际电路反观程序,调整问题。这次课程设计的收获,将成为我以后学习与工作的宝贵财富。通过这次课程设计,我们学习了一些关于单片机和传感器方面的知识,在课程设计过程中,我们小组遇到了许多问题,在仿真过程,虽然仿真没出问题,但是在焊板子和硬件调试,出现了比较大的问题,没有显示出想要的结果,经过两星期的课程设计,最终还是没有结果,让我们感到非常遗憾。在焊板子时,布线不是很好,导致格局有点凌乱,以后要注意这方面的细节处理。通过这次课程设计,我们四人小组的共同努力下,还是取得了一些成果,让我们意识到我们本身的不足。八、参考文献1 彭介华编.电子技术课程设计指导M.北京:高等教育出版社,19972 张建华主编.数字电子技术M.第2版.北京:机械工业出版社,20003 常健生主编.检测与转换技术M.第3版.北京:机械工业出版社,20034 张毅刚主编.单片机原理及应用M.北京:高等教育出版社,2003

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1