基于单片机LCD温度显示

合集下载

(完整word版)基于89C52单片机和液晶显示的温度测量系统

(完整word版)基于89C52单片机和液晶显示的温度测量系统

JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY测控系统综合训练基于单片机和液晶显示的温度测量系统学院名称:电气信息工程学院专业:测控技术与仪器班级:08测控2班姓名:董亮学号:08314237指导教师:王久龙2011年12月基于单片机及液晶显示的温度测量系统摘要:本文将介绍一种基于单片机控制的数字温度测量系统,本温度计属于多功能温度计,可以软件预设置上下报警温度,当温度不在设置范围内时,可以报警。

本文设计的数字温度计具有读数方便,测温范围广,测温精确,液晶显示,适用范围宽等特点。

它的主要组成部分有:AT89C52单片机、温度传感器、温度显示电路、温度报警电路等。

关键词:温度测量;温度传感器;液晶显示;仿真目录前言 (1)第一章设计目的及设计要求 (2)1.1 设计目的 (2)1.2 设计要求 (2)第二章设计方案论证 (3)2.1 总体设计原理 (3)2.2 单片机AT89C51介绍 (3)2.3 温度传感器的选择 (5)2.4 显示元件的选择 (7)第三章硬件电路设计 (8)3.1 时钟振荡电路 (8)3.2 测温电路 (8)3.3 复位电路 (8)3.4 报警电路 (9)3.5 显示电路 (9)第四章软件设计 (10)4.1 主程序设计 (10)4.2 液晶显示程序设计 (10)4.3 温度采集程序设计 (11)第五章安装调试与分析 (12)结束语 (13)参考文献 (14)附录 (15)附录一系统仿真图 (15)附录二实物组装图 (16)附录三元器件清单 (17)附录四程序清单 (18)前言在这个信息化高速发展的时代,单片机作为一种最经典的微控制器,单片机技术已经普及到我们生活、工作、科研等各个领域,已经成为一种比较成熟的技术。

随着科技的不断进步,在工业生产中温度是常用的参数,而采用单片机来对这些参数进行测量与控制已成为当今的主流,现代社会对各种信息参数的准确度和精确度的要求也在不断增长,而如何准确而又迅速的获得这些参数就取决于现代信息基础的发展水平。

单片机温度显示程序

单片机温度显示程序

#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}sbit DQ=P2^2;sbit dula=P2^6; //定义锁存器锁存端sbit wela=P2^7;sbit rs=P3^5; //定义1602液晶RS端sbit lcden=P3^4;//定义1602液晶LCDEN端sbit s1=P3^0; //定义按键--功能键sbit s2=P3^1; //定义按键--增加键sbit s3=P3^2; //定义按键--减小键sbit s4=P3^6;//闹钟查看键sbit rd=P3^7;sbit beep=P2^3; //定义蜂鸣器端uchar code Temp_Disp_Title[]={" Current Temp : "};uchar Current_Temp_Display_Buffer[]={" TEMP: "};uchar code Alarm_Temp[]={"ALARM TEMP Hi Lo"};uchar Alarm_HI_LO_STR[]={"Hi: Lo: "};uchar temp_data[2]={0x00,0x00};uchar temp_alarm[2]={0x00,0x00};uchar display[5]={0x00,0x00,0x00,0x00,0x00};uchar display1[3]={0x00,0x00,0x00};uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};uchar CurrentT=0; //当前读取的温度整数部分uchar Temp_Value[]={0x00,0x00}; //从DS18B20读取的温度值uchar Display_Digit[]={0,0,0,0}; //待显示的各温度数位bit DS18B20_IS_OK=1;//传感器正常标志//-------------------------------------//延时1//-------------------------------------void delay1(uint x){uchar i;while(x--) for(i=0;i<200;i++);}//-------------------------------------//延时2//-------------------------------------void Delay(uint x){while(x--);}//------------------------------------//忙检查//------------------------------------void write_com(uchar com)//液晶写命令函数{rs=0;lcden=0;P0=com;delay1(5);lcden=1;delay1(5);lcden=0;}void Write_LCD_Data(uchar date)//液晶写数据函数{rs=1;lcden=0;P0=date;delay1(5);lcden=1;delay1(5);lcden=0;}//-----------------------------//设置LCD显示位置//---------------------------------void Set_Disp_Pos(uchar Pos){write_com(Pos|0x80);}//-----------------------------//LCD初始化//---------------------------------void Initialize_LCD(){uchar num;rd=0; //软件将矩阵按键第4列一端置低用以分解出独立按键dula=0;//关闭两锁存器锁存端,防止操作液晶时数码管会出乱码wela=0;lcden=0;write_com(0x38);//初始化1602液晶write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//设置显示初始坐标for(num=0;num<14;num++)//显示年月日星期{Write_LCD_Data(Temp_Disp_Title[num]);delay1(5);}}//-------------------------------------//函数功能:初始化DS18B20//出口参数:status---DS18B20是否复位成功的标志//-------------------------------------uchar Init_DS18B20(){uchar status; //储存DS18B20是否存在的标志,status=0,表示存在;status=1,表示不存在DQ=1;Delay(8); //先将数据线拉高//略微延时约6微秒DQ=0;Delay(90); //再将数据线从高拉低,要求保持480~960us//略微延时约600微秒以向DS18B20发出一持续480~960us的低电平复位脉冲DQ=1;Delay(8); //释放数据线(将数据线拉高)//延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)status=DQ;Delay(100); //让单片机检测是否输出了存在脉冲(DQ=0表示存在)//延时足够长时间,等待存在脉冲输出完毕DQ=1; // 将数据线拉高return status; //返回检测成功标志}//-------------------------------------//函数功能:读一字节//出口参数:dat---读出的数据//-------------------------------------uchar ReadOneByte(){uchar i,dat=0;DQ=1;_nop_(); // 先将数据线拉高//等待一个机器周期for (i=0;i<8;i++){DQ=0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序dat>>=1;_nop_(); //等待一个机器周期DQ=1; //将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备_nop_();_nop_(); //延时约6us,使主机在15us内采样if (DQ) dat|=0x80; //如果读到的数据是1,则将1存入dat,如果是0则保持原值不变Delay(30); //延时3us,两个读时序之间必须有大于1us的恢复期DQ=1; // 将数据线拉高,为读下一位数据做准备}return dat;}//-------------------------------------//函数功能:写一字节//入口参数:dat---待写入的数据//-------------------------------------void WriteOneByte(uchar dat){uchar i;for (i=0;i<8;i++){DQ=0; //将数据线从高拉低时即启动写时序DQ=dat & 0x01; //利用与运算取出要写的某位二进制数据,//并将其送到数据线上等待DS18B20采样Delay(5); //延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样DQ=1; //释放数据线dat>>=1; //将dat中的各二进制位数据右移1位}}//-------------------------------------//函数功能:读取温度值//出入口参数:无//-------------------------------------void Read_Temperature(){if(Init_DS18B20() == 1) //DS18B20故障DS18B20_IS_OK=0;else{WriteOneByte(0xCC); // 跳过读序号列号的操作WriteOneByte(0x44); // 启动温度转换Init_DS18B20(); //将DS18B20初始化WriteOneByte(0xCC); //跳过读序号列号的操作WriteOneByte(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位Temp_Value[0]=ReadOneByte(); //温度低8位Temp_Value[1]=ReadOneByte(); //温度高8位DS18B20_IS_OK=1;}}//-------------------------------------//函数功能:在LCD上显示当前温度//入口参数://-------------------------------------void Display_Temperature(){uchar i;//延时值与负数标识uchar t=150,ng=0;//高5位全为1(0xF8)则为负数,为负数时取反加1,并设置负数标示if ((Temp_Value[1] & 0xF8)==0xF8){Temp_Value[1]=~Temp_Value[1];Temp_Value[0]=~Temp_Value[0]+1;if(Temp_Value[0]==0x00) Temp_Value[1]++; //加1后如果低字节为00表示有进位,进位位再加到高字节上ng=1; //负数标示置1}Display_Digit[0]=df_Table[Temp_Value[0] & 0x0F]; //查表得到温度小数部分//获取温度整数部分(高字节的低3位与低字节中的高4位,无符号)CurrentT=((Temp_V alue[0] & 0xF0)>>4)|((Temp_Value[1] & 0x07)<<4);//将整数部分分解为3位待显示数字Display_Digit[3]=CurrentT/100; //百位digit[CurrentT/100];Display_Digit[2]=CurrentT%100/10; //十位Display_Digit[1]=CurrentT%10; //个位//刷新LCD显示缓冲Current_Temp_Display_Buffer[11]=Display_Digit[0]+'0';//先将'0'转换成整数48,然后与前面数字相加,得到相应数字的ASCII字符Current_Temp_Display_Buffer[10]='.';Current_Temp_Display_Buffer[9]=Display_Digit[1]+'0'; //个位Current_Temp_Display_Buffer[8]=Display_Digit[2]+'0'; //十位Current_Temp_Display_Buffer[7]=Display_Digit[3]+'0'; //百位//高位为0时不显示if(Display_Digit[3]==0) Current_Temp_Display_Buffer[7]=' ';//高位为0且次高位为0时,次高位不显示if(Display_Digit[2]==0 && Display_Digit[3]==0)Current_Temp_Display_Buffer[8]=' ';//负数符号显示在恰当位置if(ng){if (Current_Temp_Display_Buffer[8]==' ')Current_Temp_Display_Buffer[8]='-';else if(Current_Temp_Display_Buffer[7]==' ')Current_Temp_Display_Buffer[7]='-';elseCurrent_Temp_Display_Buffer[6]='-';}//在第一行显示标题Set_Disp_Pos(0x00);for(i=0;i<16;i++){Write_LCD_Data(Temp_Disp_Title[i]);}Set_Disp_Pos(0x40); //在第二行显示当前温度for(i=0;i<16;i++){Write_LCD_Data(Current_Temp_Display_Buffer[i]);}//显示温度符号// Set_Disp_Pos(0x4D);Write_LCD_Data(0x00);Set_Disp_Pos(0x4D);Write_LCD_Data(0xdf);Set_Disp_Pos(0x4E); Write_LCD_Data('C');}//-------------------------------------//函数功能:主函数//入口参数://-------------------------------------void main(){Initialize_LCD();Read_Temperature();Delay(50000);Delay(50000);while (1){Read_Temperature();if (DS18B20_IS_OK) Display_Temperature();delay1(100);}。

基于51单片机的温度检测系统_单片机C语言课题设计报告

基于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单片机的温度报警控制系统报告

报告评分批改老师《现代电子综合实验》课程设计报告基于单片机的温度检测控制系统设计学生姓名 学 号专 业 班 级同组学生 提交日期 年 月 日指导教师目录2一、实验目的 .....................................................................................2二、实验要求 .....................................................................................2三、实验开发环境及工具 ...........................................................................2四、按键扫描和液晶显示功能实现 ...................................................................24.1矩阵键盘电路 ...............................................................................4.1.1矩阵键盘电路简介 .....................................................................224.1.2矩阵式按键扫描原理 ...................................................................24.1.3 按键扫描子程序设计思想及流程图 ......................................................34.2 LCD1602显示电路 ..........................................................................34.2.1 LCD1602模块简介 ....................................................................34.2.2 LCD1602模块引脚说明 .................................................................4.2.3 LCD1602控制方式及指令 ..............................................................344.2.4 LCD1602液晶显示子程序设计思想及流程图 ..............................................5五、基于单片机的温度检测控制系统设计过程 .........................................................55.1 系统整体电路框图及功能说明 ................................................................55.2 DS18B20数字温度传感器电路 ..............................................................55.2.1 单总线通信方式简介 ..................................................................65.2.2 DS18B20简介 ......................................................................5.2.3 DS18B20读写操作 ..................................................................665.3 声光报警及控制电路 ........................................................................75.4 软件设计 ..................................................................................5.4.1 主程序设计流程图 ....................................................................775.4.2 DS18B20子程序设计思想及流程图 ...................................................85.4.3 声光报警子程序设计思想及流程图 .....................................................9七、 实验过程及实验结果 ...........................................................................9八、实验中遇到的问题及解决方法 ...................................................................10附件 ............................................................................................一、实验目的(1). 掌握单片机应用系统的设计方法与步骤;(2).掌握硬件电路各功能模块的工作原理、应用电路与编程方法;(3).熟练掌握单总线的应用及编程;(4). 掌握基于单片机的温度检测控制系统的设计与实现。

《2024年基于单片机的温度控制系统的研究》范文

《2024年基于单片机的温度控制系统的研究》范文

《基于单片机的温度控制系统的研究》篇一一、引言随着现代科技的快速发展,对温度控制的精度和稳定性的要求也在逐渐提高。

为了满足这一需求,我们提出了一种基于单片机的温度控制系统。

该系统利用单片机的高效处理能力和精确控制能力,实现对温度的实时监测和精确控制。

本文将对该系统的设计、实现及性能进行详细的研究和讨论。

二、系统设计1. 硬件设计本系统主要由单片机、温度传感器、执行器(如加热器或制冷器)以及电源等部分组成。

其中,单片机作为系统的核心,负责接收温度传感器的数据,根据设定的温度值与实际温度值的差值,控制执行器的工作状态,以达到控制温度的目的。

温度传感器选用高精度的数字温度传感器,能够实时监测环境温度,并将数据传输给单片机。

执行器则根据单片机的指令,进行加热或制冷操作。

2. 软件设计软件部分主要包括单片机的程序设计和人机交互界面设计。

单片机程序采用C语言编写,实现温度的实时监测、数据处理、控制算法等功能。

人机交互界面则用于设定目标温度、显示当前温度等信息。

三、系统实现1. 温度采集与处理单片机通过与温度传感器通信,实时获取环境温度数据。

然后,通过A/D转换器将温度数据转换为数字信号,进行数据处理和分析。

2. 控制算法本系统采用PID(比例-积分-微分)控制算法。

PID控制器根据设定温度与实际温度的差值,计算输出控制量,控制执行器的工作状态,从而达到控制温度的目的。

3. 人机交互界面人机交互界面采用LCD显示屏和按键实现。

用户可以通过按键设定目标温度,LCD显示屏实时显示当前温度和设定温度。

四、性能分析1. 精度与稳定性本系统采用高精度的温度传感器和PID控制算法,能够实现较高的温度控制精度和稳定性。

经过实际测试,系统的温度控制精度可达±0.5℃,稳定性良好。

2. 响应速度本系统的响应速度较快,当环境温度发生变化时,单片机能够迅速采集到数据,并通过PID控制算法计算出相应的控制量,控制执行器进行加热或制冷操作,使环境温度尽快达到设定值。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于51单片机的温度检测装置的设计

基于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.温度报警模块为了实现温度报警功能,需要定义一个阈值,并比较当前温度值是否超过了这个阈值。

如果超过了阈值,则触发报警。

基于单片机的热敏电阻温度计的设计

基于单片机的热敏电阻温度计的设计

基于单片机的热敏电阻温度计的设计引言:热敏电阻是一种根据温度变化而产生变阻的元件,其电阻值与温度成反比变化。

热敏电阻广泛应用于温度测量领域,其中基于单片机的热敏电阻温度计具有精度高、控制方便等特点,因此被广泛应用于各个领域。

本文将介绍基于单片机的热敏电阻温度计的设计,并通过实验验证其测量精度和稳定性。

一、系统设计本系统设计使用STC89C52单片机作为控制核心,热敏电阻作为测量元件,LCD1602液晶显示屏作为温度显示设备。

1.系统原理图2.功能模块设计(1)温度采集模块:温度采集模块主要由热敏电阻和AD转换模块组成。

热敏电阻是根据温度变化而改变阻值的元件,它与AD转换模块相连,将电阻变化转换为与温度成正比的电压信号。

(2)AD转换模块:AD转换模块将热敏电阻的电压信号转换为数字信号,并通过串口将转换结果传输给单片机。

在该设计中,使用了MCP3204型号的AD转换芯片。

(3)驱动显示模块:驱动显示模块使用单片机的IO口来操作LCD1602液晶显示屏,将温度数值显示在屏幕上。

(4)温度计算模块:温度计算模块是通过单片机的计算功能将AD转换模块传输过来的数字信号转换为对应的温度值。

根据热敏电阻的特性曲线,可以通过查表或采用数学公式计算获得温度值。

二、系统实现1.硬件设计(1)单片机电路设计单片机电路包括单片机STC89C52、晶振、电源电路等。

根据需要,选用合适的外部晶振进行时钟信号的驱动。

(2)AD转换电路设计AD转换电路采用了MCP3204芯片进行温度信号的转换。

根据芯片的datasheet,进行正确的连接和电路设计。

(3)LCD显示电路设计LCD显示电路主要由单片机的IO口控制,根据液晶显示模块的引脚定义,进行正确的连接和电路设计。

(4)温度采集电路设计温度采集电路由热敏电阻和合适的电阻组成,根据不同的热敏电阻特性曲线,选择合适的电阻和连接方式。

2.软件设计(1)初始化设置:单片机开机之后,需要进行一系列的初始化设置,包括对IO口、串口和LCD液晶显示屏的初始化设置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第1章硬件设计 (2)1.1 AT89C51单片机介绍 (2)1.2 DS18B20温度传感器介绍 (3)1.3 液晶显示器LCD1602介绍 (4)2章软件设计 (5)2.1 主程序 (5)2.2 读出温度子程序 (5)2.3 温度转换命令子程序 (5)2.4 计算温度子程序 (6)2.5 显示数据刷新子程序 (6)第3章调试结果及说明 (7)3.1 软件仿真 (7)参考文献 (8)心得体会 (8)第1章硬件设计1.1 AT89C51单片机介绍AT89C51 是美国ATMEL公司生产的低功耗,高性能CMOS型8位单片机,片内含4Kbytes 的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚。

它集Flash ROM程序存储器,并支持可在线编程(ISP)功能;另一方面,由于价格低、因而被广泛应用于许多高性价比的场合,如工业控制、消费电子等各种控制领域,对于简单的测温系统而言,它已经足够。

单片机A T89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。

设计中采用89C51单片机。

其主要特性如下:➢与MCS-51产品指令系统完全兼容;➢4K字节可编程闪烁存储器;➢1000擦写周期;➢ 4.0~5.5V工作电压范围;➢全静态工作:0Hz-33MHz;➢程序存储器具有3级加密保护;➢128*8位内部RAM;➢32可编程I/O线;➢两个16位定时器/计数器;➢6个中断源和2个优先级;➢可编程全双工串行通道;➢低功耗的闲置和掉电模式;➢看门狗(WDT)及双数据指针;➢具有JTAG接口,可方便地在线编程或在系统编程。

A T89C51 单片机为40引脚双列直插式封装。

其引脚排列和逻辑符号如图1.1 所示。

各引脚功能简单介绍如下:图1.1 89C51引脚图➢VCC:供电电压。

➢GND:接地。

➢P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。

当P1口的管脚写“1”时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。

➢P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

➢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口也可作为A T89C51的一些特殊功能口:P3.0 RXD(串行输口);P3.1TXD(串行输出口) ;P3.2 INT0(外部中断0);P3.3 INT1(外部中断1) ;P3.4 T0(定时器0外部输入);P3.5 T1(定时器1外部输入);P3.6 WR (外部数据存储器写选通);P3.7 RD (外部数据存储器读选通)。

同时P3口同时为闪烁编程和编程校验接收一些控制信号。

➢RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

➢ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

➢PSEN:外部程序存储器的选通信号。

在由外部程序存储器取址期间,每个机器周期PSEN 两次有效。

但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

➢EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

➢XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

➢XTAL2:来自反向振荡器的输出。

1.2 DS18B20温度传感器介绍DS18B20是美国DALLAS半导体公司推出的一款智能温度传感器。

与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,可以分别在93.75~750ms内完成9~12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需一根线读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无须额外电源。

因而使用DS18B20可使系统结构更趋简单,可靠性更高。

它在测温精度、转换时间、传输距离、分辨率等方面都给用户的使用带来了方便,效果也令人满意。

其主要特点如下:➢独特的单线接口方式:DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

➢DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

➢可用数据线供电,电压范围:+3.0~+5.5V。

➢测温范围:-55℃~+125℃,固有测温分辨率为0.5℃。

➢ 通过编程可实现9~12位的数字读书方式。

➢ 用户可自设非易失性的报警上下限值。

➢ 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

➢ 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作. DS18B20的管脚排列、各种封装形式如图 1.2 所示:图1.2 DS18B20的外形及管脚排列 各引脚功能简单介绍如下:➢ GND :地信号。

➢ DQ :数据输入/输出引脚。

开漏单总线接口引脚。

当被用着在寄生电源下,也可以向器件提供电源。

➢ VDD :可选择的VDD 引脚。

当工作于寄生电源时,此引脚必须接地。

1.3 液晶显示器LCD1602介绍液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下图是1602的内部显址。

G ND DQV ddNNNDS18B20P TSOC1 2 3 4 65 N CNCV ddNCNCNC1 2 3 4 6 5 D QG N7 8DS18B20Z 8-PINSOIC(150-MIL)2章 软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序显示子程序等。

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s 进行一次。

读出温度子程序可以读出RAM 中的9字节,然后通过温度转换命令子程序发出温度转换开始命令,计算温度子程序进行BCD 码的转换运算,并进行温度值正负的判定,最后显示数据刷新子程序对显示数据进行刷新。

2.1 主程序图2.1 主程序流程图 2.2 读出温度子程序读出温度子程序的主要功能是读出RAM 中的9字节,在读出时需进行CRC 校验,校验有错时,不进行温度数据的改写。

其程序流程图如图2.2所示。

2.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms ,在本程序设计中采用1s 显示程序延时法等待转换的完成。

温度转换命令子程序流程图,如图2.3所示。

图2.3 温度转换子程序流程图 图2.4 计算温度子程序流程图2.4 计算温度子程序计算温度子程序将RAM 中读取值进行BCD 码的转换运算,并进行温度值正负的判定,其程序流程图如图2.4所示。

2.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作。

当最高显示位为0 时,将符号显示位移入下一位,程序流程图如图2.5 所示。

第3章调试结果及说明3.1 软件仿真软件调试先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度子程序、显示数据刷新等子程序的编程及调试。

最后用Proteus摆好元器件,连好线,导入hex文件,结果如下图所示。

参考文献[1] 曾屹.单片机原理与应用[M].湖南:中南大学出版社,2009[2] 韩志军,刘新民.数字温度传感器DS18B20 及其应用[J] .南京工程学院学报:自然科学版,2003心得体会本次课设的任务是采用A T89C51单片机作控制器,温度传感器选用DS18B20来设计数字温度计,系统由3个模块组成:主控制器、测温电路及显示电路。

主控制器由单片AT89C51实现,测温电路由温度传感器DS18B20实现,显示电路由LCD1602液晶显示器直读显示。

通过本次课设使我学会了很多东西,通过自己找材料,向老师答疑,与同学讨论,自己修改,研究,最终完成本次课设。

在这个过程中,不但使我对单片机课程所学的知识有了更深入的了解,而且还培养了我的自学能力。

有些不懂的问题通过向老师请教得到解决,使我受益匪浅。

课设的过程是艰辛的,但是收获是巨大的。

首先,我再一次的加深巩固了对已有的知识的理解及认识;其次,我第一次将课本知识运用到了实际设计,使得所学知识在更深的层次上得到了加深。

再次,因为这次课程设计的确在某些方面存有一定难度,这对我来讲都是一种锻炼,培养了我自学、查阅搜集资料的能力;再有,计算操作工程中,我们曾经面临过失败、品味过茫然,但是最终我还是坚持下来了,这就是我意志、耐力和信念上的胜利,在今后的日子里,它必将成为我的宝贵财富。

相关文档
最新文档