《单片机课程设计温度控制报告总结》由会员分享,可在线阅读,更多相关《单片机课程设计温度控制报告总结(5页珍藏版)》请在金锄头文库上搜索。
1、 本文由xiamotangyi贡献doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。浙江传媒学院 课程设计(实训) 课程设计(实训)报告学 班 姓电子信息学院_ _专 院 _电子信息学院_专 级08 信本 1学 08 _谢婧琳课谢婧琳 名 _ _谢婧琳课业 _电子信息工程 _080705129 080705129_ 号 080705129_ 温度控制 题 _温度控制报告成绩 报告成绩 指导教师 _ _黄暑娟报告成绩日期: 2011 年 03 月 27 日1目录1 概述3 1.1 课程设计的目的 3 1.2设计的要求3 2 课程设计原理及内容4 2.1 课程设计
2、原理4 2.2 课程设计内容9 3 课程设计结果10 4设计心得体会10 5 附 1 源程序代码11 6 附 2 参考文献21 7 评阅意见212概述1.1 课程设计的目的 课程设计的目的 1) 训练学生如何综合运用学过的卢纶和技能去分析结局事迹问题,加上理论的理 解。 2) 3) 4) 5) 6) 增强学生的实践能力和创新能力 使学生掌握微机系统以及常用接口电路的设计及调试方法。 掌握常用工具软件的使用方法 通过课程设计训练学生如何综合运用所学知识去分析解决事迹问题。 培养学生严谨的工作作风和科学态度。2.1 课程设计的要求 1) 设计一个温度控制系统 2) 该温度控制系统可以将温度控制在一
3、个温度范围之内 3) 温度显示在数码管上,精确到小数 4) 该范围可以通过系统中的键进行修改 5) 温度一旦快到达上下限的温度时,蜂鸣器报警 6) 蜂鸣器有简单的音乐3课程设计原理及内容 课程设计原理及内容1.1 课程设计原理A. 硬件部分 本次课程设计的题目是温度控制系统,硬件部分本设计主要是对温度进行监测与控制, 主要控制器件是单片机 89S51。首先温度传感器 DS1820 对温度进行采样和转换,将测量结 果送给单片机, 单片机将输入的温度值与内部指定单元的给定温度值进行比较, 根据比较结 果, 通过执行温度传感器加热源的开断状态进行控制。 温度显示与设定体现在 3 个八段共印 数码管。
4、下图为系统原理框图。图1图2硬件设计图4从各个部分分析看:I)、 图为晶振电路,采用 12MHZ 晶振图 3 晶振电路II)、图为复位电路。图 4 复位电路III)、温度传感器 DS1820 信号线接 P3.7 口, con 口接 P3.5, 这一部分主要完成对温度信号的 采集和转换工作和加温工作。由于采用了该芯片,温度测量电路变得非常简单。DS1820 像 三极管一样,有一根底线,一根信号线和一根电源线,而信号线page 1与 IO 口 P3.7 的相连,就能 实现单片机对 DS1820 模式控制,温度值读取等操作。图55IV)、显示电路采用 4 位共阴极 LED 数码管, 采用动态扫描的方
5、式显示, 口由上拉电阻提 P1 高驱动能力,作为段码输出并作为数码管的驱动。P0 口的高四位作为数码管的位选端。进 而显示数字图6V)、本系统采用四个按键来处理修改和显示上下限温度。S1 和 S2 分别来加或减温度限值, 当 S3 按下时,显示最高上限温度。再按一下显示下限温度。在 S3 被按下时,如果 S1 和 S2 被按下,则相应的加或减 1,如果 S4 被按下,则加减的幅度变为 3。图76VI)、另外还有鸣器是由单片机 89S51 的 P3.6 口来驱动。通过高低电平的跳变,产生一个频 率声音,从听觉上感觉就是一个蜂鸣声。可以通过改变跳变的频率来改变声音。 B. 软件部分 系统程序主要包
6、括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序, 显示数据刷新子程序,按键扫描处理子程序等I) 程序流程图 程序流程图图87II) 读出温度子程序读出温度子程序的主要功能是读出RAM 中的9 字节, 在读出时需进行CRC 校验, 校验有 错时不进行温度数据的改写。其程序流程图如图3.2 示图9 III) 计算温度子程序计算温度子程序将 RAM 中读取值进行 BCD 码转换运算, 并进行温度值正负的判定。IV) 显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作, 当标志位位为1 时将符号显示位移入第一位。图 108V) 按键扫描子程序按键采用扫描查询方式
7、,设置标志位,检测 SET 键是否被按下,当标志位为 1时, 显示设置温度,否则显示当前温度。同时设定一个变量 a,a 为设置温度的量度,当另外 一个键 SET1 见在显示设置温度是被检测按下的时候,a 赋值为 3,否则a=1。从而完成对 温度的设置。图 11 2.1 课程设计内容1) 2) 3) 4) 5) 6) 7) 8) 9) 准备工作。查相关资料,了解要做的内容,准备好硬件图,了解各项功能。 编辑程序,录入程序,保存为.C 格式。 编译和修改程序,存盘。 根据硬件图连线。 运行程序,检查功能是否能够正常运行,分部分排查程序。 再通过老师的指点,加入其它的功能 编改程序,有必要还需查阅相
8、关书籍。 编译,改错,运行。 经过反复的修改运行和调试,做出最后结果的单片机系统。9课程设计结果经过一个星期的调试, 能够正常的运行基本功能, 可以通过温度感应器感应到外界 的温度,显示当前温度,显示精确到小数。并通过判断是否在某个温度区间,若低于下 限温度,则开始加热,若高于上限温度,则停止加热。并且在快到达上限温度时,蜂鸣 器开始发出警告声,约等于 20S,并发出 3 个连续不同的声音,当温度在page 2下限的附近是, 蜂鸣器做出同样的反应。而且本系统有四个按键,S1、S2、S3、S4,分别是加,减,选 择,修改精度,的功能。当 S3 按 1 下时,显示上限温度,按 2下是,显示下限温度
9、。 在此期间若 S4 被按下,则加减的精度从原来的 1 改为 3。设计心得体会 设计心得体会从周一开始回来查资料,到周五验收成功。中间虽然没有很长的时间,但是感觉受 益匪浅。 学的最最多的东西当然是对单片机这个系统的了解,所以说坐而言不如立而 行,对于这样的系统还是亲自实践过才能够更加深刻的了解。 课程设计是能培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼 实践能力的重要环节,是对学生实际工作力的具体训练和考察过程.随着科学技术发展 的日新日异, 单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是 无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分
10、重要的。 回顾起此次单片机课程设计, 我仍感慨颇多, 的确, 从接题到定稿, 从理论到实践, 在 一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅 可以巩固了以前所学过知识, 而且学到了很多在书本上所没有学到过的知识。 通过这次 课程设计使我懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的, 只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而 提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题, 可以说得是困 难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现 了自己的不足之处,对以前所学
11、过的知识理解得不够深刻,掌握得不够牢固,比如说对 于 C 语言的一些语句不是很了解, 对单片机的知识也不是很透彻通过这次课程设计 之后,一定把以前所学过的知识重新温故。 最后感谢黄老师对我们的指导和认真负责, 这次课程设计终于顺利完成了, 虽然最 后那个精度没有改成功, 但是我们还是很认真的对待这一次实践。 相信在以后运用单片 机知识的地方这次的实践肯定会有所帮助。总之,我们学到了在课堂上学不到的东西, 学会了团队合作,学到了更多关于单片机和单片机实践的知识。我们很感激。10附录: 附录:程序清单#include reg51.h #include intrins.h #define dm P1
12、 /_nop_();延时函数用 /段码输出口#define uchar unsigned char #define uint unsigned int sbit DQ=P37; /温度输入口sbit w0=P00; /数码管 4 sbit w1=P01; /数码管 3 sbit w2=P02; /数码管 2 sbit w3=P03; /数码管 1 sbit 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;
13、 uint h; uint temp; uchar r; uchar high=30.0,low=23.0 ucharsign; 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; ; /温度加 /
14、温度减 /显示当前温度和设置温度的标志位为 0 时显示当前温度 /蜂鸣器和指示灯/温度设置切换键11/共阴 LED 段码表 /*01 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 del
15、ay(uint t) while(t-); void scan() int j; for(j=0;j0;i-) DQ=1;_nop_();_nop_(); /从高拉倒低 DQ=0;_nop_();_nop_();_nop_();_nop_();/5 us DQ=val&0x01;/最低位移出 delay(2) ; /66 us13val=val/2 ;/右移 1 位 DQ=1; delay(1); /*DS18B20 读1 字节函数*/ /从总线上取 1 个字节 uchar read_byte(void) uchar i; uchar value=0; for(i=8;i0;i-) DQ=1;_nop_();_nop_(); value=1; DQ=0;_nop_();_nop_();_nop_();_nop_();/4 us DQ=1;_nop_();_nop_();_nop_();_nop_();/4 us if(DQ)value|=0x80; delay(2);/66 us DQ=1; return(value); /*读出温度函数*/ read_temp() ow_res