单片机课程设计报告

  • 格式:doc
  • 大小:60.50 KB
  • 文档页数:10

湖州师范学院课程设计总结报告课程名称单片机应用系统设计设计题目基于STC89C52的温度测控系统设计专业电子与信息工程班级 080823班姓名崔兆坤学号 08082337指导教师王玉玲报告成绩信息与工程学院二〇一一年六月十二日《单片机应用系统设计》课程设计任务书一、课题名称《温度测量与报警系统》二、设计任务1、利用四位数码管显示当前温度;2、通过键盘修改报警温度上限与下限值;3、具有报警功能,报警温度上限与下限值能修改,利用蜂鸣器实现报警;上限温度值到达时发出“嘀-嘀-嘀-嘀”的报警音。

三、设计报告撰写规范单片微机应用系统设计总结报告正文,主要含以下内容(硬件、软件各部分内容也可组合起来进行撰写说明):1、系统总体设计方案(画出系统原理框图、方案的论证与比较等内容);2、硬件系统分析与设计(各模块或单元电路的设计、工作原理阐述、参数计算、元器件选择、完整的系统电路图、系统所需的元器件清单。

等内容);3、软件系统分析与设计(各功能模块的程序设计流程图与说明、软件系统设计、软件抗干扰措施、完整的程序等内容);4、系统仿真调试与参数测量(使用仪器仪表、故障排除、电路硬件和软件调试的方法和技巧、指标测试的参数和波形、测量误差分析);5、总结(本课题核心内容及使用价值、电路设计、软件设计的特点和选择方案的优缺点、改进方向和意见等);6、按统一格式列出主要参考文献。

《温度测量与报警系统》一、系统总体设计方案方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。

而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。

方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。

方案二系统主要包括单片机模块、温度采集模块、温度显示模块,温度上下限调整模块等四部分。

系统总体框架如图1所示。

图1 系统总体框架二、电路设计单片机处理模块处理模块是整个设计方案的核心,它控制了温度的采集、处理与显示、温度上下限值的设定。

本文采用STC89C52RC 作为处理模块。

这是STC 公司推出的8051系列微处理器。

它的特点是价格低、功耗低、高可靠、无法解密,内部Flash 擦写次数为100,000次以上。

图2是该芯片的引脚图。

图3是STC89C52的最小系统。

温度采集模块温度由Dallas 半导体公司的一线数字化温度传感器DS18B20采集。

DS18B20测温范围为-55℃~+125℃,测温分辨率可达0.0625℃,被测温度用16位二进制形式串行输出。

用户设定的上下限温度储存在EEPROM 中,掉电后依然保存。

CPU 只需一根端口线就能与诸多DS18B20通信。

占用微处理器的端口少,可节省大量的引线和逻辑电路。

图4为DS18B20的引脚图。

图4 DS18B20图DS18B20是通过一种片上温度测量技术来测量温度的。

图5示出了温度测量电路的方框图。

图4 DS18B20温度测量电路的方框图由图5可知DS18B20用一个高温度系数的振荡器确立一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。

计数器被预置到对应与-55℃的一个值。

如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测的温图2 STC89C52引脚图图3图3是STC89C52的最小系统度大于-55℃。

同时计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。

然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。

斜坡式累加器用来补偿感温振荡器的非线性,以及在测温时获得比较高的分辨力。

这是通过改变计数器对温度每增加一度所需计数的值来实现的。

因此,要想获得所需的分辨力,必须同时知道给定温度下计数器的值和每一度的计数值。

DS18B20内部对此计算的结果可提供0.0625℃的分辨力。

温度以16bit带符号位扩展的二进制补码形式读出。

表1给出了温度值和输出数据的关系。

表1:温度值和输出数据的关系二进制的低四位是小数数据,高五位是符号位。

正温度时,读到的16位数据乘以就可以得到实际温度。

若是负温度则要把读到的数据按位取反再加1,之后按正温度转换,前面加符号就行了。

另一种转换方法就是分离出低四位,中间七位和高五位。

低四位乘以就可以得到小数部分的值,中间八位直接就是整数部分的值。

高四位就是判断符号的。

DS18B20内部有一个9字节的高速存储器用于存储温度值。

其中前两个字节是测得的温度数据,第一个字节的内容是温度的低八位,第二个字节是温度的高八位,第三和第四字节是温度上限TH与温度下限TL的易失性拷贝,第五字节是结构寄存器的易失性拷贝,第6,7,8这三个字节用于内部计算,第九个字节是冗余检验字节CRC,可用来保证通信的正取性。

当温度转换命令发出后,经转换所得的温度值以二字节补码形式存放在此存储器的第1和第2个字节。

单片机可通过单线接口读到该数据,读取时低位在前,高位在后。

通过单线总线端口访问DS18B20的协议如下:初始化、ROM操作命令、存储器操作命令、执行/数据。

ROM操作命令:Read ROM [33H] 这个命令允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。

只有在总线上存在单只DS18B20的时候才能使用这个命令。

如果总线上不止一个从机时,当所有从机试图同时传送信号时就会发生数据冲突。

Match ROM [55H] 匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。

只有和64为ROM序列完全匹配的DS18B20才能响应随后的储存操作命令。

Skip ROM [CCH] 这条命令允许总线控制器不用提供64位ROM编码就使用储存器操作命令,在单点总线情况下用以节省时间。

如果总线上不止一个从机,在Skip ROM命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突。

Search ROM [F0H] 当一个系统初次启动时,总线控制器可能不知道单线总线上有多少器件或它们的64位ROM编码。

搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。

Alarm Search [ECH] 这条命令的流程图和Search ROM相同。

然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。

表2:DS18B20的命令和时序图图6为DS18B20的电路连接图。

图6 18B20电路图DS18B20有两种供电接法,图6采用的是接入外部电源。

这样做的好处是I/O线上不需要加强上拉,而且总线控制器用在温度转换期间总保持高电平。

这样在转换期间可以允许在单线总线上进行其他数据的往来。

另外,在单总线上可以挂任意多片DS18B20,而且如果它们都使用外部电源的话,就可以先发一个Skip ROM命令,再接一个Convert T命令,让它们同时进行温度转换。

注意当加上外部电源时,GND引脚不能悬空。

温度显示模块由于此文重在说明DS18B20的功能及使用,所以显示部分就采用简单的数码管显示。

只显示两位整数和一位小数,负温度就不显示了。

图7为数码管的连接图。

图7 数码管显示电路温度上下限调整模块图8为温度上下限调整模块。

所选按键是轻触开关。

按一次K1后,会在数码管显示DS18B20内储存的温度上限。

按第K2次后就能调节温度的上限,通过K3和K4来调节。

按下第3次后恢复到温度的显示。

K2是调节温度下限的。

操作方法和K1一样。

报警电路该模块只是用蜂鸣器表示。

蜂鸣器响就报警。

如图9图9 报警电路图 总体原理图 图10为电路的总体原理图。

三、系统算法与程序流程图系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,按键扫描处理子程序等。

主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20 的测量的当前温度值, 温度测量每1s 进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程如下:图11主程序流程图读出温度子程序读出温度子程序的主要功能是读出RAM 中的9 字节,在读出时需进行CRC 校验,校验有错时不进行温度数据的改写。

其程序流程图如下:图8按键电路图图9图10 系统总体原理图图12读出温度子程序温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12 位分辨率时转换时间约为750ms,在本程序设计中采用1s 显示程序延时法等待转换的完成。

温度转换命令子程序流程如:图13温度转换命令子程序计算温度子程序计算温度子程序将RAM 中读取值进行BCD 码的转换运算,并进行温度值正负的判定,其程序流程图。

图14计算温度子程序显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。

程序流程图如下:图15显示数据刷新子程序按键扫描处理子程序按键采用扫描查询方式,设置标志位,当标志位为1 时,显示设置温度,否则显示当前温度。

如下:图16按键扫描处理子程序四、程序/*功能说明按K1设定温度上限,然后按K2调整小数位增加,按K4小数位减小按rd1确认,按rd复位按rd1设定温度下限,然后按K2调整整数位增加,按K4整数位减小按K1确认,按rd复位如果实际温度超过上下限,则报警*/#include <>#include <>#define uchar unsigned char#define uint unsigned intsbit k1=P2^0;sbit k2=P2^1;sbit k3=P3^4;sbit k4=P2^3;sbit DQ=P2^2;sbit rd=P2^4;sbit rd1=P2^5;sbit beep=P3^2;uchar buffer0,buffer1,zhi,zhi1;uchar table[]={0x7f,0xbf,0xdf,0xef,0xff}; 7f7f7f7f7f7f7f7f着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。