版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . 2014届本科生毕业设计 分类号:TP311.52题 目: 基于单片机的生产车间环境测试仪的设计作 者 姓 名:遥 学 号:2010103124学 院:机械与电子工程学院 专 业:自动化 指导教师:翠侠 秀萍 指导教师职称:讲师 工程师2014年5月9日摘 要本设计是利用单片机实现温度、湿度等生产环境的测量与控制。系统采用集温湿度传感器与A/D转换器为一体的SHT11芯片,通过单片机处理进行显示,其它模块包括了实时时钟/日期产生电路和超限报警处理电路,对所测量的值进行实时显示和报警处理。本文介绍了基于ATMEL公司的AT89C51系列单片机的温湿度实时测量与控制系统和显示系统的
2、设计,包括介绍了硬件结构原理,并分析了相应的软件的设计与其要点,包括测试精度高等众多的优点。关键词:AT89C51; SHT11; LCD; DS1302; 温湿度控制ABSTRACT This design is that using single chip microcomputer to realize the temperature and humidity measurement and control of the production environment.The system adopts SHT11 chip which set temperature and humidi
3、ty sensor and A/D converter as a whole,and display through the single-chip processing.Other modules include real-time clock /date generation circuit and alarm circuit,and they are real time display and alarm processing the measured value.This paper introduces the design of temperature and humidity m
4、easurement and control system and display system that based on the AT89C51 Series MCU of ATMEL company.The paper introduces the hardware structure principle and analysis of the design and key points of corresponding software,including many advantages such as high accuracy in test.Key words:AT89C51;
5、SHT11; LCD; DS1302; Temperature and humidity control32 / 37目 录绪 论11 整体方案设计22 硬件设计部分32.1 芯片介绍32.1.1温湿度传感器32.1.2 单片机32.1.3 DS130242.1.4 LCD160452.2模块功能介绍52.2.1 复位电路部分52.2.2 传感器电路部分62.2.3 时钟电路部分72.2.4 显示电路部分72.2.5 超限处理电路部分82.3 整体电路图93 软件设计104 仿真软件和仿真测试114.1 Proteus简介114.2 KEIL C51编译器简介114.3 仿真测试12结 论14
6、参考文献15附 录16致 32绪 论近年来我国工业生产一直都在飞速发展,随着工业生产水平的提高,对生产环境的要求越来越苛刻,主要体现在生产环境的温度和湿度的控制上,例如:面粉加工场、电子产品装配车间、特殊材料加工工场等场所,都必须严格控制环境的温度与相对湿度,使其保持在一定的围。从安全生产的角度来说,对生产环境进行监测也是必要的,在危险发生前可以提前预警,与时发现并且排除危险,确保工作人员的人生安全,也避免了工业财产的损失。现代温湿度传感器测量技术主要以数据采集为依据,主要类型包括:虚拟仪器、智能仪器、数字式仪器等等。伴随电子科学技术的进一步发展,数据采集系统也发生了日新月异的变化,其整体的性
7、能、实用性方面都有所改进。因此,依托于数据采集结构而发展的温湿度传感器测量系统在实际应用中也发挥这越来越重要的作用。目前,许多外国大型企业都很重视传感器的研发工作,例如,日本的Figaro公司、芬兰的Vaisala公司等,都致力于传感器的发展和完善,以保障其在整个销售市场的竞争力。在九十年代,先后出现了集成温度湿度测量套件和应用于湿度传感器的测试系统,这个新技术的产生都大大刺激了传感器的进一步发展。与此同时,国许多机构也在传感器测试装置的研发上不断探索、研发。例如通过采用传统电子仪器进行设计研发而成的多种动态测试系统、动进样装置的气体传感器智能测试系统等等,这些成绩都体现了我国在传感器领域取得
8、的成就。最近几年,国外温湿度传感器测量系统正向着集成化、智能化发展,随着科研人员的不断努力,该类型系统取得的巨大的成就。满足各类工业生产对于环境温湿度的不同需求,可以随时进行调节,对于不利情况能够与时的作出显示,并能够采取相应的措施提醒用户进行调整,以达到最适宜的温湿度。在此的基础上,本次研究主要是为了设计一款结构简单、测量精度高、工作稳定可靠的基于单片机的生产环境温湿度测试仪。可以由用户根据环境要求设定系统的温湿度阈值;系统实时地测量显示环境的温湿度值,实现温湿度自动控制,使其在较宽的温度围具有较高的测试精度;同时还可以根据用户设定报警阈值报警,一旦发现环境温湿度超限,立即报警。1整体方案设
9、计本次设计的核心部件单片机使用的是最常用的AT89C51,信号采集与处理部分由SHT11构成,进入单片机后经处理后通过LCD1604显示温湿度,信号显示采用的液晶屏为5X7点阵,一行可显示16字,四行。其他组成部分为实时时钟发生电路,产生同现在一样的时间和具体日期,通过LCD1604液晶模块显示。在软件设计部分有对测量的温湿度进行上下值的设定,当测量超过限定值,通过超限报警处理电路对其进行处理分别显示不同的二极管灯亮,蜂鸣器产生长鸣。 硬件中包括一个开关,为复位开关。开机后,所有器件初始化,DS1302 产生实时时间和日期,温湿度传感器SHT11开始进行温湿度测量和计算,最后通过LCD液晶显示
10、器显示结果。在测量结果中有超过设定的温湿度上下限的,通过超限模块作出反应。 其他是一些附件,比如复位、晶振电路,整体电路框图如图1。AT89C51DS1302超限模块SHT11LCD1604信号显示晶振电路复位电路 电源图1 整体电路框图2硬件设计部分2.1 芯片介绍2.1.1温湿度传感器(1)SHT11简介 SHT11 是瑞士Scnsirion 公司推出的一款数字温湿度传感器芯片。温湿度传感器SHT11集温度传感器和湿度传感器于一体,因此采用SHT11 进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点。 (2)SHT11的引脚功能 SHT11温湿度传感器采用SMD(LCC)
11、表面贴片封装形式,接口非常简单,引脚名称与排列顺序如图2所示。图2 SHT11引脚图各引脚的功能如下: >> 脚1和4-信号地和电源,其工作电压围是2.45.5 V; >> 脚2和脚3-二线串行数字接口,其中DA-TA为数据线,SCK为时钟线; >> 脚58-未连接。2.1.2 单片机89C51 是一种带4k 字节可编 程可 擦除 只读 存储 器的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K字节可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业
12、标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。它的引脚如图3所示。图3 AT89C51引脚图2.1.3 DS1302DS1302是DALLAS公司推出的涓流充电时钟芯片,含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒分时日、日期月年的信息。每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机
13、之间能简单地采用同步串行的方式进行通信仅需用到三个口线:RES复位、I/O数据线、 SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW,引脚如图4所示。图4 DS1302引脚图2.1.4 LCD1604(1)字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,16*4和20*2行等的模块。(2)引脚功能说明 如表1所示。表1 引脚接口说明表1604LCD采用标准16脚接口,各引脚接口说明如表 编号符号引脚说明1VSS地2VDD正极3V0液晶显示偏压4RS
14、数据/命令选择5R/W读/写选择6E读写信号7D0数据8D1数据9D2数据10D3数据11D4数据12D5数据13D6数据14D7数据15、16空脚1604液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。2.2模块功能介绍2.2.1 复位电路部分这种复位电路的工作原理是:单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容的电阻很低,通电后,5V 的电通过电阻给电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),RC构成的微分电路在上电瞬间产生一个微分脉冲,其宽度大于两个机器周期,89C51将复位。正因为这样,复位脚的电由低电位升到高电位,引起
15、了部电路的复位工作,RST端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正常工作(这是单片机的上电复位,也叫初始化复位);当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作(这是手动复位原理)。图5 手动复位与晶振电路2.2.2 传感器电路部分此模块是整个电路设计的信号采集与初步处理的模块,由温湿度传感器芯片SHT11构成,主要的功能结构在前面的芯片介绍中已有,这里不重新介绍。图6 SHT11传感器电路2.2.3 时钟电路部分 此模块是系统时间的实时显示而设计的,主要由芯片DS1302构成,其中引脚RST、CLK、I/O分别接单片机P3.0、P3.1、P3.2
16、口,属于控制引脚。此模块是产生实时的系统时间和日历,能对某个确定环境的实时温湿度控制起到一定的作用。芯片连接电路简单,时间日期准确。图7 实时时钟电路2.2.4 显示电路部分此模块是由LCD1604芯片组成的日期时间和实时温湿度显示的电路部分。LCD1604是一个四行每行16字的液晶显示屏,D0-D7接P0口,RS、RW、E接P3.5、P3.6、P3.7起控制作用。图8 LCD1604显示与其连接电路2.2.5 超限处理电路部分 此部分电路是由5个发光二极管和一个蜂鸣报警器构成,分别是D0、D1、D2、D4和D5,蜂鸣器接单片机的P1.0口,发光二极管与单片机的连接部分如图所示。D0、D1、D
17、2、D4、D5 分别代表着发光、降温、加热、干燥和加湿,一旦传感器测定的温湿度超过设定的限额,就会产生不同的发光反应,起警示作用,同时蜂鸣报警器连续发出“滴” 的声音。图9 超限处理警示电路部分图10 蜂鸣器电路2.3整体电路图图11 整体电路图3软件设计软件设计是本次设计中不可缺少的环节,贯穿了整个毕业设计,是本次设计能够完成的最重要的环节之一。软件部分经本人调试可以运行,能够正确显示结果。具体模块由一个C(xc.C)主函数文件和8个h文件构成。 reg51.h(8051的相关参数初始化); absacc.h; intrins.h(伪本征函数); math.h(数学公式函数);LCD1604
18、.h(1604液晶显示函数); DS1302.h(实时时间/日期产生函数);SHT11.h(温湿度采集计算函数); set_key.h;(限额报警函数)。 根据温湿度监控系统功能,系统软件流程图如图12所示。开始单片机开机初始化LCD初始化 DS1302初始化 SHT11初始化DS1302运行 确定时间/日期SHT11运行进行温湿度采集与测量LCD显示实时温湿度检测温湿度是否改变YN等待 图12 主程序框图 点击运行按键,仿真开始运行。首先单片机开机初始化,然后LCD、DS1302、SHT11初始化,喇叭发出一声提示音,各个模块开始运行,DS1302运行确定时间和日期,SHT11运行进行温湿度
19、的采集和测量,最后LCD显示日期时间以与温湿度测量值;当环境温度湿度发生改变时,LCD都会实时准确显示当前温湿度值。4 仿真软件和仿真测试本设计用到了proteus和keil c51两种软件,两者能完美的结合在一起,实现虚拟的实物效果,也就是仿真效果。4.1 Proteus简介Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线与电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程
20、,并实现软件源码级的实时调试,如有显示与输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等。 其功能模块:个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计。 PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型。 4.2 KEIL C51编译器简介 KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51
21、编译器的功能不断增强,使你可以更加贴近CPU本身,与其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编 器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。 工程(project)是由源文件、开发工具选项以与编程说明三部分组成的。一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。 uVision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器与调试器选项,来满足用户充分利用
22、特定微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速器(math accelerator)的特性。uVision2可以为片外存储器产生必要的连接选项:确定起始地址和规模。4.3 仿真测试整个软件通过C语言编程,先在Keil C51集成开发环境下将编好的程序进行编译、调试,调试通过后会生成“*.HEX”文件。运行PROTEUS模拟仿真软件,打开已绘制好的仿真电路原理图,选中单片机AT89C51,右键点击AT89C51,出现对应的对话框,在Program File中找到编译好的“*.HEX”文件,然后点击“OK”就可以进行仿真了
23、,仿真结果如图13所示。图13 仿真运行效果LCD液晶显示四行分别显示“Date:*”、“Time:*”、“Temper:*”、“Humidi:*”,其中“*”为测定的数据。SHT11显示值为温湿度测量所得的 模拟值,可以通过SHT11上的按键调整模拟值,得到相应的试验效果。图14 SHT11运行效果本次试验温度临界值设定为20T80,湿度临界值设定为30H90。如当温度在临界值围,湿度大于临界值时,此时D1灯亮,喇叭发出警报声,D4灯亮,提示车间过于潮湿,需要干燥。如图15所示。图15 仿真测量效果经过一系列的仿真试验,得到了七种试验结果,如表2所示(注:表示灯点亮,×表示灯熄灭)
24、。表2 仿真试验结果温度围湿度围D1声音D2降温D3加热D4干燥D5加湿120T8030H90×××××2H<30×××3H>90×××4T<2030H90×××5T>80×××6T<20H<30××7T>80H>90×× D1灯亮,喇叭发出警报声,提醒人员过来检查;D2灯亮,表示车间环境过热,需要降温;D3灯亮,表示车间环境过冷,需要加热
25、;D4灯亮,表示车间环境过于潮湿,需要干燥;D5灯亮,表示车间环境过于干燥,需要加湿。结 论 该系统主要是基于AT89C51单片机的的环境测试仪的设计,所谓的环境测试主要是侧重于对生产环境的温度与湿度的测量,整体设计采用的是以高效单片机作为核心,以SHT11作为主要的采集与测量系统,集温度传感器和湿度传感器于一体的设计,其中它自带的A/D转换器,使得此温湿度测试仪具有精度高、成本低、体积小、接口简单等优点,还具有良好抗干扰能力。加上优化程序,使得本系统具有很高的实用性。 单片机的应用如今已经在工业、电子等方方面面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围的简单电路再加上优化
26、程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计增加更多精彩。 在设计过程中,由于时间和本人能力的限制,设计中存在一些需要改进和优化的地方。测量精度有待进一步提高,软件设计也存在不合理之处,欢迎各位老师批评指正。参考文献1 苗新法. 便携式环境测试仪电源电路设计J. 通信电源技术, 2010 (3): 41-42.2 文强. 环境参数测试系统的数据传输技术研究D. 中北大学, 2013.3 王世磊,文环明,冰,等. 便捷式煤矿井环境测试仪的设计J. 中国仪器仪表, 2010 (6): 29-31.4 王静,闫增峰,立新. 土遗址博物馆
27、室热湿环境测试与分析J. 建筑科学, 2010 (8): 27-31.5 王登甲,艳峰,王怡,等. 市住宅建筑冬季室热环境测试评价J. 建筑科学,2012,27(12):20-24. 6 友德等. 单片微型机原理、应用和实验M.电子工业. 7 吴经国等.单片机应用技术M. 中国电力. 8 群芳.单片机微型计算机与接口技术M. 电子工业.9 周立功.单片机实验与实践M. 航空航天大学. 10 XU Yi - min .The Design for Stepping Motor of SCM Control SystemJ. Heilongjiang Science and Technology
28、Institute.2005.(1)附 录参加课题情况:参与了学院一般科研项目(批准号2013yyb01):生产车间“碳足迹”监测与控制源程序:main.h#include<reg51.h> #include<absacc.h> #include<intrins.h> #include<math.h> #include<LCD1604.h> #include<DS1302.h> #include<SHT11.h> #include<set_key.h> void Delay1ms(unsigned
29、int count) /延时函数 unsigned int i,j; for(i=0;i<count;i+) for(j=0;j<120;j+); main() SYSTEMTIME CurrentTime; /定义时间日期结构体 SHT_dat aa; /定义温湿度测量处理结构体 Initial_DS1302(); /DS1302初始化*/ LCD_Initial(); /LCD初始化 GotoXY(0,0); /LCD显示函数 Print("Date:"); GotoXY(16,0); Print("Temper:"); GotoXY(0
30、,1); Print("Time:"); GotoXY(16,1); Print("Humidi:"); while(1) convert_SHT(&aa,TEMP); /温度转换 convert_SHT(&aa,HUMI); /湿度转换 caculation_SHT(&aa); /温度和湿度的补偿 float_convert(&aa); /将浮点数转换成整型,各个位的数分别保存 doing_temp(&aa); /检测温度是否超限 doing_humi(&aa); /检测湿度是否超限 DS1302_Get
31、Time(&CurrentTime); DateToStr(&CurrentTime); TimeToStr(&CurrentTime); GotoXY(5,0); /第一行显示日期 Print(CurrentTime.DateString); GotoXY(23,0); /第三行显示温度 Print(aa.num_temp); GotoXY(28,0); Print(" "); GotoXY(5,1); /第二行显示时间 Print(CurrentTime.TimeString); GotoXY(23,1); /第四行显示湿度 Print(aa.n
32、um_humi); GotoXY(28,1); Print(" "); Delay1ms(300); /延时 DS1302.h#ifndef _REAL_TIMER_DS1302 #define _REAL_TIMER_DS1302 sbit DS1302_CLK = P31; /实时时钟时钟线引脚 sbit DS1302_IO = P32; /实时时钟数据线引脚 sbit DS1302_RST = P30; /实时时钟复位线引脚 sbit ACC0 = ACC0; sbit ACC7 = ACC7; typedef struct _SYSTEMTIME_ unsigned
33、 char Second; unsigned char Minute; unsigned char Hour; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString9; unsigned char TimeString9; SYSTEMTIME; /定义的时间类型 #define AM(X) X #define PM(X) (X+12) / 转成24小时制 #define DS1302_SECOND 0x80 #define DS1302_MINUTE 0x82 #define
34、DS1302_HOUR 0x84 #define DS1302_DAY 0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C #define DS1302_RAM(X) (0xC0+(X)*2) /用于计算 DS1302_RAM 地址的宏 void DS1302InputByte(unsigned char d) /实时时钟写入一字节(部函数) unsigned char i; ACC = d; for(i=8; i>0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1
35、302_CLK = 0; ACC = ACC >> 1; unsigned char DS1302OutputByte(void) /实时时钟读取一字节(部函数) unsigned char i; for(i=8; i>0; i-) ACC = ACC >>1; /相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa) DS1302_RST = 0; DS13
36、02_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; unsigned char Read1302(unsigned char ucAddr) /读取DS1302某地址的数据 unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucDa
37、ta = DS1302OutputByte(); / 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(ucData); void DS1302_SetProtect(bit flag) /是否写保护 if(flag) Write1302(0x8E,0x10); else Write1302(0x8E,0x00); void DS1302_SetTime(unsigned char Address, unsigned char Value) / 设置时间函数 DS1302_SetProtect(0); Write1302(Address, (Val
38、ue/10)<<4 | (Value%10); void DateToStr(SYSTEMTIME *Time) Time->DateString0 = Time->Year/10 + '0' Time->DateString1 = Time->Year%10 + '0' Time->DateString2 = '-' Time->DateString3 = Time->Month/10 + '0' Time->DateString4 = Time->Month%1
39、0 + '0' Time->DateString5 = '-' Time->DateString6 = Time->Day/10 + '0' Time->DateString7 = Time->Day%10 + '0' Time->DateString8 = '0' void TimeToStr(SYSTEMTIME *Time) Time->TimeString0 = Time->Hour/10 + '0' Time->TimeString1
40、= Time->Hour%10 + '0' Time->TimeString2 = ':' Time->TimeString3 = Time->Minute/10 + '0' Time->TimeString4 = Time->Minute%10 + '0' Time->TimeString5 = ':' Time->TimeString6 = Time->Second/10 + '0' Time->TimeString7 = Time-&
41、gt;Second%10 + '0' Time->DateString8 = '0' void DS1302_GetTime(SYSTEMTIME *Time) unsigned char ReadValue; ReadValue = Read1302(DS1302_SECOND); Time->Second = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE); Time->Minute = (ReadVa
42、lue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR); Time->Hour = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY); Time->Day = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH
43、); Time->Month = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR); Time->Year = (ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); void Initial_DS1302(void) unsigned char Second=Read1302(DS1302_SECOND); if(Second&0x80) DS1302_SetTime(DS1302
44、_SECOND,0); void BurstWrite1302(unsigned char *pWClock) /往DS1302写入时钟数据(多字节方式) unsigned char i; Write1302(0x8e,0x00); / 控制命令,WP=0,写操作? DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(0xbe); / 0xbe:时钟多字节写命令 for (i = 8; i>0; i-) /8Byte = 7Byte 时钟数据 + 1Byte 控制 DS1302InputByte(*pWClock
45、); / 写1Byte数据 pWClock+; DS1302_CLK = 1; DS1302_RST = 0; void BurstRead1302(unsigned char *pRClock) /读取DS1302 时钟数据(时钟多字节方式) unsigned char i; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(0xbf); / 0xbf:时钟多字节读命令 for (i=8; i>0; i-) *pRClock = DS1302OutputByte(); / 读1Byte数据 pRClock+;
46、 DS1302_CLK = 1; DS1302_RST = 0; void DS1302_TimeStop(bit flag) / 是否将时钟停止 unsigned char Data; Data=Read1302(DS1302_SECOND); DS1302_SetProtect(0); if(flag) Write1302(DS1302_SECOND, Data|0x80); else Write1302(DS1302_SECOND, Data&0x7F); #endif LCD1604.h#ifndef LCD_CHAR_1604 #define LCD_CHAR_1604 #i
47、nclude <intrins.h> sbit LcdRs = P35; sbit LcdRw = P36; sbit LcdEn = P37; sfr DBPort = 0x80; /P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 unsigned char LCD_Wait(void) LcdRs=0; LcdRw=1; _nop_(); LcdEn=1; _nop_(); /while(DBPort&0x80);/ LcdEn=0; return DBPort; #define LCD_COMMAND 0 / Command #define
48、LCD_DATA 1 / Data #define LCD_CLEAR_SCREEN 0x01 / 清屏 #define LCD_HOMING 0x02 / 光标返回原点 void LCD_Write(bit style, unsigned char input) LcdEn=0; LcdRs=style; LcdRw=0; _nop_(); DBPort=input; _nop_();/注意顺序 LcdEn=1; _nop_();/注意顺序 LcdEn=0; _nop_(); LCD_Wait(); #define LCD_SHOW 0x04 /显示开 #define LCD_HIDE 0x
49、00 /显示关 #define LCD_CURSOR 0x02 /显示光标 #define LCD_NO_CURSOR 0x00 /无光标 #define LCD_FLASH 0x01 /光标闪动 #define LCD_NO_FLASH 0x00 /光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode) LCD_Write(LCD_COMMAND, 0x08|DisplayMode); #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 / default#define LCD_MOVE 0x01
50、/ 画面可平移#define LCD_NO_MOVE 0x00 /defaultvoid LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_COMMAND, 0x04|InputMode); void LCD_Initial() LcdEn=0; LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标 LCD_Write(LCD_COMMAND
51、,LCD_CLEAR_SCREEN); /清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动 void GotoXY(unsigned char x, unsigned char y) /x列,y行 if(y=0) LCD_Write(LCD_COMMAND,0x80|x); if(y=1) LCD_Write(LCD_COMMAND,0x80|(x-0x40); void Print(unsigned char *str) while(*str!='0') LCD_Write(LCD_DATA,*str); str+; #endifset_key.h#ifndef _setkey_h_ #define _setkey_h_ #include<SHT11.h> float setwen_h,setwen_l,setshi_h,setshi_l; sbit hot =P14;/ 加热 sbit cold =P13;/ 降温 sbit speek =P12;/ 发光 sbit ganzao =P15;/干燥 sbit jiashi =P16;/加湿 sbit speaker
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育心理学综合练习试卷B卷附答案
- 2024年度山西省高校教师资格证之高等教育法规押题练习试题B卷含答案
- 重庆市西南大学附中2024-2025学年高一上定时检测(一)语文试题含答案
- 2024年度xx村监测对象风险消除民主评议会议记录
- 湖南省长沙市长郡郡维中学2022-2023学年九年级上学期入学英语试卷(含答案)
- 2024年长沙市事业单位招聘计算机岗位专业知识试题
- 2024年培训学校业务外包协议
- 2024年工程咨询服务具体协议样式
- 2024医疗销售企业合作协议样本
- 2024房屋建筑施工劳务协议详例
- 部编版五年级上册道德与法治第三单元知识点归纳整理
- 养老机构(养老院)全套服务管理实用手册
- 企业文化管理第八章企业文化的比较与借鉴
- WST311-2023《医院隔离技术标准》
- 《缕书香伴我同行》课件
- 建设项目竣工环境保护验收管理办法
- 100道解方程 计算题
- 赛事承办服务投标方案(技术方案)
- 概率论(华南农业大学)智慧树知到课后章节答案2023年下华南农业大学
- 上海中考英语专项练习-动词的时态-练习卷一和参考答案
- GB 4806.7-2023食品安全国家标准食品接触用塑料材料及制品
评论
0/150
提交评论