单片机温度采集与显示
单片机温控程序

单片机温控程序
单片机温控程序是一种用于控制温度的程序,它可以实现对温度的监测和控制。
通过使用单片机及其相关的传感器和执行器,可以实现对温度的精确控制,从而满足不同场景下的温度需求。
在温控程序中,首先需要使用温度传感器来检测当前的环境温度。
传感器将实时采集到的温度值转换成数字信号,并通过单片机进行处理。
单片机会根据预设的温度范围,判断当前温度是否处于合理范围内。
当温度超过预设范围时,单片机将启动执行器,通过控制电磁阀或者风扇等设备,调节环境温度。
当温度下降到合理范围内时,单片机会停止执行器的工作,从而实现温度的控制。
在温控程序中,关键是确定合理的温度范围和控制策略。
温度范围的确定需要根据具体的场景和需求来进行调整,以确保温度的稳定性和安全性。
控制策略的选择也很重要,可以根据不同的情况采用开环控制或闭环控制等不同的方式。
除了温度控制外,温控程序还可以实现其他功能,如温度显示、报警等。
通过在单片机上添加合适的显示模块和报警器,可以实现对温度的实时显示和异常温度的报警功能,从而提高温度监测的效果和准确性。
单片机温控程序是一种重要的技术应用,可以广泛应用于各种领域,
如家庭、工业、医疗等。
通过合理的温度控制,可以提高生活和工作环境的舒适度和安全性,为人们的生活和工作带来便利和保障。
单片机 数据采集系统 实验报告

单片机数据采集系统实验报告1、被测量温度范围:0-120℃,温度分辨率为0.5℃。
2、被测温度点:2个,每5秒测量一次。
3、显示器要求:通道号2位,温度4位(精度到小数点后一位)。
显示方式为定点显示和轮流显示。
4、键盘要求:(1)定点显示设定;(2)轮流显示设定;(3)其他功能键。
设计内容:1、单片机及电源模块设计:单片机可选用AT89S51及其兼容系列,电源模块可以选用7805等稳压组件,本机输入电压范围9-12v。
2、存储器设计:扩展串行I2C存储器AT24C02。
要求:AT24C02的SCK接P3.2AT24C02的SDA接P3.42、传感器及信号转换电路:温度传感器可以选用PTC热敏电阻,信号转换电路将PTC输出阻值转换为0-5V。
3、A/D转换器设计:A/D选用ADC0832。
要求:ADC0832的CS端接P3.5ADC0832的DI端接P3.6ADC0832的DO端接P3.7ADC0832的CLK端接P2.14、显示器设计:6位共阳极LED显示器,段选(a-h)由P0口控制,位选由P2.2-P2.7控制。
数码管由2N5401驱动。
5、键盘电路设计:6个按键,P2.2-P2.7接6个按键,P3.4接公共端,采用动态扫描方式检测键盘。
6、系统软件设计:系统初始化模块,键盘扫描模块,数据采集模块,标度变换模块、显示模块等。
设计报告要求:设计报告应按以下格式书写:(1)封面;(2)设计任务书;(3)目录;(4)正文;(5)参考文献。
其中正文应包含以下内容:(1)系统总体功能及技术指标描述;(2)各模块电路原理描述;(3)系统各部分电路图及总体电路图(用PROTEL绘制);(4)软件流程图及软件清单;(5)设计总结及体会。
单片机温度采集与显示

目录1.系统分析与设计 (2)1.1系统分析 (2)1.2数字温度计总体设计方案.............................. 错误!未定义书签。
1.2.1数字温度计总体设计框图....................... 错误!未定义书签。
2.软件控制 (3)2.1作用 (3)2.2技术方案 (3)2.3 RS232通讯原理 (4)2.4单片机与PC机串口通讯 (4)3.课程设计总结 (13)4.参考文献 (14)1.系统分析与设计1.1系统分析要想实现微数字温度计的显示,从理论上分析,最简单的方法就是用开关控数码管的亮灭来控制温度的显示与否,也可以直接将温度显示在液晶显示屏上。
也就是说,只要用单片机直接控制数码管的显示温度就可以了。
为了实现更加人性化的便捷操作,通过PC上位机来显示温度更加的便利,PC上位机的显示界面可以同时显示多个温度值,极大地提高了需要严格控制温度时的场合,便于工作人员及时的调整需要,也提高了工作人员的工作效率,实现了现代工业的自动化与便利性。
1.2 数字温度计总体设计方案1.2.1数字温度计总体设计框图如图1所示。
控制器采用单片机A289S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示以及在上位机界面上显示温度值。
图1总体设计方框图主控制器:单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计。
显示电路:显示电路采用3位共阳LED数码管,从P0口输出段码,P2口输出位选。
温度传感器:DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。
DS18B20的性能特点如下:(1)独特的单线接口仅需要一个端口引脚进行通信;(2)多个DS18B2。
基于单片机的温度采集与液晶显示

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)电路、片内振荡器及时钟电路。
基于单片机的多路温度采集控制系统的设计

基于单片机的多路温度采集控制系统的设计一、系统设计思路1、系统架构:本系统的所有模块分为两个主要的部分:单片机部分和PC部分。
单片机部分是整个温度控制系统的中心模组,它负责多路温度传感器的信号采集、温度计算和显示,还有一些辅助操作,如温度上下限报警等;PC部分主要实现数据采集、分析、处理、显示等功能,与单片机的交互可通过RS485、USB等接口进行。
2、硬件设计:本系统设计确定采用AT89C52单片机作为系统的处理核心,在系统中应用TLC1543数据采集芯片,采用ADC转换器将多个温度传感器的数据采集,使系统实现多路温度检测同时显示.另外,为了实现数据采集记录,系统可以选用32K字节外部存储封装。
二、系统总控程序设计系统总计程序采用C语言进行编写,根据实际情况,主要分为以下几个主要的模块:(1)初始化模块:初始化包括外设初始化、中断处理程序初始化、定时器初始化、变量初始化等功能。
(2)温度采集模块:主要对多路温度传感器的采集、计算并存储等操作,还可以实现温度的报警功能。
(3)录波模块:提供数据的实时采集、数据的存取、数据的滤波处理等功能。
(4)通信模块:主要是用于实现数据透传,采用RS485接口与PC端的上位机联网,可实现远程调试、远程控制等功能。
(5)用户界面模块:实现数据显示功能,可以根据用户的要求显示多路温度传感器检测到的数据。
三、实验检验(1)检查系统硬件的安装是否良好;(2)采用实测温度值与系统运行的实测温度值进行比对;(3)做出多路温度信号的对比,以确定系统读取的数据是否准确;(4)检查温度报警功能是否可以正常使用,也可以调整报警范围,试验报警功能是否可靠;(5)进行通信数据采集的联网检测,确保上位机和系统可以进行实时、准确的通信。
单片机温度传感器设计报告
单片机温度传感器设计报告一、设计目的本设计旨在利用单片机和温度传感器构建一个温度测量系统,实时监测周围环境的温度,并通过显示屏显示出来。
通过这个设计,可以使用户及时了解到室内环境的温度情况,为用户提供一个舒适的居住环境。
二、设计原理1.硬件部分温度传感器:采用数字温度传感器DS18B20,具有高精度、线性度高、抗干扰性好等优点,可以提高温度测量的准确性。
单片机:采用STC89C52单片机,具有丰富的外设资源和强大的计算能力,可以实现温度数据的采集、处理和显示功能。
电源:采用稳压电源,保证系统的稳定性和可靠性。
2.软件部分主程序:通过单片机的AD转换模块,将温度传感器的模拟信号转换为数字信号,然后进行温度计算和数据处理,最后将结果显示在液晶显示屏上。
温度转换算法:根据温度传感器的数据手册,利用公式将采集到的数字信号转换为实际温度值。
实时显示功能:通过控制单片机的定时器和中断,实现对温度数据的实时采集和显示。
三、设计步骤1.硬件连接将温度传感器的VCC接到单片机的5V电源引脚,GND接到单片机的地引脚,DQ接到单片机的P1口。
将液晶显示屏的VCC接到单片机的5V电源引脚,GND接到单片机的地引脚,RS、RW、E分别接到单片机的P2.0、P2.1、P2.2口,D0-D7接到单片机的P0口。
将单片机的P3口接到稳压电源的输出端,作为单片机的电源。
2.软件编程使用Keil C51软件进行编程,编写主程序和温度转换算法。
通过对单片机的中断和定时器的配置,实现对温度数据的实时采集和显示。
通过对液晶显示屏的控制,将温度数值显示在屏幕上。
同时,可以设置温度报警功能,当温度超过设定的范围时,通过蜂鸣器发出警告声。
四、实验结果经过上述设计和调试,实验结果显示良好。
温度传感器能够准确地采集到周围环境的温度值,并通过液晶显示屏实时显示出来。
当温度超过设定范围时,蜂鸣器发出警告声,提醒用户采取相应的措施。
整个系统工作稳定、准确性高、实用性强。
基于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单片机为核心控制元件介绍了与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单片机实验温度采集控制报告
(一)试验要求
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、课程设计目的(1)利用单片机及相应温度传感器设计单检测节点或多检测节点数字温度计(2)精度误差:0.5摄氏度以内;测温范围:10-50摄氏度(3)LED数码管或LCD直接显示(4)完成对设计系统测试2、数字温度计正文摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,使用起来相当方便,适合于我们日常生活和嵌入其它系统中,作为其AT89C52结合最简温度检测系统,该系统恶劣环境下进行现场温度测量,有广泛的应用前景。
本文将介绍一种基于单片机往制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
关键词:单片机,数字控制,温度计,DSIBB20, AT89C522.1引言随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。
在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技构中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域己经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段①传统的分立式温度传感器②模拟集成温度传感器③智能温度传感器目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。
社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,AT89C52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。
与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。
该设计控制器使用ATMBL公司的AT89C52单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。
2.2系统方案论证该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出一种在日常生活中和工农业生产中经常用到的实现方案:2.2.1系统设计方案数字温度芯片DS18B20测量温度,输出信号全数字化.便于单片控制,省去传统的测温方法的很多外围电路。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单体积也不大。
采用51单片机控制,软件编程的自由度大,可通过控制工作,还可以与PC机通信上传数据,另外AT89C52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
该系统利用AT89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。
2.2.1.1 数字温度计设计方案论证由于本设计是测温电路,可以使用温度传感器利用其感温效应,在将随被测温度变化的电压或电流采集过来,在其内部进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,将被测温度显示出来,这种设计不需要用到A/D转换电路,感温电路比较容易,所以采用了温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
2.2.2 方案的总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C52,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。
图l 总体设计方框图2.3系统器件的选择和性能介绍2.3.1单片机的性能介绍AT89C52单片机为40引脚双列直插式封装。
引脚排列和逻辑符号如图2所示:各引脚功能简单介绍●VCC:供电电压●GND:接地●P0口:P0口为一个8位漏级开路双向1/O 口,每个管脚可吸收8TTL 门电流。
当P1口的管脚写“1”时,被定义为高阻态输入。
PO 能够用于外部程序数据存储器,它可以被定义为数据地址的第八位. 在FLASH 编程时,PO 口作为原码输入口,当FLASH 进行校验时,PO 输出原码,此时PO 外部电位必须被拉高●P1口:P1口是一个内部提供上拉电阻的8位双向1/0口,P1口缓冲器能接收输出4TTL 门电流.P1口管脚写入“1"后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH 编程和校验时,P1口作为第八位地址接收。
图2 AT89C52单片机引脚图单片机温度传感器 L E D 显示温度时钟震荡温度报警 单片机复位●P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。
作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。
当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
●P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入,“1”后,它们被内部上拉为高电平,并用作输入。
作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故,P3口也可作为AT89C52的一些特殊功能口:P3.0 RDX(串行输入口)P3.1 RDX(串行输出口)P3.2 INTO(外部中断0)P3.3 INTO(外部中断1)P3.4 T0(记时器0外部输入)P3.5 Tl(记时器1外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)同时P3口同时为闪烁编程和编程校验接收一些控制信号。
●RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
●ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,Al王端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部偷出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFRBEH地址上置0。
此时,ALE只有在执行MOVX或MOVC指令时ALE 才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
●PSEN: 外部程序存储器的选通信号。
在由外部程序存储器取址期间,每个机器周期PSEN两次有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现.●EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
●XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入●XTAL2:来自反向振荡器的输出。
2.3.2温度传感器的选择和性能介绍这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件2.3.2.1DS18B20性能介绍DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。
DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
被测温度用符号扩展的16位数字量方式串行输出:其工作电源既可以在远端引入,也可以采用寄生电源方式产生:多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20的性能特点如下:●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯●DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内●适应电压范围更宽,电压范围:3.0-5.5V,在寄生电源方式下可由数据线供电●测温范围-55℃~+125℃,在-10~+85℃时精度为+/-0.5℃●零待机功耗●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快●用户可定义报警设置●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件●测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作以上特点使DSISB20非常适用与多点、远距离温度检测系统。