欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新《单片机课程设计》报告水塔水位控制系统.doc

    • 资源ID:48044628       资源大小:2.58MB        全文页数:62页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新《单片机课程设计》报告水塔水位控制系统.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date单片机课程设计报告水塔水位控制系统北京理工大学珠海学院 机械与车辆学院单片机课程设计报告(2012-2013学年第一学期) 课程设计题目:水塔水位控制系统姓名:学号:210404021045 班级:00机械电子工程33班指导老师:chenlaoshi时间:2013年 1 月14日2013年 1 月25日成绩: 目录一、 课程设计性质和目的2二、 课程设计的内容及要求2三、 课程设计的进度及安排3四、 设计所需设备及材料3五、 设计思路及原理分析4六、 流程图及程序编写5七、 调试运行8八、 结果及分析9九、 心得体会10十、 参考文献10十一、 致谢11十二、 附录.11一、课程设计性质和目的 这次课程设计水塔水位控制是继这学期我们学习的单片机原理与接口技术课程与实验结束后的一门综合性实践课,让学生初步尝试把理论与实践结合,培养了学生的实践能力。水塔水位控制设计需要紧密结合所学的知识,在参阅相关资料中,可以加深、巩固所学知识,同时也拓宽了知识面,有一定的深度和广度,能充分发挥学生的能动性和想象力。通过电路设计、安装、调试等一系列环节的实施,提高学生的单片机应用系统的设计能力。二、课程设计的内容及要求1、硬件设计(1)用80C51设计一个单片机最小控制系统。其中P2.0接水位下限传感器,P2.1接水位上限传感器,P2.2输出经反相器后接光电耦合器,通过继电器控制水泵工作,P2.3输出经反相器后接LED,当出现故障时LED闪烁;P2.4输出经反相器后接蜂鸣器,当出现故障时报警。(2)用塑料尺、导线等设计一个水塔水位传感器。其中A电级置于水位10CM处,接5V电源的正极,B级置于水位15CM处,经4.7K下拉电阻接单片机的P1.0口,C电级置于水位的20CM处,经4.7K下拉电阻接单片机的P1.1口。(3)设计一个单片机至水泵的控制电路。要求单片机与水泵之间用反相器、光电耦合器和继电器控制,计算出LED限流电阻,接好继电器的续流二极管。2、软件设计(1)根据功能要求画出控制程序流程图。(2)根据控制程序流程图编写80C51汇编语言或C51程序3、功能要求:(1)水塔水位下降至下限水位时,启动水泵,水塔水位上升至上限水位则关闭水泵。(2)水塔水位在上、下限水位之间时,水泵保持原状态。(3)供水系统出现故障时,自动报警。三、课程设计的进度及安排 序号项              目时   间1布置课程设计任务、讲授焊接基本知识1天2水塔水位控制总体方案设计、仿真器使用1天3硬件设计和制作1天4硬件制作和调试1天5Protel99的使用1天6软件设计和软件调试1天7综合调试1天8整体调试1天9检测验收、写课程设计报告1天10答辩1天表1 课程设计的进及安排表四、设计所需设备及材料元件名原 理 图 工作原理个数 继电器SRD-12VDC-SL-C 线圈通电产生磁场,吸附开关,使常闭端打开,闭合与常开端; 11光电藕合器4n25输入的电信号驱动发光二极管,使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步的放大输出,实现电光电的转化 1PNP 三极管 9015C PNP三极管用作开关,当基极电位低于发射极电位是三极管导通 1二极管单向导通,保护继电器; 1 电阻 2202 电阻 4.7k1 电阻 1k 1表2 设计所需设备及材料表五、设计思路及原理分析水塔水位控制原理图见图1,图中两条虚线表示正常工作情况下水位升降的上下限,在正常供水时,水位应控制在两条虚线代表的水位之间。B测量水位下限,C测量水位上限,A接+5V,B、C接地。图1 水塔水位检测原理图在水塔无水或水位低于下限水位时,B、C为断开,B、C两点电位为零(低电平“0” ),需要水泵供水,单片机输出低电平,控制电机工作供水。水位上升到B点,B接通,B点电位变为高电平“1”,C开关仍断开,C点仍为低电平,维持现状水泵继续供水。当水位上升到C点时,C接通。这时B、C均接通,B、C两点都为高电平,表示水塔水位已满,需水泵停止供水,单片机输出高电平,电机断电停止供水。水塔水位开始下降,水位在降到B点之前,B点电位为高、C点电位为低,单片机输出控制电平维持不变,仍为高。当水位降到B点以下,B、C两点电平都为低时,单片机输出控制电平又变低,水泵供水。如图2:用80C51设计一个单片机最小控制系统。其中P1.0接水位下限传感器;P1.1接水位上限传感器;P1.2输出经Q0电流放大后接光电耦合器,接通继电器,带动电机控制水泵工作;P1.3输出经反相器后接LED,当出现故障时LED闪烁;P1.4输出经反相器后接蜂鸣器,当出现故障时报警。用塑料尺、导线等设计一个水塔水位传感器。其中A电极置于水位10cm处,接5V电源的正极;B电极置于水位15cm处,经5.1K的下拉电阻接单片机的P1.0口;C电极置于水位20cm处,经5.1K的下拉电阻接单片机的P1.1口。 图2 水塔水位控制硬件图两个水位信号由P1.0和P1.1输入,这两个信号共有四种组合状态。如表3所示。其中第三种组合(b=1、c=0)正常情况下是不能发生的,但在设计中还是应该考虑到,并作为一种故障状态。表3 水塔水位信号状态表C(P1.1)B(P1.0)操作00电机运转01维持原状10故障报警11电机停转六、流程图及程序编写 图3 软件流程图单片机控制程序: #include <reg52.h>sbit b=P20;把P2.0定义为b;代表B传感器;sbit c=P21;把P2.1定义为c;代表C传感器;sbit d=P22;把P2.2定义为d;代表电机控制端;sbit led=P23;把p2.3定义为led;代表警报灯;sbit fly=P24;把P2.4定义为fly;代表蜂鸣器;void delay() 延时函数;延时1s unsigned char i; for (i=0;i<20;i+) TH1=15536/256; TL1=15536%256; TR1=1; while(!TF1); TF1=0; void main() TMOD=0x10;设置工作方式T1; P2=0xfc;给P2口赋初值; if(c=0) C传感器为低电平,电机控制端赋低电平; d=0; if(c=1) C传感器为高电平,报错,报警灯和蜂鸣器工作; led=0; fly=0; if(b=1&&c=1) B,C传感器同时为高电平时,电机控制端为高电平,电机停转,报警灯,蜂鸣器不工作; d=1; led=1; fly=1; delay();注:未运行的界面; 图4 proteus仿真图注:B,C同时为低电平,电机正常工作! 图5 proteus仿真图七、调试运行 1、软件测试:运用Protul软件进行仿真检验。在元件库中找到所需要的元器件,把它们按照原理图的构想依次连接起来,反复检查线路会不会出错。待画完图,就可以开始仿真电路图了。给单片机导入预先编程好的程序“.hex”文件,点击仿真。仿真图可以运行,但是电机在B,C都为低电平的情况下没有运转。说明电路有部分地方短路或者断路了,观察仿真图中的电位情况也许可以找到问题的所在。经过多次的检查发现,各点的电位并没有像想象中的那样有什么不妥。现在就要搞清楚仿真中的元器件的所有主要参数是否和实际的参数相符合。查看资料,对于继电器,它本身的线圈电阻是在400欧左右,在查看仿真中的元器件的参数,不难发现原始数据和实际相差很大,它给的是理想线圈,也就是没有内阻。这样就如预期的那样找到电机不转的原因了。原始数据没有进行改变;查找资料,得知光电耦合器的发光二极管的压降为1.151.5v,最大电流为60mA,电流传输比CTR为20%70%。通过已知的条件求出每条线路上所需要的电阻大小。对各各元器件的初参数设置完毕,启动仿真,整体像想象中的那样正常工作!软件仿真结束,仿真图里的数值引用到实际电路的焊接中。2、硬件测试:焊接完整体的板件,开始测试板子电路是否能够完成所需要的功能。应为电路的原版是根据仿真电路出来的,所以不一定能够一次性就完成设计。对于板子上的元器件来说,有两个是特别容易烧掉的,PNP三极管和4N25光电耦合器。因为它们的工作电压较低和工作电流很小,所以要特别的注意。虽然已经给了足够的保护还是不能太掉以轻心要是烧了就没有其他器件可以换了。首先,测试光电耦左边能否正常工作。把三极管的B极接于低电平,给予E极高电平,测试两管脚之间的电压降是多少。经测试三极管正常工作,可是光电耦合器的1,2管脚的电压异常偏高。断去电源,用万用表的测试端测试1,2管脚是否击穿,发现并没有完全短路,有可能是封装的时候没有装好。其次,测试光电耦合器右端是否能正常工作。给继电器加上12v的电压,用导线短接光电耦合器的4,5号管脚,继电器能发出啪啪声,也就是说明光电耦合器右端能够正常工作。再次,对整块板进行调试。给光电耦合器两边电路都通上电,给三极管的B端输入一个低电平,继电器不工作。说明光电耦合器无法工作。应当更换光电耦合器;换完光电耦合器后的检测。换完光电耦合器后进行整块板子的调试,给三极管B极一个低电平继电器能够工作。插到单片机上给一个周期性的低电平,继电器能够周期性的发出啪啪声,整体调试通过!八、结果及分析最后电动机正常工作,达到预期的效果。图6 焊接电路板正反面照片九、心得体会这次课程设计,我学到的东西很多!可以说是先苦后甜,刚开始我先查阅了各个零件的资料,查阅了很多相关的程序进行了进一步的学习,整个过程就是从前期的懵懂-到一知半解,这个过程是艰难苦闷的,靠自己的学习和请教,请教了老师和同学终于在最后完成了这次课程设计。在设计过程也遇到问题,在电路设计完仿真出现了问题,改了很多次电机依然没动,继续参阅程序,百度,思考哪里可能有问题,后来对虚拟器件进行参数设定后慢慢的一个一个的问题给解决,电机动起来的时候,那是发自内心真正的快乐!一切变得都是值得的!解决了仿真,开始了板子焊接,认认真真的焊接,经过几个小时的奋斗结束了焊接,高兴了不过几分钟,因为硬件的调试没有成功!用万能表查时候短路,虚焊······还是一直找不出原因。不甘郁闷了很久,没办法麻烦同学帮忙看看,在同学的帮助下终于查出是一处接错了,借了电烙铁回到宿舍继续焊接,修正了其他一些错误。这次课程设计终于圆满结束了!这次课程设计通过查找资料和实际的焊接解决问题,把理论的知识和实际运用紧密的联系在一起,让我们对元器件的各部分功能及其运用有了更深入的了解,锻炼了我们解决问题的能力,细心仔细,认真才能避免很多错误,我想生活也是一样,对待事情都应该用全身心态度投入的态度去做。十、参考文献1 高玉良.电路与模拟电子技术M.北京:高等教育出版社,2011.10. 2 龙治红,谭本军.数字电子技术M.北京:北京理工大学出版社,2010.73 王静霞.单片机应用技术M.北京:电子工业出版社,2009.5 4 徐玮.C51单片机高效入门M.机械工业出版社,2006.5 张永枫.单片机应用实训教程M.清华大学出版社,2008 6 龙治红.数字电子技术M.北京理工大学出版社,2010.7十一、致谢感谢chen老师在这两周来的尽心照顾,感谢您的耐心指导和解答。同时也要感谢给予我帮助的同学,尤其是哥在自己已经很忙的情况下,还帮我查电路,解答,能够完成这次设计没有他是不可能的,感谢哥! 十二、 附录将编程练习题,数字时钟设计的分析及完整程序附上,程序必须加上注释;将protel仿真练习题,protel原理图及仿真结果图附上,并进行相应的分析。1.整流器按如图所示要求,建立protel仿真原理图,要求仿真显示、和的波形,同时改变值的大小,观察波形的变化。图7 整桥仿真图 图8 改变电容后的仿真图2.数字时钟内容要求:1. 用7段8位的LED数码管设计出一个数字时钟,要求显示分(2位)、秒(2位)及十分之一秒即0.1秒(1位)。按下启动按钮启动数字时钟,按下停止按钮暂停计时,当再次按下启动按钮时,从当前值继续计时,当按下复位按钮时,时钟复位。2. 通过设定定时按键,对时钟的分钟进行设定,每按一次,分钟设定加1,开始时,LED灯D1处于熄灭状态,当启动计时后,计时到达设定时间,时钟复位,且LED灯D1处于一直亮的状态。 图8-1 数字时钟在protues软件中按图8-1,建好实验电路图。按要求编写程序。 图9 数字时钟仿真图程序如下:#include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar shuzi=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /是数码管的段选,数组里边的分别表示:0123456789uchar weixuan=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; / 是数码管的位选 sbit k1=P30; /启动sbit k2=P31; /复位sbit k3=P32; /停止sbit d1=P00; /LED灯uint i,second,minute,n,x,b,c,a,flag1,flag2;void delay(uchar i); /延时函数void shizhong(); /显示数字时钟void dingshi(); /用于定时分钟函数void delay5ms(); /定时5MS用于按键的消抖void shizhong(); /时钟控制函数,包括对时钟的启动,复位,停止,设定设定的操作void main() TMOD=0x12; / 定时器1工作方式1和定时器0工作方式2 TH1=(65536-50000)/256; / 定时时间为50MS 设初值 TL1=(65536-50000)%256; / TR1=0; /开定时器1 EA=1; /开总中断 ET1=1; /开定时器T1允许位 EX1=1; / 开放外部中断0允许位 IT1=1; / 置外部中断为边沿(下降沿)触发方式 P2=0x00; /P2口为段选 P1=0xff; /P1口为位选 while(1) shizhong();shizhong();void dingshiqing1() interrupt 3 /用定时器1 中断号为3 TH1=(65536-50000)/256; /定时时间为50MS TL1=(65536-50000)%256; / i+; /if(i=2) /100ms到,即0.1秒,即0.1秒加1 i=0; n+; if(n=10)/1000ms到,即1秒,秒加1,后n要清零 n=0; second+;if(second=60) / 60秒到,即分钟加1,后秒要清零 second=0; minute+;if(minute=60) / 60分钟到,分钟要清零 minute=0; void weidu1() interrupt 2 /外部中断1 unsigned int z; flag1=1; / b=second; c=n; a+; if(a=60) a=0; for(z=0;z<40;z+) dingshi(); void delay(uchar i) unsigned char j,k; for(k=0;k<i;k+) for(j=0;j<255;j+);void shizhong() P1=weixuan6; P2=smg_dun; /显示时钟的0.1秒位 delay(2); P1=weixuan5; P2=0x40; / "-" delay(2); P1=weixuan3; P2=smg_dusecond/10; /显示时钟的秒的十位 delay(2); P1=weixuan4; P2=smg_dusecond%10; / 显示时钟的秒的个位 delay(2); P1=weixuan2; P2=0x40; / "-" delay(2); P1=weixuan0; P2=shuziminute/10; / 显示时钟的分钟的十位 delay(2); P1=weixuan1; P2=shuziminute%10; / 显示时钟的分钟的个位 delay(2); void dingshi() P1=weixuan6; P2=0x00; delay(2); P1=weixuan5; P2=0x00; delay(2); P1=weixuan3; P2=0x00; delay(2); P1=weixuan4; P2=0x00; delay(2); P1=weixuan2; P2=0x00; delay(2); P1=weixuan0; P2=smg_dua/10; / 显示时钟的分钟的十位 delay(2); P1=weixuan1; P2=smg_dua%10; / 显示时钟的分钟的个位 delay(2); void shizhong() if(a=minute)&&(b=second)&&(c=n)/ 判断是不是到了定时的时间 if(flag2=1) /flag2为标志位,是在按K1启动的时候启动定时的 flag2=0; d1=0; /到了定时时间LED灯亮 minute=0; /时钟复位,即分钟,秒,0.1秒都清零 second=0; / n=0; / if(k1=0) /判断是不是要启动时钟 delay5ms(); /延时消抖if(k1=0) TR1=1;/开定时器1 if(flag1=1) /设标志位,只有在按下定时按键才进入这个函数 flag1=0; flag2=1; if(k2=0) / 判断是不是要对时钟进行复位 delay5ms();if(k2=0) n=0;second=0;minute=0; if(k3=0)/判断是不是要对时钟进行停止 delay5ms();if(k3=0) TR1=0; /关定时器1 while(!k3);/ void delay5ms() uint y; TH0=6; TL0=6; for(y=0;y<20;y+) TR0=1; while(!TF0);-

    注意事项

    本文(最新《单片机课程设计》报告水塔水位控制系统.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开