基于51单片机环境温度检测及显示
基于51单片机的温度报警系统设计
基于51单片机的温度报警系统设计温度报警系统是一种常见的安全监控系统,它可以监测环境温度,并在温度达到设定阈值时发出警报。
本文将介绍一个基于51单片机的温度报警系统的设计。
一、系统设计目标和功能本系统的设计目标是实时监测环境温度,并在温度达到预设阈值时发出警报。
具体功能包括:1.温度采集:通过温度传感器实时采集环境温度。
2.温度显示:将采集到的温度值通过数码管显示出来。
3.温度比较:将采集到的温度值与预设的阈值进行比较。
4.报警控制:当温度超过预设的阈值时,触发警报控制器。
5.报警指示:通过蜂鸣器或者LED灯等方式进行报警提示。
二、硬件设计本系统的硬件设计包括主控部分和外围部分。
1. 主控部分:使用51单片机作为主控芯片,通过AD转换器和温度传感器实现温度数据采集。
采用片内RAM和Flash存储器对数据进行处理和存储。
2.外围部分:包括数码管显示和报警指示。
使用数码管模块将温度值进行显示,使用LED灯或者蜂鸣器进行报警指示。
三、软件设计本系统的软件设计包括程序的编写和算法的设计。
1.程序编写:使用C语言编写单片机的程序。
程序主要包括温度采集、温度比较、报警控制和报警指示等功能。
2.算法设计:根据采集到的温度值与预设阈值进行比较,判断是否触发警报控制器。
同时,根据警报控制器的状态,控制报警指示的开关。
四、系统测试完成硬件和软件设计后,需要进行系统测试以验证系统的正确性和稳定性。
1.硬件测试:对硬件电路进行测试,包括电源、信号传输和外围器件等方面。
测试时需要注意电源的稳定性,信号的准确性和外围部件的工作状态。
2.软件测试:进行程序的运行测试,检查各功能是否正常运行。
特别关注温度采集和比较、报警控制和报警指示等功能。
五、系统性能分析对系统的性能进行分析,包括温度采集的准确性、报警控制的响应时间和报警指示的稳定性等方面。
1.温度采集准确性:主要受温度传感器的精度和ADC转换的准确性影响。
在设计中要选择合适的传感器和ADC。
基于51单片机的温度监测系统(DS18B20)
DS18B20读时序
所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用,总线恢复为 高
配置寄存器
8 位 CRC 生成器
DS18B20的时序
DS18B20复位时序
DS18B20的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主 机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。在初始化步骤中,总线 上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收 模式。当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测 到上升沿后等待15到60us,发出存在脉冲,拉低总线60-240us至此,初始化和存在时序 完毕。时序图如下:
1.主控制器电路和测温
电路的设计
主控制器电路由AT89S52 及外围时钟和复位电路构成, 测温电路由DS18B20、报警 电路组成。AT89C52是此硬 件电路设计的核心,通过 AT89S52的管脚P2.7与 DS18B20相连,控制温度的 读出和显示。硬件电路的功 能都是与软件编程相结合而 实现的。具体电路原理图如 右图2所示。
送1,以拉低总线的方式表示发送0.当发送0的时候,DS18B20在读时隙的末期将会释放总线,总线
将会被上拉电阻拉回高电平(也是总线空闲的状态)。DS18B20输出的数据在下降沿(下降沿产 生读时隙)产生后15us后有效。因此,主机释放总线和采样总线等动作要在15μs内完成。
基于51单片机环境温度检测及显示
摘要本次的温度检测设计及显示以AT89C51单片机系统进行温度采集,AT89C51单片机系统进行控制,温度信号由温度传感器18b20采集,通过8255键盘控制输入89C51,温度数据传输采用12864液晶显示模块来实现。
本次设计实现了:⏹检测温度范围:0℃--100℃。
⏹检测器单元可显示检测的温度值。
⏹采用12864液晶显示模块显示。
⏹采用8255控制键盘。
本次的温度检测及显示设计主要研究了单片机与12864液晶显示模块、温度检测芯片18b20接口之间的作用,学会根据外围电路设计进行软件编程及系统调试,练习撰写实训总结报告,培养我们运用专业知识设计智能仪器的能力。
为以后的改进和发展奠定了很好的基础。
关键词:温度检测、AT89C51单片机系统、温度传感器18b20、8255键盘、12864液晶显示模块目录第一章绪论 (3)1.1 环境温度检测的概述 (3)1.2 环境温度检测的现状和发展前景 (3)1.2.1 环境温度检测的现状 (3)1.2.2 环境温度检测的发展前景 (3)1.3 环境温度检测研究的主要内容 (4)第二章环境温度检测及显示总体的设计方案 (5)2.1 环境温度检测及显示的各个部分的设计方案 (5)2.1.1 测量部分 (5)2.1.2 远程通信部分 (5)2.1.3 显示部分 (5)2.2 环境温度检测及显示的总体的设计结构 (6)第三章环境温度检测及显示主要模块的组成 (7)3.1 温度检测芯片DS18B20模块 (7)3.1.1 DS18B20的技术参数 (7)3.1.2 DS18B20数字温度计的封装与外形尺寸 (7)3.1.3 DS1820使用中注意事项 (7)3.2 12864液晶显示模块 (7)3.2.1 OCM4X8C汉字液晶屏引脚表 (8)3.2.2 OCM4X8C接口方式与时序 (8)3.3 8255按键模块 (9)3.3.1 引脚说明 (9)3.3.2 内部结构 (10)3.3.3 工作方式控制电路 (10)3.3.4 总线数据缓冲器 (11)3.3.5 8255三种基本工作方式 (11)3.3.6 读/写控制逻辑电路 (11)第四章系统的软件实现 (12)4.1 主程序的流程图 (12)4.2 按键的流程图 (12)4.3 时间功能的流程图 (13)第五章环境温度检测系统显示 (14)5.1 应用DXP2004绘制环境温度检测及显示原理图 (14)5.1.1 电路原理图的PCB显示 (14)5.2 环境温度显示 (15)5.2.1 环境温度显示使用和操作说明 (15)第六章心得体会 ........................................................................错误!未定义书签。
基于51单片机的温度检测系统_单片机C语言课题设计报告
单片机C语言课题设计报告设计题目:温度检测电气系2011级通信技术一班级通信技术一班通才达识,信手拈来通才达识,信手拈来1摘要本课题以51单片机为核心实现智能化温度测量。
利用18B20温度传感器获取温度信号,将需要测量的温度信号自动转化为数字信号,利用单总线和单片机交换数据,最终单片机将信号转换成LCD 可以识别的信息显示输出。
基于STC90C516RD+STC90C516RD+的单片机的智能温度检测系统,的单片机的智能温度检测系统,设计采用18B20温度传感器,其分辨率可编程设计。
本课题设计应用于温度变化缓慢的空间,综合考虑,以降低灵敏度来提高显示精度。
设计使用12位分辨率,因其最高4位代表温度极性,故实际使用为11位半,位半,而温度测量范围为而温度测量范围为而温度测量范围为-55-55-55℃~℃~℃~+125+125+125℃,℃,则其分辨力为0.06250.0625℃。
℃。
设计使用LCD1602显示器,可显示16*2个英文字符,显示器显示实时温度和过温警告信息,和过温警告信息,传感器异常信息设。
传感器异常信息设。
传感器异常信息设。
计使用蜂鸣器做警报发生器,计使用蜂鸣器做警报发生器,计使用蜂鸣器做警报发生器,当温度超过当温度超过设定值时播放《卡农》,当传感器异常时播放嘟嘟音。
单片机C 语言课题设计报告语言课题设计报告电动世界,气定乾坤2目录一、设计功能一、设计功能................................. ................................. 3 二、系统设计二、系统设计................................. .................................3 三、器件选择三、器件选择................................. .................................3 3.1温度信号采集模块 (3)3.1.1 DS18B20 3.1.1 DS18B20 数字式温度传感器数字式温度传感器..................... 4 3.1.2 DS18B20特性 .................................. 4 3.1.3 DS18B20结构 .................................. 5 3.1.4 DS18B20测温原理 .............................. 6 3.1.5 DS18B20的读写功能 ............................ 6 3.2 3.2 液晶显示器液晶显示器1602LCD................................. 9 3.2.1引脚功能说明 ................................. 10 3.2.2 1602LCD 的指令说明及时序 ..................... 10 3.2.3 1602LCD 的一般初始化过程 (10)四、软件设计四、软件设计................................ ................................11 4.1 1602LCD 程序设计流程图 ........................... 11 4.2 DS18B20程序设计流程图 ............................ 12 4.3 4.3 主程序设计流程图主程序设计流程图................................. 13 五、设计总结五、设计总结................................. ................................. 2 六、参考文献六、参考文献................................. ................................. 2 七、硬件原理图及仿真七、硬件原理图及仿真......................... .........................3 7.1系统硬件原理图 ..................................... 3 7.2开机滚动显示界面 ................................... 4 7.3临界温度设置界面 ................................... 4 7.4传感器异常警告界面 (4)电气系2011级通信技术一班级通信技术一班通才达识,信手拈来通才达识,信手拈来3温度温度DS18B20 LCD 显示显示过温函数功能模块能模块传感器异常函数功能模块数功能模块D0D1D2D3D4D5D6D7XT XTAL2AL218XT XTAL1AL119ALE 30EA31PSEN29RST 9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51X1CRYST CRYSTAL ALC122pFC222pFGNDR110kC31uFVCCGND234567891RP1RESPACK-8VCC0.0DQ 2VCC 3GND 1U2DS18B20R24.7K LCD1LM016LLS2SOUNDERMUC八、程序清单八、程序清单................................. .................................5 一、设计功能·由单片机、温度传感器以及液晶显示器等构成高精度温度监测系统。
基于51单片机的温度检测系统程序及仿真概要
基于51单片机的温度检测系统程序及仿真概要
1. 系统概述
本系统采用51单片机作为控制核心,通过外接温度传感器进行温度检测,并在数码管上显示当前温度值。
同时,当温度超过设定阈值时,通过蜂鸣器进行警示。
2. 系统硬件设计
本系统采用DS18B20温度传感器作为温度检测模块,通过单总线连接到51单片机的
P2.0口,同时将P2.1口连接到蜂鸣器。
数码管采用共阳极数码管,通过P0口进行控制。
系统程序采用C语言编写,在主函数中进行如下操作:
(1) 初始化DS18B20,设置温度传感器工作模式。
(2) 读取温度传感器输出的温度值,进行温度判断。
(3) 将温度值转换为数码管显示的格式并显示在数码管上。
(4) 如果温度超过设定阈值,触发蜂鸣器进行警示。
(5) 循环执行以上操作。
4. 系统仿真
5. 总结
本系统基于51单片机实现了温度检测功能,并且能够进行数码管显示以及蜂鸣器警示,具有一定的实用价值。
本系统的设计和仿真过程对于初学者来说都是一个非常好的练手项目,也有助于掌握单片机的基本编程技能和原理知识。
基于51单片机的水温测控系统实验报告
摘要本次实验是软硬件相结合的实验,通过传感器得到的阻值与其它电阻,可以搭建一个电桥,将水温转化为电压,然后通过放大器将电压放大到所需要的值,将所得的电压送入单片机的AD转换电路,将模拟信号转换成数字信号,从而在单片机的液晶屏上显示当前的温度。
此烧水壶是可控制的,即设定温度,使水加热到设定温度且保温,此控制算法采用PID控制算法来控制继电器的通断,来保证水温恒定在设定温度处。
一、设计要求1.传感器:Pt100铂热电阻2.测量放大器:自己设计与搭建3.被控对象:400W电热杯,约0.5公斤自来水4.执行机构:12V驱动,5A负载能力的继电器5.控制系统:51单片机6.控制算法:PID7.温度范围:环境温度~100度8.测量误差1度,控制误差2度二、设计原理及方案1.热电阻传感器热电阻传感器是利用导体或半导体的电阻值随温度变化而变化的原进行测温的。
热电阻的工作原理:温度升高,金属内部原子晶格的振动加剧,从而使金属内部的自由电子通过金属导体时的阻碍增大,宏观上表现出电阻率变大,电阻值增加,我们称其为正温度系数,即电阻值与温度的变化趋势相同。
2.实验原理框图3.测量放大器电路图说明:电位器R10用来调节偏置电压,而电位器R7则用来调节增益。
实验时,用R10来调节零点,用R7来调节满度。
该电路将0℃-100℃转换为0-5V 电压。
上述电路图采用仪表放大器,将铂热电阻两端的电压U2与电位器R10两端的电压U1差放大,放大器输出电压U0与电压差的关系为:)-)(2(1127248U U R RR R U o ⨯+=由铂热电阻阻值与水温的关系可知,铂热电阻的范围是ΩΩ140~100。
则100)10012(12-140)140(1212)-(100)10012(12-100)10012(1212⨯+⨯+≤≤⨯+⨯+K K U U K K 整理得:V U U 04.0)-(012≤≤而仪表放大器的输出电压为0~5V ,所以放大倍数大约为:5/0.04=125。
基于51单片机的温度检测装置的设计
基于51单片机的温度检测装置的设计一、绪论温度检测是电子技术应用的一项基本工作之一。
无论在工业生产中还是家庭日常生活中,温度检测都有着重要的作用。
设计一种简单、实用的温度检测装置,对于提高生产效率、提高安全性等方面都有着重要的作用。
目前市面上有很多种温度检测装置,如数字式温度计、红外线温度计等。
而基于51单片机的温度检测装置,由于其设计简单、易于实现、成本低廉、可靠、灵活等优点,得到了广泛的应用和研究。
二、设计目标1.能实时采集并显示当前温度值;2.具备报警功能,当温度超出设定范围时,能够及时进行报警;3.能够保存历史最高温度值,并进行显示。
三、硬件设计1.温度传感器:DS18B20;2.单片机:STC89C52;3.显示器:1602液晶显示屏;4.报警器:有源蜂鸣器。
1.温度采集与显示模块;2.温度报警模块;3.历史最高温度显示模块。
具体实现如下:1.温度采集与显示模块DS18B20_Init(); //初始化温度传感器LcdIni(); //初始化液晶显示屏然后,在一个while循环中,不断采集温度值,并将其显示在液晶显示屏上,代码如下:while(1){Ds1820Convert(); //触发温度采集Ds1820ReadTemp(temp); //读取温度值LcdCommand(0x80); //光标定位到第一行第一列LcdShowStr("Temp:"); //显示“Temp:”字样LcdShowData(temp[1]); //显示温度值的百位数LcdShowData(temp[0]); //显示温度值的十位数LcdShowData(temp[2]); //显示温度值的个位数LcdShowStr("C "); //显示“C”字母和两个空格}2.温度报警模块为了实现温度报警功能,需要定义一个阈值,并比较当前温度值是否超过了这个阈值。
如果超过了阈值,则触发报警。
基于51单片机的温度控制系统设计
基于51单片机的温度控制系统设计引言:随着科技的不断发展,温度控制系统在现代生活中应用广泛,例如空调、冰箱、温室等。
本文基于51单片机设计一个简单的温度控制系统,用于控制温度在一些合适的范围内。
一、系统功能设计本系统主要包括以下功能:1.温度采集:通过温度传感器实时采集环境温度数据;2.温度显示:将采集到的温度数据显示在液晶屏上,方便用户查看;3.温度控制:当环境温度超过设定的范围时,系统将自动启动风扇或制冷装置来降低温度;4.温度报警:当环境温度超过设定范围时,系统将通过报警器发出警报。
二、系统硬件设计1.51单片机2.LM35温度传感器:用于采集环境温度数据;3.ADC0804模数转换芯片:将LM35传感器输出的模拟电压转换为数字信号;4.LCD1602液晶屏:用于显示温度数据和系统状态;5. Buzzer报警器:用于发出警报;6.风扇或制冷装置:用于降低温度。
三、系统软件设计1.初始化:设置各个硬件模块的工作模式和初始化参数;2.温度采集:通过ADC0804芯片将LM35传感器输出的模拟信号转换为数字信号;3.温度显示:将采集到的数字信号转换为温度值,并通过LCD1602液晶屏显示;4.温度控制:根据设定的温度上下限值,判断当前温度是否超过范围,若超过则启动风扇或制冷装置进行温度控制;5. 温度报警:当温度超过设定范围时,通过Buzzer报警器发出声音警报;6.系统循环:以上功能通过循环执行,实现实时监控和控制。
四、系统流程图软件设计流程如下所示:```开始初始化系统循环执行以下步骤:采集温度数据显示温度数据温度控制判断温度报警判断结束```五、系统总结本文基于51单片机设计了一个简单的温度控制系统,通过温度采集、显示、控制和报警功能,实现了温度的实时监控和控制。
该系统可以广泛应用于家庭、办公室、温室等环境的温度控制,提高生活质量和工作效率。
六、系统展望本系统可以进行进一步的优化和扩展,例如添加温度传感器的校准功能,提高温度采集的精度;增加温度曲线图显示功能,方便用户了解温度变化趋势;引入无线通信模块,使用户可以通过手机或电脑远程监控和控制温度等。
基于51单片机的数字温度计设计与实现
基于51单片机的数字温度计设计与实现数字温度计是一种能够测量环境温度并将其以数字形式显示出来的仪器。
它被广泛应用于各种领域,例如家庭、工业和实验室。
本文将介绍基于51单片机的数字温度计的设计与实现。
首先,我们需要了解51单片机的基本知识。
51单片机是一种8位微控制器,具有强大的计算和控制能力。
它是目前应用最广泛的单片机之一。
接下来,我们需要选择合适的温度传感器。
常用的温度传感器有热电偶、半导体温度传感器和热敏电阻等。
在本设计中,我们将使用LM35半导体温度传感器。
LM35具有精确度高、响应快的特点,非常适合用于数字温度计。
设计硬件电路是实现数字温度计的重要一步。
电路的核心是将传感器输出的模拟电压转换成数字信号。
我们可以使用ADC(模数转换器)将模拟信号转换为数字信号。
51单片机的内部有一个8位ADC,可以用来实现此功能。
在编程方面,我们可以使用C语言来编写单片机的程序。
使用51单片机的开发环境,如Keil C等,可以帮助我们更方便地编写程序。
算法的编写是实现数字温度计的关键。
我们需要将ADC转换出的数字信号进行处理,得到具体的温度数值。
这个数值可以通过一些公式来计算得出。
以LM35传感器为例,根据其数据手册可以得知,输出电压与温度之间的关系为温度(℃)=(传感器输出电压-0.5)/0.01。
通过这个公式,我们可以将ADC转换出的数字信号转换为实际的温度数值。
最后,我们需要将得到的温度数值以数字形式显示出来。
此时,我们可以使用数码管来进行显示。
51单片机具有多个IO口,可以直接驱动数码管进行数字的显示。
综上所述,基于51单片机的数字温度计的设计与实现主要包含选择温度传感器、设计硬件电路、编写单片机程序和显示温度数值这几个步骤。
通过合理的硬件设计和算法编写,我们可以实现一个准确可靠的数字温度计。
同时,我们也可以通过不断改进和增加功能,使其适应更多的应用场景。
希望本文对您的数字温度计设计与实现提供了一些参考。
基于51单片机的数字温度计
引言:数字温度计是一种基于51单片机的温度测量装置,它通过传感器感知环境的温度,并使用单片机将温度值转换为数字形式,并显示在液晶屏上。
本文将详细介绍数字温度计的设计原理、硬件连接、软件编程以及应用领域。
概述:数字温度计基于51单片机的设计理念,其基本原理是通过传感器将温度转换为电信号,然后通过ADC(模数转换器)将电信号转换为数字信号,最后使用单片机将数字信号转换为温度值。
同时,数字温度计还将温度值显示在液晶屏上,方便用户直观地了解环境温度。
正文内容:1. 硬件连接:1.1 使用温度传感器感知环境温度:常用的温度传感器有NTC热敏电阻和DS18B20数字温度传感器。
通过将传感器连接到51单片机的引脚上,可以实现对环境温度的感知。
1.2 连接ADC进行模数转换:ADC是将模拟信号转换为数字信号的关键部件。
通过将51单片机的引脚连接到ADC芯片的输入端,可以将模拟的温度信号转换为数字信号。
1.3 连接液晶屏显示温度值:通过将51单片机的引脚连接到液晶屏的控制引脚和数据引脚,可以将温度值以数字形式显示在液晶屏上。
2. 软件编程:2.1 初始化引脚和ADC:在软件编程中,需要初始化51单片机的引脚设置和ADC的工作模式。
通过设置引脚为输入或输出,以及设置ADC的参考电压和工作模式,可以确保硬件正常工作。
2.2 温度测量算法:根据传感器的工作原理和电压-温度特性曲线,可以编写相应的算法将ADC测得的电压值转换为温度值。
例如,对于NTC热敏电阻,可以使用Steinhart-Hart公式进行温度计算。
2.3 温度值显示:将温度值以数字形式显示在液晶屏上。
通过设置液晶屏的控制引脚和数据引脚,可以控制液晶屏的显示内容,并将温度值以数字形式显示在屏幕上。
3. 基于51单片机的数字温度计应用:3.1 家庭温度监测:数字温度计可以安装在家庭中的不同区域,实时监测室内温度,并通过数字显示提供直观的温度信息。
这对于家庭的舒适性和节能都有重要意义。
基于51单片机的温度报警器设计
基于51单片机的温度报警器设计引言:温度报警器是一种用来检测环境温度并在温度超过设定阈值时发出警报的装置。
本文将基于51单片机设计一个简单的温度报警器,以帮助读者了解如何利用单片机进行温度监测和报警。
一、硬件设计硬件设计包括传感器选择、电路连接以及报警装置的设计。
1.传感器选择温度传感器的选择非常重要,它决定了监测温度的准确性和稳定性。
常见的温度传感器有热敏电阻(如NTC热敏电阻)、热电偶以及数字温度传感器(如DS18B20)。
在本设计中,我们选择使用DS18B20数字温度传感器,因为它具有高精度和数字输出的优点。
2.电路连接将DS18B20与51单片机连接,可以采用一根三线总线(VCC、GND、DATA)的方式。
具体连接方式如下:-将DS18B20的VCC引脚连接到单片机的VCC引脚(一般为5V);-将DS18B20的GND引脚连接到单片机的GND引脚;-将DS18B20的DATA引脚连接到单片机的任意IO引脚。
3.报警装置设计报警装置可以选择发出声音警报或者显示警报信息。
在本设计中,我们选择使用蜂鸣器发出声音警报。
将蜂鸣器的一个引脚连接到单片机的任意IO引脚,另一个引脚连接到单片机的GND引脚。
二、软件设计软件设计包括温度读取、温度比较和报警控制的实现。
1.温度读取通过51单片机的IO引脚和DS18B20进行通信,读取DS18B20传感器返回的温度数据。
读取温度数据的具体步骤可以参考DS18B20的通信协议和单片机的编程手册。
2.温度比较和报警控制将读取到的温度数据和设定的阈值进行比较,如果温度超过阈值,则触发报警控制。
可以通过控制蜂鸣器的IO引脚输出高电平或低电平来控制蜂鸣器是否发出声音警报。
三、工作原理整个温度报警器的工作原理如下:1.首先,单片机将发出启动信号,要求DS18B20开始温度转换。
2.单片机等待一段时间,等待DS18B20完成温度转换。
3.单片机向DS18B20发送读取信号,并接收DS18B20返回的温度数据。
基于51单片机的温度控制系统设计
基于51单片机的温度控制系统设计引言温度控制系统在现代生活中起着至关重要的作用。
它可以用于各种应用,如恒温器、空调、冰箱等。
本文将介绍基于51单片机的温度控制系统设计,详细讨论系统的架构、工作原理以及实现过程。
系统架构温度控制系统基于51单片机的设计,主要由以下几个部分组成: 1. 温度传感器:用于检测环境温度。
2. 51单片机:作为系统的核心控制器,负责接收温度传感器的数据并进行处理。
3. 显示模块:用于显示当前温度和控制状态。
4. 控制模块:根据温度数据和设定值,控制相关设备的开关。
工作原理温度控制系统的工作原理如下: 1. 温度传感器实时检测环境温度,并将数据传输给51单片机。
2. 51单片机接收到温度数据后,与设定值进行比较。
3. 如果当前温度高于设定值,51单片机将控制模块输出高电平信号,使相关设备工作。
4. 如果当前温度低于设定值,51单片机将控制模块输出低电平信号,停止相关设备工作。
5. 同时,51单片机将当前温度和控制状态发送给显示模块进行显示。
系统设计步骤以下是基于51单片机的温度控制系统设计的步骤:步骤一:电路设计1.连接温度传感器到51单片机的模拟输入引脚。
2.连接显示模块到51单片机的数字输出引脚。
3.连接控制模块到51单片机的数字输出引脚。
步骤二:编程设计1.初始化温度传感器和显示模块。
2.循环执行以下步骤:1.读取温度传感器的模拟输入值。
2.将模拟输入值转换为温度值。
3.与设定值进行比较,确定控制状态。
4.控制模块输出相应的电平信号。
5.将当前温度和控制状态发送给显示模块进行显示。
步骤三:调试和测试1.连接电路并烧录程序到51单片机。
2.使用温度源模拟不同温度条件,观察系统的控制效果。
3.根据实际测试结果,调整设定值和控制算法,以提高系统的稳定性和精度。
结论基于51单片机的温度控制系统设计可以实现对环境温度的精确控制。
通过合理的电路设计和编程实现,系统可以实时检测温度并根据设定值自动控制相关设备的工作状态。
基于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单片机的系统设计的一般流程、方法和技巧,为我们解决工程实际问题打下坚实的基础。
基于51单片机数字温度计系统设计与实现
基于51单片机数字温度计系统设计与实现数字温度计是一种可以测量环境温度并将结果以数字方式显示的设备。
在本次任务中,我们将基于51单片机设计和实现一个数字温度计系统。
本文将介绍数字温度计的原理、硬件设计、软件设计以及系统的实施过程。
首先,让我们来了解一下数字温度计的工作原理。
数字温度计通过传感器获取环境温度的模拟信号,然后将其转换为数字信号进行处理,并最终在数字显示器上显示温度值。
通常,我们使用的传感器是温度敏感电阻或数字温度传感器。
接下来,我们将讨论硬件设计。
在本次任务中,我们使用的是51单片机作为主控制器。
我们需要连接一个温度传感器来测量温度,并将温度值转换为数字信号。
同时,我们还需要连接一个数字显示器,用于显示温度值。
为了实现这些功能,我们需要设计一个电路板,并正确布局电子元件。
另外,我们还需要通过键盘或按钮来控制系统的操作,例如切换温度单位等。
在软件设计方面,我们需要编写程序来完成以下任务:首先,我们需要初始化51单片机的引脚和中断。
然后,我们需要编写一个温度转换的函数,将传感器输出的模拟信号转换为数字信号。
接下来,我们需要编写一个显示函数,将转换后的数字温度值显示在数字显示器上。
最后,我们还可以添加一些功能,例如设置温度单位(摄氏度或华氏度)和存储温度数据等。
在系统实施过程中,我们需要按照以下步骤进行操作:首先,进行硬件的连接和组装。
确保所有电子元件正确连接并固定在电路板上。
然后,烧录编写好的程序到51单片机中。
接下来,我们可以通过设置开关或按键来控制系统的操作。
最后,我们可以测试系统的功能和性能,确保数字温度计正常工作。
值得注意的是,在设计和实现数字温度计系统时,我们需要考虑一些问题。
例如,温度传感器的精度和响应时间,数字显示器的显示精度和分辨率,以及系统的稳定性和可靠性等。
通过合理的设计和选择高质量的元件,我们可以提高系统的性能和可靠性。
总结起来,本次任务中我们基于51单片机设计和实现了一个数字温度计系统。
基于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。
基于51单片机的温湿度检测系统设计与实现
3、无线通信模块
本系统的无线通信模块采用nRF24L01无线通信芯片。nRF24L01是一款具有 2.4GHz全球开放频率的无线通信芯片,具有低功耗、高速率、高稳定性等特点。 它将主控制器处理后的数据通过无线方式发送给接收器。
4、电源模块
本系统的电源模块采用9V电池供电。我们将9V电池通过稳压器转换为5V电源, 为整个系统提供稳定的电力支持。
三、测试与结果分析
为了验证本系统的可靠性和准确性,我们进行了一系列的测试。测试结果表 明,本系统能够准确快速地采集环境中的温湿度数据,并且能够稳定地将数据上 传至计算机或其他数据采集设备。同时,本系统的按键电路和液晶显示电路也表 现良好,用户可以通过按键调整系统的参数设置,并直观地查看温湿度数据。
2、液晶显示屏
为了方便用户直观地查看温湿度数据,本系统选用了一块16×2字符型液晶 显示屏。液晶屏的驱动电路简单易懂,且具有较低的功耗。
3、按键电路
为了便于用户对温湿度检测系统的参数进行设置,本系统加入了一个按键电 路。用户可以通过按键对系统的采样间隔、数据上传频率等参数进行设置。
4、串口通信电路
图1主程序流程图
2.温湿度采集模块
温湿度采集模块主要负责通过DHT11传感器采集环境中的温湿度数据。该模 块首先对DHT11传感器进行初始化,然后通过单总线接口接收传感器输出的温湿 度数据,最后对数据进行处理并存储。
3、液晶显示模块
液晶显示模块主要负责将温湿度数据显示在液晶屏上。该模块首先对液晶屏 进行初始化,然后根据主程序传递过来的温湿度数据,控制液晶屏的字符输出。
三、软件设计
本系统的软件设计主要分为以下几个步骤:
1、系统初始化:在系统上电后,首先进行各模块的初始化操作,包括DHT11 传感器、AT89C51单片机、nRF24L01无线通信芯片等。
基于51单片机的数字温度计设计及应用
基于51单片机的数字温度计设计及应用数字温度计是一种测量环境温度的设备,它使用数字技术来转换和显示温度值。
基于51单片机的数字温度计设计及应用,我们将使用51单片机作为主控芯片,采集传感器的温度数据并将其转换为数字信号,然后通过数码管显示出来。
首先,我们需要选择合适的温度传感器。
常见的温度传感器有热敏电阻、热电偶和数字温度传感器等。
在本设计中,我们将使用DS18B20数字温度传感器。
DS18B20具有高精度、数字输出、通信简单等优点,非常适合于数字温度计的设计。
接下来,我们需要设计硬件电路。
首先,将DS18B20传感器连接到51单片机的GPIO引脚,并通过一条数据线进行通信。
接下来,将51单片机的引脚连接到数码管显示模块,用于将温度值显示出来。
此外,还可以添加其他功能,如按键开关用于控制菜单切换、蜂鸣器用于报警等。
在软件设计上,首先需要初始化51单片机的GPIO引脚,配置为输入或输出模式,通信时需要配置为模拟输入模式。
然后,利用51单片机的定时器模块生成一定频率的时钟信号,用于与DS18B20传感器通信。
在温度读取过程中,我们需要发送一系列的指令给DS18B20传感器,然后接收传感器返回的温度值。
根据DS18B20传感器的数据手册,我们可以编写相应的C语言代码进行数据的读取和解析。
接着,我们需要将读取到的温度值进行转换和显示。
由于DS18B20传感器输出的温度值为16位二进制补码形式,我们可以使用移位和逻辑运算等操作进行转换。
转换后的温度值可以直接显示在数码管上,通过扫描显示的方式实时更新温度数值。
在应用方面,基于51单片机的数字温度计可以广泛应用于各种温度测量场景。
例如,可以应用于室内温度测量,工业过程控制,农业温室监测等。
由于51单片机具有低功耗、成本低廉等优点,这种数字温度计可以在各种资源有限的环境中使用。
除了基本功能外,我们还可以进行功能扩展。
例如,可以添加存储功能,将温度数据保存到外部存储器中,以便进行后续分析和处理。
51单片机测温度原理
51单片机测温度的原理如下:
1. 温度检测:使用数字温度传感器检测当前环境的温度。
由于数字信号可以直接送入单片机,因此传感器检测到的温度值会通过数据线传输到单片机中。
2. 数据处理:单片机接收到温度数据后,进行相应的处理。
根据预设的阈值,单片机可以对接收到的温度数据进行比较,当实际温度低于或高于设定值时,会触发相应的动作。
3. 显示与报警:单片机将处理后的温度数据发送到LCD显示屏上,用户可以实时查看当前温度。
同时,如果实际温度低于或高于设定的安全范围,单片机还会驱动报警装置(如蜂鸣器)发出警报。
4. 通信:为了实现数据的远距离传输或多个地点的数据共享,单片机可以通过串口或其他通信接口,将温度数据发送到计算机或其他数据终端。
需要注意的是,为了确保测温的准确性和稳定性,在实际应用中还需要考虑环境因素、传感器精度、电路设计、软件算法等多方面的影响因素。
基于51单片机数字温度计的设计与实现
基于51单片机数字温度计的设计与实现数字温度计是一种能够测量环境温度并显示数值的设备。
基于51单片机的数字温度计设计与实现是指利用51单片机作为核心,结合温度传感器和其他辅助电路,实现一个能够测量温度并通过数码管显示温度数值的系统。
本文将从硬件设计和软件实现两个方面介绍基于51单片机数字温度计的具体设计与实现过程。
一、硬件设计1. 温度传感器选取在设计数字温度计时,首先需要选取合适的温度传感器。
市面上常用的温度传感器有热敏电阻、功率型温度传感器(如PT100)、数字温度传感器(如DS18B20)等。
根据设计需求和成本考虑,我们选择使用DS18B20数字温度传感器。
2. 电路设计基于51单片机的数字温度计的电路设计主要包括单片机与温度传感器的连接、数码管显示电路和电源电路。
(1)单片机与温度传感器的连接在电路中将51单片机与DS18B20数字温度传感器相连接,可采用一线总线的方式。
通过引脚的连接,实现单片机对温度传感器的读取控制。
(2)数码管显示电路为了能够显示温度数值,我们需要设计一个数码管显示电路。
根据温度传感器测得的温度值,通过数字转换和数码管驱动,将温度数值显示在数码管上。
(3)电源电路电源电路采用稳压电源设计,保证整个系统的稳定供电。
根据实际需求选择合适的电源电压,并添加滤波电容和稳压芯片,以稳定电源输出。
3. PCB设计根据电路设计的原理图,进行PCB设计。
根据电路元件的布局和连线的走向,绘制PCB板的线路、元件和连接之间。
二、软件实现1. 单片机的编程语言选择对于基于51单片机的数字温度计的软件实现,我们可以选择汇编语言或者C语言进行编程。
汇编语言的效率高,但编写难度大;C语言的可读性好,开发效率高。
根据实际情况,我们选择使用C语言进行编程。
2. 温度传感器数据获取利用单片机的IO口与温度传感器相连,通过一线总线协议进行数据的读取。
根据温度传感器的通信规则,编写相应的代码实现数据的读取。
基于51单片机的DS18B20温度显示
基于51单片机的DS18B20温度显示本讲内容:了解温度传感器DS18B20的使用,并通过一个例程展示温度传感器DS18B20测温过程。
DS18B20简介:DS18B20 是单线数字温度传感器,即“一线器件”,其具有独特的优点:(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络。
(2)测量温度范围宽,测量精度高。
DS18B20 的测量范围为-55 ℃ ~+ 125 ℃;在 -10~+ 85°C 范围内,精度为± 0.5°C 。
(3)多点组网功能多个 DS18B20 并联在惟一的单线上,实现多点测温。
DS18B20的存储器由一个高速暂存RAM 和一个非易失性、电可擦除(E2)RAM 组成。
配置寄存器:出场设置默认R0、R1为11。
也就是12位分辨率,也就是1位代表0.0625摄氏度。
DS18B20经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
所以当我们只想简单的读取温度值的时候,只用读取暂存器中的第0和第1个字节就可以了。
简单的读取温度值的步骤如下: 1:跳过ROM 操作 2:发送温度转换命令 3:跳过ROM 操作 4:发送读取温度命令 5:读取温度值 DS18B20接口电路图:DS18B20的初始化:主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。
若无低电平出现一直都是高电平说明总线上无器件应答。
做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本次的温度检测设计及显示以AT89C51单片机系统进行温度采集,AT89C51单片机系统进行控制,温度信号由温度传感器18b20采集,通过8255键盘控制输入89C51,温度数据传输采用12864液晶显示模块来实现。
本次设计实现了:⏹检测温度范围:0℃--100℃。
⏹检测器单元可显示检测的温度值。
⏹采用12864液晶显示模块显示。
⏹采用8255控制键盘。
本次的温度检测及显示设计主要研究了单片机与12864液晶显示模块、温度检测芯片18b20接口之间的作用,学会根据外围电路设计进行软件编程及系统调试,练习撰写实训总结报告,培养我们运用专业知识设计智能仪器的能力。
为以后的改进和发展奠定了很好的基础。
关键词:温度检测、AT89C51单片机系统、温度传感器18b20、8255键盘、12864液晶显示模块目录第一章绪论 (3)1.1 环境温度检测的概述 (3)1.2 环境温度检测的现状和发展前景 (3)1.2.1 环境温度检测的现状 (3)1.2.2 环境温度检测的发展前景 (3)1.3 环境温度检测研究的主要内容 (4)第二章环境温度检测及显示总体的设计方案 (5)2.1 环境温度检测及显示的各个部分的设计方案 (5)2.1.1 测量部分 (5)2.1.2 远程通信部分 (5)2.1.3 显示部分 (5)2.2 环境温度检测及显示的总体的设计结构 (6)第三章环境温度检测及显示主要模块的组成 (7)3.1 温度检测芯片DS18B20模块 (7)3.1.1 DS18B20的技术参数 (7)3.1.2 DS18B20数字温度计的封装与外形尺寸 (7)3.1.3 DS1820使用中注意事项 (7)3.2 12864液晶显示模块 (8)3.2.1 OCM4X8C汉字液晶屏引脚表 (8)3.2.2 OCM4X8C接口方式与时序 (8)3.3 8255按键模块 (9)3.3.1 引脚说明 (10)3.3.2 内部结构 (10)3.3.3 工作方式控制电路 (10)3.3.4 总线数据缓冲器 (11)3.3.5 8255三种基本工作方式 (11)3.3.6 读/写控制逻辑电路 (11)第四章系统的软件实现 (12)4.1 主程序的流程图 (12)4.2 按键的流程图 (12)4.3 时间功能的流程图 (13)第五章环境温度检测系统显示 (14)5.1 应用DXP2004绘制环境温度检测及显示原理图 (14)5.1.1 电路原理图的PCB显示 (14)5.2 环境温度显示 (15)5.2.1 环境温度显示使用和操作说明 (15)第六章心得体会 ........................................................................错误!未定义书签。
参考文献 (17)附录 (18)程序代码 (18)1. 头文件 (18)2. DS18B20的主要程序代码 (18)3. 12864的主要程序代码 (20)4. 8255的主要程序代码 (21)5. 时钟的主要程序 (22)6. 动画的主要程序代码 (23)第一章绪论1.1 环境温度检测的概述环境温度检测实质上就是对周围环境温度的测量,周围环境的温度变化,检测到的温度会随着周围环境的变化而变化。
温度测量仪表按测温方式可分为接触式和非接触式两大类。
一、接触式测温仪表测温仪表:比较简单、可靠,测量精度较高;但因测温元件与被测介质需要进行充分的热交金刚,帮需要一定的时间才能达到热平衡,所以存在测温的延迟现象,同时受耐高温材料的限制,不能应用于很高的温度测量。
二、非接触式仪表测温:通过热辐射原理来测量温度的,测温元件不需与被测介质接触,测温范围广,不受测温上限的限制,也不会破坏被测物体的温度场,反应速度一般也比较快。
但是,在本设计中,我们采用的是DS18B20温度传感器,通过检测周围环境而显示当前的温度值。
温度是影响传感器性能的一个关键因素,温度补偿对于提高传感器的性能起到关键作用,在研制新一代的传感器中,温度测量的难题以再一次摆在人们的面前。
因此,如何在传感器极小的空间内精确地测量、传输、处理温度信息是制约传感器性能和体积的关键,采用进口高性能、小体积、数字化温度元件DS18B20可以很好地解决这个问题,另外,有些传感器需要多点温度补偿,只需将多个DS18B20并联就可以解决这个问题,无需增加硬件,电路非常简单。
故而,我们采用DS18B20温度传感器检测周围环境,显示当前温度值。
1.2 环境温度检测的现状和发展前景1.2.1 环境温度检测装置的现状据网上信息的显示,我国环境温度检测装置在的应用宏观环境分析:图1.1 我国温度检测装置产业宏观经济环境分析1.2.2 环境温度检测装置的发展前景环境温度检测装置的发展前景:图1.2 国内温度检测装置供给分布图图1.3 国内温度检测装置的需求结构分布图1.3 环境温度检测研究的主要内容本次的温度检测及显示设计主要研究了单片机与12864液晶显示模块、温度检测芯片DS18B20接口之间的联系,学会根据外围电路设计进行软件编程及系统调试。
通过这些的结合,使得该设计达到一个目标:通过对周围环境的检测来显示当前的温度值。
第二章环境温度检测及显示总体的设计方案2.1 环境温度检测及显示的各个部分的设计方案2.1.1 测量部分方案一、采用热敏电阻,可满足40~90℃的测量范围,但热敏电阻精度、重复性、可靠性都比较差,对于检测小于1℃的温度信号是不适用的。
方案二、采用DS18B20。
DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!它是DALLAS公司专利产品,在20~75℃范围内精度为0.5℃,但是在此范围外的温度测量却误差虽然比较大,而且其串行数字输出方式采用软件处理比较困难,但是,正好锻炼我们在面对困难时克服困难的精神。
综上比较分析,我们选择方案二,以实现较好的温度测量实现。
2.1.2 远程通信部分方案一、一般微机提供的标准接口为RS232,它的接口是一种用于近距离(最大30-60米)、慢速度、点对点通讯的通讯协议,在RS232中一个信号只用到一条信号线,采取与地电压参考的方式,因而在长距离传输后,发送端和接收端地电压有出入,容易造成通讯出错或速度降低。
方案二、采用89C51编码后以并行方式传输数据。
它的优点是方便实现,软件开销小。
综上比较分析,方案二容易实现,我们选择方案二。
2.1.3 显示部分方案一、向每一个数码管发送数据,通过控制器控制显示顺序,由于显示速度快,肉眼看不出闪烁,完成显示。
但是占用控制器资源太多。
方案二、通过12864液晶显示模块显示,用键盘通过8255控制液晶显示模块显示,控制器资源占用少。
综合分析,我们决定使用方案二。
2.2 环境温度检测及显示的总体的设计结构图2.1 系统总体的设计结构图由系统的总体结构可知,本系统主要由电源供给、89C51单片机、温度传感器DS18B20、8255按键、12864液晶显示模块这五大部分组成。
第三章环境温度检测及显示主要模块的组成3.1 温度检测芯片DS18B20模块DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
3.1.1 DS18B20的技术参数序号项目内容1 内置传感器 DS18B202 温度精度 ±0.5℃(-10°~+85°C范围内)3 测温范围 -55℃~+125℃4 温度分辨率 9-12位(0.0625℃)5 测温速度 750ms(12位分辨率)6 电源要求 3V-5.5V7 支持通讯电缆长度 100m8 材质 314不锈钢9 外型尺寸φ6mm长度25mm,30mm可选10 运行环境 -55℃~+80℃表3.1 DS18B20的技术参数表3.1.2 DS18B20数字温度计的封装与外形尺寸图3.1 DS18B20的封装图图3.2 DS18B20的外形尺寸图3.1.3 DS1820使用中注意事项(1)较小的硬件开销需要相对复杂的软件进行补偿。
(2)单总线上所挂DS1820超过8小时,需要解决微处理器的总线驱动问题。
(3)连接DS1820的总线电缆是有长度限制的。
(4)在DS1820测温程序设计中DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。
3.2 12864液晶显示模块12864液晶显示模块也就是OCM4X8C液晶显示模块,是通过串行扫描方式与单片机连接,用来显示文字,图像。
3.2.1 12864液晶显示模块的概述和比较概述:带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。
利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字。
也可完成图形显示。
低电压低功耗是其又一显著特点。
比较:该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
3.2.1 OCM4X8C汉字液晶屏引脚表如下所示:表3.2 OCM4X8C汉字液晶屏引脚表3.2.2 OCM4X8C接口方式与时序(1)4/8位并行接口方式当模块的PSB脚接高电平时,模块即进入并行接口模式。
在并行模式下可由功能设定指令的“DL”位来选择8位或4接口方式,主控制系统将配合“RS”、“RW”、“E”DB0~DB7来完成指令/数据的传送,其操作时序与其它并行接口液晶显示模块相同。
(2)2/3线串行接口方式当模块的PSB脚接低电平时,模块即进入串行接口模式。
串行模式使用串行数据线SID与串行时钟线SCLK来传送数据,即构成2线串行模式。
本系统选择的是串行接口控制方式,工作原理如下:OCM4X8C还允许同时接入多个液晶显示模块以完成多路信息显示功能。
此时,要利用片选端“CS”构成3线串行接口方式,当“CS”接高电位时,模块可正常接收并显示数据,否则模块显示将被禁止。
通常情况下,当系统仅使用一个液晶显示模块时,“CS”可连接固定的高电平。
线串行工作操作时序如图1所示。