单片机课程设计(论文)数字温度计设计 .doc
《单片机课程设计(论文)数字温度计设计 .doc》由会员分享,可在线阅读,更多相关《单片机课程设计(论文)数字温度计设计 .doc(39页珍藏版)》请在三一办公上搜索。
1、目 录一 引言1二 硬件设计 2三 软件设计 9四 调试过程及问题分析 12五 结论 13六 参考文献 14附件1 15附件2 29一、引言随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,当然,学习单片机的原理及应用已经成为我们电子类专业大学生所必须的课程。而本文所介绍的是一种基于单片机控制的数字温度计。所采用的元器件DB18B20与传统的温度计相比,具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。更加增强了其实用性和操作性。LCD12864液晶显示模块是12864 点阵的汉字图形型液晶显示模块,可显示汉字及图形,具有多种功
2、能:光标显示、画面移位、睡眠模式等。数字温度计选用STC89C52RC型单片机作为作为其主控器件,DSl8B20作为测温传感器通过液晶显示器LCD12864调用数据,实现温度显示。通过DSl8B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,能够快速精确的显示数据。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。最终由LCD12864液晶显示显示出DB18B20所测温度。结果精确可调为0.5,分辨率为0.0625。二、硬件设计(一)、系统硬件设计方案根据系统功能要求,构造如下图所示的系统
3、原理结构框图。DS18B20温度数据采集STC89CS52RC初始化LCD12864驱动显示温度图1 系统原理结构框图1、 单片机的选择STC89C52RC是新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机械周期和6时钟/机械周期可以任意选择,其内核与AT51系列单片机一样,但是其造价较之更低,功能更强。AT51单片机小系统的电路图如下所示。单片机小系统电路1)、引脚说明stc89c52的内核和AT51系列单片机一样,故引脚也相同:18:I/OP1口(P1.0P1.7);9: 复位脚(RST/Vpd);1017:I/OP3口(P3.0=RXD,P3.1=
4、TXD,P3.2=-INT0,P3.3=-INT1,P3.4=T0,P3.5=T1,P3.6=-WR,P3.7=-RD);18、19:晶振(18=XTAL2,19=XTAL1);20: 地(Vss);2128:I/OP2口(P2.0P2.7); 29:-PSEN;30:ALE/-PROG;31:-EA/Vpp3239:I/OP0口(P0.7P0.0);40:+5V电源。注:引脚功能前加“-”,说明其是低电平有效。如P3.2=-INT0。2)、内部功能1. I/O 口:输入/ 输出口经过特殊处理,很多干扰是从I/O 进去的,每个I/O 均有对VCC/ 对GND二级管箝位保护。2. 电源:单片机内
5、部的电源供电系统经过特殊处理,很多干扰是从电源进去的3. 时钟单片机内部的时钟电路经过特殊处理,很多干扰是从时钟部分进去的4 . 空闲模式:典型功耗 2mA5.正常工作模式:典型功耗 4mA - 7mA单片机内部的时钟电路经过特殊处理,很多干扰是从时钟部分进去的6. 复位电路单片机内部的复位电路经过特殊处理,很多干扰是从复位电路部分进去的,STC89C51RC/RD+系列单片机为高电平复位。推荐外置复位电路为MAX810/STC810,STC6344,STC6345,813L,706P;也可用R/C 复位,10uF 电容/10k 电阻,22uF/8.2k 等。6.宽电压,不怕电源抖动5V: 6
6、v - 3.4v 3V: 4v - 1.9v2、温度传感器介绍DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定存储在EPROM中,掉电后依然保存。而在此,我们设定12为分辨率,即温度分辨率0.0625。DS18B20的性能特
7、点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如下图所示。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddDS18B20内部结构根据DS18B20的通讯协议,主机控
8、制DS18B20完成温度转换必须经过三个步骤:(1).初始化(2) 执行某个ROM指令(3) 执行RAM内存指令(4) 数据传输复位要求主CPU将数据线下拉480微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。DS18B20与单片机的接口电路3、液晶显示LCD12864液晶显示模块是12864 点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312 码简体中文字库(16X16 点阵)、128 个字符(8X16 点阵)及64X256 点阵显示RAM(GDRAM)。可与CPU 直接接口,提供两种界面来连接
9、微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。硬件原理图:1)、引脚说明管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/LD/I=“H”,表示DB7DB0为显示数据D/I=“L”,表示DB7DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/LR/W=“L”,E信号下降沿锁存DB7DB0R/W=“H”,E=“H”DDRAM数据读到DB7DB07DB0H/L数据线8DB1H/L数据线9DB2H/L
10、数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18VOUT-10VLCD驱动负电压19LED+-LED背光板电源20LED-LED背光板电源2)、 内部功能器件及相关功能1. 指令寄存器(IR) IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。2数据寄存器(DR) DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示
11、数据写入DR,或在E信号高电平作用下由DR读到DB7DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。3忙标志:BF BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。 利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。4显示控制触发器DFF 此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。 DDF的状态是指令DISPLAY ON/OFF和RST
12、信号控制的。5XY地址计数器 XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。 X地址计数器是没有记数功能的,只能用指令设置。 Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。6显示数据RAM(DDRAM) DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。7Z地址计数器 Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是
13、用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。 Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。三、软件设计(一)、设计题目及要求:1、基本要求设计指标:A. 测温范围:0100;B. 温度分辨力:0.0625;C. 测量速率:2次/秒自动连续测量;D. 结果显示方式:用图形液晶LCD12864显示当前温度及与上一次温度测量值差值。2、扩展要求用图形液晶显示温度曲线。3、误差
14、测试调试无误后,可用水银温度计与其进行比对,记录测量结果,进行误差分析。(二)、整体思路根据要求,我们将整个程序分为三大部分。主要包括主程序,温度传感程序,LCD12864液晶显示程序。(二)、程序流图1、 DS18B20温度计程序DS18B20温度计程序包括读出温度子程序,温度转换命令子程序,计算温度子程序。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每0.5s进行一次。读出温度子程序的主要功能是读出RAM中的字节。温度转换命令子程序主要是发温度转换开始命令,采用12位分辩率为0.065,在本程序设计中采用0.5s显示程序延时法等待转换的完成。 DS1
15、8B20温度计程序流程图如下:开始DS18B20的初始化启动温度转换读取温度寄存器DS18B20的初始化复位(二)、LCD12864液晶显示程序流程图如下:(三)、主程序流图开始初始化显示开机画面(B3组数字温度计)循环温度上电转化一次(读取温度)温度上电转化一次(读取温度)温度处理温度处理调用液晶显示程序显示温度(当前温度)储存此刻温度b储存此刻温度a调用液晶显示程序显示温度(之前温度)If(ab)YN 温度差d=b-a温度差d=a-b处理温度差显示温度差四、调试过程及问题分析我所设计的模块为LCD12864液晶显示模块,由于之前所接触的显示器件都是数码管显示,对液晶显示还是很陌生,所以在此
16、次设计中,我翻阅和产寻了很多资料,对其内部结构进行了解,对其功能不断渗透,而老师在设计前也给了我们许多关于LCD12864的显示源程序及调试程序,这对我们的设计起了很大帮助。但是在写源程序的时候还是出了很多的问题。根据老师所给的综合程序,我们进行了综合分析,而我们的设计在液晶显示上重点是要输出汉字和相应的温度数值,综合程序中有汉字输出,我开始根据程序从取模程序中输出所需汉字的字模,但是从液晶屏上却总显示的是乱码,试了很多次,最后请教老师才知道,所给字码的像素是不一样的,所给综合程序的DISCODE是8*16像素的,而我从取模程序中取的字模是16*16像素的,后来,老师和我们分析了液晶屏显示字码
17、的基本原理,每一格通过为代码显示字模信息,后来,我又仔细分析和对比了综合程序的字模和我的字模,找到了两个解决方案,改代码或者改像素。结果都如我愿,操作显示正确。后来我在弄完时闲来无事又发现了一种方法可以用16*16的像素用8*16的DISCODE显示,我发现,只要我所需要的字码在相应的小格里显示输出字码即可,于是我把一个字分左、右两部分分别显示,输出字码结合,结果也正确,而在此次设计中,我们采取汉字的输出方法也均用此方法。液晶显示模块的代码在我们的整体设计中可以说是一块比较简单的部分,而重点就是DB18B20的温度模块,这个模块是我们组花比较多的时间完成的,DB18B20对温度的测量是在延时过
18、程中进行的,在温度的转化中设定0.5S的测温速度,以12位的分辨率进行,这12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度主函数输出温度。而整体的主函数调用温度显示温度是我们整个设计的一个大问题,试了许多次,总是达不到所期待的结果,最后,老师告诉我们,在软件中仿真,一点点的找根源,进入程序内部,分析,一点点的排除。最终,我们发现了问题所在,原来是温度转换出了问题,在温度输出的16位字节的高八位 和低八位的输出转换有误,修改后输出正确。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计论文数字温度计设计 单片机 课程设计 论文 数字 温度计 设计
链接地址:https://www.31ppt.com/p-3936603.html