温度检测系统程序(带按键)
单片机温控程序
单片机温控程序
单片机温控程序是一种用于控制温度的程序,它可以实现对温度的监测和控制。
通过使用单片机及其相关的传感器和执行器,可以实现对温度的精确控制,从而满足不同场景下的温度需求。
在温控程序中,首先需要使用温度传感器来检测当前的环境温度。
传感器将实时采集到的温度值转换成数字信号,并通过单片机进行处理。
单片机会根据预设的温度范围,判断当前温度是否处于合理范围内。
当温度超过预设范围时,单片机将启动执行器,通过控制电磁阀或者风扇等设备,调节环境温度。
当温度下降到合理范围内时,单片机会停止执行器的工作,从而实现温度的控制。
在温控程序中,关键是确定合理的温度范围和控制策略。
温度范围的确定需要根据具体的场景和需求来进行调整,以确保温度的稳定性和安全性。
控制策略的选择也很重要,可以根据不同的情况采用开环控制或闭环控制等不同的方式。
除了温度控制外,温控程序还可以实现其他功能,如温度显示、报警等。
通过在单片机上添加合适的显示模块和报警器,可以实现对温度的实时显示和异常温度的报警功能,从而提高温度监测的效果和准确性。
单片机温控程序是一种重要的技术应用,可以广泛应用于各种领域,
如家庭、工业、医疗等。
通过合理的温度控制,可以提高生活和工作环境的舒适度和安全性,为人们的生活和工作带来便利和保障。
基于STM32单片机的温度控制系统设计
基于STM32单片机的温度控制系统设计一、本文概述本文旨在探讨基于STM32单片机的温度控制系统的设计。
我们将从系统需求分析、硬件设计、软件编程以及系统测试等多个方面进行全面而详细的介绍。
STM32单片机作为一款高性能、低功耗的微控制器,广泛应用于各类嵌入式系统中。
通过STM32单片机实现温度控制,不仅可以精确控制目标温度,而且能够实现系统的智能化和自动化。
本文将介绍如何通过STM32单片机,结合传感器、执行器等硬件设备,构建一套高效、稳定的温度控制系统,以满足不同应用场景的需求。
在本文中,我们将首先分析温度控制系统的基本需求,包括温度范围、精度、稳定性等关键指标。
随后,我们将详细介绍系统的硬件设计,包括STM32单片机的选型、传感器和执行器的选择、电路设计等。
在软件编程方面,我们将介绍如何使用STM32的开发环境进行程序编写,包括温度数据的采集、处理、显示以及控制策略的实现等。
我们将对系统进行测试,以验证其性能和稳定性。
通过本文的阐述,读者可以深入了解基于STM32单片机的温度控制系统的设计过程,掌握相关硬件和软件技术,为实际应用提供有力支持。
本文也为从事嵌入式系统设计和开发的工程师提供了一定的参考和借鉴。
二、系统总体设计基于STM32单片机的温度控制系统设计,主要围绕实现精确的温度监测与控制展开。
系统的总体设计目标是构建一个稳定、可靠且高效的环境温度控制平台,能够实时采集环境温度,并根据预设的温度阈值进行智能调节,以实现对环境温度的精确控制。
在系统总体设计中,我们采用了模块化设计的思想,将整个系统划分为多个功能模块,包括温度采集模块、控制算法模块、执行机构模块以及人机交互模块等。
这样的设计方式不仅提高了系统的可维护性和可扩展性,同时也便于后续的调试与优化。
温度采集模块是系统的感知层,负责实时采集环境温度数据。
我们选用高精度温度传感器作为采集元件,将其与STM32单片机相连,通过ADC(模数转换器)将模拟信号转换为数字信号,供后续处理使用。
基于单片机的数字温度计的课程设计
基于单片机的数字温度计的课程设计随着科技发展,单片机技术受到了广泛的应用,并得到了广泛的重视。
本设计以现有单片机ADUC7024系统为基础,设计和实现了一款基于单片机的数字温度计,旨在解决过热或者过冷的问题,通过温度检测器在给定的温度范围内确定温度,并控制过热和过冷的情况。
(一)设计的概述本设计的主要内容是分析ADUC7024硬件,对硬件进行器件选型,完成系统模块的设计,以及ADUC7024以现有程序设计语言完成控制程序设计,最后采用ADUC7024作为控制器,与温度检测器、LED等模块进行硬件联通,完成一个简单的温度检测控制系统。
1、器件选型:本设计采用ADUC7024作为系统的控制器,采取温度传感器采用的是DS18B20温度芯片芯片,显示采用的是LED系列的指示灯,系统开关采用的是两个按键作为上升按钮和下降按钮。
2、硬件模块:本次设计以ADUC7024硬件为主框架,以温度检测器连接ADUC7024控制器,可以实现温度范围内数字检测,LED显示屏以温度为参数,可根据设定的温度范围指示异常温度;系统开关采用按键开关来控制,多出的端口可实现报警功能。
本设计采用ADUC7024系统控制器,设计一款基于单片机的温度检测控制系统的电路,主要包括:外部中断、输入输出口、充电输出和按键检测电路,电路图如下图1所示:1、主程序:本次设计采用C语言编写,主程序负责实现温度检测、控制操作功能。
主程序中采用外部中断和充电输出实现数据的获取和操作的控制,采用按键输入调节温度,并且可以把某一温度范围内的上下限定值写入EEPROM,控制系统会及时获取当前温度,比较当前温度与上下限值,如果出现过热或者过冷,则会发出警报。
2、子程序:本次设计还编写了多个子程序,用于实现数据处理、按键检测等功能,并在主程序中进行调用,使程序更加规范。
单片机恒温箱温度控制系统的设计说明
课程设计课题:单片机培养箱温控系统设计本课程设计要求:温度控制系统基于单片机,实现对温度的实时监控,实现控制的智能化。
设计了培养箱温度控制系统,配备温度传感器,采用DS18B20数字温度传感器,无需数模/数转换,可直接与单片机进行数字传输,采用PID控制技术,可保持温度在要求的恒定范围内,配备键盘输入设定温度;配备数码管L ED显示温度。
技术参数及设计任务:1、使用单片机AT89C2051控制温度,使培养箱保持最高温度110 ℃ 。
2、培养箱温度可预设,干燥过程恒温控制,控温误差小于± 2℃.3、预设时显示设定温度,恒温时显示实时温度。
采用PID控制算法,显示精确到0.1℃ 。
4、当温度超过预设温度±5℃时,会发出声音报警。
和冷却过程没有线性要求。
6、温度检测部分采用DS18B20数字温度传感器,无需数模/数转换,可直接与单片机进行数传7 、人机对话部分由键盘、显示器、报警三部分组成,实现温度显示和报警。
本课程设计系统概述一、系统原理选用AT89C2051单片机作为中央处理器,通过温度传感器DS18B20采集培养箱的温度,并将采集的信号传送给单片机。
驱动培养箱的加热或冷却。
2、系统整体结构总体设计应综合考虑系统的总体目标,进行初步的硬件选型,然后确定系统的草案,同时考虑软硬件实现的可行性。
经过反复推敲,总体方案确定以爱特梅尔公司推出的51系列单片机为温度智能控制系统核心,选用低功耗、低成本的存储器、数显等元器件。
总体规划如下:图1 系统总体框图2、硬件单元设计一、单片机最小系统电路Atmel公司的AT2051作为89C单片机,完全可以满足本系统所需的采集、控制和数据处理的需要。
单片机的选择在整个系统设计中非常重要。
该单片机具有与MCS-51系列单片机兼容性高、功耗低、可在接近零频率下工作等诸多优点。
广泛应用于各种计算机系统、工业控制、消费类产品中。
AT 89C2051 是 AT89 系列微控制器中的精简产品。
PID温度控制
/***********************************************************************PID温度控制程序程序说明:系统上电后显示“--温度”表示需要先设定温度才开始进行温度检测温度设定完毕后程序才开始进行PID温控***********************************************************************/#include <reg52.h>#include <absacc.h>#include"DS18B20.H"#include"PID.H"#define uchar unsigned char#define uint unsigned intunsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xBF};/*个位0~9的数码管段码*/unsigned char code sao[]={0x7f,0xbf,0xdf,0xef};//扫描码uchar set=30,keyflag=1 ; //set初始化为30°keyflag为进入温度设定的标志位//4个按键使用说明sbit key_out=P1^0 ; //用于温度设定后的退出sbit key_up=P1^1 ; //设定温度加sbit key_down=P1^2 ; //设定温度减sbit key_in=P1^3 ; //在程序的运行中如需要重新设定温度按下此键才能进入设置模式并且此时是停在温度控制的,按下key_out键后才表示设定完毕void Show_key();/***********************************************************/void delays(unsigned char k){unsigned char i,j ;for(i=0;i<k;i++)for(j=0;j<50;j++);}/*********************************************************//数码管显示函数P0口作为数据口P2口的低四位作为扫描口变量x表示扫描d表示是否要加小数点为1是为0不加y表示传递的数值*********************************************************/LCD_disp_char(uchar x,bit d,uchar y){P2=0XFF ;P0=0xFF ;if(d==0)P0=tab[y];elseP0=tab[y]&0x7f ; //与上0x7f表示是否要加小数点P2=sao[x]; //打开扫描端号}/*********************************************************按键扫描*********************************************************/void keyscan(void){if(key_in==0) //按键进入函数{delays(10); //延时消抖(以下同)if(key_in==0){while(key_in==0){Show_key(); //如果一直按着键不放就一直显示在当前状态(以下同) }keyflag=1 ; //按键标志位}}/***********************/if(key_out==0) //按键退出{delays(10);if(key_out==0){while(key_out==0){Show_key();}keyflag=0 ;set_temper=set ;}}/*************************/if(key_up==0) //设定温度的加{delays(10);if(key_up==0){while(key_up==0){Show_key();}if(keyflag==1){set++;if(set>90) //如果大于90°就不在加set=90 ;}}}/*************************/if(key_down==0) //温度设定的减{delays(10);if(key_down==0){while(key_down==0){Show_key();}if(keyflag==1){set--;if(set<30) //温度减到30°时不在往下减set=30 ;}}}}/********************************************************************* 按键按下时的显示函数***********************************************************************/void Show_key(){output=1 ;LCD_disp_char(3,0,10); //显示-delays(3);LCD_disp_char(2,0,10); //显示- (表示温度设定)delays(3);LCD_disp_char(1,0,set/10); //显示温度十位delays(3);LCD_disp_char(0,0,set%10); //显示温度个位delays(3);}/*****************************************************************/ void main(){unsigned int tmp ;//声明温度中间变量unsigned char counter=0 ;PIDBEGIN(); //PID参数的初始化output=1 ; //关闭继电器输出while(1){keyscan();if(keyflag){Show_key(); //显示温度设定}else{if(counter--==0){tmp=ReadTemperature();//每隔一段时间读取温度值counter=20 ;}LCD_disp_char(3,0,tmp/1000); //显示温度十位delays(3);LCD_disp_char(2,1,tmp/100%10); //显示温度个位//显示小数点delays(3);LCD_disp_char(1,0,tmp/10%10); //显示温度小数后一位delays(3);LCD_disp_char(0,0,tmp%10);//显示温度小数后二位delays(3);P2=0XFF ;P0=0xff ;compare_temper(); //比较温度}}}/****************************************************************************** ****************************************************************///PID算法温控C语言2008-08-17 18:58#ifndef _PID_H__#define _PID_H__#include<intrins.h>#include<math.h>#include<string.h>struct PID{unsigned int SetPoint ;// 设定目标Desired Valueunsigned int Proportion ;// 比例常数Proportional Constunsigned int Integral ;// 积分常数Integral Constunsigned int Derivative ;// 微分常数Derivative Constunsigned int LastError ;// Error[-1]unsigned int PrevError ;// Error[-2]unsigned int SumError ;// Sums of Errors};struct PID spid ;// PID Control Structureunsigned int rout ;// PID Response (Output)unsigned int rin ;// PID Feedback (Input)sbit output=P1^4;unsigned char high_time,low_time,count=0 ;//占空比调节参数unsigned char set_temper ;void PIDInit(struct PID*pp){memset(pp,0,sizeof(struct PID)); //PID参数初始化全部设置为0}unsigned int PIDCalc(struct PID*pp,unsigned int NextPoint){unsigned int dError,Error ;Error=pp->SetPoint-NextPoint ;// 偏差pp->SumError+=Error ;// 积分dError=pp->LastError-pp->PrevError ;// 当前微分pp->PrevError=pp->LastError ;pp->LastError=Error ;//比例//积分项return(pp->Proportion*Error+pp->Integral*pp->SumError+pp->Derivative*dError);// 微分项}/***********************************************************温度比较处理子程序***********************************************************/void compare_temper(){unsigned char i ;//EA=0;if(set_temper>temper){if(set_temper-temper>1){high_time=100 ; //大于1°不进行PID运算low_time=0 ;}else{ //在1°范围内进行PID运算for(i=0;i<10;i++){//get_temper();rin=s;// Read Inputrout=PIDCalc(&spid,rin); //执行PID运算// Perform PID Interation}if(high_time<=100) //限制最大值high_time=(unsigned char)(rout/800);elsehigh_time=100;low_time=(100-high_time);}}/****************************************/else if(set_temper<=temper) //当实际温度大于设置温度时{if(temper-set_temper>0)//如果实际温度大于设定温度{high_time=0 ;low_time=100 ;}else{for(i=0;i<10;i++){//get_temper();rin=s ;// Read Inputrout=PIDCalc(&spid,rin);// Perform PID Interation}if(high_time<100) //此变量是无符号字符型high_time=(unsigned char)(rout/10000);elsehigh_time=0 ;//限制不输出负值low_time=(100-high_time);//EA=1;}}}/***************************************************** T0中断服务子程序,用于控制电平的翻转,40us*100=4ms周期******************************************************/ void serve_T0()interrupt 1 using 1{if(++count<=(high_time))output=0 ;else if(count<=100){output=1 ;}elsecount=0 ;TH0=0x2f ;TL0=0xe0 ;}void PIDBEGIN(){TMOD=0x01 ;TH0=0x2f ;TL0=0x40 ;EA=1 ;ET0=1 ;TR0=1 ;high_time=50 ;low_time=50 ;PIDInit(&spid);// Initialize Structurespid.Proportion=10 ;// Set PID Coefficientsspid.Integral=8 ;spid.Derivative=6 ;spid.SetPoint=100 ;// Set PID Setpoint}#endif。
基于单片机的智能体温检测系统设计
基于单片机的智能体温检测系统设计摘要:由于新冠疫情的爆发给大众的生活带来了巨大变化,为了满足疫情条件下对温度快速测量的需求,采用无接触式测温既有效规避病毒传染风险,又可以第一时间检测疑似病例。
在此基础上添加口罩识别功能极大减轻了工作人员人工识别的负担,为防疫工作提供保障。
目前市场现有系统存在价格高以及不易携带的问题,并且目前市场应用的大部分装置都是单独的口罩识别或是无接触测温系统。
与之相比该系统将两种功能结合在同一系统中,具有体积小、便携、易操作等优点,为操作人员提供了极大便利。
此装置适用于学校、工厂、商场等人流密集场所,可以为进出人员提供检测服务。
人机交互式装置在疫情防控中发挥重要作用,节省人力物力,并且其效率远高于人工检测。
关键词:单片机;智能体温;检测系统;设计引言患新冠肺炎的主要症状是发热,因此体温检测是疫情防控的第一道防线。
以当今人流密集场所疫情防控情况为背景,设计并实现了一款基于STM32单片机的非接触式体温测量与身份识别系统。
该系统利用OPENMV对目标人脸进行快速检测,精准识别目标身份信息和口罩佩戴情况,利用MLX90614准确测量目标体表温度,实时将测量信息通过显示屏直观地展示并通过蓝牙发送到手机App上,实现系统逻辑结构的完整性与任务完成的效率最优解。
1系统的组成及其工作原理1.1系统的组成以单片机作为系统控制基础,利用传感器测量温度,通过通信和控制技术,形成温度测量控制系统。
具体可分为基于MLX90614红外测温传感器的温度检测模块、LCD12864液晶屏显示模块、4X4矩阵键盘模块、电源模块、复位模块、晶振模块、报警模块、继电器控制模块和震动传感器模块。
1.2系统工作原理该系统基于STC12C5A60S2单片机进行设计,包括电源电路、复位电路、晶振电路、红外测温传感器、震动传感器、LCD显示电路、蜂鸣器报警电路、键盘输入电路和继电器控制电路,通过MLX90614红外温度传感器实现温度数据的处理。
DS18B20温度检测
目录1引言 (1)2系统描述 (2)2.1系统功能 (2)2.2系统设计指标 (2)3系统的主要元件 (3)3.1单片机 (3)3.2温度传感元件 (4)3.3LCD显示屏 (6)4硬件电路 (7)4.1系统整体原理图 (7)4.2单片机晶振电路 (7)4.3温度传感器连接电路 (8)4.4LCD电路 (9)4.5报警和外部中断电路 (10)5结论 (11)温度监测系统硬件设计摘要:利用DS18B20为代表的新型单总线数字式温度传感器实现温度的监测,可以简化硬件电路,也可以实现单线的多点分布式温度监测,而不会浪费单片机接口,提供了单片机接口的利用率。
同时提高了系统能够的抗干扰性,使系统更灵活、方便。
本系统主要实现温度的检测、显示以及高低温的报警。
也可以通过单总线挂载多个DS18B20实现多点温度的分布式监测。
关键词: DS18B20,单总线,温度,单片机1引言在科技广泛发展的今天,计算机的发展已经越来越快,它的应用已经越来越广泛。
而单片机的发展和应用是其中的重要一方面。
单片机在工业生产(机电、化工、轻纺、自控等等)和民用家电各方面有广泛的应用。
其中,单片机在工业生产中的应用尤其广泛。
单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。
在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要测量参数。
例如:在冶金工业、化工工业、电力工程、机械制造和食品加工等许多领域中,人们都需要对各类加热炉、热处理炉、反映炉和锅炉,尤其是热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中的温度进行测量,并经常会对其进行控制。
传统的方式是采用热电偶或热电阻,但是由于模拟温度传感器输出为模拟信号,必须经过A/D 转换环节获得数字信号后才能够被单片机等微处理器接收处理,使得硬件电路结构复杂,制作成本较高。
近年来,美国DALLAS公司生产的DS18B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。
温度控制系统毕业设计
温度控制系统毕业设计•相关推荐温度控制系统毕业设计摘要在日常生活及工农业生产中,对温度的检测及控制时常显得极其重要。
因此,对数字显示温度计的设计有着实际意义和广泛的应用。
本文介绍一种利用单片机实现对温度只能控制及显示方案。
本毕业设计主要研究的是对高精度的数字温度计的设计,继而实现对对象的测温。
测温系数主要包括供电电源,数字温度传感器的数据采集电路,LED显示电路,蜂鸣报警电路,继电器控制,按键电路,单片机主板电路。
高精度数字温度计的测温过程,由数字温度传感器采集所测对象的温度,并将温度传输到单片机,最终由液晶显示器显示温度值。
该数字温度计测温范围在-55℃~+125℃,精度误差在±0.5℃以内,然后通过LED数码管直接显示出温度值。
数字温度计完全可代替传统的水银温度计,可以在家庭以及工业中都可以应用,实用价值很高。
关键词:单片机:ds18b20:LED显示:数字温度.AbstractIn our daily life and industrial and agricultural production, the detection and control ofthe temperature, the digital thermometer has practical significance and a wide rangeof applications .This article describes a programmer which use a microcontroller toachieve and display the right temperature by intelligent control .This programmermainly consists by temperature control sensors, MCU, LED display modules circuit.The main aim of this thesis is to design high-precision digital thermometer and thenrealize the object temperature measurement. Temperature measurement systemincludes power supply, data acquisition circuit, buzzer alarm circuit, keypad circuit,board with a microcontroller circuit is the key to the whole system. The temperatureprocess of high-precision digital thermometer, from collecting the temperature of theobject by the digital temperature sensor and the temperature transmit ted to themicrocontroller, and ultimately display temperature by the LED. The digitalthermometer requires the high degree is positive 125and the low degree is negative 55,the error is less than 0.5, LED can read the number. This digital thermometer couldreplace the traditional mercurial thermometer, can be used in family or industrial andproduction, it has a great value.Key words: MCU: DS18B20 : LED display: Digital thermometer。
(整理)电子温度计DS18B20程序电路图
2.(5)建设项目对环境影响的经济损益分析。必须去掉第五位数码管选择位管脚的三极管,数码管方能正常显示。
3.数码管显示的亮度不够亮。
1.准备阶段
焊好的电路图如下:
1.环境影响评价工作等级的划分
(1)资质等级。评价机构的环评资质分为甲、乙两个等级。环评证书在全国范围内使用,有效期为4年。
while(1)
{
switch(Tplace)
{
case 0: {Ledblue=1;Ledred=0;Display(ReadTem());}
break;
case 1: {Ledred=1;Ledblue=0;Point=0;Display(Up);}
break;
case 2: {Ledred=1;Ledblue=0;Point=1;Display(Down);}
}
Delay_2us(3);
}
Out=0;
return dat;
}
uint ReadTem() /*温度转换*/
{
uint High,Low;
Reset();
Writedata(0xcc);
Writedata(0x44);
Delay_8us(85);
Reset();
Writedata(0xcc);
Writedata(0xbe);
}
bit Reset() /*复位*/
{
bit flag;
DQ=1;
_nop_();
DQ=0;
Delay_8us(70);
DQ=1;
Delay_2us(20);
flag=DQ;
Delay_2us(70);
DQ=1;
Delay_2us(70);
智能温度测量系统设计
智能温度测量系统设计李晓磊【期刊名称】《《电脑与电信》》【年(卷),期】2019(000)006【总页数】5页(P29-33)【关键词】单片机AT89C52; 温度传感器; LCD1602【作者】李晓磊【作者单位】中北大学信息商务学院山西晋中030600【正文语种】中文【中图分类】TP368.11 引言温度测量无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用。
而当今,我国农村的锅炉取暖大多数都没有温度监控系统,部分厂矿、企业还一直沿用简单的温度检测设备和纸质数据记录仪,无法实现温度数据的测量与控制[1]。
随着社会经济的高速发展,越来越多的生产部门和生产环节对温度测量精度的可靠性和稳定性等有了更高的要求。
传统的温度测量器测量精度普遍不高,不能满足对温度要求较为苛刻的生产环节,因而设计一种较为理想的温度测量系统显得尤为重要。
针对这些问题,本文提出了基于单片机的智能温度测量系统设计。
相对于传统的温度采集方法而言,基于单片机的温度测量系统具有更多的优势,例如,读数更简单直观,测量所用时间更短,测量准确度更高,能记忆而且可设定上下限温度蜂鸣提示。
2 系统硬件设计在该系统中,DS18B20温度传感器负责采集温度,将采集的温度信号传给单片机AT89C52,然后输出信号传送到数码管显示电路,如果超过预定值时,单片机会给报警电路发出信号,蜂鸣器会发出警报。
按键电路(甚至按钮)与主控制器相连。
其中,基于单片机的智能温度测量系统原理框图如图1所示。
图1 系统原理框图2.1 AT89C52芯片作为智能温度测量系统的核心部分,单片机承载着处理温度信息、输出显示温度和报警等多个任务。
因此,本系统采用的单片机是ATMEL公司开发的AT89C52单片机。
它是一种低电压、高性能CMOS8 位的微控制器,兼容工业标准MCS-51系列的所有指令,程序语言丰富,成本低廉[2-4]。
与同系列的AT89C51单片机相比,它具有更大的存储空间和中断源、应用范围也更广。
基于51单片机的DS18B20温度检测_设计报告
课程名称:微机原理课程设计题目:温度检测课程设计随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度检测仪。
本设计使用简便,功能丰富。
可以实现温度采集,温度报警,重设上下限温度值等功能。
在现代化的工业生产中,需要对周围环境的温度进行检测和控制。
本设计对温控报警问题展开思考,设计一个能根据需求设置低温到高温进行报警并通过数码管显示的系统。
该系统使用STC89C51单片机,同时运用单线数字温度传感器DS18B20,四位共阴数码管显示,按键控制等模块可实现温度的检测与设置。
课题经过实验验证达到设计要求,具有一定的使用价值和推广价值。
本作品使用四位共阴数码管显示,可以清晰地显示当前的报警温度,一定程度避免使用者使用时出错,安全可靠,可使用于各种食品储存室,植物养殖所等地方,实用性很高。
关键字:温度报警器 STC89C51单片机数码管 DS18B20一、课程设计目的和要求 (1)1.1 设计目的 (1)1.2 设计要求 (1)二、总体设计方案 (1)三、硬件设计 (2)3.1 DS18B20传感器 (2)3.2 STC89C51功能介绍 (6)3.3 时钟电路 (8)3.4 复位电路 (8)3.5 LED显示系统电路 (9)3.6 按键控制电路 (11)3.7 蜂鸣器电路 (11)3.8 总体电路设计 (12)四、软件设计 (14)4.1 keil软件 (14)4.2 系统主程序设计 (14)4.3 系统子程序设计 (15)五、仿真与实现 (18)5.1 PROTEUS仿真软件 (18)5.2 STC-ISP程序烧录软件 (19)5.3 使用说明 (20)六、总结 (21)一、课程设计目的和要求1.1 设计目的熟悉典型51单片机,加深对51单片机课程的全面认识和掌握,对51单片机及其接口的应用作进一步的了解,掌握基于51单片机的系统设计的一般流程、方法和技巧,为我们解决工程实际问题打下坚实的基础。
DS18B20水温控制系统+电路图程序
水温控制系统摘要:该水温控制系统采用单片机进行温度实时采集与控制。
温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10~+85°C范围内, 固有测温分辨率为0.5 ℃。
水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制。
系统具备较高的测量精度和控制精度,能完成升温和降温控制。
关键字: AT89C51 DS18B20 水温控制Abstract: This water temperature control system uses the Single Chip Microcomputer to carry on temperature real-time gathering and controling. DS18B20, digitized temperature sensor, provides the temperature signal by "a main line". In -10~+85℃the scope, DS18B20’s inherent measuring accuracy is 0.5 ℃. The water temperature real-time control system uses the electricity nichrome wire carring on temperature increiseament and operates the electric fan to realize the temperature decrease control. The system has the higher measuring accuracy and the control precision, it also can complete the elevation of temperature and the temperature decrease control.Key Words:AT89C51 DS18B20 Water temperature control目录1. 系统方案选择和论证 (2)1.1 题目要求 (2)1.1.1 基本要求 (2)1.1.2 发挥部分 (2)1.1.3 说明 (2)1.2 系统基本方案 (2)1.2.1 各模块电路的方案选择及论证 (2)1.2.2 系统各模块的最终方案 (5)2. 硬件设计与实现 (6)2.1系统硬件模块关系 (6)2.2 主要单元电路的设计 (6)2.2.1 温度采集部分设计 (6)2.2.2 加热控制部分 (8)2.2.3 键盘、显示、控制器部分 (8)3. 系统软件设计 (10)3.1 读取DS18B20温度模块子程序 (10)3.2 数据处理子程序 (10)3.3 键盘扫描子程序 (12)3.4 主程序流程图 (13)4. 系统测试 (14)4.1 静态温度测试 (14)4.2动态温控测量 (14)4.3结果分析 (14)附录1:产品使用说明 (15)附录2:元件清单 (15)附录3:系统硬件原理图 (16)附录4:软件程序清单 (17)参考文献 (26)1.系统方案选择和论证1.1题目要求设计并制作一个水温自动控制系统,控制对象为1L净水,容器为搪瓷器皿。
基于51单片机的温度测量系统
目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1选题的背景 (1)1.2课题研究的目的和意义 (1)1.3本文的结构 (1)2 系统总体方案设计 (1)2.1总体方案设计 (2)2.2部分模块方案选择 (3)2.2.1单片机的选择 (3)2.2.2温度检测方式的选择 (3)2.2.3显示部分的选择 (4)2.2.4电源模块的选择 (4)3 硬件电路的设计 (4)3.1 硬件电路设计软件 (4)3.2系统整体原理图 (5)3.3单片机最小系统电路 (6)3.4单片机的选型 (7)3.5温度测量模块 (8)3.5.1 DS18B20概述 (8)3.5.2 DS18B20测温工作原理 (11)3.5.3 DS18B20温度传感器与单片机的接口电路 (12)3.6 显示模块 (13)3.7 按键以及无线遥控模块 (15)3.7.1按键的相关知识 (15)3.7.2 5伏带解码四路无线接收板模块 (16)3.8 报警及指示灯模块 (18)3.9 电源模块 (19)4 系统软件设计及仿真部分 (20)4.1软件设计的工具 (20)4.1.1程序编写软件 (20)4.1.2仿真软件 (21)4.2各模块对应的软件设计 (22)4.2.1显示模块的程序 (22)4.2.2温度测量的程序 (26)4.2.3报警系统程序 (32)4.2.4按键程序 (33)4.2.5总体程序 (35)5 实物制作 (37)5.1电源部分 (37)5.2单片机最小系统部分 (37)5.3 总体实物 (37)6 总结 (38)7 致谢 (39)参考文献 (40)附录一 (41)附录二 (49)基于单片机的温度测量系统摘要随着测温系统的极速的发展,国外的测量系统已经很成熟,产品也比较多。
近几年来,国内也有许多高精度温度测量系统的产品,但是对于用户来说价格较高。
随着市场的竞争越来越激烈,现在企业发展的趋势是如何在降低成本的前提下,有效的提高生产能力。
51单片机设计数字温度计(流程图+源码+实物图片)
DS18B20获取温度程序流程图DS18B20的读字节,写字节,获取温度的程序流程图如图所示。
DS18B20初始化程序流程图DS18B20读字节程序流程图DS18B20写字节程序流程图DS18B20获取温度程序流程图图3-4 DS18B20程序流程图显示程序设计显示电路是由四位一体的数码管来实现的。
由于单片机的I/O 口有限,所以数码管采用动态扫描的方式来进行显示。
程序流程图如图所示。
图显示程序流程图按键程序设计按键是用来设定上下限报警温度的。
具体的程序流程图如图所示。
N图按键程序流程图附1 源程序代码/********************************************************************* 程序名; 基于DS18B20的测温系统* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。
K1是用来* 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限* 调节模式。
在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动* 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除* 按键音,再按一下启动按键音。
在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。
* 编程者:ZPZ* 编程时间:2009/10/2*********************************************************************/#include<AT89X52.h> //将AT89X52.h头文件包含到主程序#include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int //变量类型宏定义,用uint表示无符号整形(16位)#define uchar unsigned char //变量类型宏定义,用uchar表示无符号字符型(8位)uchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; //s1标志位用于上下限查看时的显示void display1(uint z); //声明display1()函数#include"ds18b20.h" //将ds18b20.h头文件包含到主程序#include"keyscan.h" //将keyscan.h头文件包含到主程序#include"display.h" //将display.h头文件包含到主程序/***********************主函数************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭LED灯timer1_init(0); //初始化定时器1(未启动定时器1)get_temperature(1); //首次启动DS18B20获取温度(DS18B20上点后自动将EEPROM中的上下限温度复制到TH和TL寄存器)while(1) //主循环{keyscan(); //按键扫描函数get_temperature(0); //获取温度函数keyscan(); //按键扫描函数display(temp,temp_d*0.625);//显示函数alarm(); //报警函数keyscan(); //按键扫描函数}}/********************************************************************* 程序名; __ds18b20_h__* 功能:DS18B20的c51编程头文件* 编程者:ZPZ* 编程时间:2009/10/2* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。
温度监测控制系统设计方案
温度监测控制系统设计方案第一章总体设计方案1.1计设要求(1)基本围-50°C-110°C(2)精度误差小于0.5°C(3)LED数码直读显示(4)可以任意设定温度的上下限报警功能1・2系统基本设计方案方案一:采用热电阻温度传感器。
热电阻是利用导体的电阻随温度变化的特性制成的测温元件。
现应用较多的有钳、铜、镰等热电阻。
其主要的特点为精度高、测量围大、便于远距离测量。
苗的物理、化学性能极稳定,耐氧化能力强,易提纯,复制性好, 工业性好,电阻率较高,因此,钳电阻用于工业检测中高精密测温和温度标准。
缺点是价格贵,温度系数小,受到磁场影响大,在还原介质中易被玷污变脆。
按IEC标准测温围-200〜650°C,百度电阻比W (100) =1.3850时,R0为100Q和10 Q,其允许的测量误差A级为± (0. 15°C+0. 002 |t| ), B 级为土(0. 3°C+0. 005 |t| )o铜电阻的温度系数比苗电阻大,价格低,也易于提纯和加工;但其电阻率小,在腐蚀性介质中使用稳定性差。
在工业中用于-50〜180°C测温。
方案二:采用DS18B20温度传感器,由于温度测量的普遍性,温度传感器的市场份额大大增加,居传感器首位。
数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
现在, 新一代的DS18B20温度传感器体积更小、更经济、更灵活。
DS18B20 温度传感器测量温度围为-55£〜+125°Co在-1(TC〜+859围,精度为土0.5°C o现场温度直接以“一线总线"的数字方式传输,大大提高了系统的抗干扰性。
综合比较方案一与方案二,方案二更为适合于本设计系统对于模拟量输入的要求,比较其框图,方案二更具备硬件简单的突出优点,所以选择方案二作为信号的输入通道。
温控器使用说明书
一周编程电子智能室内温控器LOGIC 578001使用指南引言感谢您选择了我们的产品及对我们的信任与支持。
本装置是电子式定时恒温器,可设置一星期为周期的运行程序。
通过该装置,可对安装环境内的温度进行十分精确的调节控制,满足用户对创造一个舒适生活环境的要求。
符合标准:符合欧盟法令:EN 60730-1 标准及其修订内容欧盟B.T.73/23/EEC号法令EN 60730-2-7 标准欧盟 E.M.C.89/336/EEC号法令及93/68/EEC修改法令EN 60730-2-9 标准产品规格:电源:二节LR6型1.5V碱性电池温度调节范围:10至35℃显示屏显示之环境温度:0至40℃(分辩率0.1℃)温度修正频率:每分钟一次微分:0.2至0.4K探针传感器:NTC3%保护等级:IP20绝缘等级:热梯度:1K/15分输出:转换继电器触点容量:8(2.5)A250V~作用类型:1BU绝缘条件:正常环境最大工作温度:50℃储存温度:0-60℃防冻温度:6℃恒定运行程序:以一星期为周期设置软件等级:A液晶显示屏夏季/冬季(采暖/空调)切换程序设置中的最小增减允许时间:1小时安装:壁式安装安装及连接:安全预防措施在进行定时恒温器的连接之前,请确认受其控制的设备系统(采暖锅炉、泵和空调系统等)电源已断开,并需检查这些设备的使用电压是否与定时恒温器底座上表明的电压相符(最大250V~).(图4)安装位置定时恒温器须安装在远离热源(暖气装置、阳光、厨房)和门窗之处,安装高度离地面约1.5米。
(图5)安装见图6-7-8电气连接将受定时恒温器控制的设备系统电线与定时恒温器的1号及2号接线柱连接见接线图10所示U=受定时恒温器控制的设备1=共用接线柱2=常开接线柱3=常闭接线柱重要事项:请务必严格遵照相关现行法律的规定及安全规范安装定时恒温器。
电池更换:当在显示屏上闪烁显示“”标志时,定时恒温器还可正常工作约一个月左右,然后将会停止工作并固定显示“”。
C51单片机 温度计 C语言程序
disp_buff[0][4]=sec/10;
disp_buff[0][5]=sec%10;
//
disp_buff[1][0]=f;/*符号位*/
disp_buff[1][1]=TMP/1000;//百位
disp_buff[1][2]=TMP/100%10; /*十位*/
uchar KeyBuff;
code unsigned char Tab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,
0x78,0x00,0x10,0xbf,0xff,0xc6};
{
unsigned int i;
unsigned char j;
bit testb;
for (j=1;j<=8;j++)
ቤተ መጻሕፍቲ ባይዱ
testb = dat & 0x01;
TL0=(unsigned char)(65536-4000);
Count4ms=Count4ms+1;
if (Count4ms==250)
{
Count4ms=0;
SecFlag=1;
}
P2_buff=Tab[disp_cnt];
if (KeyDownFlg)
}
//check data
hour=CheckData(hour,24);
min=CheckData(min,60);
sec=CheckData(sec,60);
迈瑞BC-3000标准操作程序文件
标准操作程序文件SOP医院名称:绿洲医院BC-3000plus是一台全自动血液细胞分析仪,由迈瑞生物医疗电子股份研制生产。
产品注册号:粤药管械(准)字2003第2210489号。
注册标准号:YZB/粤0080-2003。
■名称及用途仪器全称为BC-3000 Plus 全自动血液细胞分析仪,用于在临床和实验室定量分析血液细胞、白细胞3 分群计数的体外诊断设备。
BC-3000 Plus 全自动血液细胞分析仪主要用于定量的测量血液中19 项参数 + 3 直方图,这些参数具体中英文对照如下:1 9 参数:白细胞数目 WBC淋巴细胞数目 Lymph#中间细胞数目 Mid#中性粒细胞数目 Gran#淋巴细胞百分比 Lymph%中间细胞百分比 Mid%中性粒细胞百分比 Gran%红细胞数目 RBC血红蛋白 HGB平均红细胞体积 MCV平均红细胞血红蛋白含量 MCH平均红细胞血红蛋白浓度 MCHC红细胞分布宽度变异系数 RDW-CV红细胞分布宽度标准差 RDW-SD红细胞压积 HCT血小板数目 PLT平均血小板体积 MPV血小板分布宽度 PDW血小板压积 PCT三直方图:白细胞分布直方图 WBC Histogram红细胞分布直方图 RBC Histogram血小板分布直方图 PLT Histogram■产品分类BC-3000 Plus 按以下分类标准描述如下:按中国医疗器械管理分类:分析仪属于临床检验分析仪器(6840)中的血液分析系统,管理类别为II 类。
按电击防护分类:分析仪属I 类、B 型与患者无电气连接的普通设备。
按工作制分:连续运行设备。
■计数与体积计算的原理小孔电阻法■参数说明参数缩写缺省单位基本参数:白细胞数目WBC109/L红细胞数目RBC1012/L 血红蛋白HGB g/L血小板数目PLT109/L由直方图得出的结果:淋巴细胞百分比Lymph% %中间细胞百分比Mid% %中性粒细胞百分比Gran% %平均红细胞体积MCV fL红细胞分布宽度变异系数RDW-CV %红细胞分布宽度标准差RDW-SD fL平均血小板体积MPV fL血小板分布宽度PDW由计算得出的结果:淋巴细胞数目Lymph# 109/L中间细胞数目Mid# 109/L中性粒细胞数目Gran# 109/L红细胞压积HCT %平均红细胞血红蛋白含量MCH pg平均红细胞血红蛋白浓度MCHC g/L血小板压积PCT %■血红蛋白测量原理血红蛋白吸光性中心波长525nm■采样特性每次分析所需样本量全血样本(静脉血) 13μL预稀释样本(末梢血)20μL计量体积500μL 加溶血剂稀释液/每次WBC 测量300μL 第二次稀释液/每次RBC 和PLT 测量溶血剂体积0.5mL(全血),0.36mL(末梢血)稀释比例全血末梢血WBC/HGB 1:304 1:400RBC/PLT 1:44492 1:44402细胞计数微孔尺寸WBC微孔100μm(直径),70μm(长)RBC微孔70μm(直径),60μm(长)测量时间小于1 分钟 / 次■性能指标显示围:参数显示围WBC(109/L) 0.0-999.9RBC(1012/L) 0.0-9.99HGB(g/L) 0-300MCV(fL) 0-250PLT(109/L) 0-3000线性围:参数线性围WBC(109/L) 0.0-99.9RBC(1012/L) 0.0-9.99HGB(g/L) 0-300MCV(fL) 40-150PLT(109/L) 10-999重复性:参数重复性(CV%)WBC (7.0-15.0×109/L) ≤ 2RBC (3.5-6.0×1012/L) ≤ 1.5HGB (110 – 180g/L) ≤ 1.5MCV (80.0 – 110.0fL) ≤ 0.5PLT (100 - 500×109/L) ≤ 4■显示彩色液晶(LCD),640×480 分辨率■输入输出两个RS232/C 串行口一个打印口一个键盘接口■条码扫描仪(可选)TYSSO CCD-82■置热敏记录仪■打印机(可选)EPSON LQ-300K,EPSON LQ-300K+ 或 EPSON LQ-1600K系列■报警通信故障 2.5ml和50ul电机故障10ml电机故障偏转电机故障升降电机故障DC-DC故障12V电源故障48V电源故障WBC A/D故障RBC A/D 故障PLT A/D 故障WBC 中断故障RBC中断故障PLT中断故障HGB 故障HGB 调整真空度低条码无效条码通信故障环境温度异常本底异常WBC 堵孔WBC 气泡RBC堵孔RBC 气泡无稀释液无冲洗液无溶血剂真空室压力低压力室压力低记录仪缺纸记录仪热敏头过热文件故障打印机缺纸或连接错■试剂稀释液M-30D型血液细胞分析仪用稀释液冲洗液M-30R型血液细胞分析仪用冲洗液溶血剂M-30L型血液细胞分析仪用溶血剂E-Z 清洗液(酶清洗液)M-30E 型血液细胞分析仪用E–Z 清洗液探头清洁液M-30P型血液细胞分析仪用探头清洁液■电源电压:AC 220V±10% 50Hz功率:150 W熔断器:AC 220 V 50Hz 2A■运行工作环境环境温度围:15℃~35℃(超出围系统将报警,仍可继续测量)相对湿度围:10%~85%■外形尺寸长度宽度高度40CM39CM46CM■重量25KGBC-3000Plus功能按键名称功能简介■按键面板23 个键组成的面板按键和[开始] 键完成对血细胞分析系统的操作控制。
基于AT89C51单片机的温度测控系统设计
基于AT89C51单片机的温度测控系统设计黄保瑞;贾之豪;邵婷婷【摘要】A temperature measurement and control system based onAT89C51 is designed, whose working principle and design method are introduced. The temperature signal was sampled by digital temperature sensor DS18820, was transmitted to the microcontroller AT89C51 , and was displayed by LED. The 4 X 4 matrix keys were used to set the upper and lower limit of temperature. The control signal would be given by the MCU to start devices when the temperature was out of the range.The experiment shows that the accuracy of the system is 0. 1 % , and the available range is-55~+125 %. The system can be applied in many fields such as household appliances, cars、warehouse and so on.%设计一款基于AT89C51单片机的温度测控系统,介绍该系统的工作原理和设计方法.该系统温度信号由数字温度传感器DS18820采集,送AT89C51单片机进行处理,并通过数码管显示.控温部分使用4×4矩阵按键进行温度上限和下限的设定,当温度超过设定值范围后,单片机将发出控制信号启动升温装置或降温装置,使温度保持在一定的范围.实验测试证明,设计的样机系统测温控温精度均为0.1℃,测温控温的范围可这-55~+125℃,可应用于家用电器、汽车、冷库等领域.【期刊名称】《现代电子技术》【年(卷),期】2011(034)006【总页数】3页(P142-143,147)【关键词】AT89C51;DS18B20;数码管;温度测控【作者】黄保瑞;贾之豪;邵婷婷【作者单位】延安大学信息学院,陕西,延安,716000;西北工业大学电子信息学院,陕西,西安,710072;延安大学信息学院,陕西,延安,716000;西北工业大学电子信息学院,陕西,西安,710072【正文语种】中文【中图分类】TN911-34;TP212.90 引言温度的测量和控制在日常生活和工业领域中具有广泛的应用,随着人们生活水平的大幅提高,对温度测量控制的精度和范围也有着更高的要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hanzi_buff3[13] = mun_to_char[temp_buff%10];
for(i=0;i<8;i++) LCD12864_POS(i,2,hanzi_buff3[i*2],hanzi_buff3[i*2+1]); /*显示温度*/
}
void LCD12864_POS(uchar xpos,uchar ypos,uchar daH,uchar daL) { uchar xy_pos; if((xpos>=8)||(ypos>=4) ) return; /*X 位置超出显示范围退出*/ if(ypos==0) xy_pos = 0x80 + xpos; else if(ypos==1) xy_pos = 0x90 + xpos; /*计算转换地址*/ else if(ypos==2) xy_pos = 0x88 + xpos; else if(ypos==3) xy_pos = 0x98 + xpos; LCD12864_Wcmd(xy_pos); /*写地址*/ delay_1ms(1); LCD12864_Wdat(daH); /*写高八位数据*/ delay_1ms(1); LCD12864_Wdat(daL); /*写低八位数据*/ delay_1ms(1); } /***********************************************
#include <reg52.h> #include <intrins.h> #include "DS1302.h" #include "DS18B20.h" #include "LCD12864.h" #define uint unsigned int #define uchar unsigned char #define Nop() _nop_()
/* void Init_Timer0(void) {
TMOD |= 0x01; //TH0=0x00;
//TL0=0x00; EA=1; ET0=1; TR0=1;
//总中断打开 //定时器中断打开 //定时器开关打开
} */
/******************************* 写报警值
while(1)
{ disp_time(); // 调时钟显示函数
disp_temp(); // 调温度显示函数 Temp_THTL_Disp(); // 调温度显示函数 //Temp_Comp(); // 调温度报警比较函数
for(i=0;i<8;i++) LCD12864_POS(i,0,hanzi_buff1[i*2],hanzi_buff1[i*2+1]); /*显示年月日*/
for(i=0;i<8;i++) LCD12864_POS(i,1,hanzi_buff2[i*2],hanzi_buff2[i*2+1]); /*显示时间 日期*/
}
/*******************************
主
函
数
******************************************/
/******************************************************************************
/*引脚端口定义*/ sbit P26=P2^6; //用于关数码管的段选信号 sbit P27=P2^7; //用于关数码管的位选信号 sbit SPK = P1^2; //蜂鸣器
uchar code mun_to_char[] = {"0123456789"}; /*数字转换为 ASCII 字符码*/ uchar code Week1_to_char[] = {"一"}; uchar code Week2_to_char[] = {"二"}; uchar code Week3_to_char[] = {"三"}; uchar code Week4_to_char[] = {"四"}; uchar code Week5_to_char[] = {"五"}; uchar code Week6_to_char[] = {"六"}; /*星期数字转换为汉字的 ASCII 码*/ uchar code Week7_to_char[] = {"日"};
void disp_temp()
{
uint i; temp_buff = ReadTemperature(); // 读取温度 hanzi_buff3[10] = mun_to_char[temp_buff/100];
/*填充温度到缓存*/
hanzi_buff3[11] = mun_to_char[temp_buff%100/10];
***/
void main()
{
Iint_LCD12864(); /*LCD 初始化*/
P0 = 0X00;
//关掉数码管的信号。阻止数码管受到 P0 口信号的影响。
P26=0; P27=0;
P0 = 0xff; /*释放 P0 端口*/
Init_DS1302();
Write_THTL(); // 写报警值
LCD12864_POS(i,3,hanzi_buff4[i*2],hanzi_buff4[i*2+1]); // 显示上下限值 }
}
/**************************************** 温度显示函数
disp_temp()
*****************************************/
hanzi_buff1[10] = mun_to_char[time_data_buff[3]/0x10]; hanzi_buff1[11] = mun_to_char[time_data_buff[3]%0x10]; /*日*/ hanzi_buff2[1] = mun_to_char[time_data_buff[2]/0x10]; hanzi_buff2[2] = mun_to_char[time_data_buff[2]%0x10]; /*时*/ hanzi_buff2[4] = mun_to_char[time_data_buff[1]/0x10]; hanzi_buff2[5] = mun_to_char[time_data_buff[1]%0x10]; /*分*/ hanzi_buff2[7] = mun_to_char[time_data_buff[0]/0x10]; hanzi_buff2[8] = mun_to_char[time_data_buff[0]%0x10]; /*秒*/ i=time_data_buff[5]%0x10; /* 星期对照 */ if(i==7) { hanzi_buff2[14] = Week7_to_char[0] ; hanzi_buff2[15] = Week7_to_char[1]; /*星期日*/ } else if(i==1) { hanzi_buff2[14] = Week1_to_char[0] ; hanzi_buff2[15] = Week1_to_char[1]; /*星期一*/ } else if(i==2) { hanzi_buff2[14] = Week2_to_char[0] ; hanzi_buff2[15] = Week2_to_char[1]; /*星期二*/ } else if(i==3){ hanzi_buff2[14] = Week3_to_char[0] ; hanzi_buff2[15] = Week3_to_char[1]; /*星期三*/ } else if(i==4) { hanzi_buff2[14] = Week4_to_char[0] ; hanzi_buff2[15] = Week4_to_char[1]; /*星期四*/ } else if(i==5) { hanzi_buff2[14] = Week5_to_char[0] ; hanzi_buff2[15] = Week5_to_char[1]; /*星期五*/ } else if(i==6) { hanzi_buff2[14] = Week6_to_char[0] ; hanzi_buff2[15] = Week6_to_char[1]; /*星期六*/ }
uchar data hanzi_buff1[]={"2012 年 05 月 05 日 "}; uchar data hanzi_buff2[]={" 23:59:00 星期六"}; uchar data hanzi_buff3[]={"当前温度: 20.5℃"}; uchar data hanzi_buff4[]={" :40 ℃ : 10℃"}; uchar data time_data_buff[7]={0x00,0x59,0x23,0x05,0x05,0x06,0x12};/*格式为: 秒分时日月星 期年*/
********************************/
void Write_THTL()
{
Init_DS18B20(); Write_Temp(0xCC); // 跳过读序号列号的操作 Write_Temp(0x4e); // 报警值写入 18B20
Write_Temp(temp_TH);
Write_Temp(temp_TL);
Write_Temp(0x7f);
Init_DS18B20(); Write_Temp(0xCC); // 跳过读序号列号的操作 Write_Temp(0x48); // 报警值拷贝到 EEROM