当前位置:
文档之家› 单片机课程设计温度控制报告总结
单片机课程设计温度控制报告总结
page 3
_dm[display[0]];w0=1;delay(100);w0=0;//小数 case 1: dm=table_dm1[display[1 ]];w1=1;delay(100);w1=0;//个位 case 2: dm=table_dm[display[2]];w2=1;delay( 100);w2=0;//十位 case 3: dm=table_dm[display[3]];w3=1;delay(100);w3=0;//百 位 //defult:dm=table_dm[b3];w3=0;delay(50);w3=1; } } } //***************DS18B20 复位函数************************/ void ow_reset(void) { char presence=1; 12 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 us DQ=val&0x01;//最低位移出 delay(2) ; //66 us 13 val=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 us DQ=1;_nop_();_nop_( );_nop_();_nop_();//4 us if(DQ)value|=0x80; delay(2);//66 us } DQ=1; retur n(value); } /*****************读出温度函数************************/ read_t emp() { ow_reset();//总线复位 delay(200); write_byte(0xcc);//发命令 write_ byte(0x44);//发转换命令 ow_reset(); delay(1); write_byte(0xcc); //发命令 w rite_byte(0xbe); temp_data[0]=read_byte();//读温度值的低字节 14 temp_data[1]=read_byte();//读温度值的高字节 temp=temp_data[1]; temp<< =8; temp=temp|temp_data[0];// 两字节合成一个整型变量。 return temp; //返回 温度值 } /****************温度数据处理函数************************/ void w ork_temp(uint tem) { uchar n=0; if(tem>6348) // 温度值正负判断 {tem=65536-tem;n=1;} // 负温度求补码,标志位置 1 display[4]=tem&0x0f; // 取小数部分的值 display[0]=ditab[display[4]]; display[4]=�
page 2
下限的附近是, 蜂鸣器做出同样的反应。而且本系统有四个按键,S1、S2、S3、S4, 分别是加,减,选 择,修改精度,的功能。当 S3 按 1 下时,显示上限温度,按 2 下是,显示下限温度。 在此期间若 S4 被按下,则加减的精度从原来的 1 改为 3。
设计心得体会 设计心得体会 从周一开始回来查资料,到周五验收成功。中间虽然没有很长的时间,但是感觉 受 益匪浅。 学的最最多的东西当然是对单片机这个系统的了解,所以说坐而言不如 立而 行,对于这样的系统还是亲自实践过才能够更加深刻的了解。 课程设计是能培 养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼 实践能力的重要环节 ,是对学生实际工作力的具体训练和考察过程.随着科学技术发展 的日新日异, 单片 机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是 无处不在。因 此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 回顾起此次单片 机课程设计, 我仍感慨颇多, 的确, 从接题到定稿, 从理论到实践, 在 一星期 的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅 可以巩固 了以前所学过知识, 而且学到了很多在书本上所没有学到过的知识。 通过这次 课程 设计使我懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的, 只有 把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从 而 提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题, 可以说 得是困 难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过 程中发现 了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固 ,比如说对 于 C 语言的一些语句不是很了解, 对单片机的知识也不是很透彻……通 过这次课程设计 之后,一定把以前所学过的知识重新温故。 最后感谢黄老师对我们 的指导和认真负责, 这次课程设计终于顺利完成了, 虽然最 后那个精度没有改成功 , 但是我们还是很认真的对待这一次实践。 相信在以后运用单片 机知识的地方这次 的实践肯定会有所帮助。总之,我们学到了在课堂上学不到的东西, 学会了团队合作 ,学到了更多关于单片机和单片机实践的知识。我们很感激。 10 附录: 附录:程序清单 #include "reg51.h" #include "intrins.h" #define dm P1 //_nop_();延时函 数用 //段码输出口 #define uchar unsigned char #define uint unsigned int sbit DQ=P3^7; / /温度输入口 sbit w0=P0^0; //数码管 4 sbit w1=P0^1; //数码管 3 sbit w2=P0^2; //数码 管 2 sbit w3=P0^3; //数码管 1 sbit w4=P0^4; sbit w5=P0^5; sbit beep=P3^6; sbit con=P3^5; sbit set1=P2^0; sbit set=P2^1; sbit add=P2^2; sbit dec=P2^3 ; uint temp1=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 ditab[10]={0x00,0x01,0x02,0x 03,0x04,0x05,0x06,0x07,0x08,0x09}; //小数断码表 uchar code table_dm[12]={0 x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; ; //温度加 // 温度减 //显示当前温度和设置温度的标志位为 0 时显示当前温度 //蜂鸣器和指示灯 //温度设置切换键 11 //共阴 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_data[2]={0x00,0x00}; //读出温度暂 放 uchar data display[5]={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
本文由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 课程设计原理……4 2.2 课程设计内容……9 3 课程设计结果…… 10 4设计心得体会……10 5 附 1 源程序代码……11 6 附 2 参考文献……21 7 评阅 意见……21 2 概述 1.1 课程设计的目的 课程设计的目的 1) 训练学生如何综合运用学过的卢纶和 技能去分析结局事迹问题,加上理论的理 解。 2) 3) 4) 5) 6) 增强学生的实践能力 和创新能力 使学生掌握微机系统以及常用接口电路的设计及调试方法。 掌握常用工 具软件的使用方法 通过课程设计训练学生如何综合运用所学知识去分析解决事迹问题 。 培养学生严谨的工作作风和科学态度。 2.1 课程设计的要求 1) 设计一个温度控制系统 2) 该温度控制系统可以将温度 控制在一个温度范围之内 3) 温度显示在数码管上,精确到小数 4) 该范围可以通过 系统中的键进行修改 5) 温度一旦快到达上下限的温度时,蜂鸣器报警 6) 蜂鸣器有 简单的音乐 3 课程设计原理及内容 课程设计原理及内容 1.1 课程设计原理 A. 硬件部分 本次课程设计的题目是温度控制系统,硬件部分本设计主要是对温 度进行监测与控制, 主要控制器件是单片机 89S51。首先温度传感器 DS1820 对温度 进行采样和转换,将测量结 果送给单片机, 单片机将输入的温度值与内部指定单元 的给定温度值进行比较, 根据比较结 果, 通过执行温度传感器加热源的开断状态进 行控制。 温度显示与设定体现在 3 个八段共印 数码管。下图为系统原理框图。 图1 图2 硬件设计图 4 从各个部分分析看: I)、 图为晶振电路,采用 12MHZ 晶振 图 3 晶振电路 II)、 图为复位电路。 图 4 复位电路 III)、 温度传感器 DS1820 信号线接 P3.7 口, con 口接 P3.5, 这一部分主要完成 对温度信号的 采集和转换工作和加温工作。由于采用了该芯片,温度测量电路变得非 常简单。DS1820 像 三极管一样,有一根底线,一根信号线和一根电源线,而信号线