基于单片机的太阳能热水器课程设计报告书_第1页
基于单片机的太阳能热水器课程设计报告书_第2页
基于单片机的太阳能热水器课程设计报告书_第3页
基于单片机的太阳能热水器课程设计报告书_第4页
基于单片机的太阳能热水器课程设计报告书_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PAGE36 / NUMPAGES38摘 要 随着人们生活水平的不断提高,全球人口和经济规模的不断增长,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中,能源使用带来的环境问题与其诱因逐渐为人们所认识,“低碳经济”这一概念开始进入人们的视野。太阳能具有储量的“无限性”、存在的普遍性,并且几乎不产生任何污染。鉴于此,人们在大力的发展太阳能产业。太阳能热水器顺应时代发展的要求,满足人们对环保绿色产品的需求。在人类文明程度日益提高的今天,它是现代文明社会的最佳选择。本文提出了一种新型的太阳能热水器控制系统设计方案。本设计采用MSC-51系列单片机AT89S52作为中央处理

2、器,采用DS1302实时时钟,12864点阵式液晶显示屏等模块,完成时间温度水位的显示,以与时间和温度的设定等功能。关键字:太阳能热水器;单片机;实时时钟;液晶显示屏 目录TOC o 1-3 h u HYPERLINK l _Toc12886 1 智能仪器仪表的简介 PAGEREF _Toc12886 1 HYPERLINK l _Toc32657 1.1智能仪器仪表简介 PAGEREF _Toc32657 1 HYPERLINK l _Toc14677 1.2智能仪器仪表的作用 PAGEREF _Toc14677 1 HYPERLINK l _Toc7902 1.3本课题的背景和意义 PAG

3、EREF _Toc7902 1 HYPERLINK l _Toc4151 2 系统设计简介 PAGEREF _Toc4151 3 HYPERLINK l _Toc1791 2.1 方案论证 PAGEREF _Toc1791 3 HYPERLINK l _Toc28702 2.2 总体设计 PAGEREF _Toc28702 4 HYPERLINK l _Toc651 2.2.1太阳能热水器的组成与工作原理 PAGEREF _Toc651 4 HYPERLINK l _Toc32600 2.2.2系统总体流程图 PAGEREF _Toc32600 5 HYPERLINK l _Toc21600

4、3 太阳能热水器控制系统的硬件设计 PAGEREF _Toc21600 6 HYPERLINK l _Toc31729 3.1 主控芯片模块 PAGEREF _Toc31729 6 HYPERLINK l _Toc13943 3.1.1 主控芯片模块电路 PAGEREF _Toc13943 6 HYPERLINK l _Toc17319 3.1.2 主控芯片简介 PAGEREF _Toc17319 7 HYPERLINK l _Toc13436 3.2 实时时钟模块 PAGEREF _Toc13436 9 HYPERLINK l _Toc27842 3.2.1 实时时钟模块电路 PAGEREF

5、 _Toc27842 9 HYPERLINK l _Toc26581 3.2.2 实时时钟简介 PAGEREF _Toc26581 10 HYPERLINK l _Toc32344 3.3 温度传感器模块 PAGEREF _Toc32344 11 HYPERLINK l _Toc2375 3.3.1 温度传感器模块电路 PAGEREF _Toc2375 11 HYPERLINK l _Toc3078 3.3.2 温度传感器简介 PAGEREF _Toc3078 12 HYPERLINK l _Toc11350 3.4 液晶显示模块 PAGEREF _Toc11350 14 HYPERLINK

6、l _Toc22570 3.4.1 液晶显示模块电路 PAGEREF _Toc22570 14 HYPERLINK l _Toc23315 3.4.2 液晶显示屏简介 PAGEREF _Toc23315 15 HYPERLINK l _Toc31001 3.5 键盘输入模块 PAGEREF _Toc31001 17 HYPERLINK l _Toc15610 4 设计语言与软件介绍 PAGEREF _Toc15610 19 HYPERLINK l _Toc8429 4.1 汇编语言介绍 PAGEREF _Toc8429 19 HYPERLINK l _Toc2564 4.2wave6000软件

7、介绍 PAGEREF _Toc2564 19 HYPERLINK l _Toc25821 5 系统软件设计 PAGEREF _Toc25821 20 HYPERLINK l _Toc21285 5.1 概述 PAGEREF _Toc21285 20 HYPERLINK l _Toc2113 5.2 系统程序设计模块 PAGEREF _Toc2113 20 HYPERLINK l _Toc13252 5.3 初始化程序 PAGEREF _Toc13252 21 HYPERLINK l _Toc12453 5.4 按键检测与处理程序 PAGEREF _Toc12453 22 HYPERLINK l

8、 _Toc23541 5.5读取温度的程序 PAGEREF _Toc23541 24 HYPERLINK l _Toc21408 5.6控制源程序 PAGEREF _Toc21408 25 HYPERLINK l _Toc8569 5.7调试与仿真 PAGEREF _Toc8569 29 HYPERLINK l _Toc29777 结 论 PAGEREF _Toc29777 33 HYPERLINK l _Toc30163 参 考 文 献 PAGEREF _Toc30163 341 智能仪器仪表的简介1.1智能仪器仪表简介仪器仪表(英文:instrumentation)仪器仪表是用以检出、测量

9、、观察、计算各种物理量、物质成分、物性参数等的 HYPERLINK :/baike.baidu /view/1736722.htm t _blank 器具或设备。真空检漏仪、 HYPERLINK :/baike.baidu /view/655644.htm t _blank 压力表、测长仪、显微镜、乘法器等均属于仪器仪表。广义来说,仪器仪表也可具有自动控制、报警、 HYPERLINK :/baike.baidu /view/1331229.htm t _blank 信号传递和数据处理等功能,例如用于 HYPERLINK :/baike.baidu /view/1714883.htm t _bl

10、ank 工业生产过程自动控制中的气动调节仪表,和 HYPERLINK :/baike.baidu /view/2147787.htm t _blank 电动调节仪表,以与集散型仪表控制系统也皆属于仪器仪表。1.2智能仪器仪表的作用 随着全球人口和经济规模的不断增长,能源使用带来的环境问题与其诱因逐渐为人们所认识,“低碳经济”这一概念开始进入人们的视野。人们在大力的发展太阳能产业。能源问题将更为突出:从长远来看,全球已探明的石油储量只能用到2020 年,天然气也只能延续到2040 年左右,即使储量丰富的煤炭资源也只能维持二三百年。环境污染温室效应引起全球气候变化。因此,人类在解决上述能源问题,实

11、现可持续发展,只能依靠科技进步,大规模地开发利用可再生洁净能源。太阳能具有:储量的“无限性”太阳每秒钟放射的能量大约是1.610 的23 次方kW,一年到达地球表面的太阳能总量折合标准煤共约1.89210 的13 次方千亿t。太阳能对于地球上绝大多数地区具有存在的普遍性,可就地取用。 在世界围,太阳能热水器技术已很成熟,并已形成行业,正在以优良的性能不断地冲击电热水器市场和燃气热水器市场。2000 年太阳能热水器取代47000 套家用电热水器;2000 年日本太阳能热水器的拥有量将翻一番;以色列更是明文规定,所有新建房屋必须配备太阳能热水器。目前,我国是世界上太阳能热水器生产量和销售量最大的国

12、家。然而,目前市场上太阳能热水器的控制系统大多存在功能单一、操作复杂、控制不方便等问题,很多控制器具有温度和水位显示功能,却不具有温度控制功能,致使热水器阴天的时候不能方便使用。即使热水器具有辅助加热功能,也可能由于加热时间不能控制而产生过烧,从而浪费电能。1.3本课题的背景和意义 资源是社会经济发展的物质基础,经济愈发展,对资源的依赖性愈强。许多资源(如煤、石油、天然气等)是不可再生的,而且在利用过程中给人类生存环境带来极大污染,人类繁衍生息的物质和环境基础受到严峻挑战。加强清洁、可再生资源的开发利用,已引起全世界的普遍重视。太阳能作为一种取之不尽、用之不竭的可再生资源,有节能、环保、安全和

13、永续利用等优点,理应成为开发利用的首选。其中太阳能热水器作为家庭生活用品,其开发利用在我国已走过了二十多年的历程,生产技术成熟,具有明显优点:(一)从节能环保的角度讲,使用太阳能热水器不会对环境造成污染,同时为国家节约了大量能源,社会效益明显,是国家重点推广项目,使用前景广阔。(二)太阳能热水器的使用寿命较长,使用太阳能热水器经济实惠。若使用合理,其寿命可达15年甚至更长。据测算,使用平方米太阳能热水器,相当于每年节约310度电。太阳能热水器的费用只有燃气热水器的七分之一,电热水器的六分之一。购置太阳能热水器一次性投资3000元左右,使用5至6年就可实现与其热水器的支出对比平衡。按照装置寿命1

14、5年计算,其经济效益是十分明显的。(三)太阳能热水器集热效果好,集热时间更长。只要能照射到的地方,就可以使用太阳能热水器,即使在高寒地区一年四季也可以正常使用。在我国、等地,太阳能热水器的研发和生产已形成规模,应用太阳能热水器的场所也由家居使用扩展到医院、学校、宾馆、饭店、游泳池、洗浴场所等。2 系统设计简介2.1 方案论证 (1)方案一 在单片机学习课程中,就遇到过一种方案,称其为方案一。它通过三极管的导通截止特性来判断液位的位置,并且可以通过按键切换检测压力。但是在过程中只能检测三点,虽然可以扩展,但是占了太多的I/O口,容易造成资源的浪费。而且仅显示单元就占用了12个I/O口,同样属于资

15、源浪费。在电机电路设计方面,方案一采用的三极管的导通截止来控制点击的正转与反转,虽然设计简单,但是过多的使用三极管以与二极管类的元器件,也会使成本升高。而且,既然是太阳能热水器的自动控制装置,那么必不可少的就是温度的检测,而方案一中却忽略了这点,造成了最大的残缺。 (2)方案二 方案二主要解决了方案一中资源浪费与过于使用分立元件的缺陷。在液位检测方面,通过利用两片CD4051芯片,它相当于一个单刀八掷开关,当INH禁止端为低电平即“0”时,开关接通哪一通道由输入的3位地址码ABC来决定。这样就简单的解决了16个点检测的问题,并且在最大程度上减少了I/O口的使用。仅使用了8个I/O口即可控制16

16、个点的检测,如果是方案一,则需要使用16个I/O口。而且在方案二中,使用目前比较流行51系列单片机AT89S52。AT89S52是一种低功耗、高性能 HYPERLINK :/baike.baidu /view/22318.htm CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中的优势明显。在方案二中还解决了方案一种不能检测

17、温度缺点,使用了先进的DS18B20芯片,DS18B20数字温度传感器是Dallas公司生产的1-Wire,即单总线器件,具有线路简单、体积小的特点。因此用他组成一个测温系统,具有线路简单,在1根通信线可以挂很多这样的数字温度传感器,十分方便。 (3)方案选择 通过上述两个方案的比较,便能发现方案二设计的电路比方案一的电路有极大的优势,性能全面,使用方便,而且简单、稳定。故选择方案二。2.2 总体设计2.2.1太阳能热水器的组成与工作原理1-集热器 2-下降水管3-循环水管4-补给水箱5-上升水管6-自来水管7-热水出水管图2.1热水器的组成热水器主要由集热器、循环管道和水箱等组成,图中为典型

18、的热水器装置图。图中集热器1按最佳倾角放置,下降水管2的一端与循环水箱3的下部相连,另一端与集热器1的下集管接通。上升水管5与循环水箱3上部相连,另一端与集热器1的上集管相接。补给水箱4供给循环水箱3所需的冷水。集热器吸收太阳辐射后,集热器温度上升,水温也随之升高。水温升高后,水的比重减轻,便经上升水管进入循环水箱上部。而循环水箱下部的冷水比重较大,就由水箱下流到集热器下方,在集热器受热后又上升。这样不断对流循环,水温逐渐提高,直到集热器吸收的热量与散失的热量相平衡时,水温不再升高。这种热水利用循环加热的原理,因此又称循环热水器。集热器是一种利用温室效应,将太阳能辐射转换为热能的装置,该装置与

19、一般热水交换器不一样,热交换器通常只是液体到液体,或是液体到气体的热交换过程,而平板行集热器时直接将太阳辐射传给液体或气体,是一个复杂的传热过程。平板型集热器结构形式很多,世界上已实用的集热器就有直管式、瓦楞式、扁管式、铝翼式等二十多种。2.2.2系统总体流程图开始初始化扫描键盘,是否有按键N调用键盘处理子程序Y读取水位信息和水箱温度调用显示子程序显示水温时间图2.2系统总体流程图3 太阳能热水器控制系统的硬件设计3.1 主控芯片模块3.1.1 主控芯片模块电路单片机系统由AT89S52和一定功能的外围电路组成,包括为单片机提供复位电压的复位电路,提供系统频率的晶振。这部分电路主要负责程序的存

20、储和运行。对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、谐振器的稳定性、起振的快速性和温度的稳定性。晶体可在1.2MHz12MHz之间任选,电容C1和C2的典型值在20pF100pF之间选择,但在60pF70pF时振荡器具有较高的频率稳定性。典型值通常选择为30pF左右,但本电路采用30pF。AT89S52的复位是由外部的复位电路来实现的。复位电路通常采用上电自动复位和按钮复位两种方式。本设计中所用到的是上电按钮复位,如图3.1所示。图3.1 单片机系统3.1.2 主控芯片简介AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash

21、存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振与时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定

22、时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K字节在系统可编程Flash AT89S52。图3.2为AT89S52的引脚图图3.2 AT89S52的引脚图AT89S52引脚功能说明如下:VCC:电源电压GND:地P0 口:P0口是一个8位漏极开路的双向I/O口,也即地址/数据总线复用口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0部上拉电阻被激活。在flash编程时,P0口

23、也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1口是一个具有部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动(吸收或输出电流)4个TTL逻辑门电平。对P1 端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(TTL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如表3-1所示。在flash编程和校验P1口接收低8位地址字节。端口引脚第二功能P1.0 T2(定时器/计数器T2的外部计数输入)

24、,时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用) 表3-1 P1口第二功能P2 口:P2 口是一个具有部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2 口使用很强的部上拉发送1。在

25、使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 端口引脚第二功能端口引脚第二功能P3.0 RXD(串行输入口)P3.4TO(定时/计数器0)P3.1TXD(串行输出口)P3.5T1(定时/计数器1)P3.2 INTO(外中断0)P3.6WR(外部数据存储器写选通)P3.3 INT1(外中断1)P3.7RD(外部数据存储器读选通) 表3-2 P3口的第二功能此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是

26、单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉

27、高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将有两次有效的PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器

28、件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器与部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.2 实时时钟模块3.2.1 实时时钟模块电路从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。在单片机构成的装置中,实时时钟是必不可少的部件。目前常用的实时时钟,很多采用单片机的中断服务来实现,这种方式一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许;有的则使用并行接口的时钟芯片,如MC146818、

29、DS12887等,它们虽然能满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂,占用地址、数据总线多,芯片体积大,占用空间多,给其它设计带来诸多不便。本设计选取串行接口时钟芯片DS1302与单片机同步通信构成数字时钟电路,如图3.3。其简单的三线接口能为单片机节省大量资源,DS1302的后背电源与对后背电源进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等。这些优点解决了目前常用的实时时钟所无法解决的问题。该时钟电路强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值。图3.3

30、DS1302与单片机接口电路3.2.2 实时时钟简介DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。时钟可工作在24小时格式或12小时(AM/PM)格式。DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行

31、细电流充电的能力。DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对

32、DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK 为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。DS1302的复位引脚:通过把RST输入驱动置

33、高电平来启动所有的数据传送.RST输入有两种功能:首先,RST接通控制逻辑,允许地址命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,

34、读出数据时从低位0位至高位7。 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器与其控制字见表3-3。寄存器名命令字取值围各位容写操作读操作76543210秒寄存器 80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN时寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYE

35、AR 表3-3 DS1302的日历、时钟寄存器与其控制字此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器与与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的容。DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.3 温度传感器模块3.3.1 温度传感器模块电路基于DS18B20多点温度测量系统以AT89C

36、51为中心器件,以KEIL为系统开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。DS18B20是智能温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20部的协议进行相应的处理,将转换的温度以串口发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、功能命令)给DS18B20,并读取温度值,在部进行相应的数值处理,用图形液晶模块显示各点的温度。在系统启动之时,可以通过44键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控。每个DS18B20有自

37、己的序列号,因此本系统可以在一根总线上挂接了4个DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的DS18B20才作出响应,接收主机的命令,向主机发送转换的温度。采用这种DS18B20寻址技术,使系统硬件电路更加简单,图3.4所示。图3.4 系统硬件电路3.3.2 温度传感器简介DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点:只要求一个端口即可实现通信。在DS18B20中的每个器件上都有独一无

38、二的序列号。实际应用中不需要外部任何元器件即可实现测温。测量温度围在55.C到125.C之间。数字温度计的分辨率用户可以从9位到12位选择。部有温度上、下限告警设置。其引脚功能描述见表3-4。序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地 表3-4 DS18B20详细引脚功能描述64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节

39、),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件部保留使用。第八字节含有循环冗余码(CRC )。DS18B20加电后,处在空闲状态。要启动温度测量和模拟到数字的转换,处理器须向其发出Convert T 44h 命令;转换完后,DS18B20回到空闲状态。温度数据是以带符号位的16-bit补码存储在温度寄存器中的。符号位说明温度是正值还是负值,正值时S=0,负值时S=1。访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令,在

40、这两个命令后,主机都必须返回到第一步)。a初始化:DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。b. ROM命令:ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表3-5所示,每个ROM命令都是8 bit长。指令协议功能读ROM33H读DS18B20中的编码(即64位地址)符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的

41、DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20V 温度转换命令,适用于单个DS18B20工作告警搜索命令0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44H启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入部9字节RAM中读暂存器BEH读部RAM中9字节的容写暂存器4EH发出向部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数

42、据复制暂存器48H将RAM中第3、4字容复制到E2PROM中重调E2PROM0B8H将E2PROM中容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”表3-5 ROM命令3.4 液晶显示模块3.4.1 液晶显示模块电路液晶显示模块以其微功耗、体积小、显示容丰富、模块化、接口电路简单等诸多优点得到广泛应用。液晶显示模块分字符型和点阵型两种,前者只能显示常用的字符,点阵型液晶显示模块除显示字符外还能显示各种图形和汉字。如图3.5所示,为液晶显示屏与单片机的连接电路图。3.5 液晶显示屏与单片机的连接电路

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

44、.0-+5.5V)显示分辨率:12864点置汉字字库,提供8192个1616点阵汉字(简繁体可选)置 128个168点阵字符2MHZ时钟频率显示方式:STN、半透、正显驱动方式:1/32DUTY,1/5BIAS视角方向:6点背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10通讯方式:串行、并口可选置DC-DC转换电路,无需外加负压无需片选信号,简化软件设计工作温度: 0 - +55 ,存储温度: -20 - +60 控制器接口信号说明:如表3-6,3-7RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)与地址记数器(AC)的状态HLMPU写入数据到数据暂

45、存器(DR)HHMPU从数据暂存器(DR)中读出数据表3-6 RS和R/W的配合选择决定控制界面的4种模式E状态执行动作结果高低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作 表3-7 E信号忙标志:BF。BF标志提供部工作情况.BF=1表示模块在进行部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态。字型产生ROM(CGROM):字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(

46、DISPLAY ON),DDRAM 的容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。显示数据RAM(DDRAM):模块部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型与CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGR

47、AM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM):字型产生RAM提供图象定义(造字)功能, 可以提供四组1616点的自定义图象空间,使用者可以将部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。地址计数器AC:地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就

48、会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。光标/闪烁控制电路:此模块提供硬体光标与闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。3.5 键盘输入模块一般具有人机对话的单片机系统少不了会有键盘。本设计采用三个按键,最佳的接口方案是独立式接法,即每一个I/O口上只接一个按键,按键的另一端接地。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。我们将按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无按键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。

49、按键释放后,与单片机连接的上拉电阻使I/O口仍然保持高电平。本设计所要做的就是在程序中查询此I/O口的电平状态就可以了解是否有按键动作了。值得注意的是,本设计在用单片机对键盘处理的时候涉与到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般在10200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒级的单片机而言则是漫长的。为了提高系统的稳定性,必须去除或避开它。此处我采用软件去抖动,实现方法是先查询按键当有低电平出现时立即延时10200毫秒以避开抖动,延时

50、结束再读一次I/O口的值。按键分工,从左至右依次为1、2、3号按键,一号键模式键,二号三号键为加减键。图3.7 键盘接口电路4 设计语言与软件介绍4.1 汇编语言介绍汇编语言是一种功能很强的HYPERLINK :/baike.baidu /view/128511.htm程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于HYPERLINK :/baike.baidu /view/14900.htm高级语言的HYPERLINK :/baike.baidu /view/487018.htm编译器,需要一个“HYPERLINK :/baike.baidu /

51、view/1315652.htm汇编器”来把汇编语言原文件汇编成机器可执行的代码。4.2wave6000软件介绍这个软件是伟福公司的HYPERLINK :/baike.baidu /view/1012.htm单片机开发软件,一般就是用在C51单片机。不需要购买HYPERLINK :/baike.baidu /view/557623.htm仿真器,使用软件模拟器就可以了,使用很方便的。 也支持KEILC,但最好不要在WAVE使用C,如果想用C编写,还是用KEIL C方便。WAVE6000编译软件,采用中文界面。用户源程序大小不受限制,有丰富的窗口显示方式,能够多方位、动态地展示程序的执行过程。其

52、项目管理功能强大,可使HYPERLINK :/baike.baidu /view/1012.htm单片机程序化大为小,化繁为简,便于管理。另外,其书签、断点管理功能以与外设管理功能等为51单片机的仿真带来极大的便利。5 系统软件设计5.1 概述单片机开发中除必要的硬件外,同样离不开软件,本系统的软件编程设计是在Keil软件环境中完成的。我们写的C语言、汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍

53、使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果使用C语言编程,那么Keil几乎就是不二之选。即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令人事半功倍。Keil C51是美国Keil Software公司出品的

54、51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。5.2 系统程序设计模块 本课题设计的太阳能热水器控制系统的软件程序设计主要由(1)初始化程序,(2)扫描按键程序,(3)按键处理子程序,(4)读取水位信息、水箱温

55、度和时间程序,(6)调用显示子程序,六个部分组成。系统总体流程图如图5.1所示。开始初始化扫描键盘,是否有按键N调用键盘处理子程序Y读取水位信息和水箱温度调用显示子程序显示水温时间图5.1系统总体流程图5.3 初始化程序 太阳能热水器控制系统在接通电源后,首先要对系统进行初始化。初始化的过程包括启动DS1302,启动12864,对12864进行清屏。初始化流程图如下:初始化开始启动DS1302启动12864清屏图5.2系统初始化流程图 void start(void) /初始化函数 unsigned char i;set_time(0 x8e,0 x00); /取消写保护set_time(0

56、x80,0 x00); /启动时钟set_time(0 x84,0 x00); /设置24小时模式set_time(0 x90,0 xa5); /时钟时钟充电模式set_time(0 x8e,0 x80); /启动写保护RES1=0; RES1=1; dis_write_cmd(0 xaf); /启动12864 clean(); /清屏5.4 按键检测与处理程序在太阳能热水器初始化完成之后,系统便会进入键盘扫描状态,此状态下,主控芯片AT89S52会不断扫描是否有键按下,即等待用户输入。在检测到有键按下后,根据按下的次数(按一下设置“分”,按两下设置“时”,三下设置“星期”,以此类推),在运用

57、“加”“减”分别设置。按键检测与处理流程图如图所示:(以按下“一下”为例)开始扫描是否有键按下否是一下(设置分)是否为“+”键是“分”加1否“分”减1图5.3 按键检测与处理程序流程图按键检测与处理程序清单如下:while(1) /总循环 while(state_button=0) /状态0循环 /无键按下的处理程序while(state_button!=0) /状态非0循环 set_time(0 x80,0 x80); /启动时钟 set_time(0 x8e,0 x00); /启动保护位if(state_button=1) /状态1设置分 if(time_jia=1) /判断按钮加是否按下

58、过 minute0+; /分操作 下面所有的加减同理 if(minute09) / minute0最大为9,minute1最大为5 minute1+; minute0=0; if(minute15) minute1=0; time_jia=0; /按键清零 表示已经执行完 if(time_jian=1) minute0-; if(minute00) minute1-; minute0=9; if(minute10;i-) DQ=0; /总线拉低DQ=date&0 x01; /发送最低位字节到DS18B20delay(7); /延迟30微秒左右,等DS18B20采样DQ=1; /将总线拉高dat

59、e=1; /写入数据右移一位 signed int wendu_read(void) /读温度字节程序 unsigned char i=0,t=0,pn=0; /t为暂存变量 for(i=8;i0;i-) DQ=0; /总线为低电平准备读操作,然后在1微秒释放总线,以便让DS18B20将数据反馈 t=1; /将变量右移一位,刚好可以抵消读所需的延迟时间DQ=1; /总线拉为高电平后,执行下面代码if(DQ=1) /如果总线反馈为高电平t|=0 x80; /则将变量最高位置1 /如果反馈为0,则变量最高位为0 delay(4); /延迟一顿时间,然后开始下次循环 return(t); /反馈读取

60、的字节/*DS1302*/void time_write(unsigned char time_wd) /写温度函数unsigned char i,j; /设置循环变量for(i=0;i1; /待发送的数据右移1位SCLK=1; /拉高时钟信号SCLK=0; /写完一个字节,拉低时钟信号unsigned char time_read() /读时间函数unsigned char time_rd; /设置返回变量unsigned char i; /设置循环变量IO=1; /设置数据口方向为输入for(i=0;i1; /接收寄存器右移1位if(IO=1) /判断信号是1还是0 time_rd=tim

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论