上网搜ds18b20的温度检测及其lcd显示的设计毕业论文(DS18B20数字温度计的设计LCD显示)

1.DS18B20数字温度计的设计(LCD)显示

/***************************************

128 64 lcd显示8*16 的数字

***************************************/

void dispshuzi0(uchar ix,uchar page0,uchar lie0)

{

uchar ii,j;

ii=ix*16;

wrlie(lie0);

wrpage(page0);

for(j=0;j

2.DS18B20数字温度计的设计(LCD)显示

/***************************************128 64 lcd显示8*16 的数字***************************************/void dispshuzi0(uchar ix,uchar page0,uchar lie0){ uchar ii,j; ii=ix*16; wrlie(lie0); wrpage(page0); for(j=0;j<8;j++) { wrdate(shuzi[ii]); ii++; } wrlie(lie0); wrpage(page0+1); for(j=0;j<8;j++) { wrdate(shuzi[ii]); ii++; }}。

3.基于AT89C51单片机和DS18B20温度传感器、LCD1602液晶显示的高

DS18B20温度传感器、LCD1602液晶显示的代码;XRF多功能51单片机开发板;DS18B20测温程序(液晶显示,可测量0-99度);************************************************************************** ;************************************************************** TEMPER_L EQU 36H ;从DS18B20中读回高位,低位暂存区TEMPER_H EQU 35H ;TEMPER_NUM EQU 60H;温度值存储TEMPER_GE EQU 61HTEMPER_SHI EQU 62HTEMPER_SAVE EQU 63HFLAG1 BIT 00HFLAG2 BIT 01HRS BIT p2.0;液晶控制接口RW BIT p2.1E BIT p2.2DQ BIT p3.5;单总线口 ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP,#70H LCALL GET_TEMPER LCALL TEMPER_COV LCALL LCDDISP lcall d100ms lcall d100ms LJMP MAIN NOP ;**************************************************;读出转换后的温度值 ;**************************************************GET_TEMPER: SETB DQ ; 定时入口 BCD: LCALL INIT_1820 JB FLAG1,S22 LJMP BCD ; 若DS18B20不存在则返回 S22: LCALL DELAY1 MOV A,#0CCH ; 跳过ROM匹配------0CC命令 LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 LCALL D100MS CBA:LCALL INIT_1820 JB FLAG1,ABC LJMP CBA ABC:LCALL DELAY1 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;READ_1820 RET ;**************************************************************;读DS18B20的程序,从DS18B20中读出一个字节的数据 ;**************************************************************READ_1820: MOV R2,#8 RE1: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE1 RET ;******************************************************;写DS18B20的程序 ;******************************************************WRITE_1820: MOV R2,#8 CLR C WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET;**************************************************** ;读DS18B20的程序,从DS18B20中读出两个字节的温度数据 ;****************************************************READ_18200: MOV R4,#2 ; 将温度高位和低位从DS18B20中读出 MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H) RE00: MOV R2,#8 RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV @R1,A DEC R1 DJNZ R4,RE00 RET ;;**************************************************** ;将从DS18B20中读出的温度数据进行转换;;**************************************************** TEMPER_COV: MOV A,#0F0H ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值 SWAP A MOV TEMPER_NUM,A ;得到低四位MOV A,TEMPER_L JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值 INC TEMPER_NUM TEMPER_COV1: MOV A,TEMPER_H ANL A,#07H SWAP A ORL A,TEMPER_NUM ;得到高四位,再与低四位相或得到值MOV TEMPER_NUM,A ; 保存变换后的温度数据 LCALL BIN_BCD RET;;**************************************************** ;将16进制的温度数据转换成压缩BCD码 ;;****************************************************BIN_BCD: MOV A,TEMPER_NUMMOV B,#10DIV ABMOV TEMPER_SHI,AMOV TEMPER_GE,BRET;****************************************************;DS18B20初始化程序 ;;****************************************************INIT_1820: SETB DQ NOP CLR DQ MOV R0,#250TSR1: DJNZ R0,TSR1 ; 延时520us SETB DQ MOV R0,#25H ;96US-25H TSR2: DJNZ R0,TSR2 JNB DQ,TSR3;如D0为低则复位成功,DS18B20存在 LJMP TSR4 ; 延时 TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在 LJMP TSR5 TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在 LJMP TSR7 TSR5: MOV R0,#06BH ;200US TSR6: DJNZ R0,TSR6 ; 延时 TSR7: SETB DQ ;拉高总线RET ;*************************************************;数码显示程序;*************************************************;*************************************************;液晶显示程序;*************************************************LCDDISP: mov p1,#01h;清屏 call enrw mov p1,#38h;设为8位,5*7字 型两行 call enrw mov p1,#0Ch call enrw mov p1,#06h call enrw mov p1,#80h call enrw mov dptr,#yjtab call rwram mov p1,#0C0h call enrw mov dptr,#yjtab1 call rwramW_TEM: mov p1,#0CCh call enrw MOV DPTR,#ASCII MOV A,TEMPER_SHI MOVC A,@A+DPTR MOV P1,A setb rs clr rw clr e call D500us setb e MOV DPTR,#ASCII MOV A,TEMPER_GE MOVC A,@A+。

4.基于AT89C51单片机和DS18B20温度传感器、LCD1602液晶显示的

/***********ds18b20子程序*************************//***********ds18b20延迟子函数(晶振12MHz )*******/ #include<reg51.h> sbit DQ=P1^2;#define uchar unsigned charvoid delay_18B20(unsigned int i){ while(i--);}/**********ds18b20初始化函数**********************/void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(4); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);}/***********ds18b20读一个字节**************/ unsigned char ReadOneChar(void){ uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); } return(dat);}/*************ds18b20写一个字节****************/ void WriteOneChar(uchar dat){ unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; }}/**************读取ds18b20当前温度************/ ReadTemp(void){ float val; uchar temp_value,value; unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 delay_18B20(100); // this message is wery important Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 delay_18B20(100); a=ReadOneChar(); //读取温度值低位 b=ReadOneChar(); //读取温度值高位 temp_value=b<<4; temp_value+=(a&0xf0)>>4; value=a&0x0f; val=temp_value+value; return(val); }以上是DS18B20的驱动程序。

然后在主程序中直接调用函数就可以了。以上是在主程序中的调用,你看关于温度的那个就可以。

#include "reg51.h" #include "18b20.h" #define uchar unsigned char #define uint unsigned int uchar code table[]="Welcome To" ;//初始化日期和星期 uchar code table1[]="Our System!";//初始化时间 uchar code table2[]="Temperature is:";//初始化时间 //以下三个是定义LCD的引脚 sbit lcden=P2^2; sbit lcdwrite=P2^1; sbit lcdrs=P2^0; char wendu; //延时程序 void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }//lcd的写指令void write_com(uchar com){ lcdrs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } //lcd的写数据void write_data(uchar da){ lcdrs=1; lcden=0; P0=da; delay(5); lcden=1; delay(5); lcden=0;} //初始化void init(){ uchar num; lcdwrite=0; lcden=0; write_com(0x38); //16*2显示,5*7点阵,8位数据 write_com(0x0c);//显示开,关光标 write_com(0x06); //移动光标 write_com(0x01);//清除LCD的显示内容 write_com(0x80); for (num=0;num<10;num++) { write_data(table[num]); delay(5); } write_com(0x80+0x40); for (num=0;num<11;num++) { write_data(table1[num]); delay(5); } }void write_wendu(uchar add, char da){ uchar shi,ge; shi=da/10; ge=da%10; write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge); }//主函数void main (){ uchar num; init(); delay(2000); delay(2000); delay(2000); write_com(0x01);//清除LCD的显示内容 while(1) { write_com(0x80); for (num=0;num<15;num++) { write_data(table2[num]); delay(5); } wendu = ReadTemp( ); write_wendu(2,wendu); }}。

5.基于单片机的自动温控系统的设计.毕业论文开题报告

去百度文库,查看完整内容>

内容来自用户:明阳办公网

中国网络大学

Chinese Network University

毕业设计开题报告

院系名称:XXXX学院专业:XXXXXXXX学生姓名:学号:指导老师:中国网络大学教务处制

2016年05月15日

附表1XX学院学生毕业论文(设计)选题审批表

系别:电气工程系专业:电子信息工程学生姓名|学号|指导教师|职称|本科|

选题名称:基于单片机的温度控制系统的设计|

题目领域类型:1.科学 技术 √ 2.生产 实践 □ 3.社会 经济 □ 4.其它 □|

选题理由:|当今社会温度的测量与控制系统在生产与生活的各个领域中扮着越来越重要的角色,大到工业冶炼,物质分离,环境检测,电力机房,冷冻库,粮仓,医疗卫生等方面,小到家庭冰箱,空调,电饭煲,太阳能热水器等方面都得到了广泛的应用,温度控制系统的广泛应用也使得这方面的研究意义非常重要。|

指导教师意见:|该生的研究课题比较符合当前的实际,有一定的理论价值和实践意义,具有一定的社会价值和现实意义。| | | 签名: | 年 月 日|

系领导小组意见:| 签名:| 年 月 日|

注:本表由学生和老师共同完成填写。附表

6.基于18B20的多点温度显示系统

范例二 环境温度监测系统一、设计要求 环境温度监测系统广泛地用于住宅小区、楼宇建筑和设备内部等。

其主要功能和指标如下: 1、可以监测8点环境温度信号,可以扩充; 2、测量范围为0.00℃~99.9℃,可以扩充到-55℃~+125℃,精度为±0.5℃; 3、用4位数码管进行循环显示,其中最高位显示通道提示符A~H,低3位显示实际温度值,每秒切换一个通道进行轮流显示; 4、可以随时查看指定通道的温度值(扩充功能)。 二、设计指导 1、方案选择 该系统主要由温度检测和数据采集两部分组成。

下面列举两种实现方案: 方案一:温度检测可以使用低温热偶或铂电阻,数据采集部分则使用带有A/D通道的单片机。考虑到一般的A/D输入通道都只能接收大信号,所以还应设计相应的放大电路。

此方案的软件简单,但硬件复杂,且检测点数追加时,成本会有较大增长幅度。 方案二:使用单片机和单总线温度传感器构成。

单总线温度传感器可以采用DALLAS公司生产的DS18B20系列,这类温度传感器直接输出数字信号,且多路温度传感器可以挂在1条总线上,共同占用单片机的1条I/O线即可实现接口。在提升单片机I/O线驱动能力的前提下,理论上可以任意扩充检测的温度点数。

比较两个方案后可以发现,方案二更适合于用作本系统的实施方案。尽管方案二不需要A/D,但考虑到系统扩充等因素,单片机可以选用ADuc812,以便于在需要的时候扩充参数存储、D/A输出、温度控制等功能。

2、硬件设计 采用方案二的硬件设计比较简单,系统构成如图1所示,原理图如图5所示。单片机的P0口用作4位数码管的段码线,P3.4~P3.7用作4位数码管的位选线(ADuc812的P3有允许8mA的灌电流,可以不加驱动)。

P2.4用作DS18B20的数据输入/输出线。 DS18B20的引脚定义和封装形式之一如图2所示。

DQ为数字信号输入/输出端;GND为电源地;VDD为外接电源。 DS18B20的光刻ROM中存有64位序列号,它可以看作是该DS18B20的地址序列码。

64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20拥有惟一的地址序列码,以确保在一根总线上挂接多个DS18B20。

DS18B20内部集成了暂存寄存器(或称为暂存RAM)和EEPROM两类存储器。暂存RAM为9个字节,其地址分配及其相关说明如表1所示。

单片机通过命令实现对DS18B20的控制,其支持的主要命令如表2所示。DS18B20的复位操作、读写操作都必须遵从严格的时序,其复位时序、读写时序分别如图3和图4所示。

关于DS18B20的详细介绍和使用方法可以参考其数据手册。 表1 DS18B20暂存RAM地址分配及其说明 寄存器名称 地址 说 明 温度低字节 0 温度测量值的低8位,即b7 b6 b5 b4 b3 b2 b1 b0温度高字节 1 温度测量值的高3位及符号位,即S S S S S b10 b9 b8温度高限 2 温度报警上限,也可以用作自定义字节 温度高限 3 温度报警下限,也可以用作自定义字节 配置寄存器 4 格式为0 R1 R0 1 1 1 1 1,R1和R0为00、01、10、11对应的分辨率分别为9、10、11和12位(包括符号位) 保留 5 未定义 保留 6 未定义 保留 7 未定义 校验码 8 按X8+X5+X4+1对前8个字节进行CRC校验 表2 DS18B20主要命令及其功能说明 命令码 功能说明 命令码 功能说明 33H 读ROM中的64位地址序列码 BEH 读9字节暂存寄存器 55H 只有地址码匹配的DS18B2才能接受后续的命令 4EH 写入温度上/下限,紧随其后是2字节数据,对应上限和下限值 F0H 锁定总线上DS18B20的个数和识别其ROM中的64位地址序列码 48H 将9字节暂存寄存器的第3和4字节复制到EEPROM中 ECH 只有温度超过上限或下限的DS18B20才做出响应 B8H 将EEPROM的内容恢复到暂存寄存器的第3和4字节 44H 启动DS18B20进行温度转换,结果存入9字节的暂存寄存器 B4H 读供电模式,寄生供电时DS18B20发送0,外接电源时DS18B20发送1CCH 忽略地址序列码,适合单片DS18B20 图5 系统原理图 3、软件设计 1、软件模块的划分 该系统的控制软件可以分为单片机初始化程序、定时中断服务程序和DS18B20接口程序等模块。

单片机初始化程序由主函数实现,主要完成定时器T0、T1的初始化、中断系统的初始化等功能。定时器T0中断函数每隔5ms执行1次,动态显示1位数码管;定时器T1中断函数每隔50ms中断1次,每中断20次(1秒)即读取1路DS18B20的温度代码,转换为温度值,再拆分成单个数码后送入显示缓冲区。

DS18B20接口程序主要由复位函数、读位函数、读字节函数、写位函数、写字节函数、读温度函数等组成。 2、参考程序 #include #include sbit led0=P3^4; //P3.4~P3.7用作4位LED的位选线sbit led1=P3^5;sbit led2=P3^6;sbit led3=P3^7;sbit DQ = P2^4; //P2.4用作DS18B20的数据线DQ float data TMP[2]={0,0}; //读取后的2个温度值,将其除以2即可得出实际温度;unsigned char data f[2]={0,0}; //结果是否为负温,"0"为正温,"1"为负温。

unsigned char data disp_buf[4]={。

上网搜ds18b20的温度检测及其lcd显示的设计毕业论文

转载请注明出处众文网 » 上网搜ds18b20的温度检测及其lcd显示的设计毕业论文(DS18B20数字温度计的设计LCD显示)

资讯

毕业论文市场(帮我写一篇关于市场营销方面的论文,6000)

阅读(71)

本文主要为您介绍毕业论文市场,内容包括帮我写一篇关于市场营销方面的论文,60008000字,我把我有的分全,求一篇市场营销的毕业论文,毕业论文市场分析和定位要怎么写。市场营销论文 企业绿色营销策略探析 摘要:论文阐述了绿色营销概念,分析了绿

资讯

关于会计学相关毕业论文题目(会计论文哪些题目比较好写)

阅读(71)

本文主要为您介绍关于会计学相关毕业论文题目,内容包括会计论文哪些题目比较好写,关于会计专业毕业论文的选题,会计学本科毕业论文题目,能告诉我哪些题目比较好写,急求指导。提供一些会计学年论文的参考题目,供参考。会计方面(含会计理论、财

资讯

毕业论文的知识目标(论文的目标与要求怎么写)

阅读(79)

本文主要为您介绍毕业论文的知识目标,内容包括论文的目标与要求怎么写,毕业论文目标和要求怎么写,毕业论文的主要研究内容和目标特色是什么。研究背景研究背景即提出问题,阐述研究该课题的原因。研究背景包括理论背景和现实需要。还要综述国

资讯

西电电子所毕业论文(求几篇应用电子的毕业论文)

阅读(66)

本文主要为您介绍西电电子所毕业论文,内容包括求几篇应用电子的毕业论文,西安电子科技大学硕士要发论文吗,西安电子科技大学博士生毕业要几篇论文。基于EDI的电子征税系统应用探讨 【论文摘要】作为电子化贸易工具的EDI技术已相当成熟,将其

资讯

李云龙毕业论文传统(求亮剑中李云龙最后的毕业论文)

阅读(68)

本文主要为您介绍李云龙毕业论文传统,内容包括求亮剑中李云龙最后的毕业论文,李云龙毕业论文:战斗意志,亮剑精神的演讲稿,求亮剑中李云龙最后的毕业论文。亮剑精神 同志们,我先来解释一下什么叫“亮剑”。古代剑客们在与对手狭路相逢时,无论对

资讯

毕业论文绪言包括(论文引言包括哪些内容)

阅读(75)

本文主要为您介绍毕业论文绪言包括,内容包括论文引言包括哪些内容,毕业论文的绪论里都需要包括什么,论文前言应包括哪些主要内容。论文引言包括背景、意义、发展状况、目前的水平等。在前言中,评价论文的价值要恰如其分、实事求是,用词要科学

资讯

本科毕业论文不见了(本科生的论文一定会被知网收录么)

阅读(75)

本文主要为您介绍本科毕业论文不见了,内容包括自己的大学毕业论文找不到了,怎么办,毕业论文找不到了咋办,我的毕业论文丢了,不知道大学里会不会存档。本科生的论文不一定会被知网收录。知网会收录本科优秀毕业论文。本科论文版权在学校手里

资讯

毕业论文市场(帮我写一篇关于市场营销方面的论文,6000)

阅读(71)

本文主要为您介绍毕业论文市场,内容包括帮我写一篇关于市场营销方面的论文,60008000字,我把我有的分全,求一篇市场营销的毕业论文,毕业论文市场分析和定位要怎么写。市场营销论文 企业绿色营销策略探析 摘要:论文阐述了绿色营销概念,分析了绿

资讯

关于会计学相关毕业论文题目(会计论文哪些题目比较好写)

阅读(71)

本文主要为您介绍关于会计学相关毕业论文题目,内容包括会计论文哪些题目比较好写,关于会计专业毕业论文的选题,会计学本科毕业论文题目,能告诉我哪些题目比较好写,急求指导。提供一些会计学年论文的参考题目,供参考。会计方面(含会计理论、财

资讯

毕业论文的知识目标(论文的目标与要求怎么写)

阅读(79)

本文主要为您介绍毕业论文的知识目标,内容包括论文的目标与要求怎么写,毕业论文目标和要求怎么写,毕业论文的主要研究内容和目标特色是什么。研究背景研究背景即提出问题,阐述研究该课题的原因。研究背景包括理论背景和现实需要。还要综述国

资讯

西电电子所毕业论文(求几篇应用电子的毕业论文)

阅读(66)

本文主要为您介绍西电电子所毕业论文,内容包括求几篇应用电子的毕业论文,西安电子科技大学硕士要发论文吗,西安电子科技大学博士生毕业要几篇论文。基于EDI的电子征税系统应用探讨 【论文摘要】作为电子化贸易工具的EDI技术已相当成熟,将其

资讯

金融专业毕业论文引言(金融专业毕业论文怎么写)

阅读(68)

本文主要为您介绍金融专业毕业论文引言,内容包括金融专业毕业论文怎么写最好有范文要求4000字以上,金融方面的论文,金融类论文范文怎么写金融学论文金融学论文,怎么写爱。摘 要:我国的股票市场经历了十几年的浮浮沉沉,已经日益发展壮大,成为国