搜档网
当前位置:搜档网 › 毕业论文--单片机控制温度实时曲线的显示

毕业论文--单片机控制温度实时曲线的显示

中文摘要

液晶是现在电子产品中使用越来越多的一种显示器件。我们经常会在各种各样的电子产品和仪器上看到液晶显示器的存在。这些液晶品种繁多,功能不一 ,有的是字符型 ,有的是点阵型常常用来显示各种参数 ,包括电压、电流、温度及各种电气参数和一些特定信息。液晶不但用来显示各种文字还可以被设计成各种图案、通过改变里面特定显示的内容 ,还还可以动态的显示各种图案及画面。液晶的使用打破了以往单一声光显示功能 ,为人们提供了更多丰富多彩的显示信息。使显示的内容更加形象化、生动化。

本设计采用以单片机为核心的低成本、高精度、微型化数字显示温度实时曲线的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、中断程序、DS18B20温度转换的驱动程序、显示子程序等模块组成。DS18B20温度传感器数字信号经单片机综合分析处理,实现温度显示以及曲线绘图各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图。

关键词:AT89S52单片机;DS18B20温度传感器;12864液晶显示模块;

目录

中文摘要................................................................ I 第1章前言 .. (1)

1.1液晶的概述 (1)

1.2液晶显示的意义 (1)

1.3液晶LCD的各类应用 (1)

1.4课程设计的任务和要求 (2)

第2章液晶显示温度曲线方案设计 (3)

2.1总体选型方案 (3)

2.1.1 温度检测电路选型方案 (3)

2.1.2液晶显示模块选型方案 (3)

2.1.3键盘输入模块选型方案 (3)

2.2整体设计思路 (3)

第3章液晶温度显示硬件设计 (4)

3.1控制模块硬件设计 (4)

3.1.1 AT89S52单片机简介 (4)

3.1.2 AT89S52单片机最小系统硬件设计 (5)

3.2液晶显示模块硬件设计 (6)

3.2.1 LCD12864ZK液晶模块介绍 (6)

3.2.2液晶显示模块硬件设计 (9)

3.3温度模块的硬件设计 (10)

3.3.1温度传感器DS18B20概述 (10)

3.3.2温度模块的硬件设计 (11)

第4章液晶显示系统软件设计 (13)

4.1主程序设计 (13)

4.2液晶显示模块的设计 (13)

4.2.1 12864程序设计 (13)

4.2.2 12864程序设计流程图 (15)

4.3温度模块软件设计 (17)

4.3.1 DS18B20测温数据的读取程序设计 (17)

4.3.2 DS18B20温度读取流程 (20)

第5章总结 (22)

参考文献 (23)

附录A:温度实时曲线显示硬件原理图 (24)

附录B:软件程序 (25)

第1章前言

1.1 液晶的概述

物质通常分为三种型态晶体(固体)、液体、气体。

某些固体物质在一定条件下会呈现液态晶体状态。这种状态既不同于各向同性的液体,也不同于在三维空间分子完全规则排列的固体晶体,但又具有液体的流动性、连续性和分子排列的有序性。这种处于液体和晶体之间过渡相态的物质称为液晶。

液晶分为热致液晶和溶致液晶。前者是物质在某一温度范围内呈现液晶状态,后者是物质溶于水或有机溶剂而形成的。用于电子器件的液晶为热致液晶。现在的液晶物质均为芳香族化合物,已被发现的液晶物质多达3000余种。

液晶分子呈棒状或条状,宽约十几nm(纳米),长约数nm 液晶分子有较强的电偶极矩和容易极化的化学团。由于液晶分子间的作用力比固体弱,所以液晶分子容易呈现各种状态。液晶分子的介电常数、电导率、折射率、磁化率等具有较大的各向异性 ,在外加电场作用下会产生各种电光效应,从而可应用于液晶显示器(Liquid Crystal Display Device ,缩写为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.1 AT89S52单片机简介

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 字节在系统可编程 Flash AT89S52

在单片机的引脚外围固定的引脚,如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所示。

EA/VPP 31XTAL119XTAL218RST 9P3.7(RD)17P3.6(WR)16

P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P1.0(T2)1P1.1(T2EX)2P1.23P1.34P1.4

5P1.5(MOSI)6P1.6(MISO)7P1.7(SCK)8(AD0)P0.039(AD1)P0.138(AD2)P0.237(AD3)P0.336(AD4)P0.435(AD5)P0.534(AD6)P0.633(AD7)P0.732(A8)P2.021(A9)P2.122(A10)P2.223(A11)P2.324(A12)P2.425(A13)P2.526(A14)P2.627(A15)P2.728PSEN

29

ALE/PROG

30(TXD)P3.111(RXD)P3.010GND 20VCC 40U?AT89S52

图3.1 AT89S52引脚图

3.1.2 AT89S52单片机最小系统硬件设计

1)单片机复位电路硬件设计原理图,如图3.2所示。

10K

R1Res2S1

SW-PB 10uF

C2

Cap RST

VCC

图3.2 复位电路原硬件原理图

2)单片机的时钟电路硬件设计原理图,如图3.3所示。

12

Y1

11.0592M

100p

C1

100pF

C3Cap X1

X2

图3.3 时钟电路硬件原理图

3)单片机的电源电路硬件设计原理图,如图3.4所示。

0.1uF

C4Cap 100uF

CE2

Cap Feed 1K

R4Res21234USB POWER

DS1LED0

VCC

S6SW-SPST

图3.4 电源电路原理图

4)中断按键硬件设计原理图,如图3.5所示。

S4

SW-PB S3

SW-PB

INT1

INT0

图3.5 中断按键硬件原理图

3.2液晶显示模块硬件设计

3.2.1 LCD12864ZK 液晶模块介绍 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.1 12864ZK引脚功能

引脚名称功能

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:基本指令集)

2)指令表3.3(RE=1:扩展指令集)

指令

指令码

说明

R S R W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

待命模式 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

指令

指令码 说明

R S R W DB 7 DB

6

DB 5 DB 4 DB 3 DB 2 DB 1 DB 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

AC 5 AC 4 AC 3 AC 2 AC 1 AC 0 设定CGRAM 地址到地址计数器(AC ) 设定DDRAM 地址 0 0 1 AC 6

AC 5 AC 4 AC 3 AC 2 AC 1 AC 0 设定DDRAM 地址到地址计数器(AC ) 读取忙碌标志(BF )和地址 0 1 BF AC

6

AC 5

AC 4

AC 3

AC 2

AC 1

AC 0

读取忙碌标志(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 )

选择地址

反白选择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为ICON

IRAM地址

设定绘图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所示。

1234567891011121314151617181920

JP2

LCD12864

G N D V C C L C D _R S L C D _R W L C D _D B 0L C D _D B 1L C D _D B 2L C D _D B 3L C D _D B 4L C D _D B 5L C D _D B 7P S B L E D A L E D B

L C D _D B 61K

R5RPot VCC

R S T 1N C N C L C D _E VCC

VCC

VCC

1K

R8Res3S2SW-PB

V O 1K R?Res2

图3.7 12864液晶显示原理图

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 为外接供电电源。

64位

RO W 和一线端口

存储和控制逻辑

高速暂存器

8位CRC 生成器

温度传感器

高温触发器TH 低温触发器TL

配置寄存器

供电方式选择

V CC D Q

图3.8 DS18B20内部结构框图

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.9 DS18B20接线

在外部电源供电方式下, DS18B20工作电源由VDD引脚接人, 不存在电源电流不足的问题, 可以保证转换精度, 同时在总线上理论可以挂接任意多个DS18B20传感器, 组成多点测温系统。注意在外部供电的方式下, DS18B20的GND引脚不能悬空, 否则不能转换温度, 读取的温度总是85℃。

第4章液晶显示系统软件设计

4.1主程序设计

主程序要满足不断地采集温度信息,实时显示温度数值,描绘温度实时曲线,等要求。故主程序流程图见图4.1。

主程序开始

单片机初始化LCD初始化LCD中GDRAM 的内容清零屏幕上画坐标

DS18B20初始化

读取温度数据

并处理

flag==0?

在LCD屏幕上打点;

右上方显示温度数值

显示汉字

的界面

Y

N

flag1==1?

画坐标;

Flag1=0;

Y

N

图4.1 主程序流程图

4.2 液晶显示模块的设计

4.2.1 12864程序设计

4.2.1.1 12864ZK控制器指令操作方式

该课题使用液晶模块控制驱动器ST7920,它提供了并行和串行两类指令操作方式。这两种控制方式,由外部PSB引脚来选择:

当PSB引脚输入高电平时,为并行操作方式。

当PSB引脚输入低电平时,为串行操作方式。

其中,并行操作方式又可以分为8位并行操作方式和4位并行操作方式两种。下面只对这8位并行操作方式进行介绍。

12864ZK液晶模块8位并行连接时序图:

(1)MPU写资料到模块,见图4.2。

图4.2 MPU写资料到模块时序图

(2)MPU从模块读出资料,见图4.3。

图4.3 MPU从模块读出资料时序图

主控制系统将配合(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.5 GDRAM与液晶屏幕的对应关系示意图

由以上GDRAM排列顺序及其与液晶屏幕的对应关系可知:

(1) LCM12864ZK的绘图RAM(GDRAM)为64行*32BYTE/行(64行*16WORD/行 )。

(2) 在液晶屏幕上只能显示 1283 64个点 ,对应于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.2 12864程序设计流程图

由上述4.2节液晶显示模块的设计,设计的功能函数流程图见图4.5,图4.6,图4.7,图4.8,图4.9。

写数据开

E=0;RS=1;RW=0;P0口往LCD

写数据;

使能端E=1;

E=0;

函数返回

读数据开

E=0;

P0=0xFF;

RS=1;

RW=1;

使能端E=1;

P0口从LCD

读数据;

E=0;

函数返回

图4.5 MPU往模块写数据流程图图4.6 MPU从模块读出数据流程图

读指令开

E=0;P0=0xFF;RS=0;RW=1;使能端E=1;

P0口从LCD

读指令;

E=0;

函数返回

写指令开

E=0;

RS=0;

RW=0;

P0口往LCD

写指令;

使能端E=1;

E=0;

函数返回

图4.7 MPU从模块指令信息流程图图4.8 MPU往模块写指令流程图

打点函数开始

确定输入在LCD 屏的位置

确定GDRAM 的水平坐标与垂直坐标

得到要点亮屏幕

某点数据

往LCD 送GDRAM 的垂直坐标,水平

坐标

转换到扩展指令集

读高字节数据;读低字节数据;

被读高字节或上高

字节数据;被读低字节或上低

字节数据;

高低字节数据送

LCD

打点函数返回

往LCD 送GDRAM 的垂直坐标,水平

坐标

图4.9 绘图程序流程图

4.3 温度模块软件设计

4.3.1 DS18B20测温数据的读取程序设计

对室内温度的检测室通过数字温度传感器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所示。

S

S

S

S

S

2625 24

232221202-1 2-22-32-4

Bit7

Bit6Bit5Bit4Bit3Bit2

Bit1

Bit0

Bit15Bit8

Bit14Bit9

Bit11Bit13Bit10Bit12LS Byte

MS Byte

图4.10 DS18B20温度值格式表

这是12位转化后得到的12位数据, 存储在的两个8比特的RAM中, 二进制中的前面5位是符号位, 如果测得的温度大于0, 这位为0, 只要将测到的数值乘以0.0625即可得到实际温度,如果温度小于0, 这位为1, 测到的数值需要取反加1再乘以0.0625即可得到实际温度。例如+125℃的数字输出为,07D0H,+25.0625 ℃的数字输出

为,0191H,-25.0625℃的数字输出为,FF6FH -55℃的数字输出为FC90H。

2.单总线协议

单总线协议能够实现数据的双向传输, 操作包括数据的读写和复位功能。下面对各个方面进行具体的介绍。

(1)总线复位,首先必须对DS18B20进行复位,由单片机给DS18B20单总线至少480Us 的低电平信号,当DS18B20接到此复位信号后,延时15-60us,通过大地总线60-240us来产生应答脉冲。主机接收到从机的应答脉冲后,说明有单总线器件在线,通信双方达成基本协议。复位时序如图4.11所示。

单片机接收复位脉冲

最小480us

最大

960us

单片机发送复位脉冲

DS18B20响应

60~240us

最小480us

等待15~60us

图4.11 复位时序图

(2)控制器发送ROM指令。一旦总线主机检测到应答信号,便可以发起ROM操作指令。ROM指令一共有5条,见表格4.1每一个工作周期只能发一条。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接多少个

DS18B20并做出处理。一般只挂一个DS18B20时可以跳过ROM指令。

表4.1 ROM指令表

指令代码功能说明

读ROM 0x33 用于读出DS18B20内集成的64位激光ROM序列号

匹酪ROM 0x55

跳过ROM 0xCC

搜索ROM 0xF0

多个DS18B20在线时, 可用此命令匹配一个给定序列号,

此后命令就针对该芯片

忽略序列号, 对所有在线的DS18B20进行配置

用于读出在线的DS18B20的序列号

相关主题