水深测量系统_第1页
水深测量系统_第2页
水深测量系统_第3页
水深测量系统_第4页
水深测量系统_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安邮电大学单片机课程设计报告液位监控系统专业:类别:名字(学名):液位监控系统一、设计目的1 .以单片机、ADC0809、压力传感器为主要设备,设计水深测量系统2 .通过本次课程设计加深对单片机课程的全面认识和把握,进一步了解单片机课程的应用3 .掌握定时器、外部中断的设定和编程原理4 .通过本次课程设计,可以结合单片机的硬件和软件,编辑和验证程序。二、设计要求1 .压力传感器的输出为4-20mA的电流信号,通过转换电路转换为电压信号2 .处理模拟信号并显示其实际水深数值。三、设计器材装置个数装置个数STC89C521石英振子(12M )1ADC0809133PF电容器1RESPACK-8战斗机11k电阻19012型晶体管410K电阻1开关1液位传感器1四位数字编码管1台座1四、设计方案与分析1 .单片机最小系统电路如图1所示,单片机的最小系统电路包括三个部分:主STC 89至c 52、时钟电路和复位电路。 单片机STC 89至STC 52用作核心控制器来控制整个系统的操作,并且时钟电路负责生成单片机操作所需的时钟信号,复位电路使得单片机正常操作、有序并且稳定操作。图1单片机最小系统2 .时钟电路在STC89C52单片机的内部设置有由倒相放大器构成的振荡器。 第19 (xtal1)条是振荡器反转放大器和内部时钟发生电路的输入端子。第18 (xtal2)条是振荡器反转放大器的输出端子。 在XTAL1和XTAL2端子上安装定时部件后,内部振荡电路会自动振荡。 本系统采用的定时器件是由石英晶体(石英振子)和电容器构成的并联谐振电路。 石英振动的频率是12MHz,电容大小是33pF。时钟电路如图所示。图2时钟电路(石英振子)3 .复位电路STC89C52的复位通过外部的复位电路来实现,复位电路通常采用上电复位和按钮复位这两种方式,设计者采用最多的按钮复位电路,该电路图示出了该复位电路。图3复位电路4 .数字编码管显示电路LED也称为数码管,是主要由8级发光二极管构成的不同组合,ag是数字和文字显示级,h级是小数点显示,ag是7个发光级的不同组合,能够显示09和AF共计16个数字和文字。 LED可分为共阴极和共阳极两种结构。 公共阳极结构连接8个发光二极管的阳极。 嵌入在这种数字码管中的表示字形的数据也称为字形码,段选择码。该设计采用LED显示器静态显示系统,其电路图示出了发光二极管显示器(LED )的结构,操作原理以及接口电路。图4数字编码管理电路五、问题分析和解决办法问题1数码管开始变暗,数字始终在跳动。这个问题的结核从严格的意义上来说没有得出答案。 当时的数码管(共阳)的位控制,使用了9014号PNP型晶体管,现象时结果暗而跳动。 我们不怀疑三极的问题,使目标一致对准焊接电路,重复检查也没有问题(检查方法:这条路通,不通的地方不通),即使这样问题也没有解决,最后由于数字管显示暗现象,通过字各段的电流小试着调整晶体管的倍率,将9014型晶体管置换为9012型,成功。 最后,试验9012和9014的方法的倍数发现,9012的倍数大于9014的大约100。问题2即使更换晶体管,数字代码管仍然闪烁着数字。这个问题在硬件上变了。 相信硬件在显示方面没有问题,只能将目标对准软件方面。 最初的主程序没有防止电压稍微振荡,显示的切换结果变得不稳定,最近得知显示结果稍微振荡。 每当程序前进一次,数字代码管就会显示结果并更新一次。 所以,在电压输入功率相同的情况下,记录上一次的转换结果,如果此次的转换结果与上一次相同,则不需要刷新显示数据,如果相反,则会刷新。 这种想法不需要每次更新数组a,促使仅在数据发生了变化的情况下更新,使用如下关键字。Temp1=P1; /P1端口读取AD0809的转换结果temp!=temp1)temp=temp1;a3=temp/1000;a2=(temp/100) ) )a1=(temp/10) ) )a0=temp;以下称为问题3 .正确的显示范围为0255,但始终显示85165。这个问题没有找到确切的答案。 最初怀疑软件是因为硬件电路最初被慎重检测,另一个人独立检测(这样发现问题,有可能错误地将别人引入定势思维),但最终没有发现问题,所以只能着眼于软件。 在软件中,需要用于AD0809操作的整数脉冲,将各个寄存器复位,并且使得下降沿AD0809开始操作。 我们在模拟正脉冲的程序中加入了延迟程序(st=0; delayus (); st=1; delayus (); st=0; delayus (); 不过,结果不变。问题4 .检查硬件时,AD0809可能无法正常工作,但找不到问题。这个问题从头到尾没有找到正确的答案,只是基于以前的问题几个主意。 在上一个问题中,模拟输入电压为5V,编码管显示165,0 v中显示65,结果不太稳定,但显示上述结果的概率为95%。 最初我认为是另一个问题,但由于输入5V和0V的数值变换的结果发生了变化,所以说明了数字代码正在运行。 在过少检查机器的想象中,没能发现问题。 我们改变了输入模拟电压,用同样的电阻进行分压,试着得到了2.5V的模拟输入电压,但是现实的结果没有改变,对于是接近5V的显示结果感到惊讶。 那么,AD0809应该不工作,显示的只是初始化为乱码。 我们再次仔细检查了电路,但是没有发现问题。 我们小组讨论了几次,结果得出了AD0809本身可能不好的结论! 什么? 什么? 什么? 什么? 什么? 什么?六、设计结果1 .方案图电压前置放大器电路模数转换数字编码管显示表示不满单片机处理技术液面水平传书感觉器皿2 .整体电路图3 .软件流程图数字代码显示开始数字编码管的初始化定时器中断,0809初始化0809读取转换结果n继续等待0809转换结果结束4 .软件设计#includetypedef 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;代码单元8表 =0xc 0,0x ff 9,0x D4,0xb 0,0x99、0x92、0x82、0xf80x80、0x90;void delay()/延迟子函数装模作样uint16 i,k;for(i=1; i0; i- )for(K=50; K0; K-;以下称为/* void延迟us ()装模作样unsigned int i=1000;while(i0)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;case 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;delayus (); 向start提供上升沿脉冲,清除内部的所有寄存器st=1;delayus ();st=0;delayus (); 给start提供下降沿脉冲,打开AD转换while (! eoc; /转换结束标志oe=1; /允许输出转换后的数据delayus ();temp1=P1; 定义temp,从/,表示来自ADC的数据的各位oe=0;delayus ();temp!=temp1)装模作样temp=temp1;a0=temp;a1=(temp/10) ) )a2=(temp/100) ) )a3=temp/1000;以下称为diplay ();diplay ();diplay ();diplay ();以下称为以下称为七、设计体会和收获:课程设计已经结束了。 毕竟,我们小组的结果还没有出来。 老实说,我认为我们小组已经尽了最大努力。 我认为想各种方法也没有结果。 我是个重视结果的人,当时情绪很低落。 在这次的课程设计中,我是领导,没有结果,没有知识的不足,合作的不好,虽然被分配了任务,但是我觉得各个工作之间的联系不太融洽。 这可能是结果没有出现的结核病。 老师说的分发成果的例子,这样(27%,25%,25%,23% )是最好的。 最高的是思想和框架的设计,其次是软件,再次焊接电路板,最后是整体的检查结果。 这个分配可能不符合我们小组的情况。 因为最后一步会压制正确的结果。 因此,在这种情况下,各人在原来的基础上减少了0.5%,共减少了2个百分点,作为自由分配项目。 当然,这个权利是我的手,可以根据每个人的情况决定5分的分配(一个人也可以是两个人,当然是三个人也可以是整个队)。 最后分配方式为总体思想和框架设计26.5%; 软件设计24.5%; 硬件焊接配线24.5%; 检查调整22.5%; 自由分配点2%。:在本次课程设计中,我主要检查调试任务。 关于这次的课程设计,遗憾的是我们小组没有结果,我觉得责任很大。 我们发现软硬件焊接完成后下载程序不会产生结果。 反复研究程序和仿真图发现两者均无问题后,多次检查板,测试是否存在焊接问题,发现焊接也无问题后,陷入困境。 之后,重复程序和硬件的焊接,解决了数码管的数字暗不稳定的问题,最后遗憾的是没有结果。 但是,在这次的课程设计中,我学到了很多东西,不仅学到了数字、压力机、单片机,还学到了团队合作。 我相信这一定会成为我工作和学习的财富!:在本次课程设计中,我主要负责编程和ISIS仿真模块的任务。 刚开始的时候,我不知道如何实际着手,但是经过整个小组的讨论,我总体上把握了设计的方向和脉络。 之后,我自己在网上搜集资料,看了相关的教育录像,查阅了教育教科书,补充了这次课程设计所需的相关知识。 用ISIS制作电路后,我先从显示开始,制作简单的程序,显示数字管理所期待的效果,然后慢慢下去。 在这期间,我遇到了一些问题。 例如,4个数字管只显示了3个,我不断调试后添加switch文件,解决了这个问题。 另外,不知道如何在硬件中提供ADC0809的表脉冲。 在老师的教导下,我知道了在课堂上老师说话的时机和中断是可以实现的。 最后仿真顺利完成,队友们开始构建硬件电路。 电路完成后又发生了一些问题,开始修改程序以消除电路等硬件问题,最后发现显示模块的刷新速度慢导致显示不稳定,我还添加了3个display (),将4个刷新模块分别连接到最后我们没有得到希望的最终结果,但在这次的课程设计中,我们学

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论