




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 西安邮电大学单片机课程设计报告书液位监测系统专业:班级:姓名(学号): 液位监测系统一、设计目的1. 采用单片机、ADC0809、压力传感器为主要器件,设计水深检测系统;2. 通过本次课程设计加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解;3. 掌握定时器、外部中断的设置和编程原理;4. 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。二、设计要求1.压力传感器输出为4-20mA电流信号,通过转换电路把其转换为电压信号;2.处理模拟信号并显示其实际水的深度数值。三、设计器材器件个数器件个数STC89C521晶振(12M)1ADC0
2、809133PF电容1RESPACK-811K电阻19012型三极管410K电阻1开关1液位传感器14位数码管1底座1四、设计方案及分析1. 单片机最小系统电路单片机最小系统电路如图1所示,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。图1 单片机最小系统2. 时钟电路STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19脚(XTAL1)为振荡器反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大
3、器的输出端。在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。晶振频率为12MHz,电容大小为33pF,时钟电路如图所示。图2 时钟电路(晶振)3. 复位电路STC89C52的复位是由外部的复位电路来实现的,复位电路通常采用上电复位和按钮复位两种方式,本设计采用的是最按钮复位电路,其电路图如图所示。图3 复位电路4数码管显示电路LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示ag为数字和字符显示段,h段为小数点显示,通过ag为7个发光段的不同组合,可以显示09和AF共16个数字和字母。
4、LED可以分为共阴极和共阳极两种结构。共阳极结构即把8个发光二极管阳极连在一起。这种装入数码管中显示字形的数据称字形码,又称段选码。本设计用到的是LED显示器静态显示方式,其电路如图所示是发光二极管显示器(LED)的结构、工作原理及接口电路。图4 数码管电路五、问题分析与解决方法问题1数码管开始显示暗并且数字总是在跳动。 这个问题的结症严格意义上说没有得出答案。当时数码管(共阳)位控,我们用的是9014号PNP型三极管,现象时显示结果暗淡并且跳动。我们没有怀疑三极的问题而是把目标一致对准焊接电路,反复检查没有问题(检查方法:该通的地方通,不该通的地方不通),即使这样也没有解决问题,最后根据数码
5、管显示暗淡一个现象,就猜想通过字样各段的电流小。试着调整三极管的放大倍数,将一个9014型三极管替换成9012型,结果成功了。最后,我试着测试了一下9012和9014的方法倍数,结果显示9012的放大倍数比9014的大100左右。问题2 即使更换了三极管,数码管显示数字仍然在不停地闪动。这个问题在硬件上已经改变了,相信硬件在显示方面不会出现问题,只能把目标哦对准软件的方面。最初的主程序没有防止电压微小跳动而导致显示转换结果不稳定的,最懂显示结果微小跳动。程序每走一遍,数码管就显示结果就刷新一遍。那么我们就想,在电压输入电相同的情况下,那么记录上次的转换结果,如果本次转换结果与上次的相同,就不需
6、要刷新显示数据,反之,则刷新。这样的想法,促使我们使用了如下关键语,这样显示数组a不需要每次刷新,只是在数据变化的情况下刷新。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。这个问题没有找到确定的答案。最初怀疑软件,因为硬件电路在开始时已经仔细检出过,而且是不同的人独立检查的(这样利于发现问题,防止可能已犯误人把其他人引入定势思维),但是最终没有发现问题,只能把目
7、光投向软件。软件中AD0809工作需要整脉冲,上升沿是各个寄存器复位,下降沿AD0809开始工作。我们给模拟正脉冲的程序加入了延时程序(st=0;delayus();st=1;delayus();st=0;delayus();),但是这样也没有改变结果。问题4. 检查硬件发现可能是AD0809没有工作,但是一直找不出来问题。这个问题从始至终都没有找到确切的答案,只是有基于上个问题的一些想法。上个问题中,模拟输入电压在接入5V,数码管显示165,在接入0V显示65,显示结果不是很稳定,但是显示如上结果的概率在95%。最初我们猜想是其他问题,因为输入5V和0V数转换的结果在变化,说明数码管工作了。
8、在过少次检查机想象中,都没能找到问题。我们就试着改变了输入模拟电压,用两个相同的电阻分压,得到了2.5V模拟输入电压,但令我们惊讶的是现实结果没有变,而是接近5V的显示结果,甚至一样。那么,AD0809一定没有工作,显示的只是初始化得乱码。我们再次仔细检查了电路,没有发现问题。经过我们小组几次讨论,得出如下结论:AD0809本身可能就是坏的!六、设计结果1.方案图电压前置放大电路 模数转换数码管显示单片机处理液位传感器2.总体电路原理图3.软件流程图数码管显示开始数码管的初始化定时器中断、0809初始化读取0809转换结果N继续等待0809转换结果结束4.软件设计#include <re
9、g52.h>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 ADDR0=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,
10、0x90;void delay()/延时子函数uint16 i,K;for(i=1;i>0;i-)for(K=50;K>0;K-);/*void delayus()unsigned int i=1000;while(i>0)i-;*/void diplay()switch(j)case 0:ADDR0=1;ADDR1=1;ADDR2=1;ADDR3=0;j+;P0=tablea0;delay();/显示第一位数码管break;case 1:ADDR0=1;ADDR1=1;ADDR2=0;ADDR3=1;j+;/显示第二位P0=tablea1;delay();break;cas
11、e 2:ADDR0=1;ADDR1=0;ADDR2=1;ADDR3=1;j+;P0=tablea2;delay();/显示第三位break;case 3:ADDR0=0;ADDR1=1;ADDR2=1;ADDR3=1;j=0;P0=tablea3;delay();/显示第四位break;default:break;void timer0() interrupt 1 flag=flag;clock=flag; main() uint16 temp1=P1,temp=P1; TMOD=0x02; TH0=0xff;TL0=0xff; TR0=1; EA=1; ET0=1; while(1)st=0
12、;delayus(); /给start一个上升沿脉冲,将内部所有寄存器清零st=1;delayus();st=0;delayus();/给start一个下降沿脉冲,开启AD转换while(!eoc);/转换结束标志 oe=1; /允许输出转换后的数据 delayus();temp1=P1; /定义temp,用于表示从ADC来的数据的各个位oe=0; delayus();if(temp!=temp1)temp=temp1; a0=temp%10; a1=(temp/10)%10;a2=(temp/100)%10;a3=temp/1000;diplay();diplay();diplay();di
13、play();七、设计体会与收获:课程设计已经结束了,总的结果是我们组的结果没有做出来。实话说,我觉得我们组尽力了,想进各种办法都没有结果。我对结果是一个重视的人,当时心情低落。在这次课程设计中,我是组长,结果没有出来,我觉得不是知识的缺乏,而是合作不佳,任务倒是分配好了,但是各份工作之间的衔接不是很融洽。这可能就是结果没有出现的结症。对于老师所说的分发成果的例子,我觉得这样(27%、25%、25%、23%)最好,最高的是思想和框架的设计,其次是软件,再次是焊接电路板的,最后是整体检测结果的。这个分配可能不符合我们组情况,因为最后一步卡住正确结果。所以针对这种情况,每个人在原有的基础上都减少0
14、.5%,共计2个百分点,作为自由分配项。当然这个权利在我的手里,可以根据每个人的情况决定5个百分点的分配(可以是一个人的,也可以是两个人的,当然更可以是三个或者整个团队均分)。那么最后的分配方式就是:整体思想和框架设计26.5%;软件设计24.5%;硬件焊接布线24.5%;检测调试22.5%;自由分配点2%。:在这次课程设计中,我主要负责检测调试的任务。对于这次课程设计,总体感觉挺遗憾的,因为我们组没有出结果,对此,我觉得我的责任很大。在硬件焊接完成并下载进去程序后,发现结果出不来。在反复研究程序和仿真图之后,发现两者都没有问题,然后又多次检查板子,测试是否是焊接的问题,发现焊接也没有问题,之
15、后就陷入了困境。然后又经过反复检测程序和硬件焊接,解决了数码管显示数字暗并且不稳定的问题,但最后还是很遗憾的没有出结果。但是,在这次课程设计中,我还是学到了很多东西,不仅是关于数电、模电、单片机方面的,还有关于团队合作方面的。相信这些一定会是我以后工作和学习中的财富!:在这次课程设计中,我主要负责了程序设计和ISIS仿真模块的任务。在最初的时候,我其实不知道如何下手,经过全组的讨论,我整体的把握了设计的方向与脉络。在此之后我自己在网上搜集资料,观看有关的教学视频,翻查教学课本,补充了这次课程设计需要用到的相关知识。在ISIS中把电路搭好以后,我先从显示入手,编写简单程序,让数码管显示预期的效果
16、,之后再慢慢一步一步往下走。在此期间,我也遇到了一些问题,比如四个数码管只有三个显示,我在不断调试后添加了一条switch语句,就解决了这一问题。再比如ADC0809的时钟脉冲我不知道如何在硬件中给出,请教了老师以后,知道了可以用上课时老师讲过的定时和中断来实现。在最后仿真顺利完成,队友们开始搭建硬件电路。电路完成,又出现了一些问题,排除线路等硬件的问题,我开始修改程序,后来发现,由于最后显示模块刷新的太慢造成了显示的不稳定,于是我又加入了三个display(),形成四个刷新模块一起顺序执行,就顺利的一次性将四个数码管的显示刷新完毕,从而解决了这一问题。虽然在最后我们没有得到想要的最终结果,但是我在这次课程设计中,学到很多,我知道了如何在调试中发现错误,解决问题,学会了如何团队合作,如何在仿真与实际不一致的情况下用实际电路反观程序,调整问题。这次课程设计的收获,将成为我以后学习与工作的宝贵财富。:通过这次课程设计,我们学习了一些关于单片机和传感器方面的知识,在课程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量工程师考试信息整合试题及答案
- cnf成交方式合同范例
- 2025钢筋工程班组合同
- 乡村门窗维修合同范例
- 专项保洁合同范例
- 2025-2030年中国二硼化镁电源行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国主控切换台行业市场现状供需分析及投资评估规划分析研究报告
- 专业纸箱购销合同范例
- 2025-2030年中国丝兰提取物材料行业市场现状供需分析及投资评估规划分析研究报告
- 兑宾馆合同范例
- Fe3+-Bi3+混合溶液各含量的测定
- 洗煤厂安全风险分级管控及隐患排查治理体系资料
- 国际大酒店弱电智能化设计方案
- 电路(1)智慧树知到答案章节测试2023年山东大学
- 毫针刺法技术操作规程
- 基于stm32的智能小车设计毕业设计论文
- 2023年中国国际工程咨询有限公司招聘笔试题库及答案解析
- 4.5《热在水中的传递》练习题(含答案)
- 公务员职级参公人员职级套转表
- 外周介入基础知识课件
- 友商分析-中软吉大信息技术
评论
0/150
提交评论