基于STC89C52单片机的温湿度检测电路设计
基于STC89C52单片机的粮仓温湿度的系统设计

学号:常州大学毕业设计(论文)(2012届)题目学生学院专业班级校内指导教师专业技术职务校外指导老师专业技术职务二○一二年六月基于STC89C52单片机的粮仓温湿度的系统设计摘要:温湿度作为一个重要的物理量,是粮食仓库中最普遍、最重要的工艺参数之一。
随着科学技术的不断更新,对温湿度测量的准确性要求不断提高,因此温湿度检测也成为一个重要的研究课题。
本设计是基于单片机对数字信号的高敏感性和可控性以及数字温湿度传感器可以产生数字信号的性能,设计了以STC89C52为核心的一套控制系统,其中包括单片机、温湿度检测、键盘及显示、报警电路、系统软件等部分的设计。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash 存储控器。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
关键词:温湿度;STC89C52;DHT11传感器;Temperature and Humidity of Granary System design basedon STC89C52 MicrocontrollerAbstract: Temperature and humidity as an important physical quantity, is one of the most common food warehouse, the most important process parameters. As the times progress, social development, science and technology constantly updated, the accuracy of measurement of temperature and humidity requirements continue to improve, so the temperature and humidity testing has also become an important research topic.The design is based on single-chip digital signal high sensitivity and controllability, as well as digital temperature and humidity sensors can produce the performance of digital signal, design a control system STC89C52 as the core, Including the microcontroller, temperature and humidity testing, keyboard and display, the alarm circuit, system software, and other parts of the design.STC89C52 a low-power, high performance CMOS8 bit microcontroller with 8K programmable Flash storage controller. DHT11 digital temperature and humidity sensor is a composite Sensor contains a calibrated digital signal output of the temperature and humidity. Application of a dedicated digital modules collection technology and the temperature and humidity sensing technology, to ensure that products with high reliability and excellent long-term stabilityKey words: Temperature and Humidity; STC89C52; DHT11 sensor;目录摘要 (I)1 绪论 (1)1.1课题开发的意义 (1)1.2课题开发的背景 (1)1.3课题开发的目标 (2)2系统总体分析 (2)2.1 总体方案设计 (2)2.2 硬件选择 (3)2.3 系统仿真 (4)3硬件设计 (6)3.1 Protel硬件开发软件 (6)3.2 单片机系统模块 (7)3.3 温湿度检测模块 (12)3.4 显示模块 (14)3.5 温湿度上限存储模块 (17)3.6 电源及程序下载模块 (19)4 软件设计 (21)4.1 主程序 (21)4.2 温湿度检测模块程序 (22)4.3 LCD显示模块程序 (23)5 系统实现与调试 (24)5.1 电路板焊接注意事项 (24)5.2 程序下载 (24)5.3 系统运行 (25)参考文献 (27)致谢 (28)附录 A (29)附录 B................................................................................ 错误!未定义书签。
STC89C52单片机温湿度检验装置的设计

STC89C52单片机温湿度检验装置的设计摘要:本文拟设计一款基于STC89C52单片机的库存温湿度智能化控制系统,传感器模块选择一体式的温湿度传感器DHT11硬件模块,选择LCD1602液晶显示屏模块进行数据的动态化显示,在外接控制设备上连接继电器控制,并且采用语音模块实现动态化的语音播报效果。
关键词:STC89C52;硬件;模块;单片机;温湿度前言:本次系统在设计目标的基础上采用模块化的设计方案,从温湿度测量、显示功能、控制实现三个角度进行综合设计,硬件系统具体分为5个基本模块,分别是STC89C52单片机主控模块、DHT11温湿度检测模块、LCD1602液晶显示模块、继电器控制模块以及按键阈值调整模块。
在传感器模块中,考虑DHT11数字温湿度传感器模块,通过对当前环境内的温湿度进行检验,测量得到的数据需要传输到单片机内进行数据处理与分析,并且将对应的数据存储到LCD1602显示模块,为了提升显示的稳定性,系统设置传感器数据采集间隔时间为2s。
系统整体采用继电器负载驱动装置,在环境温度与湿度超出设定阈值范围的基础上对负载实现驱动控制,不同模块对应降温、升温、干燥、喷水四个功能。
1 硬件设计1.1 单片机模块本次设计的主控模块选择STC89C52单片机作为主控装置,STC89C52单片机的时钟信号产生主要通过内部时钟方式以及外部时钟方式两种进行控制,单片机内部有单独的振荡电路,需要接入到XTAL引脚上,外接到陶瓷振荡器或者晶体构成晶振,形成的自激振荡器可以为单片机的内部提供时钟信号。
晶振电路上的C1与C2实现快速起振以及频率稳定控制两种效果,选择的电容数值控制在5-30pF之间,数据的典型值为30pF。
晶振电路的频率典型值为11.0592MHz。
复位电路是实现单片机初始化的电路结构,单片机最小系统中的复位电路主要通过按钮复位以及上电复位两种方式。
上电复位是通过与外部电路复位电容实现充放电的过程,在Vcc上升时间控制在1ms以下,可以实现上电复位操作。
基于STC89C52单片机的温湿度检测系统设计_课程设计说明书

基于STC89C52单片机的温湿度检测系统设计摘要:温湿度是生活生产中的重要的参数。
本设计为基于单片机的温湿度检测与控制系统,采用模块化、层次化设计。
用新型的智能温湿度传感器DHT11主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示和报警电路提供信号,实现对温湿度的控制报警。
报警系统根据设定报警的上下限值实现报警功能,显示部分采用LCD1602液晶显示所测温湿度值。
系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。
关键词:单片机;温湿度传感器; LCD显示Summary:Temperature and humidity is important in the life of the production parameters. The design of microcontroller-based temperature and humidity measurement and control system, modular, hierarchical design. With the new intelligent temperature and humidity sensors DHT11 main achievement of the temperature, humidity testing, the temperature and humidity sensor signal acquisition and signal into digital signal, then the use of single-chip STC89C52RC for data analysis and processing, to provide for the display and alarm circuit signal, the control of temperature and humidity alarm. Alarm system alarm according to the upper and lower limits set an alarm function, some use LCD1602 display the temperature and humidity values. System circuit is simple, highly integrated, stable, easy debugging, high precision and has some practical value.Keyword:SCM; temperature and humidity sensor; LCD display目录第1章概述 (3)1.1课题背景 (3)1.2主要内容 (4)第2章系统总体方案设计 (4)2.1 温湿度传感器 (5)1、DHT11产品概述 (5)2、引脚说明 (6)3、电源引脚 (6)4、串行接口(单线双向) (6)2.2 RS232接口 (7)2.3 单片机STC89C52 (7)1、主要特性如下: (7)2、 STC89C52RC单片机的工作模式 (8)第3章系统的硬件设计和连接 (11)3.1、时钟电路 (11)3.2、复位电路 (12)3.3、晶振电路 (12)3.4、LCD1602 (13)3.5、报警电路 (15)第4章仿真软件介绍 (16)4.1、Proteus软件 (16)4.2、Keil C51软件 (17)第5章硬件电路的调试 (18)第6章总结 (19)参考文献 (20)附录: (21)第1章概述1.1课题背景温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用。
基于STC89C52单片机的温度控制电路设计

2.7系统整体硬件电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主控电路等,通过Protel99se 可画出如图2-9所示的电路图[9][10][11]图2-9 温度控制电路原理三系统软件设计3.1 温度控制系统原理框图主控制程序的主要是用来实时控制当前所要测控的环境温度,并读出由DS18B20测量的经过处理的当前环境的温度值,同时检查温度是否在限度之内,否则报警,同时调整温度值。
其主控制程序流程图如3-1所示。
图3-1 主程序流程图图3-2读温度流程图温度控制系统C语言程序#include <reg51.h>#define uint unsigned int#define uchar unsigned charsbit p34=P2^4;sbit p35=P2^5;sbit p36=P2^6;sbit dp=P0^7;sbit p37=P2^7;sbit DQ=P2^2; //定义DS18B20总线I/Osbit SET=P3^1; //定义选择报调整警温度上限和下限(1为上限,0为下限)sbit LING=P2^0; //定义闪烁signed char m; //温度值全局变量bit sign=0; //外部中断状态标志signed char shangxian=38; //上限报警温度,默认值为38signed char xiaxian=5; //下限报警温度,默认值为5ucharcode LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; /*****延时子程序*****/void Delay(uint i){while( i-- );}/*****初始化DS18B20*****/void Init_DS18B20(void){unsigned char x=0;DQ=1;Delay(8); //稍做延时DQ=0; //单片机将DQ拉低Delay(80); //精确延时,大于480usDQ=1; //拉高总线Delay(14);x=DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay(20);}/*****读一个字节*****/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat=0;for (i=8;i>0;i--){DQ=0; // 给脉冲信号dat>>=1;DQ=1; // 给脉冲信号if(DQ)dat|=0x80;Delay(4);}return(dat);}/*****写一个字节*****/void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;}}void Tmpchange(void) //发送温度转换命令{Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0x44); //启动温度转换}/*****读取温度*****/unsigned int ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Tmpchange();Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器a=ReadOneChar(); //读低8位b=ReadOneChar(); //读高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*100+0.5; //放大100倍输出并四舍五入return(t);}/*****显示开机初始化等待画面*****/Disp_init(){P0 = 0x80; //显示-p34=1;p35=0;p36=0;p37=0;Delay(200);P0 = 0x80;p34=0;p35=1;p36=0;p37=0;Delay(200);P0 = 0x80;p34=0;p35=0;p36=1;p37=0;Delay(200);P0 = 0x80;p34=0;p35=0;p36=0;p37=1;Delay(200);P0 = 0x80;}/*****显示温度子程序*****/Disp_Temperature() //显示温度{uint a,b,c,d,e;e=ReadTemperature(); //获取温度值a=e/1000; //计算得到十位数字b=e/100-a*10; //计算得到个位数字d=e%10; //计算得到小数点后两位c=(e%100)/10; //计算得到小数点后一位m=e/100;if(m>shangxian || m<xiaxian) LING=1; //温度不在范围内报警else LING=0;p34=0;p35=0;p36=0;p37=0;P0 =LEDData[d]; //显示小数点后两位p34=1;p35=0;p36=0;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0 =LEDData[c]; //显示小数点后一位p34=0;p35=1;p36=0;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0 =LEDData[b]; //显示个位dp=0;p34=0;p35=0;p36=1;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0 =LEDData[a]; //显示十位p34=0;p35=0;p36=0;p37=1;Delay(300);p34=0;p35=0;p36=0;p37=0; //关闭显示}disptiaozheng(){uchar f,g,j,k;f=shangxian/10;g=shangxian%10;j=xiaxian/10;k=xiaxian%10;p34=0;p35=0;p36=0;p37=0;P0 =0xc0; //显示0p34=1;p35=0;p36=0;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;P0 =0xc0; //显示0p34=0;p35=1;p36=0;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;if(SET==1){P0 =LEDData[g];dp=0; //显示上限温度个位}else{P0 =LEDData[k];dp=0;}p34=0;p35=0;p36=1;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;if(SET==1) P0 =LEDData[f]; //显示上限温度十位else{if(f==0) P0=0x00; //不显示下限温度十位else P0 =LEDData[j]; //显示下限温度十位}p34=0;p35=0;p36=0;p37=1;Delay(200);p34=0;p35=0;p36=0;p37=0; //关闭显示Delay(20);}/*****外部中断0服务程序*****/void int0(void) interrupt 0{EX0=0; //关外部中断0 sign=1;if(SET==1) shangxian++;else xiaxian++;Delay(500);EX0=1;}/*****外部中断1服务程序*****/void int1(void) interrupt 2{EX1=0; //关外部中断0 sign=1;if(SET==1) shangxian--;else xiaxian--;Delay(500);EX1=1;}/*****主函数*****/void main(void){uint z;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;ReadTemperature();LING=0;for(z=0;z<100;z++){Disp_init();}while(1){Disp_Temperature();if(sign==1){for(z=0;z<300;z++)disptiaozheng();sign=0;}}}。
基于STC89C52单片机的温湿度环境监测系统设计与实现

43第2卷 第19期产业科技创新 2020,2(19):43~44Industrial Technology Innovation 基于STC89C52单片机的温湿度环境监测系统设计与实现*倪丹艳(苏州高博软件技术职业学院,江苏 苏州 215163)摘要:文章主要设计实现基于单片机的温湿度环境监测系统。
本设计以STC89C52单片机为核心控制模块,外接DHT11温湿度及GP2Y1010AU粉尘传感器进行环境温湿度与PM2.5值的实时采集,利用ADC0832模数转换芯片将采集到的芯片传输至单片机,选用LCD1602液晶显示器对温湿度及PM值实时显示。
为了使用户及时查看环境适宜程度,通过蓝牙协议将数据传送至用户手机端。
关键词:STC89C51;温湿度;蓝牙中图分类号:TP311 文献标识码:A 文章编号:2096-6164(2020)19-0043-02随着时代的发展和工业水平进步,人民的生活水平得到极大地提高,对于生活环境质量要求也日益提高,环境中的温度、湿度及PM2.5这些指标也备受大家关注。
在智能家居领域,现代人追求高品质舒适生活,对环境要求进一步提升,以环境监测为主的智能家居设备广受追捧,PM2.5传感器、温湿度传感器得到广泛应用。
1 系统总体设计1.1 总体设计方案本设计主要以STC89C52单片机为核心控制模块实现温湿度及PM2.5值监测,系统主要有以下功能:温湿度采集、显示模块、传感器信号处理、蜂鸣器报警及蓝牙通信模块。
本设计的系统框图如下图1所示。
本设计可以实时监测环境温湿度、PM2.5值,并将采集的数据显示在液晶屏幕上。
为了用户使用方便,通过通信模块将用户手机连接至该系统,可及时查看环境舒适程度。
图1 系统设计框图1.2 系统原理图本文主要设计一个实时显示温度和湿度的检测系统,可以检测周围的温度、湿度有与空气PM2.5。
通过蓝牙将检测到的数据检测到用户端。
整个系统原理图如下图2所示。
基于STC89C52单片机的温湿度检测电路设计

基于单片机的车间温湿度控制系统学生姓名:霍晓东学号:20084073831指导教师:孟洁所在学院:信息技术学院专业:电气工程及其自动化中国·大庆2012年 5 月黑龙江八一农垦大学本科毕业设计(论文)任务书摘要本设计是基于STC89C52单片机的温湿度检测电路设计,采用单总线传输模式的AM2301传感器,对温度湿度分别测量并通过液晶显示屏1602显示。
单片机采集到AM2301温湿度传感器给出的数据进行处理与计算,得出当前的温度与湿度并送给液晶屏显示。
本系统具有可读性高,稳定性高,反应速度快,测量值准确的特点。
关键词:温度湿度单片机目录摘要ﻩ错误!未定义书签。
ABSTRACTﻩ错误!未定义书签。
前言 (IV)1设计要求............................... 错误!未定义书签。
2方案设计及论证ﻩ12.1系统主要单元的选择与论证ﻩ错误!未定义书签。
2.2 总体方案设计ﻩ错误!未定义书签。
3 单片机主模块设计....................... 错误!未定义书签。
3.1单片机主电路设计................. 错误!未定义书签。
3.2主程序流程图ﻩ错误!未定义书签。
3.3主程序设计ﻩ错误!未定义书签。
4温湿度检测模块设计................... 错误!未定义书签。
4.1温湿度检测电路设计.............. 错误!未定义书签。
4.2温湿度检测流程图.................. 错误!未定义书签。
4.3温湿度检测程序设计................ 错误!未定义书签。
5液晶显示模块设计....................... 错误!未定义书签。
5.1 1602液晶显示模块电路设计....... 错误!未定义书签。
5.2液晶显示流程图.................. 错误!未定义书签。
5.3 液晶显示程序设计................. 错误!未定义书签。
基于51单片机stc89c52的温湿度检测系统

课程设计基于msp430单片机F5529的文本提取及触摸按键测试单位:11电子科学与技术姓名:康自林学号:1110359【摘要】本设计以MSP430单片机的F5529芯片为核心,利用程序代码提取已存信息以及触摸按键的测试【关键词】msp430单片机触摸按键提取文本目录一、设计目的及意义……………………………………二、系统软件基本思路…………………………………三、系统调试……………………………………………四、程序……………………………………………基于msp430f5529单片机的简单程序设计一、设计目的及意义在不用sd卡的情况下,利用芯片内部小容量存储来实现提取文本功能,以及利用触摸按键来显示不同图案二、msp430f5529介绍1、超低功率a)230 μA/MHzb) 1.9 μA 待机模式c)从待机模式唤醒仅需< 5 μs2、增强性能d)高达25 MHze)全线产品8 MHz (1.8 - 3.6 V)f) 1.8V ISP 闪存擦除及写入g)自动防故障,灵活的时钟系统3、创新性能h)集成LDO,BOR,WDT+,RTCi)多通道DMA支持待机模式下的数据传送j)更多连接方式:USB,RFk)AES加密,RTC后备电池l)用户定义的引导装入程序m)业界领先的代码密度4、主电路图三、系统软件基本思路根据系统定义,用C语言以及430单片机语言编写代码,并使系统能够正常工作,流程图如下:四.程序1.显示进入页面#include<stdint.h>#include"msp430.h"#include"HAL_PMM.h"#include"HAL_UCS.h"#include"HAL_Board.h"#include"HAL_Buttons.h"#include"HAL_Cma3000.h"#include"HAL_Dogs102x6.h"#include"HAL_Menu.h"#include"HAL_Wheel.h"#include"LPM.h"#include"PMM.h"#include"lab2.h"uint16_t timeoutCounter;// This image has been created by ImageDog using 'ti_bug.jpg'static const uint8_t tiBug[] ={0x42, // Image width in pixels0x08, // Image height in rows (1 row = 8 pixels)0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x02,0x03,0x01,0x00,0x03,0x03,0x02,0x02,0x03,0x03,0x02,0x02,0x03,0x03, 0x00,0x02,0x02,0x03,0x07,0x04,0x04,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0xBF,0x02,0xFA,0xFA,0x92,0x93,0xFF,0xFF,0x93,0x92,0xFA,0xFA, 0x02,0x41,0x4F,0xFF,0xFF,0x4E,0x46,0xEB,0xE9,0x49,0x49,0x4F,0x4F,0x49,0xE9,0xE9, 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x20,0xE0,0xC0,0xE0,0xE0,0x40,0xC0,0x80,0xF0,0xF0,0x80,0xC0,0x40,0x60, 0x20,0x80,0x00,0xF0,0xF0,0x00,0x20,0x20,0x20,0x20,0x20,0xE0,0xE0,0x20,0x20,0x20, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x44,0x67,0x37,0x14,0x0D,0x1D,0x79,0x71,0x41,0x41,0x41,0x7D,0x7D,0x05, 0x04,0x04,0xC4,0x77,0x37,0x00,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0x04,0x04,0x04, 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFC,0xFC,0x1A,0x1E,0xC6,0xE4,0x7C,0x18,0x18,0x7C,0xE4,0xC6,0x02, 0x02,0x00,0x00,0xFE,0xFE,0x0C,0x18,0x18,0x00,0x00,0xFE,0xFE,0xFE,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,};void main(void){uint8_t contrast = *((unsigned char *)contrastSetpointAddress); //读取FLASH中对比度值uint8_t brightness = *((unsigned char *)brightnessSetpointAddress); //读取FLASH中背光值// Initialize accelerometer offset from flashCma3000_setAccel_offset(*((unsigned char *)accelXcalibrationAddress), //初始化加速度偏移量*((unsigned char *)accelYcalibrationAddress),*((unsigned char *)accelZcalibrationAddress));// Stop WDTWDTCTL = WDTPW + WDTHOLD; //关闭看门狗// Basic GPIO initializationBoard_init(); //初始化GPIO// Set Vcore to accomodate for max. allowed system speedSetVCore(3); //设VCore为最大// Use 32.768kHz XTAL as referenceLFXT_Start(XT1DRIVE_0); //利用LFXT1(32.768kHZ)作为时钟参考// Set system clock to max (25MHz)Init_FLL_Settle(25000, 762); //利用FLL(锁频环)将系统时钟设为最大25MHZSFRIFG1 = 0; //清中断标志SFRIE1 |= OFIE; //使能晶振失效中断// Globally enable interrupts__enable_interrupt(); //使能全局中断// Setup real time clock//SetupRTC(); //设置实时时钟// Set up LCDDogs102x6_init(); //初始化LCDDogs102x6_backlightInit(); //背光初始化// Contrast not programed in Flash Yetif (contrast == 0xFF) //若当前FLASH中无对比度值,则将对比度值设为11(默认)// Set Default Contrastcontrast = 11;// Brightness not programed in Flash Yetif (brightness == 0xFF) //若当前FLASH中无背光值,则将背光值设为11(默认)// Set Default Brightnessbrightness = 11;Dogs102x6_setBacklight(brightness); //设置初始背光值Dogs102x6_setContrast(contrast); //设置初始对比度值Dogs102x6_clearScreen(); //清屏// Set up wheelWheel_init(); //初始化齿轮电位计Buttons_init(BUTTON_ALL); //初始化按键Buttons_interruptEnable(BUTTON_ALL); //使能所有按键中断buttonsPressed = 0; //键值清零// Display TI logoDogs102x6_imageDraw(tiBug, 0, 16); //显示图案// Wait for button presswhile (!buttonsPressed) //等待按键被按下,或者超时退出等待{for (timeoutCounter = 0; timeoutCounter < 0xFFFF; timeoutCounter++) {if (buttonsPressed)break;__delay_cycles(1000);}//Timeout breakbreak; //超时退出}Dogs102x6_clearScreen();buttonsPressed = 0;//显示文字说明:Dogs102x6_stringDraw(3, 10, " Welcome ", DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(4, 0, " to NK university ", DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(7, 0, "or press S1 | S2 ", DOGS102x6_DRAW_INVERT);// Wait for button presswhile(!buttonsPressed) //等待按键被按下,或者超时退出等待 {for (timeoutCounter = 0; timeoutCounter < 0xFFFF; timeoutCounter++) {if (buttonsPressed)break;__delay_cycles(2000);}//Timeout breakbreak;}// 主循环while (1){l ab2(); //}}2.主程序#include<stdint.h>#include"msp430.h"#include"HAL_PMM.h"#include"HAL_UCS.h"#include"HAL_Board.h"#include"HAL_Buttons.h"#include"HAL_Dogs102x6.h"#include"HAL_Menu.h"#include"HAL_Wheel.h"#include"Clock.h"#include"LPM.h"#include"Random.h"#include"PMM.h"#include"Demo_Cube.h"#include"CTS_Layer.h"#include"stdlib.h"#include"lab2.h"static const char *const capMenuText[] = {"==LAB2:Cap App===","1. test1 ","2. CapDemo ","3. happy"};char *itoa(int, char *, int);// Forward Declared Functionvoid test1(void);void CapDemo(void);/************************************************************************** *//*** @brief The menu of lab2.* @param none* @return none*************************************************************************** ***/void lab2(void){uint8_t selection = 0;buttonsPressed = 0;Dogs102x6_clearScreen();Dogs102x6_stringDraw(7, 0, "*S1=Enter S2=Esc*",DOGS102x6_DRAW_NORMAL);selection = Menu_active((char **)capMenuText, 3);if (buttonsPressed & BUTTON_S2);elseswitch (selection){case 1: test1(); break; //读取已存文件case 2: CapDemo(); break; //触摸按键柱形图default: break;}}/************************************************************************** *//*** @brief CapLED.* @param none* @return none*************************************************************************** ***/void test1(void){uint8_t sliderPosition = 0;Board_ledOff(LED_ALL); //关闭所有LEDDogs102x6_clearScreen();buttonsPressed = 0;Dogs102x6_stringDraw(1, 0, " Slide Finger on ", DOGS102x6_DRAW_NORMAL); Dogs102x6_stringDraw(2, 0, " Touch Pads ", DOGS102x6_DRAW_NORMAL);TI_CAPT_Init_Baseline(&slider); //触摸按键初始化while (!(buttonsPressed & BUTTON_S2)) //S2按键按下退出程序{sliderPosition = TI_CAPT_Slider(&slider);sliderPosition = (sliderPosition + 10) / 20; //得到触摸按键位置//以下根据触摸按键位置点亮相应LEDswitch (sliderPosition){case 1: Dogs102x6_stringDraw(1, 0, " page_one ",DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(2, 0, " friend'name ",DOGS102x6_DRAW_NORMAL);break;case 2: Dogs102x6_stringDraw(1, 0, " page_two ",DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(2, 0, " friend'message ",DOGS102x6_DRAW_NORMAL);break;case 3: Dogs102x6_stringDraw(1, 0, " page_three",DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(2, 0, " friend'message ",DOGS102x6_DRAW_NORMAL);break;case 4: Dogs102x6_stringDraw(1, 0, " page_four",DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(2, 0, " friend'message ",DOGS102x6_DRAW_NORMAL);break;case 5: Dogs102x6_stringDraw(1, 0, " page_five",DOGS102x6_DRAW_NORMAL);Dogs102x6_stringDraw(2, 0, " friend'message ",DOGS102x6_DRAW_NORMAL);break;case (255 / 17):break;}}Board_ledOff(LED_ALL);Dogs102x6_clearScreen();buttonsPressed = 0;}/************************************************************************** *//*** @brief Allows user to select USB apps* @param none* @return none*************************************************************************** ***/void CapDemo(void){uint8_t quit = 0, spacing = 0, height = 0, height1 = 0, i;uint16_t deltaCount[5];Dogs102x6_clearScreen();buttonsPressed = 0;TI_CAPT_Init_Baseline(&slider); //触摸按键初始化buttonDebounce = 0;Dogs102x6_stringDraw(0, 0, "== Touch Demo ==", DOGS102x6_DRAW_NORMAL);//menu active until selection is madewhile (!quit){TI_CAPT_Custom(&slider, deltaCount); //测量电容传感器变化// 5 = No. of sensorsfor (i = 0; i < 5; i++){spacing = 20 * i + 10;if (deltaCount[i] < 4000)height = 63 - deltaCount[i] / 60; //利用第i组传感器数据得到所需柱形高度elseheight = 10;// 限制列的高度if (height < 10)height = 10;// 每列三像素宽,,,,以下显示LCD上九列图案中的第1、3、5、7、9列Dogs102x6_verticalLineDraw(63, height, spacing - 1,DOGS102x6_DRAW_NORMAL);Dogs102x6_verticalLineDraw(63, height, spacing,DOGS102x6_DRAW_NORMAL);Dogs102x6_verticalLineDraw(63, height, spacing + 1,DOGS102x6_DRAW_NORMAL);__delay_cycles(1000);Dogs102x6_verticalLineDraw(height, 5, spacing,DOGS102x6_DRAW_INVERT);Dogs102x6_verticalLineDraw(height, 5, spacing - 1,DOGS102x6_DRAW_INVERT);Dogs102x6_verticalLineDraw(height, 5, spacing + 1,DOGS102x6_DRAW_INVERT);if (i < 4){//for the "in between" heightsif (deltaCount[i + 1] < 2400)height1 = 63 - deltaCount[i + 1] / 40;elseheight1 = 10;// Limit the height of the columnsif (height + height1 < 10)height1 = 10;// 每列三像素宽,,,,以下显示LCD上九列图案中的第2、4、6、8列Dogs102x6_verticalLineDraw(63, (height + height1) / 2, (spacing + 7),DOGS102x6_DRAW_NORMAL);Dogs102x6_verticalLineDraw(63, (height + height1) / 2, (spacing + 6),DOGS102x6_DRAW_NORMAL);Dogs102x6_verticalLineDraw(63, (height + height1) / 2, (spacing + 5),DOGS102x6_DRAW_NORMAL);__delay_cycles(1000);Dogs102x6_verticalLineDraw((height + height1) / 2, 5, (spacing + 7),DOGS102x6_DRAW_INVERT);Dogs102x6_verticalLineDraw((height + height1) / 2, 5, (spacing + 6),DOGS102x6_DRAW_INVERT);Dogs102x6_verticalLineDraw((height + height1) / 2, 5, (spacing + 5),DOGS102x6_DRAW_INVERT);}}if ((buttonsPressed & BUTTON_S2))quit = 1;}Board_ledOff(LED_ALL);Dogs102x6_clearScreen();buttonDebounce = 1;buttonsPressed = 0;}。
基于STC89C52单片机的温湿度传感器

2011级小学期53组目录CHAPTER 1 TEMPERATURE AND HUMIDITY MEASURING PRINCIPLE (2)1.1THE SCHEME SELECTION OF TEMPERATURE AND HUMIDITY SENSOR (2)1.2THE SCHEME SELECTION OF TEMPERATURE AND HUMIDITY DISPLAY (2)CHAPTER 2 THE HARDWARE DESIGN OF THE SYSTEM (3)2.1 THE OVERALL DESIGN OF THE SYSTEM HARDWARE (3)2.2 THE MAIN SCHEME SELECTION AND DESIGN OF THE CONTROL MODULE (4)2.2.1SINGLECHIP STC89C52INTRODUCTION (4)2.2.2T HE MAIN CONTROL MODULE CIRCUIT (4)2.3THE SELECTION AND DESIGN OF THE RTC MODULE SCHEME (6)2.4THE DESIGN OF INTERFACE MODULES (8)CHAPTER 3 THE DESIGN OF SYSTEM SOFTWARE............... 错误!未定义书签。
3.1SYSTEM OF THE MAIN PROGRAM AND FLOW CHART (9)3.2 THE READ OPERATION FLOW CHART OF DS1302CLOCK CHIP (10)3.3WRITE OPERATION FLOW CHART THE OF LCD MODULE.... 错误!未定义书签。
CHAPTER 4 THE EXPERIMENT AND DEBUGGING (12)4.1DIFFICULTIES AND SOLUTIONS (14)CHAPTER 5 TEAM DIVISION OF LABOR AND COMMENTS (15)APPENDIX A:ELECTRIC SCHEMATIC DIAGRAM (18)APPENDIX B:PROGRAM LIST (19)APPENDIX C:EXTERNAL VIEW (32)2011级小学期53组第1章温湿度测量原理单片机的接口信号是数字信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 座 插 排 87654321 单 76543210 DDDDDDDD 4 9 座 8 插 7 排 87654321 6 阻 单 排 5 K 4 0 1 3 2 72P62P52P12P02P32P22P42P 1 2 CCV J 00987654321234567891 43222222222333333333 CCV 72P62P52P42P32P22P12P02P70P60P50P40P30P20P10P00P CCV NESP P/ELA PV/AE D R N21 D 10 GDXRDXT71P61P51P41P31P21PT/11PT/01PTT1TNI0TNIWRTESERXX 2 25C98U 00154326789 876543219 21111111111 71P61P51P41P31P21P11P01P 73P63P53P43P33P23P13P03P 31 座座 9TSR P 插插 0 路 01C3 排排 8765432187654321 电 单单 振 2 X 1 晶 1 Y P 9 0 C3 2 1 X
图 3 复位电路
按键后:电容器被短路放电、RST 直接和 VCC 相连,就是高电平,此时进入 “复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形 成高电平送到 RST,仍然是“复位状态”;稍后,充电结束,电流降为 0,电阻 上的电压也将为 0,RST 降为低电平,开始正常工作。
--
2.1.1 单片机控制模块的选择论证
方案一:采用 XC9000 系列的 FPGA。该类器件具有并行处理能力,能快速的 响应外部的各种数字信号,但在数据处理方面过于复杂,而且芯片价格较昂贵。
方案二:采用单片机作为控制核心,单片机数学运算功能较强。在程序相互 调用方面,处理方便灵活,性能稳定,适合实际应用。且单片机技术发展较为成 熟,价格便宜。基于以上分析,采用单片机控制可更为简便灵活地实现系统功能, 故拟采用方案二。
--
--
1 设计要求
基于单片机的室内温湿度检测电路设计要求如下: (1)设计制作一个温湿度计,温度测量范围为-40~50℃,湿度为 0~100%; (2)温度测量误差为 0.1℃,湿度测量误差为 3%; (3)具有量程自动转换功能; (4)其他创新性设计,如低功耗等。
--
--
2 方案设计及论证
2.1 系统主要单元的选择与论证
--
基于单片机的车间温湿度 控制系统
学生姓名:霍晓东 学 号:20084073831 指导教师: 孟洁 所在学院:信息技术学院 专 业:电气工程及其自动化
中国·大庆 2012 年 5 月
--
--
黑龙江八一农垦大学
本科毕业设计(论文)任务书
学生姓名 论文题目 题目分类
霍晓东
所在班级 08 级电气 8 导师姓名 班
晶 P03 9C 21 1Y XX 21 2X2redaeH 3 1 供源电CCV 电 BSU
DS18B20 温度检测
--
显示模块 单片机
电源
HS1101 湿度检测
图 1 系统组成框图
如图 1 所示,本系统由单片机主模块、DS18B20 温度检测模块、HS1101 湿度 检测模块、1602 液晶显示模块 4 部分组成。
2.2 总体方案设计
经分析,系统选用单片机 STC89C52、温度传感器 DS18B20 、 湿 度 传 感 器 HS1101、LCD 液晶显示 1602。由温度检测电路和湿度检测电路将检测到的数据送 到单片机,单片机对接收到的数据进行处理并送到 1602 显示,5V 稳压电源给各 个部分供电。
--
孟洁
基于单片机的车间温湿度控制系统
导师职称
1.应用与非应用类:〇 工程 〇科研 〇教学建设 〇理论分析 〇模拟 2.软件与软硬结合类:〇软件〇硬件〇 软硬结合〇非软硬件
副教授
主要研究内容及指标: 本设计主要研究如何应用单片机实现车间温湿度检测,应用 STC89C52 单片机,经过单总线式
AM2301 芯片分别对车间温湿度数据进行采集,并通过液晶显示屏 1602 进行显示。 指标:(1)温度测量范围为 15~30℃,湿度为 40~70%; (2)温度测量误差为 0.1℃,湿度测量误差为 3%; (3)具有量程自动转换功能
主要参考文献: 1、 康华光.电子技术基础[M]. 北京:高等教育出版社 2、 彭介华.电子技术课程设计指导[M]. 北京:高等教育出版社 3、 郭天祥.新概念 51 单片机 C 语言教程:入门、提高、开发、拓展全攻略[M].电子工业出版社 4、 黄智伟.印制电路板(PCB)设计技术与实践[M].北京:电子工业出版社,2009 5、 高吉祥等.电子技术基础实验与课程设计[M].北京:电子工业出版社,2002
2.1 系统主要单元的选择与论证.......................... 1 2.2 总体方案设计 ..................................... 1 3 单片机主模块设计 ....................................... 3 3.1 单片机主电路设计.................................. 3 3.2 主程序流程图...................................... 5 3.3 主程序设计 ....................................... 5 4 温湿度检测模块设计 ..................................... 6 4.1 温湿度检测电路设计................................ 6 4.2 温湿度检测流程图.................................. 7 4.3 温湿度检测程序设计................................ 8 5 液晶显示模块设计 ....................................... 8 5.1 1602 液晶显示模块电路设计......................... 8 5.2 液晶显示流程图 .................................. 10 5.3 液晶显示程序设计 ................................ 11 6. 系统测试 ............................................. 11 6.1 系统运行测试..................................... 11 6.2 主要指标测试..................................... 11 6.3 测试结果分析..................................... 11 参考文献 ................................................ 12 致谢 .................................................... 13 附录 A:原理图 .......................................... 14 附录B: PCB 图及元件分布图.............................. 15 附录 C:元器件清单 ...................................... 17 附录 D:程序清单 ........................................ 18 附录 E:实物照片 ........................................ 34
2.1.3 显示模块的选择与论证
方案一:采用 12864 液晶模块显示测得的数据,可显示较多组的数据,字体 较大,可清晰读数,但 12864 液晶模块价格昂贵,接线复杂,故不采用。
方案二:采用 1602 液晶模块显示所测数据,1602 液晶接线简单方便,同时 也能满足显示需要,价格远低于 12864 液晶。因此,本方案为首选方案。综上所 述,显示模块选择方案二。
阶段规划: 2011 年 12 月 20 日 至 2012 年 1 月 9 日 2012 年 1 月 10 日 至 2012 年 1 月 16 日 2012 年 3 月 1 日 至 2012 年 4 月 17 日 2012 年 4 月 18 日 至 2012 年 5 月 8 日 2012 年 5 月 9 日 至 2012 年 5 月 19 日
--
3 单片机主模块设计 3.1 单片机主电路设计
单片机主模块包括了电源电路、晶振电路、复位电路,同时接入了各个模块 的接口,保证了整个系统的灵活性。
3.1.1 电源电路
图 2 电源电路
如图 2 所示:系统的供电既能由 USB 供电又能由电源供电,S1 是电源开关, DS1 为电源指示灯。
3.1.2 复位电路
2.1.2 温度湿度检测模块的选择与论证
方案一:选用 DHT11 作为温湿度检测模块。DHT11 是一款数字输出的复合传 感器,包含一个电阻式感湿元件和 NTC 式温度检测元件,可测 20~90%RH 湿度, 误差 5%RH,0~50 摄氏度,误差 2 摄氏度。
方案二:选用 DS18B20 温度传感器和 HS1101 湿度传感器。DS18B20 是一线 式数字温度传感器,具有独特的单线式接口方式,测量范围在-55℃~125℃,误 差为-\+0.5℃。最高精度可达 0.0625℃。HS1101 是电容式湿度传感器,可测相 对湿度范围在 0%~100%RH,误差为-\+2%RH。上述数据可知,根据设计要求,本 模块采用方案二。
--
--
前言
随着智能检测技术的飞速发展,多传感器系统得到了广泛的应用。如何把多 传感器集中于一个检测系统,综合利用来自多传感器的信息获得被测对象的可靠 数据,是智能检测系统中需要解决的首要问题。为此,本设计利用 STC89C52 单片机制作了一个简便但精度较高的室内温湿度检测系统;它是利用 DS18B20 温度传感器作为测温元件;温度测量范围在-55℃~125°C;用 HS1101 湿度传感 器作为测湿元件;湿度测量范围在 0%~100%RH;在同时该设计具备温湿度显示 功能,主要原理是:通过温度传感器将非电量的温湿度值转换为电量输出并由 A /D 转换器对模拟信号进行数字化,然后通过单片机读取温湿度传感器转换的温 湿度值,当温度超过一定值时蜂鸣器报警。