基于STC89C52单片机的温湿度检测电路设计
- 格式:doc
- 大小:729.50 KB
- 文档页数:41
学号:常州大学毕业设计(论文)(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单片机的库存温湿度智能化控制系统,传感器模块选择一体式的温湿度传感器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单片机的温湿度检测系统设计摘要:温湿度是生活生产中的重要的参数。
本设计为基于单片机的温湿度检测与控制系统,采用模块化、层次化设计。
用新型的智能温湿度传感器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课题背景温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用。
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;}}}。
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所示。
基于单片机的车间温湿度控制系统学生姓名:霍晓东学号: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 液晶显示程序设计................. 错误!未定义书签。
课程设计基于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;}。
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]。
本次电子工艺实训旨在练习实用单片机系统的设计与安装,掌握典型51系列单片机最小系统及外围电路设计、常用电子元器件的识别、万用板焊接电路的方法、巩固常用电子仪表测量与调试电路参数的方法,培养创新实践动手能力,为下学期单片机、电子系统设计等课程奠定理论和实践基础。
具体要求如下:1.自行设计以STC89C52RC40单片机为控制核心的实用单片机控制系统的硬件电路,实现至少一个环境参量信息采集、数值显示、报警功能。
2.根据设计,利用万用板焊接硬件电路,并做简单调试。
3.要求模块化设计,单片机最小系统模块、显示模块、信息采集报警模块、键盘模块,主要贵重器件用排座插接,电阻、电容、按键等元器件要求布局合理、排列整齐,无虚焊。
二、设计方案本文设计是以单片机为核心,实现温度实时测控和显示。
确定电路中的一些主要参数,了解温度控制电路的结构,工作原理,对该控制电路性能进行测试。
具体设计方案:(1)本设计是用来测控温度的,可以利用热敏电阻的感温效应,将被测温度变化的模拟信号,电压或电流的采集过来,首先进行放大和滤波后,再通过A/D 转换,将得到的数字量送往单片机中去处理,用数码管将被测得的温度值显示出来。
但是这种电路的设计需要用到放大滤波电路,A/D转换电路,感温电路等一系列模拟电路,设计起来较麻烦[2]。
(2)本设计采用单片机做处理器,可以考虑使用温度传感器,采用由达拉斯公司研制的DS18B20型温度传感器,此传感器可以将被测的温度直接读取出来,并进行转换,这样就很容易满足设计要求。
基于STC89C52单片机的温湿度检测系统设计摘要随着人们的生活及其生产水平的不断提高,对生活环境和生产环境的要求就显的尤为重要,温湿度的控制就是一个典型的例子,因此温湿度检测系统就是现代生产生活中应运而生的一种智能、快捷、方便可靠的检测系统,特别是在工业生产中如果检测得不准确就会发生许多的生产事故。
要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计是以单片机为核心,配合温湿度传感器,以及相关的外围电路组成的检测系统,可以接收所测环境的温度和湿度信号,检测人员可以通过LCD显示的数据,实时监控环境的温度和湿度情况。
所有的测量操作都可以通过主机控制软件来实现,温度和湿度传感器得到的测量信号,经电路转换为电信号,然后通过转换送到单片机进行数据处理,经软件分析处理后送显示装置。
本系统包括系统硬件和软件设计,可靠性高,结构简单,实现了对温湿度的自动调节。
系统还应用RS232与上位机相连接,可以设置自动记录温度、湿度的相关的参数,也可以设置每隔一定的时间自动记录,可用在气象的观察方面。
关键词:STC89C52单片机,温湿度传感器, LCD显示As people life level of production and improve the living environment and production environment to the demands of the significant particularly important, control of temperature and humidity is one example, so the temperature and humidity detection system is the modern production and life of a kind of intelligence have emerged in, quick, convenient and reliable detection system, especially in the industrial production, if detection is not accurate will happen many production accidents. For modern people to work, scientific research, and provide a better life moreconvenient facilities will need from single chip technology of digital control to all, intelligent control direction. This design is based on single chip microcomputer as the core, with temperature and humidity sensor, and related peripheral circuit composed of detection system, can receive the environment temperature and humidity signal, testing personnel can through the LCD display data, real-time monitoring of environmental temperature and humidity conditions. This system including the system hardware and software design, high reliability, simple structure, realize the automatic adjustment of the temperature and humidity. System is used RS232 and superordination machine connected, can set up automatic recording of temperature and humidity in related parameters, can also set every certain time to be automatic records, can be used in meteorological observation.Key words: STC89C52 microcontroller, temperature and humidity sensor, LCD display目录第1章概述 (3)1.1课题的研究背景 (3)1.2温湿度检测的发展状况以及存在的问题 (4)1.3本课程设计的主要内容 (5)第2章系统总体方案设计 (5)2.1 温湿度传感器 (6)1、DHT11产品概述 (6)2接口说明 (6)3、电源引脚 (7)4、串行接口 (单线双向) (7)5、DHT11引脚说明 (7)6、焊接信息 (7)7、注意事项 (8)2.2 RS232接口 (8)2.3 单片机STC89C52 (8)2.4 LCD1602 (10)第3章系统的硬件设计和连接 (11)3.1主控模块 (11)3.2显示模块 (13)3.3 温度和湿度采集模块 (13)3.4 键盘设计 (15)3.5与上位机相连电路的设计 (16)3.6 报警电路设计 (16)第4章系统软件方案的设计 (17)4.1 程序流程图 (17)第5章总结与展望 (37)参考文献 (38)第1章概述1.1课题的研究背景工业生产中有些场合需要使用精密的机台设备,这些设备的精密度高、价格高,因此为了保证产品的质量及机台的使用寿命,对其环境的要求也很高,尤其的是对温度、湿度的控制。