欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    课程设计(论文)-单片机课程设计温度控制.doc

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

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

    课程设计(论文)-单片机课程设计温度控制.doc

    浙江传媒学院课程设计(实训)报告 温度控制的日 期: 2011年 03月27日目 录1 概述.31.1 课程设计的目的. 31.2设计的要求.32 课程设计原理及内容.4 2.1 课程设计原理.4 2.2 课程设计内容.93 课程设计结果.104设计心得体会.105附1源程序代码.116附2参考文献.217评阅意见.21l 概述1.1 课程设计的目的1) 训练学生如何综合运用学过的卢纶和技能去分析结局事迹问题,加上理论的理解。2) 增强学生的实践能力和创新能力3) 使学生掌握微机系统以及常用接口电路的设计及调试方法。4) 掌握常用工具软件的使用方法5) 通过课程设计训练学生如何综合运用所学知识去分析解决事迹问题。6) 培养学生严谨的工作作风和科学态度。2.1 课程设计的要求1) 设计一个温度控制系统2) 该温度控制系统可以将温度控制在一个温度范围之内3) 温度显示在数码管上,精确到小数4) 该范围可以通过系统中的键进行修改5) 温度一旦快到达上下限的温度时,蜂鸣器报警6) 蜂鸣器有简单的音乐l 课程设计原理及内容1.1 课程设计原理 A. 硬件部分本次课程设计的题目是温度控制系统,硬件部分本设计主要是对温度进行监测与控制,主要控制器件是单片机89S51。首先温度传感器DS1820对温度进行采样和转换,将测量结果送给单片机,单片机将输入的温度值与内部指定单元的给定温度值进行比较,根据比较结果,通过执行温度传感器加热源的开断状态进行控制。温度显示与设定体现在3个八段共印数码管。下图为系统原理框图。 图1 图2 硬件设计图从各个部分分析看:I)、 图为晶振电路,采用12MHZ晶振 图3 晶振电路II)、 图为复位电路。 图4 复位电路III)、温度传感器DS1820信号线接P3.7口,con口接P3.5,这一部分主要完成对温度信号的采集和转换工作和加温工作。由于采用了该芯片,温度测量电路变得非常简单。DS1820像三极管一样,有一根底线,一根信号线和一根电源线,而信号线与IO口P3.7的相连,就能实现单片机对DS1820模式控制,温度值读取等操作。 图5IV)、 显示电路采用4 位共阴极LED 数码管,采用动态扫描的方式显示,P1 口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。P0 口的高四位作为数码管的位选端。进而显示数字 图6V)、本系统采用四个按键来处理修改和显示上下限温度。S1和S2分别来加或减温度限值,当S3按下时,显示最高上限温度。再按一下显示下限温度。在S3被按下时,如果S1和S2被按下,则相应的加或减1,如果S4被按下,则加减的幅度变为3。 图7VI)、另外还有鸣器是由单片机89S51的P3.6口来驱动。通过高低电平的跳变,产生一个频率声音,从听觉上感觉就是一个蜂鸣声。可以通过改变跳变的频率来改变声音。B. 软件部分系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,按键扫描处理子程序等I) 程序流程图 图8II) 读出温度子程序读出温度子程序的主要功能是读出RAM 中的9 字节,在读出时需进行CRC 校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2 示 图9III) 计算温度子程序计算温度子程序将RAM 中读取值进行BCD 码转换运算,并进行温度值正负的判定。IV) 显示数据刷新子程序 显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。 图 10V) 按键扫描子程序按键采用扫描查询方式,设置标志位,检测SET键是否被按下,当标志位为1 时,显示设置温度,否则显示当前温度。同时设定一个变量a,a为设置温度的量度,当另外一个键SET1见在显示设置温度是被检测按下的时候,a赋值为3,否则a=1。从而完成对温度的设置。 图112.1 课程设计内容1) 准备工作。查相关资料,了解要做的内容,准备好硬件图,了解各项功能。2) 编辑程序,录入程序,保存为.C格式。3) 编译和修改程序,存盘。4) 根据硬件图连线。5) 运行程序,检查功能是否能够正常运行,分部分排查程序。6) 再通过老师的指点,加入其它的功能7) 编改程序,有必要还需查阅相关书籍。8) 编译,改错,运行。9) 经过反复的修改运行和调试,做出最后结果的单片机系统。l 课程设计结果经过一个星期的调试,能够正常的运行基本功能,可以通过温度感应器感应到外界的温度,显示当前温度,显示精确到小数。并通过判断是否在某个温度区间,若低于下限温度,则开始加热,若高于上限温度,则停止加热。并且在快到达上限温度时,蜂鸣器开始发出警告声,约等于20S,并发出3个连续不同的声音,当温度在下限的附近是,蜂鸣器做出同样的反应。而且本系统有四个按键,S1、S2、S3、S4,分别是加,减,选择,修改精度,的功能。当S3按1下时,显示上限温度,按2下是,显示下限温度。在此期间若S4被按下,则加减的精度从原来的1改为3。l 设计心得体会从周一开始回来查资料,到周五验收成功。中间虽然没有很长的时间,但是感觉受益匪浅。学的最最多的东西当然是对单片机这个系统的了解,所以说坐而言不如立而行,对于这样的系统还是亲自实践过才能够更加深刻的了解。 课程设计是能培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从接题到定稿,从理论到实践,在一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对于C语言的一些语句不是很了解,对单片机的知识也不是很透彻通过这次课程设计之后,一定把以前所学过的知识重新温故。最后感谢黄老师对我们的指导和认真负责,这次课程设计终于顺利完成了,虽然最后那个精度没有改成功,但是我们还是很认真的对待这一次实践。相信在以后运用单片机知识的地方这次的实践肯定会有所帮助。总之,我们学到了在课堂上学不到的东西,学会了团队合作,学到了更多关于单片机和单片机实践的知识。我们很感激。l 附录:程序清单#include "reg51.h"#include "intrins.h" /_nop_();延时函数用#define dm P1/段码输出口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /温度输入口sbit w0=P00; /数码管 4sbit w1=P01; /数码管 3sbit w2=P02;/数码管 2sbit w3=P03;/数码管 1sbit w4=P04;sbit w5=P05;sbit beep=P36; /蜂鸣器和指示灯sbit con=P35; /温度设置切换键sbit set1=P20;sbit set=P21;sbit add=P22;/温度加sbit dec=P23; /温度减uint temp1=0; /显示当前温度和设置温度的标志位为 0 时显示当前温度 uint h;uint temp;uchar r;uchar high=30.0,low=23.0 ;uchar sign;uchar q=0;uchar tt=0;uchar scale;uint a; uint b;/*温度小数部分用查表法*/uchar code ditab10=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09;/小数断码表uchar code table_dm12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; /共阴 LED 段码表/*"0""1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */ uchar table_dm1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/个位带小数点的断码表uchar data temp_data2=0x00,0x00; /读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00; /显示单元数据,共 4 个数据和一个运算暂用 /*11us 延时函数*/ void delay(uint t)while(t-);void scan()int j;for(j=0;j<4;j+)switch (j)case 0: dm=table_dmdisplay0;w0=1;delay(100);w0=0;/小数case 1: dm=table_dm1display1;w1=1;delay(100);w1=0;/个位case 2: dm=table_dmdisplay2;w2=1;delay(100);w2=0;/十位case 3: dm=table_dmdisplay3;w3=1;delay(100);w3=0;/百位 /defult:dm=table_dmb3;w3=0;delay(50);w3=1;/*DS18B20 复位函数*/void ow_reset(void)char presence=1;while(presence)while(presence)DQ=1;_nop_();_nop_();/从高拉倒低DQ=0; delay(50);DQ=1;delay(6);presence=DQ;delay(45);presence=DQ;DQ=1; /550 us/66 us/presence=0 复位成功,继续下一步/延时 500 us/拉高电平 /*DS18B20 写命令函数*/向 1-WIRE 总线上写 1 个字节 void write_byte(uchar val)uchar i;for(i=8;i>0;i-) DQ=1;_nop_();_nop_(); /从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();/5 usDQ=val&0x01;/最低位移出delay(2) ; /66 usval=val/2 ;/右移 1 位DQ=1;delay(1);/*DS18B20 读 1 字节函数*/从总线上取 1 个字节uchar read_byte(void)uchar i;uchar value=0;for(i=8;i>0;i-)DQ=1;_nop_();_nop_();value>>=1; DQ=0;_nop_();_nop_();_nop_();_nop_();/4 usDQ=1;_nop_();_nop_();_nop_();_nop_();/4 usif(DQ)value|=0x80;delay(2);/66 usDQ=1;return(value);/*读出温度函数*/read_temp() ow_reset();/总线复位delay(200);write_byte(0xcc);/发命令write_byte(0x44);/发转换命令ow_reset();delay(1);write_byte(0xcc); /发命令 write_byte(0xbe);temp_data0=read_byte();/读温度值的低字节temp_data1=read_byte();/读温度值的高字节temp=temp_data1; temp<<=8;temp=temp|temp_data0;/ 两字节合成一个整型变量。return temp; /返回温度值/*温度数据处理函数*/void work_temp(uint tem)uchar n=0; if(tem>6348) / 温度值正负判断tem=65536-tem;n=1; / 负温度求补码,标志位置 1display4=tem&0x0f; / 取小数部分的值display0=ditabdisplay4; / 存入小数部分显示值display4=tem>>4; / 取中间八位,即整数部分的值display3=display4/100; / 取百位数据暂存display1=display4%100;/ 取后两位数据暂存 display2=display1/10; / 取十位数据暂存display1=display1%10; /个位数据 r=display1+display2*10+display3*100;/符号位显示判断/if(!display3) display3=0x0a; /最高位为 0 时不显示if(!display2)display2=0x0a;/次高位为 0 时不显示if(n)display3=0x0b;/负温度时最高位显示"-" void buz() int y; for(y=1;y<b;y+) delay(10); beep=!beep;beep=0; void BEEP() /蜂鸣器报警子函数 if(r>high-1&&r<129)con=0;if(r<low)con=1; if(r=high-2) b=20;buz();else beep=0;if(r=high-1 ) b=40;buz();else beep=0; if(r=high-0 ) b=80;buz();else beep=0; if(r=low+2)b=80;buz();else beep=0;if(r=low+1)b=40;buz();else beep=0;if(r=low)b=20;buz(); else beep=0; /*设置温度显示转换*/void xianshi(int horl)int n=0;if(horl>128)horl=256-horl;n=1; display3=horl/100;display3=display3&0x0f;display2=horl%100/10;display1=horl%10;display0=0;if(!display3) display3=0x0a; /最高位为 0 时不显示if(!display2)display2=0x0a; /次高位为 0 时不显示 if(n)display3=0x0b; /负温度时最高位显示"-"/*按键查询程序*/void keyscan() int temp1;/最高温度和最低温度标志位 if(set=0) int a=1;while(1)delay(500);/消抖if(set=0)temp1+; while(!set)scan();if(temp1=1)xianshi(high);if(set1=0)while(!set1);scan();a=3;scan();if(add=0)while(!add)scan();high+=a;if(dec=0)while(!dec)scan();high-=a;if(temp1=2)xianshi(low);if(add=0)while(!add)scan();low+=a;if(dec=0)while(!dec)scan();low-=a;scan();if(temp1>=3)temp1=0;break; /*主函数*/void main()dm=0x00;w0=0;w1=0;w2=0;w3=0;w4=0;w5=0; for(h=0;h<4;h+)displayh=0;ow_reset();write_byte(0xcc);write_byte(0x44);for(h=0;h<100;h+)scan(); while(1)if (temp1=0) /初始化端口/开机显示"0000"/开机先转换一次/Skip ROM/发转换命令/开机显示"0000"work_temp(read_temp();/处理温度数据BEEP();scan(); /显示温度值 keyscan();elsekeyscan();/*结束*/l 附录:参考文献1) 雷思孝.单片机系统设计及工程应用M.西安电子科技大学出版社,2007.2) 马忠梅,张凯,等. 单片机的C 语言应用程序设计(第四版) 北京航空航天大学出版社3) 廖常初.现场总线概述J.电工技术,1999.评阅意见 教师签名: 年 月 日22

    注意事项

    本文(课程设计(论文)-单片机课程设计温度控制.doc)为本站会员(yyf)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开