基于51单片机的温度检测与数据存储系统设计(定稿版)综述

更新时间:2024-05-18 01:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本 科 生 毕 业 设 计

题目: 水温检测与存储系统设计

姓 名: XXXXXX 学 号: XXXXXXXXXXXX 所在学院: 信息工程学院 专业班级:XXXXXXXXXXXXXXXXX班

指导教师: XXXXXX

20XX年 X月 XX日

声 明

本人郑重声明:所呈交的毕业论文(设计),是本人在指导老师指导下,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,本毕业论文(设计)的研究成果不包含任何他人享有著作权的内容。对本论文(设计)所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。

本人签名:

日 期: 年 月 日

- 1 -

目 录

摘 要 ........................................................................................................................................... - 3 - Abstract .......................................................................................................................................... - 4 - 前 言 ............................................................................................................................................. - 5 - 第一章 系统整体设计方案 .......................................................................................................... - 6 -

1.1硬件总体设计 ................................................................................................................. - 6 -

1.1.1 硬件系统子模块 .................................................................................................. - 6 - 1.2软件总体设计 ................................................................................................................. - 6 - 第二章 硬件系统设计.................................................................................................................. - 7 -

2.1硬件电路分析和设计报告 ............................................................................................. - 7 -

2.1.1 单片机最小系统电路 .......................................................................................... - 7 - 2.1.2 键盘电路............................................................................................................ - 12 - 2.1.3 LCD12864显示电路 .......................................................................................... - 13 - 2.1.4 温度采集电路 .................................................................................................... - 20 - 2.1.5数据存储电路 ..................................................................................................... - 25 - 2.1.6加热控制电路 ..................................................................................................... - 28 -

第三章 软件系统设计................................................................................................................ - 29 -

3.1 系统软件设计整体思路 .............................................................................................. - 29 -

3.1.1 主程序................................................................................................................ - 30 - 3.1.2 LCD12864液晶显示 ....................................................................................... - 32 - 3.1.3 AT24C02数据存储模块 ................................................................................. - 38 - 3.1.4 18B20温度模块软件设计 .............................................................................. - 41 - 3.1.5 键盘扫描处理流程 ............................................................................................ - 48 -

第四章 系统调试 ....................................................................................................................... - 53 -

4.1硬件电路调试 ............................................................................................................... - 53 - 4.2软件调试 ....................................................................................................................... - 53 - 4.3 系统操作说明 .............................................................................................................. - 54 - 总结 ............................................................................................................................................. - 55 - 参考文献: ................................................................................................................................. - 56 - 致 谢 ......................................................................................................................................... - 57 - 附录A:水温检测与存储系统设计原理图 .............................................................................. - 58 - 附录B:软件程序 ...................................................................................................................... - 59 -

- 2 -

摘 要

随着现代工业的飞速发展,生产流程的技术提高和加工工艺的不断完善。温度——这一在工业生产中不可或缺的因素,一次又一次影响着、甚至很大程度上决定着生产产品质量的优劣。随之而来的,温度的检测与控制-----这一延续多年的课题依旧在日益扩张的工业化进程中起着举足轻重的作用。同样作为温度监测监控分支的水温监测监控系统,也在居民生活和工农业生产中发挥着它不可或缺的作用。

本系统已STC89C52RC单片机为控制核心,由显示电路、存储电路、按键电路、测温电路、晶闸管温控电路等组成。通过LCD12864显示温度和按键组成人机交互页面,使用单总线温度传感器DS18B20采集温度,使用晶闸管电路控制加热功率从而来实现调节温度。本文详细阐述了基于单片机的温度控制系统的硬件组成、软件设计及相关的接口电路设计。并且充分考虑了系统的可靠性,采取了相应的措施予以保证。 关键词:LCD12864 DS18B20 晶闸管 测温

- 3 -

The water temperature detection and data storage

Abstract

With the rapid development of modern industry, production processes and technology to improve the process of continuous improvement. Temperature - The industrial production indispensable factor, once again affecting, even to a large extent determine the production quality of the pros and cons. Followed, temperature measurement and control ----- continue for many years to this subject still plays an important role in the expanding industrialization process. The same as the temperature monitoring and control system for monitoring the temperature of the water branch, but also residents and industrial and agricultural production, it plays an indispensable role.

The system has been STC89C52RC microcontroller core, the show circuit, memory circuit, key circuit, temperature measurement circuit, thyristor temperature control circuit. By LCD12864 display the temperature and composition of interactive buttons page, single-bus temperature sensor DS18B20 collecting temperature, using a thyristor circuit controls the heating power so as to achieve temperature control. This paper describes the composition of the microcontroller-based temperature control system hardware, software, design and related interface circuit design. And fully consider the reliability of the system, take the appropriate measures to guarantee. Keywords: LCD12864 ;DS18B20; temperature ;Thyristor

- 4 -

前 言

随着社会的发展、科技的进步、以及测温仪器在各个领域的应用,自动化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已广泛应用于人们生活的各个方面。

及时准确地得到温度信息并对其进行适时的控制,在许多工业场合中都是重要的环节.水温的变化影响各种系统的自动运作,例如冶金、机械、食品、化工各类工业中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的水处理温度要求严格控制。对于不同控制系统,其适宜的水质温度总是在一个范围。超过这个范围,系统或许会停止运行或遭受破坏,所以我们必须能实时获取水温变化。对于,超过适宜范围的温度能够报警。同时,我们也希望在适宜温度范围内可以由检测人员根据实际情况加以改变。

单片机对对温度的控制是工业生产中经常使用的控制方法.自从1976年Intel公司推出第一批单片机以来,80年代单片机技术进入快速发展时期,近年来,随着大规模集成电路的发展,单片机继续朝快速、高性能方向发展。单片机主要用于控制,它的应用领域遍及各行各业,大到航天飞机,小至日常生活中的冰箱、彩电,单片机都可以大显其能。单片机将微处理器、存储器、定时/计数器、I/O接口电路等集成在一个芯片上的大规模集成电路,本身即是一个小型化的微机系统。单片机技术与传感与测量技术、信号与系统分析技术、电路设计技术、可编程逻辑应用技术、微机接口技术、数据库技术以及数据结构、计算机操作系统、汇编语言程序设计、高级语言程序设计、软件工程、数据网络通信、数字信号处理、自动控制、误差分析、仪器仪表结构设计和制造工艺等的结合,使得单片机的应用非常广泛。同时,单片机具有较强的管理功能。采用单片机对整个测量电路进行管理和控制,使得整个系统智能化、功耗低、使用电子元件较少、内部配线少、成本低,制造、安装、调试及维修方便。

传统的温度采集电路相当复杂,需要经过温度采集、信号放大、滤波、AD转换等一系列工作才能得到温度的数字量,并且这种方式不仅电路复杂,元器件个数多,而且线性度和准确度都不理想,抗干扰能力弱。现在常用的温度传感器芯片不但功率消耗低、准确率高,而且比传统的温度传感器有更好的线性表现,最重要的一点是使用起来方便。

- 5 -

第一章 系统整体设计方案

1.1硬件总体设计

设计并制作一个基于单片机的水温检测和数据存储的电路其结构框图如图1-1所示

电源 温度传感器 DS18B20 单片机stc89c52 可控硅驱动 存储 键盘 指示灯 LCD12864显示 图1-1 硬件结构框图 1.1.1 硬件系统子模块

(1) 单片机最小系统电路部分 (2) 键盘扫描电路部分 (3) 液晶LCD12864温度显示 (4) 温度采集电路部分 (5) 晶闸管控制部分 (6) 存储部分

1.2软件总体设计

良好的设计方案可以减少软件设计的工作量,提高软件的通用性,扩展性和可读

性。

- 6 -

本系统的设计方案和步骤如下:

(1) 根据需求按照系统的功能要求,逐级划分模块。

(2) 明确各模块之间的数据流传递关系,力求数据传递少,以增强各模块的独立性,便于软件编制和调试。

(3) 确定软件开发环境,选择设计语言,完成模块功能设计,并分别调试通过。 (4) 按照开发式软件设计结构,将各模块有机的结合起来,即成一个较完善的系统。 首先接通电源系统开始工作,系统开始工作后,通过按键设定温度值的上限值功率的上限值,确定按键将设定的温度值存储到指定的地址空间,温度传感器开始实时检测,调用显示子程序显示检测结果,调用比较当前显示温度值与开始设定的温度值比较,如果当前显示值低于设定值就通过晶闸管起动加热装置,直到达到设定值停止加热,之后进行保温。

第二章 硬件系统设计

2.1硬件电路分析和设计报告

本次设计主要思路是通过对单片机编程将由温度传感器DS18B20采集的温度外加驱动电路显示出来,包括对继电器的控制,进行升温。P2.0和P2.1是设定功率增加和减小的,P2.2和P2.3是设定温度上升和下降的,P2.4是用来存储数据的,P2.5是用来调用存储数据的。整个电路都是通过软件控制实现设计要求。 2.1.1 单片机最小系统电路

本系统采用的单片机为STC89C52RC。STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:

增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.

工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)

工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz 用户应用程序空间为8K字节

- 7 -

片上集成512字节RAM

通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片

具有EEPROM功能 具有看门狗功能

共3个16位定时器/计数器。即定时器T0、T1、T2

外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒

通用异步串行口(UART),还可用定时器软件实现多个UART 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) PDIP封装

STC89C52RC单片机的工作模式

掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序 空闲模式:典型功耗2mA

正常工作模式:典型功耗4Ma~7mA

掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备

- 8 -

STC89C52RC引脚图 STC89C52RC引脚功能说明 VCC(40引脚):电源电压 VSS(20引脚):接地

P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。

P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(错误!未找到引用源。)。

- 9 -

此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见下表:

在对Flash ROM编程和程序校验时,P1接收低8位地址。 表XX P1.0和P1.1引脚复用功能 引脚号 P1.0 P1.1 功能特性 T2(定时器/计数器2外部计数输入),时钟输出 T2EX(定时器/计数器2捕获/重装触发和方向控制) P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(错误!未找到引用源。)。

在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。

在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。 P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(错误!未找到引用源。)。

在对Flash ROM编程或程序校验时,P3还接收一些控制信号。 P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示: 表XX P3口引脚复用功能 引脚号 P3.0 P3.1 P3.2 0) 复用功能 RXD(串行输入口) TXD(串行输出口) 错误!未找到引用源。(外部中断 - 10 -

P3.3 1) P3.4 P3.5 P3.6 错误!未找到引用源。(外部中断T0(定时器0的外部输入) T1(定时器1的外部输入) 错误!未找到引用源。(外部数据存储器写选通) P3.7 错误!未找到引用源。(外部数据存储器读选通) RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/错误!未找到引用源。(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚(错误!未找到引用源。)也用作编程输入脉冲。

在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。

如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

错误!未找到引用源。(29引脚):外部程序存储器选通信号(错误!未找到引用源。)是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,错误!未找到引用源。在每个机器周期被激活两次,而访问外部数据存储器时,错误!未找到引用源。将不被激活。

错误!未找到引用源。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,错误!未找到引用源。必须接GND。注意加密方式1时,错误!未找到引用源。将内部锁定位RESET。为了执行内部程序指令,错误!未找到引用源。应该接VCC。在Flash编程期间,错误!未找到引用源。也接收12伏VPP

- 11 -

电压。

XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2(18引脚):振荡器反相放大器的输入端。

单片机最小系统的原理图如图2-1所示,单片机最小系统主要由晶振电路和复位电路组成。单片机XIAL1和XIAL2分别接30PF的电容,中间再并个12MHZ的晶振,形成单片机的晶振电路。ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源。

图2-1 单片机最小系统

2.1.2 键盘电路

键盘是单片机应用系统中的主要输入设备,单片机使用的键盘分为编码键盘和非编码键盘。编码键盘采用硬件线路来实现键盘的编码,每按下一个键,键盘能够自动生成按键代码,并有去抖功能。因此使用方便,但硬件较复杂。非编码键盘仅仅提供键开关状态,由程序来识别闭合键,消除抖动,产生相应的代码,转入执行该键的功能程序。非编码键盘中键的数量较少,硬件简单,在单片机中应用非常广泛。

该系统总共使用了6个按键,每个按键的功能都由软件决定,按键功能如图2-2所示。

- 12 -

图2-2 按键功能图

按键电路图如图2-3所示。

图2-3 按键电路图

2.1.3 LCD12864显示电路

该系统的显示采用液晶LCD12864液晶进行显示,LCD12864能够显示汉字和字符。相对与数码管显示更灵活,显示内容更加丰富,人机交互页面更加人性化。

LCD112864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

LCD12864的基本特性

(1)、低电源电压(VDD:+3.0--+5.5V)

- 13 -

(2)、显示分辨率:128×64点

(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) (4)、内置 128个16×8点阵字符 (5)、2MHZ时钟频率

(6)、显示方式:STN、半透、正显 (7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点

(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 (10)、通讯方式:串行、并口可选 (11)、内置DC-DC转换电路,无需外加负压 (12)、无需片选信号,简化软件设计

(13)、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃

管脚号 管脚名称 电平 管脚功能描述 1 2 3 VSS VCC V0 0V 3.0+5V - 电源地 电源正 对比度(亮度)调整 RS=“H”,表示DB7——DB0为显示数据 RS=“L”,表示DB7——DB0为显示指令数据 4 RS(CS) H/L R/W=“H”,E=“H”,数据被读到DB7——DB0 R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR 5 R/W(SID) H/L 6 7 8 E(SCLK) DB0 DB1 H/L H/L H/L 使能信号 三态数据线 三态数据线 - 14 -

9 10 11 12 13 14 DB2 DB3 DB4 DB5 DB6 DB7 H/L H/L H/L H/L H/L H/L 三态数据线 三态数据线 三态数据线 三态数据线 三态数据线 三态数据线 H:8位或4位并口方式,L:串口方式(见注释1) 15 PSB H/L 16 17 NC /RESET - H/L 空脚 复位端,低电平有效(见注释2) 18 19 20 VOUT A K - VDD VSS LCD驱动电压输出端 背光源正端(+5V)(见注释3) 背光源负端(见注释3) *注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。四.模块

主要硬件构成说明

控制器接口信号说明:

1、RS,R/W的配合选择决定控制界面的4种模式:

RS R/W 功能说明 L L MPU写指令到指令暂存器(IR) 读出忙标志(BF)及地址记数器(AC)的L H 状态 - 15 -

H L MPU写入数据到数据暂存器(DR) H H MPU从数据暂存器(DR)中读出数据 2、E信号

E状态 高——>低 高 低/低——>高 执行动作 I/O缓冲——>DR DR——>I/O缓冲 无动作 结果 配合/W进行写数据或指令 配合R进行读数据或指令 ● 忙标志:BF BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态.

● 字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。

● 显示数据RAM(DDRAM)模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。

● 字型产生RAM(CGRAM) 字型产生RAM提供图象定义(造字)功能, 可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。

● 地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动

- 16 -

加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中。

光标/闪烁控制电路

此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。

LCD12864的写数据时序,如图2-4所示

图2-4 液晶写数据时序

LCD12864的读数据时序,如图2-5所示

图2-5 液晶读数据时序

LCD12864

的指令集如表格所示

- 17 -

指令表1:(RE=0:基本指令)

指 指 令 码 令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 清除 0 显示 地址 0 归位 显示D=1: 整体显示 ON 状态0 开/B=1:游标位置反白允许 关 进入指定在数据的读取与写入时,设定游标的移动方向及指点 设定 游标或显设定游标的移动与显示的移位控制位;这个指令不改变示移位控制 DL=0/1:4/8位数据 功能 0 设定 RE=0: 基本指令操作 设定CGRA0 M 地址 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 设定CGRAM 地址 0 0 0 1 DL X RE X X RE=1: 扩充指令操作 0 0 0 0 0 1 S/C R/L X X DDRAM 的内容 0 0 0 0 0 0 0 1 I/D S 定显示的移位 0 0 0 0 0 1 D C B C=1: 游标ON 0 0 0 0 0 0 0 1 X 开头原点位置;这个指令不改变DDRAM 的内容 0 0 0 0 0 0 0 0 1 到\设定DDRAM的地址计数器(AC)到\并且将游标移到功 能 将DDRAM填满\并且设定DDRAM的地址计数器(AC) - 18 -

设定设定DDRAM 地址(显示位址) DDRA0 M 第二行:90H-97H 地址 读取忙标0 志和地址 写数将数据D7——D0写入到内部的RAM 据到RAM 读出从内部RAM读取数据D7——D0 RAM的值 1 1 数据 (DDRAM/CGRAM/IRAM/GRAM) 1 0 数据 (DDRAM/CGRAM/IRAM/GRAM) 1 读取忙标志(BF)可以确认内部动作是否完成,同时可以BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 读出地址计数器(AC)的值 0 1 0 AC5 AC4 AC3 AC2 AC1 AC0 第一行:80H-87H 指令表2:(RE=1:扩充指令)

指 指 令 功 能 码 令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 待命 0 模式 卷动地址0 开关开启 选择2行中的任一行作反白显示,并可决定反白与否。初反白 0 选择 常 睡眠 0 模式 0 0 0 0 0 1 SL X X SL=1:脱离睡眠模式 SL=0:进入睡眠模式 0 0 0 0 0 0 1 R1 R0 始值R1R0=00,第一次设定为反白显示,再次设定变回正0 0 0 0 0 0 0 1 SR SR=0:允许输入IRAM和CGRAM地址 SR=1:允许输入垂直卷动地址 0 0 0 0 0 0 0 0 1 待命模式 进入待命模式,执行其他指令都棵终止 - 19 -

CL=0/1:4/8位数据 扩充 RE=1: 扩充指令操作 功能 0 设定 G=1/0:绘图开关 设定绘图0 RAM 地址 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 再设定水平(行)地址AC3AC2AC1AC0 将以上16位地址连续写入即可 0 0 设定绘图RAM 0 AC3 AC2 AC1 AC0 先设定垂直(列)地址AC6AC5…AC0 0 0 0 1 CL X RE G 0 RE=0: 基本指令操作

该系统的LCD12864液晶硬件电路的复位电路采用上电复位,对比度的调节采用精密电位器调节。液晶电路如图2-7所示。

图2-7 液晶电路

2.1.4 温度采集电路 (1) DS18B20介绍

Dallas最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822“一线总线”数字化温度传感器同DS18B20一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃。DS1822的精度较差为±2℃。现场温

- 20 -

度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。其DS18B20的管脚配置和封装结构如图2-8所示。

图2-8 DS18B20封装

引脚定义:

① DQ为数字信号输入/输出端; ② GND为电源地;

③ VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 (2)DS18B20的单线(1-wire bus)系统

单线总线结构是DS18B20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,而且DS18B20智能程度较低(这点可以与微控制器和SPI器件间的通信做一个比较),所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成。第二,DS18B20的输出口是漏级开路输出,这里给出一个微控制器和DS18B20连接原理图。这种设计使总线上的器件在合适的时间驱动它。显然,总线上的器件与(wired AND)关系。这就决定:(1)微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上认为,微控制器在读取总线上数据之前的I/O口的置1操作是为了给DS18B20一个发送数据的信号。这是一个错误的观点。如果当前DS18b20发送0,即使微控制器I/O口置1,总线状态还是0;置1操作是为了是I/O口截止(cut off),以确保微控制器正确读取数据。(2)除了DS18B20发送0的时间段,其他时间其输出口自动截止。自动截止是为确保:1时,在总线操作的间隙总

- 21 -

线处于空闲状态,即高态。2时,确保微控制器在写1的时候DS18B20可以正确读入。

由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

① DS18B20的复位时序,如图2-9

图2-9 DS18B20的复位时序图

② DS18B20的读时序

对于DS18B20的读时序分为读0时序和读1时序两个过程。

对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的读时序图如图2-10所示。

图2-10 DS18B20的读时序

③ DS18B20的写时序

对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。

对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。如图2-11所示。

- 22 -

图2-11 DS18B20的写时序图

(3)DS18B20的供电方式

在图2-12中示出了DS18B20的寄生电源电路。当DQ或VDD引脚为高电平时,这个电路便“取”的电源。寄生电路的优点是双重的,远程温度控制监测无需本地电源,缺少正常电源条件下也可以读ROM。为了使DS18B20能完成准确的温度变换,当温度变换发生时,DQ线上必须提供足够的功率。

有两种方法确保 DS18B20 在其有效变换期内得到足够的电源电流。第一种方法是发生温度变换时,在 DQ 线上提供一强的上拉,这期间单总线上不能有其它的动作发生。如图2-8 所示,通过使用一个 MOSFET 把 DQ 线直接接到电源可实现这一点,这时DS18B20 工作在寄生电源工作方式,在该方式下 VDD 引脚必须连接到地。

图2-12 DS18B20供电方式1

另一种方法是 DS18B20 工作在外部电源工作方式,如图2-13 所示。这种方法的优点是在 DQ 线上不要求强的上拉,总线上主机不需要连接其它的外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。此外,在单总线上可以并联多个 DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。

- 23 -

图2-13 DS18B20供电方式2 (4)DS18B20设计中应注意的几个问题

DS18B20具有测温系统简单、测温精度高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题:较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20 与微处理器间采用串行数据传送。因此, 在对DS18B20 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在DS18B20 有关资料中均未提及1Wire上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当1Wire上所挂DS18B20超过8个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。连接DS18B20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC 和地线,屏蔽层在源端单点接地。

本文以广泛应用的数字温度传感器DS18B20为例,说明了1Wire总线的操作过程和基本原理。事实上,基于1Wire总线的产品还有很多种,如1Wire总线的E2PROM、实时时钟、电子标签等。他们都具有节省I/O资源、结构简单、开发快捷、成本低廉、便于总线扩展等优点,因此有广阔的应用空间,具有较大的推广价值。

本设计将温度传感器DS18B20与单片机P1.4引脚相连,读取温度传感器的数值。DS18B20电路如图所示2-14所示。

图2-14 DS18B20电路

- 24 -

2.1.5数据存储电路

(1)I2C总线介绍

I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。

一个典型的I2C总线应用系统的组成结构如下图所示(假设图中的微控制器、LCD

驱动、E2PROM、ADC

各器件都是具有I2C总线接口的器件):

图2-15 I2C总线应用系统结构图

我们知道单片机串行通讯的发送和接收一般都各用一条线TXD和RXD,而I2C总线的数据线既可以发送也可以接受,工作方式可以通过软件设置。所以,I2C总线结构的硬件结构非常简洁。

当某器件向总线上发送信息时,它就是发送器,而当其从总线上接收信息时,又成为接收器。

(2)I2C的传输协议

I2C总线每传送一位数据必须有一个时钟脉冲。被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,示意图如下图2-16所示,在标准模式下,高低电平宽度必须不小于4.7us。

- 25 -

图2-16 IC总线传送数据时序图

2

那么是不是所有I2C总线中的信号都必须符合上述的有效性呢?只有两个例外,就是开始和停止信号。

开始信号:当SCL为高电平时,SDA发生从高到低的跳变,就定义为开始信号。 停止信号:当SCL为高电平时,SDA发生从低到高的跳变,就定义为结束信号。 开始和结束信号的时序图如下图2-17所示:

SDA传送数据是以字节为单位进行的。每个字节必须是8位,但是传输的字节数量不受限制,首先传送的是数据的最高位。每次传送一个字节完毕,必须接收到从机发出的一个应答位,才能开始下一个字节的传输。如果没有接受到应答位,主机则产生一个停止条件结束本次的传送。那么从机应该发出什么信号算是产生了应答呢?这个过程是这样的。当主器件传送一个字节后,在第9个SCL时钟内置高SDA线,而从器件的响应信号将SDA拉低,从而给出一个应答位。

好啦,了解了I2C传输数据的格式,现在来研究双方传送的协议问题。

- 26 -

图2-17 IC总线传送数据开始和结束信号的时序图

2

I2C总线的数据传输协议如下:

(1)、主器件发出开始信号

(2)、主器件发出第一个字节,用来选通相应的从器件。其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,方向位为“1”表示接受。

(3)、从机产生应答信号,进入下一个传送周期,如果从器件没有给出应答信号,此时主器件产生一个结束信号使得传送结束,传送数据无效。

(4)、接下来主、从器件正式进行数据的传送,这时在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位(传送的时候先送高位,再送低位)。当一个字节传送完毕时,再发送一个应答位(第9位),如上一条所述,这样每次传送一个字节都需要9个时钟脉冲。数据的传送过程如下图2-18所示:

图2-18 IC总线数据的传送过程图

2 (3)24C02简介

24C01/2402是一个1K/2K/4K/8K/16K 位串行

CMOS E2PROM, 内部含有

8

位字

128/256/512/1024/2048

节,CATALYST 公司的先进CMOS 技术实质上减少了器件的功耗。CAT24WC01 有一个8 字节页写缓冲器,24c01/24c02有一个16 字节页写缓冲器.该器件通过I2C 总线接

口进行操作有一个专门的写保护功能. 图2-19 24C02芯片管脚及其描

AT24C02是带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,并

- 27 -

且可以象普通RAM一样用程序改写。它的容量是256个字节(00h~0ffh),有A2、A1、A0三位地址,可见I2C总线上可以连接8片AT24C02,它的寻址字节是1010 A2A1A0 R/W。 图2-20是DIP封装的24C02与80C51的接口方案。其中A0、A1、A2是芯片地址线,单片使用时接地;SCL是串行移位时钟端;SDA是串行数据或地址端,CPU通过SDA访问芯片;WP是写保护端,接高电平时芯片只能读。

图2-20 24C02执行写操作时与80C51的接口

该系统的数据存储电路如图2-21所示

图2-21 24C02存储电路

2.1.6加热控制电路

双向可控硅是常用的输出控制接口,可以做交直流信号的输出切换。通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。双向可控硅电路还能任意调节导通角,通过调节导通角可以实现加热功率的任意调节。

当STC89C52的P1.1输出高电平时,双向可控硅导通活了连接回路,反之当输出低电平时,双向可控硅不导通,这样连接回路就不通。加热控制电路如图2-22所示

- 28 -

图2-22 加热控制电路

该控制电路采用可以驱动双向可控硅的光耦MOC3083来驱动大功率双向可控硅BTA16。光耦输入端采用了恒流源电路,所以输入端的控制电压可以为3v-32v。输出端直接用光耦控制双向可控硅的导通角,从而调节功率。

第三章 软件系统设计

一个应用系统要完成各项功能,首先必须有较完善的硬件作保证,同时还必须得到相应设计合理的软件的支持。尤其是计算机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与C51系列单片机相对应的51C语言和结构化程序设计方法进行软件编程。

该设计的功能是在程序控制下实现的。该系统的软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。采用STC89RC52通用单片机,成本低,稳定性高。

3.1 系统软件设计整体思路

系统整体软件程序设计包括主函数、LCD12864液晶显示模块、AT24C02数据存储模块、18B20温度采集模块、按键模块、PWM占空比可调输出。

- 29 -

3.1.1 主程序

系统主程序包括LCD12864液晶显示的初始化、AT24C02数据存储模块初始化、按键扫描初始化、PWM占空比可调模块程序初始化以及读取存储的温度设置、温度以及功率值。

主程序主要通过调用其他函数来实现系统的总体功能,其工作顺序如下:

(1) 系统启动后,进行系统的初始化、读取存储的温度设置、温度以及功率值。 (2)显示主界面“水温检测存储”,显示主界面相关数据信息,之后按键扫描函数KeyScan()循环进行扫描,接下来从18B20读出温度值,并且将其送入12864中显示出来。

(3)如果当前的温度接近设置的温度,那么程序中开始对功率进行调整,将其功率降为最低开始保持温度处于某一个恒定值。

图3-1主函数部分程序1

- 30 -

图3-2主函数部分程序2

主程序的程序流程图如图4-3所示。

开始程序初始化、读取存储数据键盘扫描 显示程序温度读取处理温度超限判断执行温度超限判断执行

图3-3主程序流程图

- 31 -

3.1.2 LCD12864液晶显示

图3-4 12864整体显示流程图

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

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

- 32 -

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

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

12864ZK液晶模块8位并行连接时序图: (1)MPU写资料到模块,见图3-5。

图3-5 MPU写资料到模块时序图

(2)MPU从模块读出资料,见图3-6。

图3-6 MPU从模块读出资料时序图

主控制系统将配合(RS、RW、E、DB0~DB7)来完成数据传送。从一次完整的流程来看,当执行设定地址(CGRAM,DDRAM,IRAM等)指令后,若要读取数据则需要先空读一次,才能得到正确的数据。第二次读取时不需要空读,除非又执行一次设定地址指令才需要再次空读一次。

- 33 -

3.1.2.2 LCM绘图过程分析

图形显示程序的关键在于解决图形坐标系、屏幕坐标系、GDRAM坐标系的转换问题,也就是确定要显示的点对应在液晶屏面上像素的位置和在 GDRAM中的地址。得到这个对应关系后 ,我们就可以通过将某个存储单元中的某一位置为1来实现在液晶屏上画出这个点。LCM12864ZK的水平与垂直地址示意图如图3-7所示。

图3-7 LCM12864ZK水平地址与垂直地址示意图

LCM12864ZK液晶模块内GDRAM与液晶屏幕的对应关系如图4.5所示。

图3-8 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数据写入。

- 34 -

在实际绘图过程中,由于每一个GDRAM地址对应于16个位(BIT)地址,所以如果第二次写GDRAM(H,V),则该RAM中其他位的值有时会改变,为了避免这种改变,需要事先将该地址中的内容读出来 (ST7920有此功能)与此次要写入的值取或后作为最终值写入。

3.1.2.3 12864程序设计流程图

由上述液晶显示模块的设计,设计的功能函数流程图见图3-9,图3-10,图3-11,图3-12,图3-13。

写数据开始P0口往LCD写数据;读数据开始使能端E=1;E=0;RS=1;RW=0;使能端E=1;E=0;E=0;P0=0xFF;RS=1;RW=1;P0口从LCD读数据;E=0;函数返回函数返回

写指令开始

图3-9 MPU往模块写数据流程图 图3-10 MPU从模块读出数据流程图

读指令开始使能端E=1;P0口往LCD写指令;E=0;P0=0xFF;RS=0;RW=1;P0口从LCD读指令;E=0;E=0;RS=0;RW=0;使能端E=1;E=0;函数返回函数返回

图3-11 MPU从模块指令信息流程图 图3-12 MPU往模块写指令流程图

- 35 -

打点函数开始转换到扩展指令集确定输入在LCD屏的位置往LCD送GDRAM的垂直坐标,水平坐标确定GDRAM的水平坐标与垂直坐标读高字节数据;读低字节数据;得到要点亮屏幕某点数据被读高字节或上高字节数据;被读低字节或上低字节数据;图3-13 绘图程序流程图

3.1.2.3 12864部分驱动程序

- 36 - 往LCD送GDRAM的垂直坐标,水平坐标高低字节数据送LCD打点函数返回

- 37 -

图3-13 12864部分驱动程序

3.1.3 AT24C02数据存储模块

单片机与24C02采用I2C的通信方式。在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)确定。在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。每次都是先传最高位,通常从器件在接收到每个字节后都会作出响应,即释放SCL线返回高电平,准备接收下一个数据字节,主器件可继续传送。

- 38 -

起始信号:在SCL保持为高电平期间,SDA从高电平翻转为低电平; 结束信号:在SCL保持为高电平期间,SDA从低电平翻转为高电平。

- 39 -

本文来源:https://www.bwwdw.com/article/obe7.html

Top