单片机设计温度实时曲线的显示.docx
《单片机设计温度实时曲线的显示.docx》由会员分享,可在线阅读,更多相关《单片机设计温度实时曲线的显示.docx(47页珍藏版)》请在冰豆网上搜索。
单片机设计温度实时曲线的显示
内蒙古科技大学
智能仪表综合训练设计说明书
题目:
温度实时曲线的显示
学生姓名:
汪党
学号:
0705112342
专业:
测控技术与仪器
班级:
2007-3
指导教师:
李刚助教
中文摘要
液晶是现在电子产品中使用越来越多的一种显示器件。
我们经常会在各种各样的电子产品和仪器上看到液晶显示器的存在。
这些液晶品种繁多,功能不一,有的是字符型,有的是点阵型常常用来显示各种参数,包括电压、电流、温度及各种电气参数和一些特定信息。
液晶不但用来显示各种文字还可以被设计成各种图案、通过改变里面特定显示的内容,还还可以动态的显示各种图案及画面。
液晶的使用打破了以往单一声光显示功能,为人们提供了更多丰富多彩的显示信息。
使显示的内容更加形象化、生动化。
本设计采用以单片机为核心的低成本、高精度、微型化数字显示温度实时曲线的硬件电路和软件设计方法。
整个电路采用模块化设计,由主程序、中断程序、DS18B20温度转换的驱动程序、显示子程序等模块组成。
DS18B20温度传感器数字信号经单片机综合分析处理,实现温度显示以及曲线绘图各种功能。
在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。
相关部分附有硬件电路图、程序流程图。
关键词:
AT89S52单片机;DS18B20温度传感器;12864液晶显示模块;
第1章前言
1.1液晶的概述
物质通常分为三种型态晶体(固体)、液体、气体。
某些固体物质在一定条件下会呈现液态晶体状态。
这种状态既不同于各向同性的液体,也不同于在三维空间分子完全规则排列的固体晶体,但又具有液体的流动性、连续性和分子排列的有序性。
这种处于液体和晶体之间过渡相态的物质称为液晶。
液晶分为热致液晶和溶致液晶。
前者是物质在某一温度范围内呈现液晶状态,后者是物质溶于水或有机溶剂而形成的。
用于电子器件的液晶为热致液晶。
现在的液晶物质均为芳香族化合物,已被发现的液晶物质多达3000余种。
液晶分子呈棒状或条状,宽约十几nm(纳米),长约数nm液晶分子有较强的电偶极矩和容易极化的化学团。
由于液晶分子间的作用力比固体弱,所以液晶分子容易呈现各种状态。
液晶分子的介电常数、电导率、折射率、磁化率等具有较大的各向异性,在外加电场作用下会产生各种电光效应,从而可应用于液晶显示器(LiquidCrystalDisplayDevice,缩写为LCD)。
1.2液晶显示的意义
随着计算机技术的发展,基于微处理器的智能仪表已成为仪表的主体.而越来越多的智能仪表采用图形点阵液晶模块后,提供了丰富灵活的显示内容,更符合人性化的特点.智能仪表的功能是否强大、用户操作性是否方便,都必须通过界面友好的外观和可操作性来体现。
可见,人机界面是智能仪表开发中的主要环节,在开发的工作量中占了很大的比例.现有技术中智能仪表人机界面一般由液晶显示器和微处理器组成。
目前,已有很多文献对液晶显示技术、图形用户界面设计作了研究。
1.3液晶LCD的各类应用
1)办公自动化(OA)。
如PC机、台式计算机、传真机、复印机、文字处理机等。
2)个人数字助理(PDA)。
如笔记本电脑、袖珍计算机、计算器、电子信笺(备忘)等。
3)设备自动化(FA)。
如测量设备、提升机、电梯等。
4)通讯。
如无绳电话、个人手提电话系统、多功能电话、手提数据终端、蜂窝电话等。
5)车辆设备。
如汽车收音机、汽车音响、汽车VCD、速度表、汽车导航系统(GPS)等。
1.4课程设计的任务和要求
设计温度实时曲线显示测量仪,任务:
温度变化时能及时再现正确的温度数值多大,并且可以看到液晶显屏上描绘的实时温度曲线。
设计温度测量仪,要求:
1)设计出温度实时曲线显示测量仪的硬件结构电路。
2)设计软件流程图并编写程序。
3)精度等级是0.5℃。
第2章液晶显示温度曲线方案设计
2.1总体选型方案
2.1.1温度检测电路选型方案
考虑到经济、测温精度与52单片机I/O口的资源等因素。
温度检测电路采用智能温度传感器DS18B20,它与单片机相连只需要3线,减少了外部的硬件电路。
并且温度传感器DS18B20输出的信号为数字信号,可以被单片机直接采集。
省去了一般温度传感器输出信号要经过放大电路,模数转换的环节。
2.1.2液晶显示模块选型方案
由于要显示温度实时曲线,故传统的小的液晶显示屏1602不能满足本课题要求。
故选用更宽,更大点的液晶显示屏12864ZK。
它可以显示半宽字型,显CGRAM字型,显示中文字形。
更为重要的是显示实时曲线必须满足打点要求,由于它具有绘图功能故满足打点要求。
2.1.3键盘输入模块选型方案
采用独立键盘,它的功能是作为52单片机触发外部中断硬件。
2.2整体设计思路
本课题设计的是液晶显示温度实时曲线,首先要达到的最简单想法是可以在液晶屏上显示温度,要显示温度,必须将温度传感器输出(数字量)信号传送至单片机,通过程序对信号进行处理,所以在这里我们需要存储器来储存一些必要的信息,之后是显示这里的显示我们是用LCD显示,在这里要提到键盘的作用,键盘在这里是实现显示界面的切换。
设计思路图见图2.1。
图2.1液晶显示整体方案设计图
第3章液晶温度显示硬件设计
3.1控制模块硬件设计
3.1.1AT89S52单片机简介
3.1.1.1硬件结构
该系统采用的是Atmel公司生产的AT89S52单片机为主控器。
At89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52
在单片机的引脚外围固定的引脚,如VCC(40),GND(20)已经正确固定到电源和地上。
X1(18),X2(19)是接晶振的引脚已经外接到11.0592MHZ和30PF的电容。
RST(9)是单片机的复位引脚,通过RC回路,作为单片机的上电复位。
作为P3口的第二功能端口,P3.0(10),P3.1(11)为单片机的通信引脚,和MAX232芯片连接。
方便在下载程序时,只要上电复位即可完成下载的硬件操作。
另外,为了提高P0口的驱动能力,在P0口的各引脚上接了上拉电阻5.1K到电源Vcc=5V。
采用一片MAX232,为RS232与TTL电平的转换,使得可以方面使用电脑的COM口对单片机进行程序的烧录。
其芯片引脚图如图3.1所示。
图3.1AT89S52引脚图
3.1.2AT89S52单片机最小系统硬件设计
1)单片机复位电路硬件设计原理图,如图3.2所示。
图3.2复位电路原硬件原理图
2)单片机的时钟电路硬件设计原理图,如图3.3所示。
图3.3时钟电路硬件原理图
3)单片机的电源电路硬件设计原理图,如图3.4所示。
图3.4电源电路原理图
4)中断按键硬件设计原理图,如图3.5所示。
图3.5中断按键硬件原理图
3.2液晶显示模块硬件设计
3.2.1LCD12864ZK液晶模块介绍
3.2.1.1基本功能
LCM12864ZK中文液晶显示模块的屏幕由128*64点构成,可显示四行、每行8个汉字。
其字型ROM内含8192个16*16点的中文字型和128个16*8点的半宽字母符号字型。
绘图显示RAM(GDRAM)提供64*32BYTE空间、最多控制256*64点的二维绘图缓冲空间,绘图显示画面提供一个64*256点的绘图区域。
造字RAM(CGRAM)提供4组软件可编程的16*16点阵造字功能。
LCM12864ZK与单片机等微控器的接口界面灵活,有并行、串行两种模式,其中并行模式又有8位/4位两种接法,串行模式又分3线/2线两种接法。
3.2.1.2引脚功能(见表3.1)
表3.112864ZK引脚功能
引脚
名称
功能
1
K
背光源负极
2
A
背光源正极
3
GND
地
4
VCC
3V/5V
5
NC
未连接
6
RS
(并行)选择寄存器(0:
指令寄存器1:
数据寄存器);(串行)片选(0:
禁止1:
允许)
7
RW
(并行)读写控制脚(0:
写入1:
读);(串行)输
入串行数据
8
E(SCLK)
(并行)写数据启始脚
(串行)输入串行脉冲
9—16
DB0~DB7
I/O数据线0~7
17
PSB
控制界面0:
串行 1:
并行8/4位
18
/RST
复位信号,低有效
19,20
VR,V0
LCD亮度调整,外接电阻端
3.2.1.3功能指令系统简介
LCM12864ZK以ST7920为内核,其指令系统分为基本指令集和扩充指令集。
基本指令集包括清除显示、位地址清零、进入点设定、显示状态开/关、光标或显示移位控制、功能设定、设定CGRAM位址、设定显示数据RAM(DDRAM)位址、读取忙标志(BF)、写数据到RAM(DDRAM/CGRAM/GDRAM)、读出RAM的值等指令;扩充指令集包括待命模式、卷动位址或RAM位址、选择睡眠模式、扩充功能设定、设定光标位址(IRAM)或卷动位址、设定绘图RAM地址等指令。
下面介绍本课题中常用的12864功能指令,见表3.2,3.3。
1)指令表3.2(RE=0:
基本指令集)
指令
指令码
说明
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
清除显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”
功能
设定
0
0
0
0
1
DL
X
0
RE
X
X
DL=1(必须设为1)
RE=1:
扩充指令集动作
RE=0:
基本指令集动作
设定CGRAM
地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM地址到地址计数器(AC)
设定DDRAM地址
0
0
1
AC6
AC5
AC4
AC3
AC2
AC1
AC0
设定DDRAM地址到地址计数器(AC)
读取忙碌标志(BF)和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写资料到RAM
1
0
D7
D6
D5
D4
D3
D2
D1
D0
写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)
读出RAM的值
1
1
D7
D6
D5
D4
D3
D2
D1
D0
从内部RAM读取资料
(DDRAM/CGRAM/IRAM/GDRAM)
2)指令表3.3(RE=1:
扩展指令集)
指令
指令码
说明
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
待命模式
0
0
0
0
0
0
0
0
0
1
将DDRAM填满“20H”,并且设定
DDRAM的地址计数器(AC)到“00H”
卷动地址或IRAM地址
选择
0
0
0
0
0
0
0
0
1
SR
SR=1:
允许输入垂直卷动地址
SR=0:
允许输入IRAM地址
反白选择
0
0
0
0
0
0
0
1
R1
R0
选择4行中的任一行作反白显示,并可决定反白与否
睡眠模式
0
0
0
0
0
0
1
SL
X
X
SL=1:
脱离睡眠模式
SL=0:
进入睡眠模式
扩充功能设定
0
0
0
0
1
1
X
1
RE
G
0
RE=1:
扩充指令集动作
RE=0:
基本指令集动作
G=1:
绘图显示ON
G=0:
绘图显示OFF
设定IRAM
地址或卷动
地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
SR=1:
AC5—AC0为垂直卷动地址
SR=0:
AC3—AC0为ICONIRAM地址
设定绘图
RAM地址
0
0
1
AC6
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM地址到地址计数器(AC)
备注:
1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。
2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。
3.2.2液晶显示模块硬件设计
该模块设计的液晶显示器的数据端口连接在了单片机的P0口,而控制端RS、RW、EN分别接单片机的P2.6、P3.6、P2.7。
LCD12864ZK低电平复位,电源5V直流供电。
硬件电路如图3.7所示。
图3.712864液晶显示原理图
3.3温度模块的硬件设计
3.3.1温度传感器DS18B20概述
温度传感器是将温度信号转换为电信号的装置,型号有很多,数字式温度传感器常用的有DS18B20、DS1820等。
此设计采用的是DS18B20。
DS18B20是DALLAS公司生产的一线式数字温度传感器,是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-BOARD)专利技术。
具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
DS18B20内部结构如图3.8所示,主要由4部分组成:
64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列见下节图3.9所示,DQ为数字信号输入∕输出端;GND为电源地;VDD为外接供电电源。
图3.8DS18B20内部结构框图
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。
64位ROM的排的循环冗余校验码(CRC=X8+X5+X4+1)。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
DS18B20主要特性如下:
①适应电压范围更宽,电压范围:
3.0V~5.5V,在寄生电源方式下可由数据线供电;
②独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与的双向通讯;
③DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;
④DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;
⑤温度范围-55℃+125℃,在-10~85℃时精度为±0.5℃;
⑥可编程的分辨率为9-12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
⑦在9位分辨率时最多在93.75ms内把温度转换为数字,位分辨率时最多在750ms内把温度值转换为数字,速度更快;
⑧测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;
⑨负压特性电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
3.3.2温度模块的硬件设计
温度的测量是采用数字温度传感器DS18B20,外围电路如图所示。
当DS18B20正在执行温度转换或从高速暂存器EPPROM传送数据时,工作电流可达1.5mA,这个电流可能会引起连接单总线的弱上拉电阻的不可接受的压降,这需要更大的电流,而此时Cpp(寄生电源储能电容)无法提供,为了保证DS18B20有充足的供电,当进行温度转换或拷贝数据到EEPROM操作时,必须给单总线一个上拉电阻,一般为4.7K的上拉电阻,根据距离远近可以适当调节阻值,距离近时减小阻值,但不能低于2.1K,否则DS18B20将无法复位。
其数据线DQ端接单片机P1.0口。
硬件电路如图3.9所示。
图3.9DS18B20接线
在外部电源供电方式下,DS18B20工作电源由VDD引脚接人,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。
注意在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
第4章液晶显示系统软件设计
4.1主程序设计
主程序要满足不断地采集温度信息,实时显示温度数值,描绘温度实时曲线,等要求。
故主程序流程图见图4.1。
图4.1主程序流程图
4.2液晶显示模块的设计
4.2.112864程序设计
4.2.1.112864ZK控制器指令操作方式
该课题使用液晶模块控制驱动器ST7920,它提供了并行和串行两类指令操作方式。
这两种控制方式,由外部PSB引脚来选择:
当PSB引脚输入高电平时,为并行操作方式。
当PSB引脚输入低电平时,为串行操作方式。
其中,并行操作方式又可以分为8位并行操作方式和4位并行操作方式两种。
下面只对这8位并行操作方式进行介绍。
12864ZK液晶模块8位并行连接时序图:
(1)MPU写资料到模块,见图4.2。
图4.2MPU写资料到模块时序图
(2)MPU从模块读出资料,见图4.3。
图4.3MPU从模块读出资料时序图
主控制系统将配合(RS、RW、E、DB0~DB7)来完成数据传送。
从一次完整的流程来看,当执行设定地址(CGRAM,DDRAM,IRAM等)指令后,若要读取数据则需要先空读一次,才能得到正确的数据。
第二次读取时不需要空读,除非又执行一次设定地址指令才需要再次空读一次。
4.2.1.2 LCM绘图过程分析
图形显示程序的关键在于解决图形坐标系、屏幕坐标系、GDRAM坐标系的转换问题,也就是确定要显示的点对应在液晶屏面上像素的位置和在GDRAM中的地址。
得到这个对应关系后,我们就可以通过将某个存储单元中的某一位置为1来实现在液晶屏上画出这个点。
LCM12864ZK的水平与垂直地址示意图如图4.4所示[2]。
图4.4 LCM12864ZK水平地址与垂直地址示意图
LCM12864ZK液晶模块内GDRAM与液晶屏幕的对应关系如图4.5所示。
图4.5GDRAM与液晶屏幕的对应关系示意图
由以上GDRAM排列顺序及其与液晶屏幕的对应关系可知:
(1)LCM12864ZK的绘图RAM(GDRAM)为64行*32BYTE/行(64行*16WORD/行)。
(2)在液晶屏幕上只能显示128364个点,对应于GDRAM中128*64bit。
当GDRAM的横坐标小于8并且纵坐标值小于32时,其内容将显示在屏幕上半部,当GDRAM的横坐标为8~15并且纵坐标值小于32时,其内容将显示在屏幕下半部;当GDRAM的纵坐标大于31(32~63)时其内容将不能显示在屏幕上。
LCM12864ZK在已知GDRAM位址的情况下,写图RAM步骤如下:
(1)先将垂直坐标Y写入(0~63);
(2)再将水平坐标X写入(0~15);
(3)将D15~D8数据写入;
(4)将D7~D0数据写入。
在实际绘图过程中,由于每一个GDRAM地址对应于16个位(BIT)地址,所以如果第二次写GDRAM(H,V),则该RAM中其他位的值有时会改变,为了避免这种改变,需要事先将该地址中的内容读出来(ST7920有此功能)与此次要写入的值取或后作为最终值写入。
4.2.212864程序设计流程图
由上述4.2节液晶显示模块的设计,设计的功能函数流程图见图4.5,图4.6,图4.7,图4.8,图4.9。
图4.5MPU往模块写数据流程图图4.6MPU从模块读出数据流程图
图4.7MPU从模块指令信息流程图图4.8MPU往模块写指令流程图
图4.9绘图程序流程图
4.3温度模块软件设计
4.3.1DS18B20测温数据的读取程序设计
对室内温度的检测室通过数字温度传感器DS18B20实现的,在温度模块硬件电路的设计中已经对的硬件电路做了设计,现在设计DS18B20的软件部分。
1.DS18B20的内部数据部件
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是DS18B20该DS18B20的地址序列码。
64位光刻的ROM排列是:
开始8位(24H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB的形式表达,其中S为符号。
如图4.10所示。
图4.10DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这位为0,只要将测到的数值乘以0.0625即可得到实际温度,如果温度小于0,这位为1,测到的数值需要取反加1再乘以0.0625即