毕业设计(论文)-室内温度、湿度、时间滚动显示器设计.doc_第1页
毕业设计(论文)-室内温度、湿度、时间滚动显示器设计.doc_第2页
毕业设计(论文)-室内温度、湿度、时间滚动显示器设计.doc_第3页
毕业设计(论文)-室内温度、湿度、时间滚动显示器设计.doc_第4页
毕业设计(论文)-室内温度、湿度、时间滚动显示器设计.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

天津城市建设学院本科毕业论文室内温度、湿度、时间滚动显示器设计Indoor Temperature as well as Humidity Time Scrolling Display Design学生姓名:学生学号:专业名称:电子信息工程指导教师:计算机与信息工程学院2012年 5月30日独创性声明本人声明所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作和取得的研究成果,除了文中特别加以引用标注之处外,论文中不包含其他人已经发表或撰写过的研究成果,没有伪造数据的行为。毕业设计(论文)作者签名: 签字日期: 年 月 日毕业设计(论文)版权使用授权书本毕业设计(论文)作者完全了解学校有关保留、使用论文的规定。同意学校保留并向有关管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权天津城市建设学院可以将本论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。(保密的毕业设计(论文)在解密后适用本授权说明)毕业设计(论文)作者签名: 指导教师签名:签字日期: 年 月 日 签字日期: 年 月 日摘 要 随着单片机应用技术飞速发展,其应用的领域变得越来越广泛,单片机技术的广泛应用也使其变得越来越重要。单片机是在一块半导体上,集成了CPU、ROM 、RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成了一台完整的数字计算机。 而电子时钟的出现就充分说明了单片机技术已经充分融入到了生活中,无论是在家中,或者是在办公场所,还是在车站,电子时钟都变得必不可缺。电子时钟的系统主要由控制器AT89S52、时钟电路DS1302、来实现,而温度传感器DS18B20、湿度传感器HS1101则增加了其扩展功能,使其更加全面,显示方面由LCD1602显示、再加上按键电路和复位电路就实现了有时间日历显示的功能,以及进行时、分、秒和温度湿度的显示的多功能万年历。关键词:单片机AT89C52,DS1302;温度湿度检测;LED数码管液晶显示;万年历ABSTRACTAlong with the microcomputer application technology rapid development, Its application field becomes more and more widely, so single chip technology becomes more and more and more important. Microcontroller is on a semiconductor, Its a semiconductor, the integration of the CPU, ROM, RAM, I / O interface, timer/counter, interrupt systems, features, form a complete digital computer. The emergence of electronic clock full explanation that microcontroller technology have into the life. Or at home, or is in the office place, or at the station, electronic clock become indispensable. Electronic clock system mainly have controller AT89C52, Clock circuit DS1302, Temperature sensor DS18B20, Humidity sensor HS1101 make it have more function, make it more comprehensive. Display is LCD1602, superadd Button circuit and Reset circuit form have time the function of the calendar displays and minutes and seconds and temperature humidity display of the multi-function calendar.Key words: microcontroller AT89C52 DS1302; temperature and humidity measurement; LED; calendar第一章目 录第一章 绪论11.1课题背景11.2设计任务1第二章 设计方案论证22.1单片机芯片的选择方案和论证22.2时间芯片的选择方案和论证22.3显示模块的选择方案和论证32.4温度模块的选择方案和论证32.5湿度模块的选择方案和论证32.6电路设计最终方案4第三章 系统硬件设计与实现53.1系统硬件概述53.2主要电路的设计53.2.1单片机主控模块设计53.2.2时钟模块DS130273.2.3显示模块设计123.2.4温度采集模块153.2.5湿度采集模块16第四章 系统的软件设计和实现184.1系统程序流程图184.1.1系统总流程184.1.2时间修改流程194.2温、湿度的检测274.2.1湿度检测程序274.2.2温度检测程序29第五章 系统调试315.1软、硬件的调试315.1.1硬件的调试315.1.2软件的调试325.2问题的解决32第六章 感想33致 谢34参考文献35附 录3638第一章 绪论1.1课题背景随着电子技术的发展,新技术产品应用于生活中的各个地方,非常有利的加快了社会的发展和生活水平的提高,同时也由于电子技术发展的速度非常之快,使得产品的更新换代也变得越来越快。 随着生活节奏的加快,时间对人们来说也越来越珍贵,而忙碌的工作和繁重的学习容易使人忘记当前的时间。能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的。万年历为时间显示的载体,广泛应用于个人家庭以及车站、机场、办公室等公共场所,变成了人们生活中不可少的产品。同时,随着人们对生活环境各项指数的要求,温度和湿度实时检测和显示系统应用也变得越来越重要,比如空调遥控器上当前室温的显示、热水器温度的显示等等。医药卫生、工农业生产上也有很多场合需要测量环境温度。如果能够在电子时钟上附加温度采集功能,将使电子时钟的应用更加广泛。随着电子技术的发展,新的湿度显示功能也成为了生活环境指标的其中一项,不论是家庭,办公室还是医院等场所,通过显示的湿度来调节个人和公共的生活环境,来达到健康的湿度指数,也成为了电子钟一项新的重要功能。1.2设计任务根据设计任务的要求,采用AT89S52作为主控芯片,DS1302作为时钟芯片,数字式温度传感器DS18B20和湿度传感器HS1101用来采集温度和湿度,然后将时间信息,温度信息和湿度信息通过相应的I/O口送入到单片机中,最后将数据传送的到LCD1602液晶显示器中,将时间信息和实时的温度湿度显示出来。通过键盘模块,可以够对时间的准确性进行校正。利用AT89S52芯片把温度传感器DS18B20和湿度传感器HS1101采集的数据再整合时钟芯片DS1302的数据进行处理,通过编写好的程序,以滚动的方式依次在液晶屏显示出当下的温度湿度以及时间。从而达到设计出能显示温度湿度以及时间的多功能万年历的目的。第二章 设计方案论证第二章 设计方案论证2.1单片机芯片的选择方案和论证方案一:采用FPGA芯片设计电子时钟,具有电路简单,集成度高,精度高,是随着科技发展所生产的高新技术芯片,因为价格较贵而且对其了解不多,所以不予采用其作为核心芯片。方案二:采用AT89C51或者52芯片作为核心芯片,芯片采用Flash ROM;内部具有8KB ROM的存储空间,也能够在3V的超底压环境下工作;同时也与MCS-51系列单片机完全兼容,但是其具有在线编程可擦除技术,在同样拥有51芯片的功能的前提下,各项性能都有加强。并且当进行电路调试时,因为要修改程序的问题和新增功能程序的烧入时,不需要多次拔插芯片,所以不会对芯片造成损坏。 所以在此选择AT89C52作为系统的核心芯片。2.2时间芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,从而实现日期和时间的计数。采用此种方法虽然可以减少芯片的使用,成本的节约,但是显示出来的时间误差比较大。所以不采用此方案。方案二: 采用芯片DS1302。它在对年、月、日、星期、时、分、秒进行计时的同时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。还可以对显示的时间进行校准。使用起来更加方便,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。 因此采用DS1302作为时间芯片。2.3显示模块的选择方案和论证方案一:采用点阵式数码管显示,点阵式数码管是由数个发光二极管组成,但是使用它显示时间和温度需要的数量,而且线路连接变得非常繁琐,所以很太浪费,而且数码管的价格也比较高,所以不用此方案种显示数据.方案二: 采用LED液晶显示屏,液晶显示屏的显示功能非常强大,可以显示大量的文字和图像,而且图像清晰色彩多样,但是由于价格很高,接线复杂,仅仅用来显示时间的数据显然有些浪费,所以不用此方案显示数据。方案三: 采用LED数码管动态扫描显示,LED数码管价格适中,用来显示只有数字的数据最为合适,并且其接线简单,线路清晰,接线口占用少,信息的显示非常直观。 因此采用了LED数码管作为显示。2.4温度模块的选择方案和论证方案一: 采用热敏电阻作为温度传感器,把热敏电阻和一个相对应阻值的电阻进行串联分压,因为热敏电阻阻值具有随着温度变化而变化的特性,利用这个特性,采集这两个电阻变化的分压值,把这些数据进行A/D转换,从而得到温度的数据。在设计方案需用到A/D转换电路,不仅使得电路的复杂程度增加,而且热敏电阻的感温特性曲线并不是严格线性,会对其测量结果产生较大误差。方案二: 采用数字式温度传感器DS18B20,该传感器只需要一条数据线进行数据传输,线路连接简单,去除了略显臃肿的电路,使得成本降低。而且,数字式温度传感器还具有测量的精度高、范围广的特点。因此采用数字式温度传感器DS18B20采集温度数据。2.5湿度模块的选择方案和论证方案一: 通过湿敏电容作为传感器,把湿敏电容连接在电路当中,利用湿敏电容的电容大小随空气中湿度的变化而变化的特性,采集这两个数据变化的值,进行计算,从而得出湿度,但是此方法湿敏电容不能很快脱湿,造成数据的不能持续准确。方案二: 采用数字式湿度传感器HS1101,该传感器测量的数据准确,能够快速脱湿,具有不需校准的完全互换性,使得测量数据稳定可靠。因此采用采用数字式湿度传感器HS1101采集湿度数据。2.6电路设计最终方案综上所述,方案确定为: AT89S52作为主控芯片;DS1302提供时间;数字式温度传感器DS18B20和数字式湿度传感器HS1101用来采集温度和湿度;LCD1602液晶作为显示模块。系统总框图如图所示:图2-1 程序设计系统总体框图第三章 系统硬件设计与实现第三章 系统硬件设计与实现3.1系统硬件概述本电路是由STC89C52单片机为控制核心,具有在线编程功能,并且功耗低,能在3V超低压环境下工作。时间由芯片DS1302提供,它具有性能高、功耗低、带有RAM的特点,在对年、月、日、周日、时、分、秒进行计时的同时,具有闰年补偿功能。采用三线接口与CPU进行同步通信,利用一条数据线与主控芯片进行数据传输。DS1302的内部有一个31*8的用于临时性存放数据的RAM寄存器。其精度高和低功耗的特点,是时间芯片的首选,同时具有掉电自动保存功能,本电路采用DS1302单字节传送方式实现与主控机之间数据的传送,工作电压为2.5V5.5V。;显示部份由1602构成。温度湿度探测器分别为DS18B20和HS1101,数据通过I/O传送到单片机。电源由3v的电池供应。3.2主要电路的设计3.2.1单片机主控模块设计1.AT89S52功能特性及引脚图 AT89S52 是一种低功耗、高性能的芯片,具有8K ROM,采用 Flash 存储器。与51系列单片机相互兼容,并且性能更高,芯片上的Flash 允许程序存储器在系统中可以编程,因此非常适于用在常规编程器当中。在单片机芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 在众多控制芯片中显得更加灵活易操作,在解决问题上也变得更加有效。2.AT89S52的特点 图3-1 AT89C52引脚图 (1)8K字节 Flash,2 级中断结构,2 个数据指针,256字节 RAM,三个 16 位定时器/计数器,看门狗定时器,32 位 I/O 口线,全双工串行口具有6个向量,片内有晶振及时钟电路。(2)支持 2 种编程模式,并且可以选择节电模式。在空闲模式下,芯片停止工作,允许RAM、串口、定时器/计数器以及中断继续工作。在掉电保护模式下,RAM的内容被保存,振荡器被冻结,单片机停止一切工作,直到下一个中断或硬件复位为止。(3)AT89S52为40引脚双列直插芯片,四个8位I/O口(P0、P1、P2、P3),每一条I/O线都能作为一条独立的线路进行输出或输入。3.单片机最小系统单片机的最小系统,如图所示,是指用最少的元件组成的单片机可以工作的系统。在51系列单片机的最小系统中包括:单片机、复位电路、晶振电路(时钟电路)。其中复位电路采用按键复位,时钟电路采用内部时钟控制方式。复位电路: 由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。晶振电路(时钟电路):典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作),本次设计要求为11.0592MHz。图3-2 单片机的最小系统原理图3.2.2时钟模块DS13021.时钟芯片DS1302的简介DS1302是一种高性能、低功耗的实时时钟芯片,它附加有31字节的静态RAM,采用SPI三线接口得方式与CPU进行同步通信,并且可采用突发方式一次传送多个字节的时钟信号和RAM数据的方法。芯片可提供秒、分、时、日、星期、月和年的时间数据,在小于31天的月份可以自行调整,且具有闰年补偿功能。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。芯片的主电源和备份电源是双引脚,而且备份电源可由大容量电容进行代替。用于主电路断电后保证时间记录的持续性。需要强调的是,DS1302需要使用32.768KHz的晶振。2.时钟芯片DS1302特性(1)时钟芯片在计算秒、分、时、日、日期、星期、月、年能力的同时,还有闰年补偿的能力(2)具有1*8位暂存数据存储的RAM(3)串行I/O口方式使得管脚数量变少(4)宽范围工作电压:2.05.5V(5)工作电流:2.0V时,小于300mA(6)读写时钟或RAM数据时,有两种传送方式:分别是单字节传送以及多字节传送(7)8脚DIP封装或可选的8脚SOIC封装(8)简单3线接口(9)与TTL兼容(Vcc=5V)(10)可选工业级工作的温度范围:-40+85C(11)与DS1202兼容(12)在DS1202的基础上增加更多的特性 对Vcc1有可选的涓流充电能力 双电源管用于主电源和备份电源供应 备份电源管脚可由电池或大容量电容输入 附加的7字节暂存存储器3.DS1302的引脚说明如图3-3所示的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为高电平时,所有的数据传送都会被初始化,然后允许对DS1302进行操作。如果在传送过程中RST置于低电平,就会终止此次数据传送,并且I/O引脚会变为高阻态。电路运行时,在Vcc2.5V之前,RST必须保持低电平。因为只有在SCLK为低电平时,才能使RST置于高电平。其中I/O为串行数据输入和输出端。SCLK始终是输入端。图3-3 DS1302引脚图4.DS1302的控制字和读写时序说明在编程过程的时候要注意DS1302的读写时序。DS1302的驱动方式是SPI总线驱动方式。它不仅需要向寄存器内写入控制字符,还要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如表3-1。表3-1 DS1302控制字(即地址及命令字节)BIT7BIT6BIT5BIT4BIT 3BIT 2BIT 1BIT 01RAMA4A3A2A1A0RDDS1302的工作方式、传送字节数等设定是通过控制字的作用进行改变的。每次数据的传输都是由控制字开始。控制字各位的含义和作用如下:(1)BIT7: 控制字的最高有效位,逻辑必须是1,如果它为0,则不能把数据写到DS1302。(2)BIT6: 如果逻辑为0,则表示存取日历时钟数据,如果逻辑为则1表示存取RAM数据。(3)BIT5至BIT1(A4A0):用A4A0表示,定义片内寄存器和RAM的地址。定义如下:当BIT6=0时,定义时钟和其他寄存器的地址。A4A0=06,顺序为秒、分、时、日、月、星期、年的寄存器。当A4A0=7,为芯片写保护寄存器地址。当A4A0=8,为慢速充电参数选择寄存器。当A4A0=31,为时钟多字节方式选择寄存器。当BIT 6=1时,定义RAM的地址,A4A0=030,对应各子地址的RAM,地址31对应的是RAM多字节方式选择寄存器。(4)BIT0(最低有效位):如逻辑为0,则表示要进行写操作,逻辑为1则表示要进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。DS1302的数据读写方式包括两种,如图3-4。一种是单字节的操作方式,一种是多字节得操作方式。每次仅写入或读出一个字节数据称为单字节操作,每次对时钟/日历的8字节或31字节RAM进行全体写入或读出的操作,称其为多字节操作方式。当程序以多字节方式写时钟寄存器时,必须按数据传送的次序依次写入8个寄存器。但是,当以多字节方式写RAM时,不必写所有31字节。所以不管是否写了全部31字节,所写的每一个字节都会传送到RAM。为了启动数据的传输,CE引脚信号应由低变高,当把CE驱动至逻辑1的状态时,SCLK必须为逻辑0,数据在SCLK的上升沿串行输入。无论是读周期还是写周期,也无论送方式是单字节传送还是多字节传送,都要通过控制字指定40字节中的哪个将被访问。在开始8个时钟周期把命令字(具有地址和控制信息的8位数据)装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据,所有的数据在时钟的下降沿变化。所有写入或读出操作都是先向芯片发送一个命令字节。对于单字节操作,包括命令字节在内,每次为2个字节,需要16个时钟;对于时钟/日历多字节模式操作,每次为7个字节,需要72个时钟;而对于RAM多字节模式操作,每次则为32字节,需要多达256个时钟。这里仅给出单字节读写时序,如图3-8。多字节操作方式与其类似,只是后面跟的字节数不止一个。图3-4 DS1302数据读写时序5) DS1302的片内寄存器通过控制字对DS1302片内寄存器进行寻址之后,即可就所选中寄存器的各位进行操作。片内各寄存器及各位的功能定义如表3-2。表3-2 DS1302有关日历、时间的寄存器读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81H80HCH10秒秒00-5983H82H10分分00-5985H84H12/24*010时时1-120-23AM/PM87H86H0010日日1-3189H88H0010月月1-128BH8AH00000周日1-78DH8CH10年年00-998FH8EHWP0000000DS1302有关日历、时间的寄存器共有10个,时钟/日历包含在其中的7个写/读寄存器内,这7个寄存器分别是秒、分、小时、日、月、星期和年。小时寄存器(85H、84H)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为12小时制式时,位5为“0”表示AM;为“1”表示PM。在24小时制式下,位5是第二个10小时位(2023时)。 秒寄存器(81H、80H)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。一般在设置时钟时,可以停止其工作,设定完之后,再启动其工作。 控制寄存器(8FH、8EH)的位7是写保护位(WP),其它7位均置为0。在任何片内时钟/日历寄存器和RAM,在写操作之前,WP位必须为0,否则将不可写入。当WP位为1时,写保护位防止对任一寄存器的写操作。因此,通过置写保护位,可以提高数据的安全性。另外,还有慢速充电控制寄存器和RAM寄存器。如表3-3。表3-3 充电控制寄存器和RAM寄存器各位定义BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0充电控制寄存器TCSTCSTCSTCSDSDSRSRSRAM寄存器慢速充电寄存器控制着DS1302的慢速充电特性。寄存器的BIT4BIT7(TCS)决定是否具备充电性能:仅在编码为1010的条件下才具备充电性能,其他编码组合不允许充电。BIT2和BIT3选择在VCC2和VCC1之间是一个还是两个二极管串入其中。如果编码DS是01,选择一个二极管;如果编码是10,选择两个二极管;其他编码将不允许充电。该寄存器的BIT0和BIT1用于选择与二极管相串联的电阻值。其中编码RS=01为2 K,RS=10为4 K,RS=11为8 K,而RS=00将不允许进行充电。因此,根据慢速充电寄存器的不同编码可得到不同的充电电流。其具体计算如公式3-1: (3-1)式中:V0所接入的5.0V工作电压;VD二极管压降,一个按0.7V计算;R慢速充电控制寄存器0和1位编码决定的电阻值;VEVCC1脚所接入的电池电压。RAM寄存器寻址空间一次排列的31字节静态RAM可为用户使用,备用电源位RAM提供了掉电保护功能。寄存器和RAM的操作通过命令字节的BIT6加以区别。当BIT6为“0”时对RAM区进行寻址;否则将对时钟/日历寄存器寻址。5.时钟模块原理图 根据DS1302各引脚的功能,将其与AT89S52单片机的I/O口连接进行通讯,原理图如下:图3-5 DS1302原理图3.2.3显示模块设计1.1602LCD液晶简介1)液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,通过这种方式在屏幕上显示想要的内容。同时液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,因此已经被广泛应用在笔记本电脑、数字摄像机、手机移动通信工具等众多领域。1602LCD是工业字符型液晶,通过单片机控制将所测的读数显示出来,能够同时显示16x02即32个字符(16列2行)。2)1602LCD特点(1)显示容量:162个字符(2)芯片工作电压:4.55.5V(3)工作电流:2.0mA(5.0V)(4)模块最佳工作电压:5.0V(5)字符尺寸:2.954.35(WH)mm3)1602LCD管脚功能1602LCD分为有背光和无背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。其管脚如图3-15所示:图3-6 1602LCD管脚图各管脚接口说明:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。4) 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表3-4所示:表 3-4 1602液晶模块内部控制指令序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容表3-4:控制命令表 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相兼容的芯片时序表如表3-5。表3-5 1602LCD与HD44780相兼容的芯片时序表读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无2.显示模块原理图 其原理图如图3-7所示。1602字符型LCD通常有14条引脚线或16条引脚线,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚), 其控制原理与14脚的LCD完全一样。LCD1602液晶包括三个控制端口RS、R/W、EN,本次设计将其分别与单片机的P1.0、P1.1和P1.2连接,从而达到控制液晶模块的目的;另外,使用P0的8个引脚与LCD1602的8个双向数据传输端口相连,从而达到数据传输,显示数据的功能。图3-7 显示模块原理图3.2.4温度采集模块简便的一线接口,只需要一条I/O口线通信就能实现数据的传送,从而简化了温度传感器的电路,无需外部元件就能检测温度,同时可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 至+125 。华氏相当于是-67 华氏度到257华氏度 -10 至+85 范围内精度为0.5 。图3-8 DS18B20引脚分布每片DS18B20在出厂时都设有唯一的产品序列号,此序列号存放在它的内部ROM中,微处理器通过简单协议,就能识别这些序列号,因此在多个DS18B20挂接于同一条单总线上时也能分别检测数据,这就能在许多不同的地方放置温度传感器,非常适合于构成多点温度测控系统。所以DS18B20多应用与HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。其引脚功能如表3-6。表3-6 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚;开漏单总线接口引脚;当被用在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚;当工作于寄生电源时,此引脚必须接地。3.2.5湿度采集模块HS1101湿度传感器采用专利设计的固态聚合物结构,具有响应时间快、可靠性高和稳定性强的特点,不需要校准的完全互换性。HS1101湿度传感器在电路中相当于一个电容器C,他的电容随所测空气的湿度增大而增大,在相对湿度为0%-100%RH的范围内,电容的容量由160pF变化到200pF,其误差不大于2%RH,响应时间小于5s,温度系数为0.04pF/。湿度检测采用HS1101型湿度传感器,HS1101是HUMIREL公司生产的变容式相对湿度传感器,采用独特的工艺设计。HS1101测量湿度采用将HS1101置于555振荡电路中,将电容值的变化砖换成电压频率信号,可以直接被微处理器采集。图3-9 温度采集模块原理图 芯片R3,R4与HS1101,构成对HS1101的充电回路。7端通过芯片内部的晶体管对地短路实现对HS1101的放电回路,并将引脚2,6端相连引入到片内比较器,构成一个多谐波振荡器,其中,R3相对于R4必须非常的小,但决不能低于一个最小值。R2是防止短路的保护电阻。HS1101作为一个变化的电容器,连接2和6引脚。引脚作为R4的短路引脚。HS1101的等效电容通过R4和R3充电达到上限电压(近似于0.67VCC,时间记为T1),这时555的引脚3由高电平变为低电平,然后通过R3开始放电,由于R4被7引脚内部短路接地,所以只放电到触发界线(近似于0.33VCC,时间记为T2),这时555芯片的引脚3变为高电平。通过不同的两个电阻进行传感器的不停充放电,产生方波输出。再通过程序实现数据的显示第四章 系统硬件设计与实现第四章 系统的软件设计和实现4.1系统程序流程图4.1.1系统总流程图4-1 系统总体流程图void main()Init_LCD();/LCD初始化IE=0x83; / 允许INT0,T0中断IP=0x01;IT0=0x01;TMOD=0x01;TH0=-50000/256;TL0=-50000%256;TR0=1;while(1)if(Adjust_Index=-1) GetTime(); 4.1.2时间修改流程图4-2 时间修改流程图1 时间的显示#include #include #include#define uchar unsigned char#define uint unsigned intsbit CLK=P11;/DS1302时钟线sbit SDA=P10;/ DS1302数据线sbit RST=P12; /DS1302复位线sbit RS=P20;/数据/指令选择端口sbit RW=P21;/读写端口sbit EN=P22;/使能端口sbit K1=P34; / 选择sbit K2=P35; / 加sbit K3=P36; / 减sbit K4=P37; / 确定uchar tCount=0;/一年中每个月的天数,2月的天数由年份决定uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,31,30,31;uchar *WEEK=sun,mon,tus,wen,thu,fri,sat;/周日,周一到周六uchar LCD_DSY_BUFFER1=Date 00-00-00 ; /LCD显示缓冲uchar LCD_DSY_BUFFER2=Time 00-00-00 ;uchar DateTime7; /所读取的日期时间char Adjust_Index=-1; /当前调节的时间:秒,分,时,日,uchar Change_Flag=-MHDM-Y; uchar Read_LCD_State();/读LCD状态 void LCD_Busy_Wait();/判忙 void Write_LCD_Data(uchar dat);/写数据 void Write_LCD_Command(uchar cmd);/写命令 void Init_LCD();/LCD初始化 void Set_LCD_POS(uchar p);/设置显示位置void Display_LCD_String(uchar p,uchar *s);/写字符串 void DelayMS(uint x)/延时 uchar i;while(x-) for(i=0;i120;i+); uchar Read_LCD_State()/读LCD状态 uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN=0;DelayMS(1);return state; void LCD_Busy_Wait()/判忙while(Read_LCD_State()&0x08)=0x80);DelayMS(5);void Write_LCD_Data(uchar dat) /写数据LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;void Write_LCD_Command(uchar cmd)/写命令LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;2.LCD的初始化void Init_LCD()Write_LCD_Command(0x38); DelayMS(1);Write_LCD_Command(0x01); DelayMS(1);Write_LCD_Command(0x06); DelayMS(1);Write_LCD_Command(0x0C); DelayMS(1);Display_LCD_String(0x00,zhongzhoudaxue );DelayMS(1000);Display_LCD_String(0x40, dian zi ri li );DelayMS(2000);void Set_LCD_POS(uchar p)Write_LCD_Command(p|0x80);void Display_LCD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for(i=0;i16;i+)Write_LCD_Data(si);DelayMS(1);3.向DS1302写入一字节void DS1302_Write_Byte(uchar x) uchar i; for(i=0;i=1; 4.从DS1302读取一字节uchar DS1302_Read_Byte()uchar i,b,t;for(i=0;i=1;t=SDA;b|=t7;CLK=1;CLK=0; return b/16*10+b%16;4.从DS1302指定位置数据uchar Read_Data(uchar addr)uchar dat;RST=0;CLK=0;RST=1;DS1302_Write_Byte(addr);dat=DS1302_Read_Byte();CLK=1;RST=0;return dat;5.向DS1302某地址写入数据void Write_DS1302(uchar addr,uchar dat)CLK=0;RST=1;DS1302_Write_Byte(addr);DS1302_Write_Byte(dat);CLK=0;RST=0;6.设置时间void SET_DS1302()uchar

温馨提示

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

评论

0/150

提交评论