单片机温度采集与显示

合集下载

基于单片机的温度采集与液晶显示

基于单片机的温度采集与液晶显示

1 绪论1.1 本课题研究的背景和意义温度,一个在日常生活和生产过程甚至科学实验中普遍而且重要的物理参数。

近年来,随着社会的发展和科技的进步,温度控制系统以及测温仪器已经广泛应用于社会生活的各个领域,尤其是在工业自动化控制中占有非常重要的地位。

人们通过温度计来采集温度,经过人工操作进行加热、通风和降温。

从而来控制温度,但是对于这些控制对象惯性大,滞后性严重,而且还存在有许多不定的因素,从而根本难以建立精确的数学模型。

这样不仅控制精度低、实时性差,而且操作人员的劳动强度大,并且有许多工业生产环节是人们不能直接介入的。

因此智能化已然成为现代温度控制系统发展的主流方向。

针对这一种实际情况,设计个温度控制系统,具有非常广泛的应用前景和实际意义[1]。

随着电子信息技术和微型计算机技术的飞速发展。

单片机技术也得到了飞速的发展。

尤其是在高集成度、高速度、低功耗还有高性能方面取得了巨大的进展。

使得单片机在电子产品当中的应用越来越广泛。

使用单片机对温度进行控制的技术也油然而生。

它不仅可以克服温度控制系统中存在的严重的滞后现象,同时还可以在提高采样频率的基础上很大程度的提高控制的效果和控制的精度。

并且随着技术日益发展和完善,相信越来越能显现出它的优越性。

1.2 目前国内外研究现状在国内外温度控制成了一门广泛应用于很多领域的技术。

像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等。

温度控制系统虽然在国内各行各业的应用已十分广泛,但是从温度控制器的生产角度来看,总体的发展水平仍不高。

跟美德日等先进国家相比,仍有着较大的差距。

“点位”控制和常规的PID控制器占领了成熟产品的主体份额。

但它只可以适用于一般的温度系统控制,而难于控制复杂、滞后、时变的温度控制系统。

此外,适于较高控制场合的智能化、自适应控制仪表,目前在国内还没有取得较好的研究成果。

并且,在形成商品化和仪表控制参数的自整定方面,一些先进国家虽已经有一批成熟的产品。

基于单片机实现的温度采集显示系统

基于单片机实现的温度采集显示系统

单片机课程设计论文论文题目:温度采集显示系统一、功能和要求:(1)温度测量范围 0 - 99℃。

(2)温度分辨率±1℃。

(3)选择合适的温度传感器。

(4)使用键盘输入温度的最高点和最低点,温度超出范围时候报警。

(报警温度不需要保存)二、系统方案:方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

方案二:进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。

三、核心元件的功能1、AT89C51AT89S51美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。

单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89C51芯片的引脚结构如图1所示:1.1功能特性概括:AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes的随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编图1 程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路。

单片机的温度采集系统 源代码

单片机的温度采集系统 源代码
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return(dat);
}
void tmpwritebyte(uchar dat) //写一个字节到DS18B20里
{
uint i;uchar j;bit testb;
for(j=1;j<=8;j++)
temp=tt*10+0.5; //放大十倍,将小数点后第一位转换为可显示数字,再四舍五入
return temp;
}
uchar tmpread(void) //读一个字节
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P3^3; //定义DS18B20接口
int temp; //全局温度变量
{
dsreset(); //初始化DS18B20
tmpwritebyte(0xcc); //跳过序列号命令
tmpwritebyte(0x44); //发送温度转换命令
}
int tmp() //获得温度
{
float tt;uchar a,b;
dsreset();
{
P2=0; //LED段选,共阴极 送1点亮某段

单片机ADC采集NTC温度

单片机ADC采集NTC温度

单⽚机ADC采集NTC温度通常会将100kNTC串联⼀个100K电阻⽤于测量温度,温度变化时NTC阻值也发⽣变化,反应到ADC上就是电压变化,只需⽤ADC时时的采样NTC上的电压计算出电阻,即可根据阻值表计算出NTC的温度。

项⽬合作,吹⽜扯淡,交朋友请联系:186********static const char adclab[111][2] = {{0x03,0xbf},{0x03,0xbc},{0x03,0xb9},{0x03,0xb6},{0x03,0xb2},{0x03,0xab},{0x03,0xa7},{0x03,0xa3},{0x03,0x9e},{0x03,0x9a},{0x03,0x96},{0x03,0x91},{0x03,0x8c},{0x03,0x87},{0x03,0x82},{0x03,0x7d},{0x03,0x78},{0x03,0x72},{0x03,0x6d},{0x03,0x67},{0x03,0x61},{0x03,0x5a},{0x03,0x54},{0x03,0x4e},{0x03,0x47},{0x03,0x41},{0x03,0x3a},{0x03,0x33},{0x03,0x2c},{0x03,0x24},{0x03,0x1d},{0x03,0x15},{0x03,0x0e},{0x03,0x06},{0x02,0xfe},{0x02,0xf6},{0x02,0xee},{0x02,0xe5},{0x02,0xdd},{0x02,0xd4},{0x02,0xcc},{0x02,0xc3},{0x02,0xba},{0x02,0xb1},{0x02,0xa8},{0x02,0x9f},{0x02,0x96},{0x02,0x8d},{0x02,0x84},{0x02,0x7b},{0x02,0x72},{0x02,0x68},{0x02,0x5f},{0x02,0x56},{0x02,0x4c},{0x02,0x43},{0x02,0x3a},{0x02,0x30},{0x02,0x27},{0x02,0x1e},{0x02,0x15},{0x02,0x0b},{0x02,0x02},{0x01,0xf9},{0x01,0xf0},{0x01,0xf0},{0x01,0xe7},{0x01,0xde},{0x01,0xd5},{0x01,0xcc},{0x01,0xc3},{0x01,0xbb},{0x01,0xb2},{0x01,0xaa},{0x01,0xa1},{0x01,0x99},{0x01,0x91},{0x01,0x89},{0x01,0x81},{0x01,0x79},{0x01,0x71},{0x01,0x69},{0x01,0x61},{0x01,0x5a},{0x01,0x53},{0x01,0x4b},{0x01,0x44},{0x01,0x3d},{0x01,0x36},{0x01,0x30},{0x01,0x29},{0x01,0x22},{0x01,0x1c},{0x01,0x16},{0x01,0x0f},{0x01,0x09},{0x01,0x03},{0x00,0xfd},{0x00,0xf8},{0x00,0xf2},{0x00,0xed},{0x00,0xe7},{0x00,0xe2},{0x00,0xdd},{0x00,0xd8},{0x00,0xd3},{0x00,0xce},{0x00,0xc9},{0x00,0xc4},{0x00,0xc0},{0x00,0xba},};unsigned char culTemp(unsigned int adTmp){unsigned char numLab = 0;unsigned char tempVal = 0;unsigned int cntlab = 0;unsigned int minlab = 0;unsigned int maxlab = 0;minlab = (unsigned int)((adclab[0][0]<<8)|adclab[0][1]);cntlab = minlab;maxlab = (unsigned int)((adclab[100][0]<<8)|adclab[100][1]);if(minlab < adTmp){tempVal = 0;}else if(maxlab > adTmp){tempVal = 100;}else{while( cntlab >= adTmp){if(numLab < 101){numLab++;cntlab = (unsigned int)((adclab[numLab][0]<<8)|adclab[numLab][1]);}else{break;}}if(numLab == 101){tempVal = 100;}else{tempVal = numLab;}}return tempVal;}if(swAinBuz == 0){if(adcStp == 0){ADMD = 0x90 | C_ADC_PA1; // Select AIN0(PA0) pad as ADC input//ADMD = 0x90 | C_ADC_PA0;ADMDbits.START = 1; // Start a ADC conversion sessionwhile(ADMDbits.EOC);adcStp = 1;}else if(adcStp == 1){if(ADMDbits.EOC == 1){adcStp = 0;adcCnt++;R_AIN0_DATA_LB += ( 0x0F & ADR);R_AIN0_DATA += ADD;if(adcCnt == 8){adcCnt = 0;R_AIN0_DATA <<= 4; // R_AIN0_DATA shift left 4 bit//R_AIN0_DATA_LB &= 0xF0; // Only get Bit7~4R_AIN0_DATA += R_AIN0_DATA_LB; // R_AIN0_DATA + R_AIN0_DATA_LB R_AIN0_DATA >>=5; // R_AIN0_DATA divided 8adcVal = R_AIN0_DATA; // output val 0~1024R_AIN0_DATA = 0;R_AIN0_DATA_LB = 0;if(buzEn){swAinBuz = 1;PACON = 0x00;IOSTA &= 0xfd;}}}}}。

单片机在数据采集与处理中的应用

单片机在数据采集与处理中的应用

单片机在数据采集与处理中的应用随着科技的不断进步和发展,单片机作为一种功能强大且灵活的微型计算机,被广泛应用于各个领域,尤其在数据采集与处理方面发挥着重要的作用。

本文将以单片机在数据采集与处理中的应用为核心,介绍单片机的基本原理、常见应用场景及其在数据采集与处理中发挥的作用。

一、单片机的基本原理单片机是一种集成了处理器、内存、输入输出接口及其他外设的微型计算机系统,其核心是一个微处理器。

在数据采集与处理中,单片机通过外部传感器或接口设备对需要采集的数据进行实时监测,并对采集到的数据进行处理和存储。

单片机的基本原理包括输入输出、计算与控制、存储与通信等方面。

二、单片机在数据采集中的应用1. 温度和湿度采集:在气象、农业、环境监测等领域,通过连接温湿度传感器和单片机,可以实时采集环境中的温度和湿度数据,并根据采集到的数据做出相应的控制和决策。

2. 压力和力的采集:在工业自动化、航天航空、汽车工程等领域,通过连接压力传感器和单片机,可以实时采集各种设备的压力和力数据,用于分析设备的工作状态和负荷情况。

3. 光线和声音的采集:在照明控制、声音分析、环境监测等领域,通过连接光线传感器和声音传感器与单片机,可以实时采集光线和声音的强度和频率,并做出相应的反应与处理。

三、单片机在数据处理中的应用1. 数据处理算法:通过单片机内部的计算和运算功能,可以进行各种数据处理算法,如滤波算法、傅里叶变换、数据压缩算法等,从而更好地处理采集到的数据,并提取出有价值的信息。

2. 数据存储与管理:单片机通过内部的存储器或外部存储介质,如闪存、SD卡等,可以将采集到的数据进行存储,并实现对数据的管理和查找,方便后续的数据分析和应用。

3. 数据通信与传输:单片机可以通过串口、网络接口等方式与外部设备或其他单片机进行数据通信和传输,实现数据的共享和互联,使得数据采集与处理更加高效和便捷。

四、单片机在数据采集与处理中的优势1. 灵活性:单片机具有自主控制和计算能力,能够根据实际需求对数据采集和处理进行灵活调整和配置。

基于51单片机——Ds18B20温度采集,LCD显示汇编程序(附带proteus仿真图)

基于51单片机——Ds18B20温度采集,LCD显示汇编程序(附带proteus仿真图)

TEMP_ZH EQU 24H ;实测温度值存放单元TEMPL EQU 25HTEMPH EQU 26HTEMP_TH EQU 27H ;高温报警值存放单元TEMP_TL EQU 28H ;低温报警值存放单元TEMPHC EQU 29H ;正、负温度值标记TEMPLC EQU 2AHTEMPFC EQU 2BHK1 EQU P1.4 ;查询按键K2 EQU P1.5 ;设置/调整键K3 EQU P1.6 ;调整键K4 EQU P1.7 ;确定键BEEP EQU P3.7 ;蜂鸣器RELAY EQU P1.3 ;指示灯LCD_X EQU 2FH ;LCD 字符显示位置LCD_RS EQU P2.0 ;LCD 寄存器选择信号 LCD_RW EQU P2.1 ;LCD 读写信号LCD_EN EQU P2.2 ;LCD 允许信号FLAG1 EQU 20H.0 ;DS18B20是否存在标志 KEY_UD EQU 20H.1 ;设定按键的增、减标志 DQ EQU P3.3 ;DS18B20数据信号ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP,#60HMOV A,#00HMOV R0,#20H ;将20H~2FH 单元清零MOV R1,#10HCLEAR: MOV @R0,AINC R0DJNZ R1,CLEARLCALL SET_LCDLCALL RE_18B20START: LCALL RST ;调用18B20复位子程序JNB FLAG1,START1 ;DS1820不存在LCALL MENU_OK ;DS1820存在,调用显示正确信息子程序MOV TEMP_TH,#055H ;设置TH初值85度MOV TEMP_TL,#019H ;设置TL初值25度LCALL RE_18B20A ;调用暂存器操作子程序LCALL WRITE_E2 ;写入DS18B20LCALL TEMP_BJ ;显示温度标记JMP START2START1: LCALL MENU_ERROR ;调用显示出错信息子程序 LCALL TEMP_BJ ;显示温度标记SJMP $START2: LCALL RST ;调用DS18B20复位子程序JNB FLAG1,START1 ;DS18B20不存在MOV A,#0CCH ;跳过ROM匹配命令LCALL WRITEMOV A,#44H ;温度转换命令LCALL WRITELCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0BEH ;读温度命令LCALL WRITELCALL READ ;调用DS18B20数据读取操作子程序LCALL CONVTEMP ;调用温度数据BCD 码处理子程序LCALL DISPBCD ;调用温度数据显示子程序LCALL CONV ;调用LCD显示处理子程序LCALL TEMP_COMP ;调用实测温度值与设定温度值比较子程序LCALL PROC_KEY ;调用键扫描子程序SJMP START2 ;循环;*************************** 键扫描子程序*****************************PROC_KEY:JB K1,PROC_K1LCALL BEEP_BLJNB K1,$MOV DPTR,#M_ALAX1MOV A,#1LCALL LCD_PRINTLCALL LOOK_ALARMJB K3,$LCALL BEEP_BLJMP PROC_K2PROC_K1: JB K2,PROC_ENDLCALL BEEP_BLJNB K2,$MOV DPTR,#RST_A1MOV A,#1LCALL LCD_PRINTLCALL SET_ALARMLCALL RE_18B20 ;将设定的TH,TL值写入DS18B20LCALL WRITE_E2PROC_K2: LCALL MENU_OKLCALL TEMP_BJPROC_END:RET;*************************** 设定温度报警值TH、TL ***************************SET_ALARM:LCALL LOOK_ALARMAS0: JB K1,AS00LCALL BEEP_BLJNB K1,$CPL 20H.1 ;UP/DOWN 标记AS00: JB 20H.1,ASZ01 ;20H.1=1,增加JMP ASJ01 ;20H.1=0,减小ASZ01: JB K2,ASZ02 ;TH值调整(增加)LCALL BEEP_BLINC TEMP_THMOV A,TEMP_THCJNE A,#120,ASZ011MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARMLCALL DELAYJMP ASZ01ASZ02: JB K3,ASZ03 ;TL值调整(增加) LCALL BEEP_BLINC TEMP_TLMOV A,TEMP_TLCJNE A,#99,ASZ021MOV TEMP_TL,#00HASZ021: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP ASZ02ASZ03: JB K4,AS0 ;确定调整LCALL BEEP_BLJNB K4,$RETASJ01: JB K2,ASJ02 ;TH值调整(减少) LCALL BEEP_BLDEC TEMP_THMOV A,TEMP_THCJNE A,#0FFH,ASJ011ASJ011: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP AS0ASJ02: JB K3,ASJ03 ;TL值调整(减少)LCALL BEEP_BLDEC TEMP_TLMOV A,TEMP_TLCJNE A,#0FFH,ASJ021JMP ASJ022ASJ021: LCALL LOOK_ALARM ;MOV R5,#10LCALL DELAYJMP AS0ASJ022: CPL 20H.1JMP ASZ01ASJ03: JMP ASZ03RETRST_A1: DB " SET ALERT CODE " ,0;*********************** 实测温度值与设定温度值比较子程序**********************TEMP_COMP:MOV A,TEMP_THSUBB A,TEMP_ZH ;减数>被减数,则JC CHULI1 ;借位标志位C=1,转 MOV A,TEMPFCCJNE A,#0BH,COMPSJMP CHULI2COMP: MOV A,TEMP_ZHSUBB A,TEMP_TL ;减数>被减数,则JC CHULI2 ;借位标志位C=1,转MOV DPTR,#BJ5LCALL TEMP_BJ3CLR RELAY ;点亮指示灯RETCHULI1: MOV DPTR,#BJ3LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RETCHULI2: MOV DPTR,#BJ4LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RET;-----------------------------------------TEMP_BJ3: MOV A,#0CEHLCALL WCOMMOV R1,#0MOV R0,#2BBJJ3: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ3RETBJ3: DB ">H"BJ4: DB "<L"BJ5: DB " !";;**************************** 显示温度标记子程序***************************TEMP_BJ: MOV A,#0CBHLCALL WCOMMOV DPTR,#BJ1 ;指针指到显示消息MOV R1,#0MOV R0,#2BBJJ1: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ1RETBJ1: DB 00H,"C";******************************** 显示正确信息子程序***************************MENU_OK: MOV DPTR,#M_OK1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_OK2 ;指针指到显示消息MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_OK1: DB " DS18B20 OK ",0M_OK2: DB " TEMP: ",0;******************************** 显示出错信息子程序***************************MENU_ERROR:MOV DPTR,#M_ERROR1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_ERROR2 ;指针指到显示消息1MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_ERROR1: DB " DS18B20 ERROR ",0M_ERROR2: DB " TEMP: ---- ",0;****************************DS18B20复位子程序*****************************RST: SETB DQNOPCLR DQMOV R0,#6BH ;主机发出延时复位低脉冲MOV R1,#04HTSR1: DJNZ R0,$MOV R0,#6BHDJNZ R1,TSR1SETB DQ ;拉高数据线NOPNOPNOPMOV R0,#32HTSR2: JNB DQ,TSR3 ;等待DS18B20回应DJNZ R0,TSR2JMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置1标志位,表示DS1820存在JMP TSR5TSR4: CLR FLAG1 ; 清0标志位,表示DS1820不存在 JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 时序要求延时一段时间TSR7: SETB DQRET;************************ DS18B20暂存器操作子程序***************************RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEWR_SCRAPD:MOV A,#4EH ;写暂器LCALL WRITEMOV A,TEMP_TH ;TH(报警上限)LCALL WRITEMOV A,TEMP_TL ;TL(报警下限)LCALL WRITEMOV A,#7FH ;12位精度LCALL WRITERET;************************ 复制暂存器子程序*******************************WRITE_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#48H ;把暂存器里的温度报警值拷贝到EEROMLCALL WRITERET;*********************** 重读EEROM子程序********************************READ_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0B8H ;把EEROM里的温度报警值拷贝回暂存器LCALL WRITERET;************************ 将自定义字符写入LCD的CGRAM中*********************STORE_DATA:MOV A,#40HLCALL WCOMMOV R2,#08HMOV DPTR,#D_DATAMOV R3,#00HS_DATA: MOV A,R3MOVC A,@A+DPTRLCALL WDATA ;写入数据INC R3DJNZ R2,S_DATARETD_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H;*********************** DS18B20数据写入操作子程序************************WRITE: MOV R2,#8 ;一共8位数据CLR CWR1: CLR DQ ;开始写入DS18B20总线要处于复位(低)状态MOV R3,#07DJNZ R3,$ ;总线复位保持16微妙以上RRC A ;把一个字节DATA 分成8个BIT 环移给CMOV DQ,C ;写入一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙SETB DQ ;重新释放总线NOPDJNZ R2,WR1 ;写入下一位SETB DQRET;********************** DS18B20数据读取操作子程序**************************READ: MOV R4,#4 ;将温度低位、高位、TH、TL从DS18B20中读出MOV R1,#TEMPL ;存入25H、26H、27H、28H单元RE00: MOV R2,#8RE01: CLR CYSETB DQNOPNOPCLR DQ ;读前总线保持为低NOPNOPNOPSETB DQ ;开始读总线释放MOV R3,#09 ;延时18微妙DJNZ R3,$MOV C,DQ ;从DS18B20总线读得一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙RRC A ;把读得的位值环移给ADJNZ R2,RE01 ;读下一位MOV @R1,AINC R1DJNZ R4,RE00RET;************************ 温度值BCD 码处理子程序*************************CONVTEMP: MOV A,TEMPH ;判温度是否零下ANL A,#08HJZ TEMPC1 ;温度零上转CLR CMOV A,TEMPL ;二进制数求补(双字节)CPL A ;取反加1ADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BH ;负温度标志MOV TEMPFC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;正温度标志MOV TEMPFC,#0AHTEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘0.0625MOV DPTR,#TEMPDOTTABMOVC A,@A+DPTRMOV TEMPLC,A ;TEMPLC LOW=小数部分 BCDMOV A,TEMPL ;整数部分ANL A,#0F0H ;取出高四位SWAP AMOV TEMPL,AMOV A,TEMPH ;取出低四位ANL A,#0FHSWAP AORL A,TEMPL ;重新组合MOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHC ;TEMPHC LOW = 十位数BCDMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A ;TEMPLC HI = 个位数BCDORL A,TEMPLCMOV TEMPLC,AMOV A,R4JZ TEMPC12ANL A,#0FHSWAP AMOV R4,AMOV A,TEMPHC ;TEMPHC HI = 百位数BCDANL A,#0FHORL A,R4MOV TEMPHC,ATEMPC12: RET;************************ 二-十进制转换子程序*****************************HEX2BCD1: MOV B,#064HDIV ABMOV R4,AMOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRETTEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小数部分码表DB 05H,05H,06H,06H,07H,08H,08H,09H;********************** 查询温度报警值子程序***************************LOOK_ALARM: MOV DPTR,#M_ALAX2 ;指针指到显示信息区MOV A,#2 ;显示在第二行LCALL LCD_PRINTMOV A,#0C6HLCALL TEMP_BJ1MOV A,TEMP_TH ;加载TH数据MOV LCD_X,#3 ;设置显示位置LCALL SHOW_DIG2H ;显示数据MOV A,#0CEHLCALL TEMP_BJ1MOV A,TEMP_TL ;加载TL数据MOV LCD_X,#12 ;设置显示位置LCALL SHOW_DIG2L ;显示数据RETM_ALAX1: DB " LOOK ALERT CODE",0M_ALAX2: DB "TH: TL: ",0TEMP_BJ1: LCALL WCOMMOV DPTR,#BJ2 ;指针指到显示信息区 MOV R1,#0MOV R0,#2BBJJ2: MOV A,R1MOVC A,@A+DPTRLCALL WDATADJNZ R0,BBJJ2RETBJ2: DB 00H,"C";************************** LCD显示子程序**********************************SHOW_DIG2H: MOV B,#100DIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BMOV A,#0AHXCH A,BDIV ABADD A,#30HINC LCD_XPUSH BMOV B,LCD_XLCALL LCDP2INC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RETSHOW_DIG2L: MOV B,#100DIV ABMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RET;************************ 显示区BCD 码温度值刷新子程序**********************DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,A ;小数位MOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,A ;个位MOV A,TEMPHCANL A,#0FHMOV 72H,A ;十位MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,A ;百位DISPBCD2: RET;*************************** LCD 显示数据处理子程序*************************CONV: MOV A,73H ;加载百位数据MOV LCD_X,#6 ;设置位置CJNE A,#1,CONV1JMP CONV2CONV1: CJNE A,#0BH,CONV11MOV A,#"-" ;"-"号显示JMP CONV111CONV11: MOV A,#" " ;"+"号不显示CONV111: MOV B,LCD_XLCALL LCDP2JMP CONV3CONV2: LCALL SHOW_DIG2 ;显示数据CONV3: INC LCD_XMOV A,72H ;十位LCALL SHOW_DIG2INC LCD_XMOV A,71H ;个位LCALL SHOW_DIG2INC LCD_XMOV A,#'.'MOV B,LCD_XLCALL LCDP2MOV A,70H ;加载小数点位INC LCD_X ;设置显示位置LCALL SHOW_DIG2 ;显示数据RET;*************************** 第二行显示数字子程序*************************SHOW_DIG2:ADD A,#30HMOV B,LCD_XLCALL LCDP2RET;*************************** 第二行显示数字子程序*************************LCDP2: PUSH ACCMOV A,B ;设置显示地址ADD A,#0C0H ;设置LCD的第二行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;*************************** 对LCD 做初始化设置及测试*************************SET_LCD: CLR LCD_ENLCALL INIT_LCD ;初始化 LCDLCALL STORE_DATA ;将自定义字符存入LCD的CGRAM RET;****************************** LCD初始化***********************************INIT_LCD: MOV A,#38H ;2行显示,字形5*7点阵LCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#0CH ;开显示,显示光标,光标不闪烁 LCALL WCOMLCALL DELAY1MOV A,#01H ;清除 LCD 显示屏LCALL WCOMLCALL DELAY1RET;***************************** 清除LCD的第一行字符**************************CLR_LINE1:MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOMMOV R0,#24 ;设置计数值C1: MOV A,#' ' ;载入空格符至LCDLCALL WDATA ;输出字符至LCDDJNZ R0,C1 ;计数结束RET;************************* LCD的第一行或第二行显示字符**********************LCD_PRINT:CJNE A,#1,LINE2 ;判断是否为第一行LINE1: MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令JMP FILLLINE2: MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOMFILL: CLR A ;填入字符MOVC A,@A+DPTR ;由消息区取出字符CJNE A,#0,LC1 ;判断是否为结束码RETLC1: LCALL WDATA ;写入数据INC DPTR ;指针加1JMP FILL ;继续填入字符RET;*************************** 清除1行LCD 的字符****************************CLR_LINE: MOV R0,#24CL1: MOV A,#' 'LCALL WDATADJNZ R0,CL1RETDE: MOV R7,#250DJNZ R7,$RET;**************************** LCD 间接控制方式命令写入*************************WCOM: MOV P0,A ;写入命令CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲 CLR LCD_RWSETB LCD_ENLCALL DELAY1CLR LCD_ENRET;**************************** LCD 间接控制方式数据写入*************************WDATA: MOV P0,A ;写入数据SETB LCD_RSCLR LCD_RWSETB LCD_ENLCALL DELCALL DERET;************************** 在LCD的第一行显示字符**************************LCDP1: PUSH ACCMOV A,B ;设置显示地址ADD A,#80H ;设置LCD的第一行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;****************************** 声光报警子程序*******************************BEEP_BL: MOV R6,#100BL2: LCALL DEX1CPL BEEPCPL RELAYDJNZ R6,BL2MOV R5,#10RETDEX1: MOV R7,#180DE2: NOPDJNZ R7,DE2RET;****************************** 延时子程序*******************************DELAY: MOV R6,#50DL1: MOV R7,#100DJNZ R7,$DJNZ R6,DL1DJNZ R5,DELAYRETDELAY1: MOV R6,#25 ;延时5毫秒DL2: MOV R7,#100DJNZ R7,$DJNZ R6,DL2RETEND。

单片机(基于AT89C51的温度采集与显示系统设计)

单片机(基于AT89C51的温度采集与显示系统设计)

基于AT89C51的温度采集与显示系统设计摘要:以AT89C51单片机为核心控制元件介绍了与DS18B20和MAX7219显示驱动组成的温度采集系统的设计方案利用单片机空余I/O口以及上述元件的特性,构成该系统。

通过Proteus进行仿真。

关键词:温度采集,AT89C51,DS18B20,MAX7219目录1、系统概述……………………………………………………………….2、硬件介绍……………………………………………………………….3、软件设计……………………………………………………………….4、仿真结果……………………………………………………………….5、小结…………………………………………………………………….6、参考文献……………………………………………………………….1、系统概述温度传感器选用目前常用的数字温度传感器DS18B20,采用数码LED显示,显示驱动为MAX7219,首先设计系统的总体原理图如下:系统可以简单地分为为5个模块,由外部提供8V-24V直流电源供电。

电源模块将输入8-24V的电源电压转换为5V,为系统中的芯片供电,可以使用7805等常用的三端稳压器芯片;温度传感器采集温度信号,温度传感器有模拟输出和数字输出两种形式,这里选择具有数字输出的DS18B20;单片机是系统的核心,选用AT89C51;系统采用LED数码显示器显示温度值,LED显示屏采用独立的显示驱动芯片MAX7219,单片机将待显示的字符写入MAX7219后,MAX7219将会动态的刷新显示内容,无需占用单片机过多的资源。

尽管DS18B20的分辨率可已达到0.0625°C,但测量精确度为0.5°C,因此设计4位数的LED数码显示管就可以了,显示3位整数,1位小数。

2、硬件介绍:1、数字温度传感器DS18B20DS18B20数字温度计提供9位-24位(二进制)温度读数,以指示器件的温度,数据经过单线接口送入DS18B20或从DS18B20送出,因此从主机CPU到DS18B20仅需要一条DQ。

c51单片机实验温度采集控制报告

c51单片机实验温度采集控制报告
LM75A可设置成工作在两种模式:正常工作模式或关断模式。在正常工作模式中,每隔100ms执行一次温度-数字的转换,Temp寄存器保存着最后一次更新的结果;但是,在该模式下,器件的I2C接口仍然有效,寄存器读/写操作纠结执行。器件的工作模式通过配置寄存器可编程位B0业设定。当器件上电或从关断模式进入正常工作模式时启动温度转换。
(一)试验要求
1、在数码管的第一、二个显示当前环境温度,第三、六个数码管熄灭,第四、五个数码管显示设定温度,第七、八个数码管显示电机转速;设定温度初值25,利用“+”“-”两个按键可以加减该温度数值,范围在16~30之间,按键按下蜂鸣器响0.2s。
2、根据设定温度和实际环境温度的温差驱动直流电机。设定温度等于环境温度,直流电机停转;设定温度和环境温度温差的绝对值越大,直流电机转速越快(要求最大转速控制在100以内)。
八、对本实验过程及方法、手段的改进建议
九、附录
温度采集控制实验程序
/*
main.c
LM75A数字温度计
*/
#include "I2C.h"
#include <reg51.h>
#include <string.h>
#include <absacc.h>
#include <CTYPE.H>
//定义显示缓冲区(由定时中断程序自动扫描)
3、I2C工作原理
1)I2C总线概述
I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需
的包括总线裁决和高低速器件同步功能的高性能串行总线。
2)I2C信号线
I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

单片机的数据采集与存储方法解析

单片机的数据采集与存储方法解析

单片机的数据采集与存储方法解析随着科技的不断发展,单片机在各个领域都有着广泛的应用。

其中,数据采集与存储是单片机应用中非常重要的一部分。

本文将对单片机数据采集与存储方法进行解析,帮助读者更好地理解和应用单片机。

一、数据采集方法1. 模拟信号采集单片机通过ADC(模拟数字转换器)可以将模拟信号转换为数字信号。

ADC的输入引脚连接模拟信号源,将模拟信号转换为数字信号后,单片机可以通过读取ADC寄存器的值来获取模拟信号的数值。

ADC的分辨率决定了数字信号的精度,一般为8位、10位或12位。

2. 数字信号采集单片机的GPIO(通用输入输出)口可以采集数字信号,常见的数字信号有开关、光电传感器等。

通过配置GPIO口的输入模式,将数字信号连接到相应的引脚上,单片机可以通过读取GPIO口状态寄存器的值来获取数字信号的状态。

3. 串口采集单片机内部集成了多个串口模块,可以通过串口采集外部设备发送的数据。

通过配置串口的波特率、数据位、停止位等参数,将单片机的串口连接到外部设备的串口上,单片机可以通过读取串口接收寄存器的值来获取外部设备发送的数据。

二、数据存储方法1. 寄存器存储单片机内部有一些特定的寄存器用于存储数据。

通过将数据写入到相应的寄存器,单片机可以将数据存储在寄存器中。

具体的存储位置和方式与单片机的型号和架构有关。

对于需要长期保存的数据,寄存器存储并不适用,因为寄存器的内容会在单片机掉电时丢失。

2. 内部存储器单片机的内部存储器一般分为闪存和RAM。

闪存用于存储程序和常量等数据,而RAM用于存储变量和临时数据。

通过将数据存储在内部存储器的特定地址中,单片机可以随时读取和修改数据。

3. 外部存储器有些应用场景下,需要存储大量的数据,此时单片机的内部存储器可能无法满足需求,就需要使用外部存储器。

常见的外部存储器包括EEPROM、Flash、存储卡等。

通过与外部存储器进行通信,单片机可以将数据写入到外部存储器中或从外部存储器中读取出数据。

基于单片机的温度数据采集系统实验报告

基于单片机的温度数据采集系统实验报告

基于单片机的温度数据采集系统实验报告
班级:192202
姓名:张尧
学号:123241
指导老师:
一、实验目的
1、了解温度传感器电路的工作原理;
2、了解闭环控制的基本原理;
3、进一步熟悉A/D变换原理和编程方法;
4、进一步熟悉键盘、显示接口电路使用和编程方法;
5、掌握单片机应用系统硬件及软件的设计方法;
二、实验内容及要求
内容:①根据各自设计方案,选择并连接各小模块电路构成温度采集与控制的实验电路,编写并调试程序,实现对温度的采集、检测、进行控制计算等处理后输出显示。

②控制加热机构,实现温度闭环控制。

(选做)
③采用PID算法控制温度在一定值上,实现恒温控制。

(选做)
要求:实现对温度的采集、检测、进行控制计算处理后输出显示;其温度控制为开环控制,采用发光二极管亮时表示加热状态,灭时为不加热状态。

显示采用7279显示板实时显示温度值。

三、实验设计思路单片机温度采集与控制实验报告。

基于51单片机的数字温度计设计

基于51单片机的数字温度计设计

基于51单片机的数字温度计设计数字温度计是一种广泛使用的电子测量设备,通过传感器将温度转化为数字信号,并显示出来。

本文将介绍基于51单片机的数字温度计的设计。

该设计将使得使用者能够准确、方便地测量温度,并实时显示在液晶显示屏上。

1. 硬件设计:- 传感器选择:在设计数字温度计时,我们可以选择使用NTC(负温度系数)热敏电阻或者DS18B20数字温度传感器作为温度传感器。

这里我们选择DS18B20。

- 信号转换:DS18B20传感器是一种数字传感器,需要通过单总线协议与51单片机进行通信。

因此,我们需要使用DS18B20专用的驱动电路,将模拟信号转换为数字信号。

- 51单片机的选择:根据设计要求选择合适的51单片机,如STC89C52、AT89S52等型号。

单片机应具备足够的IO口来与传感器和液晶显示屏进行通信,并具备足够的计算和存储能力。

- 显示屏选择:为了实时显示温度,我们可以选择使用1602型字符液晶显示屏。

该显示屏能够显示2行16个字符,足够满足我们的需求。

通过与51单片机的IO口连接,我们可以将温度数据显示在屏幕上。

2. 软件设计:- 采集温度数据:通过51单片机与DS18B20传感器进行通信,采集传感器传输的数字温度数据。

通过解析传感器发送的数据,我们可以获得当前的温度数值。

- 数据处理:获得温度数据后,我们需要对其进行处理。

例如,可以进行单位转换,从摄氏度到华氏度或者开尔文度。

同时,根据用户需求,我们还可以对数据进行滤波、校准等处理。

- 显示数据:通过与液晶显示屏的连接,我们可以将温度数据显示在屏幕上。

可以使用51单片机内部的LCD模块库来控制液晶显示屏,显示温度数据以及相应的单位信息。

- 用户交互:可以设置一些按键,通过与51单片机的IO口连接,来实现用户与数字温度计的交互。

例如,可以设置一个按钮来进行温度单位的切换,或者设置一个按钮来启动数据保存等功能。

3. 功能拓展:- 数据存储:除了实时显示当前温度,我们还可以考虑增加数据存储功能。

基于LM35的单片机温度采集显示系统

基于LM35的单片机温度采集显示系统

基于LM35的单片机温度采集显示系统王思淼;陈战胜;胡正坤【期刊名称】《佳木斯大学学报(自然科学版)》【年(卷),期】2012(000)006【摘要】基于 AT89S51单片机开发了温度控制采集显示系统,着重介绍了系统核心硬件设计和软件设计。

利用 LM35温度传感器采集温度、经 LM358放大10倍后输入到 A/D 采样电路,由TLC549将数字值传送给 AT89S52单片机,最后由单片机驱动数码管显示温度。

测试结果表明,在外部环境温度变化较大时该系统响应时间短,灵敏度较高,工作稳定可靠。

% A temperature control acquisition and display system was developed based on AT 89S51 single-chip microcomputer(SCM).The core hardware design and software design were mainly discussed .The system uses LM35 temperature sensor to collect temperature .The acquisition temperature was input into the A /D sam-pling circuit by magnified 10 times through LM358, the digital value was passed to the AT89S51 SCM by TLC549 , and the digital tube was used to display temperature .Furthermore, the results demonstrate the system have short response time, high sensitivity, stable and reliable operation when large temperature changes in the external environment.【总页数】4页(P900-902,906)【作者】王思淼;陈战胜;胡正坤【作者单位】北京联合大学应用科技学院,北京 102200;北京联合大学应用科技学院,北京 102200; 北京交通大学计算机与信息技术学院,北京 100044;北京联合大学应用科技学院,北京 102200【正文语种】中文【中图分类】TP277【相关文献】1.基于935单片机的多点温度采集及显示系统的设计 [J], 裴勇生2.基于Android系统与单片机的无线蓝牙温度采集系统 [J], 常喜;贺五洋;王立忠;车艳蕊;王广德3.基于ARM7和LM35的温度采集系统设计 [J], 沈瑞;于海勋;王耀文4.一种基于8051单片机的温度采集显示系统设计 [J], 魏磊;刘曌5.基于单片机的多点定时温度采集与图形显示 [J], 汤正新;刘哲;方成栋因版权原因,仅展示原文概要,查看原文内容请购买。

基于STM32单片机的心率计步体温显示系统设计

基于STM32单片机的心率计步体温显示系统设计

基于STM32单片机的心率计步体温显示系统设计设计一个基于STM32单片机的心率计步体温显示系统,主要包括以下几个方面的内容:系统功能设计、硬件设计、软件设计、系统测试等。

一、系统功能设计:1.心率测量功能:通过传感器测量用户心率,将数据显示在液晶屏上。

2.计步功能:通过加速度传感器测量用户的步数,将数据显示在液晶屏上。

3.体温测量功能:通过温度传感器测量用户体温,将数据显示在液晶屏上。

4.数据存储功能:将心率、步数、体温等数据保存在存储设备中,以便后续查询和分析。

二、硬件设计:1.主控芯片:选用STM32单片机作为主控芯片,具有强大的计算和控制能力。

2.传感器:选择专业的心率传感器、加速度传感器和温度传感器,提供准确的测量数据。

3.显示模块:采用液晶屏显示传感器测量的数据和其他相关信息。

4.存储设备:使用闪存芯片或SD卡作为数据的存储设备,保证数据的可靠性和安全性。

5.电源模块:设计适配器和电池两种供电方式,保证系统的持续工作时间。

三、软件设计:1.硬件初始化:对主控芯片和传感器进行初始化设置,配置相关参数。

2.数据采集:通过传感器采集心率、步数和体温等数据,并进行滤波处理。

3.数据显示:将采集到的数据通过液晶屏显示出来,包括心率、步数和体温等信息。

4.数据存储:将采集到的数据存储到闪存芯片或SD卡中,以便后续查询和分析。

5.数据上传:设计数据上传功能,可以通过USB接口或蓝牙等方式将数据上传到电脑或手机。

6.参数设置:设计参数设置功能,用户可以根据需要设置心率、步数和体温的阈值,系统会发出警报。

四、系统测试:1.系统功能测试:逐步测试各个功能模块,验证数据的准确性和功能的稳定性。

2.整体性能测试:对整个系统进行测试,验证系统的性能指标是否符合设计要求。

3.用户体验测试:邀请用户进行测试,收集用户的反馈意见和建议,进行优化和改进。

这个系统可以作为一款便携式的健康监测设备,可以方便用户随时随地监测自己的心率、步数和体温等健康数据,有助于用户及时发现和预防潜在的健康问题。

基于单片机的温度采集

基于单片机的温度采集

随着电子技术和微型计算机的迅速发展,温度测量采集系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对各行各业的发展具有很大的影响,因此温度采集系统的设计与研究具有十分重要的意义。

本系统是一个基于单片机AT89C51的数字温度计的设计,用来测量周围环境的实际温度。

整个设计系统分为4部分:单片机控制、温度传感器、LCD显示以及按键控制电路。

整个设计是以 AT89 C51为核心, AT89 C51通过 USB与 PC机连接,在 PC机上进行编程操作可控制 AT89 C51的运行, DS18 B20温度传感器是嵌入在单片机上的,LCD12864通过引脚与单片机接触,从而形成一个整体。

通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换。

当按键控制电路检测有按键按下时,首先 DS18 B20采集环境温度后,单片机就把采集到的温度进行相应的转换后,使之能够方便地在 LCD液晶显示器上输出,采用12864液晶屏显示温度的实际值。

温度是各种电子器件的一个重要指标,研究温度有利于元器件稳定地工作在适当条件下,不至于温度过高损坏原件,温度过低影响其性能,所以温度的研究是十分重要的。

温度是工业对象中主要的被控参数之一,在各个种类的企业中应用广泛的各种加热设备、反应炉设备等都需要严格的控制温度。

随着时代的进步,科技的发展,各行各业对于温度采集系统的要求也在不断提高以达到设备环境、生产流程的安全要求,也越来越成为温度采集系统的几个重要指标。

随着集成电路技术的越来越快、越来越大规模化的发展,由于单片机具有体积小、功能强、性价比高等优点,基于单片机开发出来的一系列采集、控制系统也逐渐受到广泛关注。

采取单片机作为核心,可完成对温度的采集要求。

所以基于单片机的温度采集系统被广泛应用于很多工业过程控制中,使产品既提高了产品的功能和质量,又降低了成本,简化了设计。

采用单片机设计的温度采集系统,可进行温度检测、采集及显示,对于提高生产效率,节约能源、资源都有非常重要的作用。

课设报告—基于单片机的温度检测报警

课设报告—基于单片机的温度检测报警

课设报告—基于单片机的温度检测报警一、引言随着科技的不断发展,单片机技术在各个领域得到了广泛应用。

本文将介绍一种基于单片机的温度检测报警系统。

该系统能够实时监测环境温度,并在温度超过设定阈值时发出报警信号,以保证环境的安全和稳定。

二、系统设计该系统主要由温度传感器、单片机、报警器和显示器等组成。

温度传感器负责实时采集环境温度数据,传输给单片机进行处理。

单片机根据设定的温度阈值,判断是否超过安全范围,并控制报警器发出声音或光信号。

同时,单片机还可以将温度数据显示在显示器上,方便用户实时了解环境温度情况。

三、硬件设计1. 温度传感器:选择合适的温度传感器进行温度采集。

常用的温度传感器有NTC热敏电阻和DS18B20数字温度传感器等,可根据具体需求选择适合的传感器。

2. 单片机:选择适合的单片机进行数据处理和控制。

常用的单片机有STC系列、AVR系列和PIC系列等,可根据个人熟悉程度和项目需求选择合适的单片机。

3. 报警器:选择适合的报警器进行声音或光信号发出。

常用的报警器有蜂鸣器和LED灯等,可根据项目需求选择合适的报警器。

4. 显示器:选择适合的显示器进行温度数据的显示。

常用的显示器有LCD液晶显示器和LED数码管等,可根据项目需求选择合适的显示器。

四、软件设计1. 温度采集:通过单片机的AD转换功能,将模拟温度信号转换为数字信号进行处理。

根据传感器的特性和转换公式,将采集到的数字信号转换为实际温度值。

2. 温度比较:将采集到的温度值与设定的阈值进行比较。

若温度超过阈值,则触发报警信号;若温度在安全范围内,则不进行任何操作。

3. 报警控制:当温度超过阈值时,单片机控制报警器发出声音或光信号,提醒用户温度异常。

4. 数据显示:单片机将采集到的温度数据显示在显示器上,方便用户实时了解环境温度情况。

五、系统应用该系统可以广泛应用于各个领域,如工业生产、农业温室、医疗设备等。

在工业生产中,可以用于监测机器设备的温度,及时发现异常情况并采取措施,保证生产安全和设备稳定性。

基于51单片机的多路温度采集系统

基于51单片机的多路温度采集系统

基于单片机的多路温度采集系统一、摘要:本设计利用单片机及Keil编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用Keil编程软件编程,用PROTEUS单片机仿真软件仿真。

最后制作实物,将程序下载到单片机中,利用(I/O)口采集来自多路温度的数据,根据各路温度的不同,集中准确的显示出来,并且根据所设温度的上下限通过驱动蜂鸣器进行听觉上的报警,同时还可以通过LED灯协助进行视觉上的报警,从而达到多点温度的采集和报警的目的。

以Keil编程软件和PROTEUS软件来进行仿真、分析,调试,为设计提供了一个方便、快捷的途径,为设计节约了设计时间。

关键词:AT89S52单片机温度采集报警二、设计要求1、检测的温度范围:0℃~100℃。

2、检测分辨率 0.1℃。

3、显示的多路的温度值不相互干扰,而且对各个传感器的所属温度都能进行报警。

三、硬件电路设计1、系统的设计思路本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。

单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LCD进行显示。

本系统可以实现多路温度信号采集与显示,可以使用程序来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和LED进行报警。

2、系统总体设计方案系统总体主要由对单片机进行编程后得到控制,系统的其他功能部件分别接至单片机的对应I/O口。

整体模块如图:3、主控制器本次设计选择Atmel 公司生产的AT89C51作为控制芯片。

AT89C51是高性能的CMOS8位单片机,片内含有4K bytes 的可反复擦写的只读程序存储器和128的随机存取数据存储器。

AT89系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个电路体积更小。

基于单片机的温度控制系统设计

基于单片机的温度控制系统设计

基于单片机的温度控制系统设计温度控制系统是现代生活中不可或缺的一部分,常见于家庭的的空调、电饭煲、烤箱等家用电器,以及工业生产中的各种自动化设备。

本文基于单片机设计针对室内温度控制系统的实现方法进行说明,包括温度采集、温度控制器的实现和人机交互等方面。

一、温度采集温度采集是温度控制系统的核心部分。

目前比较常见的温度采集器主要有热电偶、热敏电阻和半导体温度传感器。

在本文中我们以半导体温度传感器为例进行说明。

常见的半导体温度传感器有DS18B20、LM35等,本次实验中采用DS18B20进行温度采集。

DS18B20是一种数字温度传感器,可以直接与单片机通信,通常使用仅三根导线连接。

其中VCC为控制器的电源正极,GND为电源负极,DATA为数据传输引脚。

DS18B20通过快速菲涅耳射线(FSR)读取芯片内部的温度数据并将其转换为数字信号。

传感器能够感知的温度范围通常为-55℃至125℃,精度通常为±0.5℃。

为了方便使用,DS18B20可以通过单片机内部的1-Wire总线进行控制和数据传输。

具体实现方法如下:1.首先需要引入相关库文件,如:#include <OneWire.h> //引用1-Wire库#include <DallasTemperature.h> //引用温度传感器库2.创建实例对象,其中参数10代表连接传感器的数字I/O引脚:OneWire oneWire(10); //实例化一个1-Wire示例DallasTemperature sensors(&oneWire); //实例化一个显示温度传感器示例3.在setup中初始化模块:sensors.begin(); // 初始化DS18B204.在主循环中,读取传感器数据并将温度值输出到串口监视器:sensors.requestTemperatures(); //请求温度值float tempC = sensors.getTempCByIndex(0); // 读取温度值Serial.println(tempC); //输出温度值二、温度控制器的实现温度控制器是本次实验的关键部件,主要实现对温度的控制和调节,其基本原理是根据温度变化情况来控制输出电压或模拟脚电平,驱动继电器控制电器设备工作。

第10章 AT89C51单片机应用实例【精选】

第10章 AT89C51单片机应用实例【精选】

10.1 单片机系统设计方法
单片机系统本身就是一个硬件和软件结合非常紧密的系统, 要求设计者具有硬件设计和软件设计方面的综合能力,具有对单片机 以及各种外围设备的接口电路和驱动电路的应用能力。
单片机应用系统的设计应按照以下几个步骤来进行。
总体方பைடு நூலகம்设计
可行性分析、单片机的选型、对系统各项功能的划分。
系统硬件设计
各个模块的硬件部分设计、硬件系统功能框图、电路图及PCB板
系统软件设计
单片机系统的软件设计
系统调试
可使用仿真器进行系统功能的调试
系统完善与升级
10.2 温度采集与显示系统的设计
电源输入 8V~24VDC
电源模块
显示驱动
LED显示屏
温度传感器
单片机
温度采集与显示系统原理框图
第十章at89c51单片机应用实例101单片机系统设计方法102温度采集与显示系统的设计1021温度采集与显示系统原理1022一总线1wire数字温度传感器ds18b201023at89c51单片机与ds18b20的接口1024at89c51单片机读取ds18b20温度值的编程1025显示驱动芯片max72191026at89c51单片机与max7219的接口与编程1027温度的采集处理与显示程序101单片机系统设计方法单片机系统本身就是一个硬件和软件结合非常紧密的系统要求设计者具有硬件设计和软件设计方面的综合能力具有对单片机以及各种外围设备的接口电路和驱动电路的应用能力
第十章 AT89C51单片机应用实例
10.1 单片机系统设计方法 10.2 温度采集与显示系统的设计
10.2.1 温度采集与显示系统原理 10.2.2 一总线(1-Wire)数字温度传感器DS18B20 10.2.3 AT89C51单片机与DS18B20的接口 10.2.4 AT89C51单片机读取DS18B20温度值的编程 10.2.5 显示驱动芯片MAX7219 10.2.6 AT89C51单片机与MAX7219的接口与编程 10.2.7 温度的采集处理与显示程序
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●P1口:P1口是一个内部提供上拉电阻的8位双向1/0口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入“1"后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
图2 AT89C52单片机引脚图
2.2.2 方案的总体设计框图
温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C52,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。
图l 总体设计方框图
2.3系统器件的选择和性能介绍
2.3.1单片机的性能介绍
AT89C52单片机为40引脚双列直插式封装。
●P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
2.2.1.1 数字温度计设计方案论证
由于本设计是测温电路,可以使用温度传感器利用其感温效应,在将随被测温度变化的电压或电流采集过来,在其内部进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,将被测温度显示出来,这种设计不需要用到A/D转换电路,感温电路比较容易,所以采用了温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
该系统利用AT89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。
引脚排列和逻辑符号如图2所示:
各引脚功能简单介绍
●VCC:供电电压
●GND:接地
●P0口:P0口为一个8位漏级开路双向1/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻态输入。PO能够用于外部程序数据存储器,它可以被定义为数据地址的第八位. 在FLASH编程时,PO口作为原码输入口,当FLASH进行校验时,PO输出原码,此时PO外部电位必须被拉高
1、课程设计目的
(1)利用单片机及相应温度传感器设计单检测节点或多检测节点数字温度计
(2)精度误差:0.5摄接显示
(4)完成对设计系统测试
2、数字温度计正文
摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,使用起来相当方便,适合于我们日常生活和嵌入其它系统中,作为其AT89C52结合最简温度检测系统,该系统恶劣环境下进行现场温度测量,有广泛的应用前景。本文将介绍一种基于单片机往制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
2.2系统方案论证
该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出一种在日常生活中和工农业生产中经常用到的实现方案:
2.2.1系统设计方案
数字温度芯片DS18B20测量温度,输出信号全数字化.便于单片控制,省去传统的测温方法的很多外围电路。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单体积也不大。采用51单片机控制,软件编程的自由度大,可通过控制工作,还可以与PC机通信上传数据,另外AT89C52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段
①传统的分立式温度传感器
②模拟集成温度传感器
③智能温度传感器
目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,AT89C52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器使用ATMBL公司的AT89C52单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。
关键词:单片机,数字控制,温度计,DSIBB20, AT89C52
2.1引言
随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技构中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域己经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
相关文档
最新文档