基于DS18B20的数字温度计设计Word格式.docx
- 文档编号:21736803
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:247.67KB
基于DS18B20的数字温度计设计Word格式.docx
《基于DS18B20的数字温度计设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的数字温度计设计Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
2、LM1602L采用标准的16脚接口分布如下
LCD1602模块的管脚分布功能
管脚号
管脚名称
状态
管脚功能
1
Vss
电源地
2
Vdd
电源正极
3
V0
液晶显示偏压信号
4
RS
输入
寄存器选着
5
RW
读、写操作
6
E
使能信号
7
DB0
三态
数据总线0(LSB)
8
DB1
数据总线
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
数据总线(MSB)
15
LEDA
背光+5V
16
LEDK
背光地
3、指令
1)Cleardisplay清显示
指令码:
R/W
清显示指令将空位字符码20H送入全部DDRAM地址中,使DDRAM中的内容全部清除,显示消失;
地址计数器AC=0,自动增1模式;
显示归位,光标或者闪烁回到原点(显示屏左上角);
但并不改变移位设置模式。
2)Returnhome归位
*
归位指令置地址计数器AC=0;
将光标及光标所在位的字符回原点;
但DDRAM中的内容并不改变。
3)Entrymodeset设置输入模式
I/D
S
I/D:
字符码写入或者读出DDRAM后DDRAM地址指针AC变化方向标志:
I/D=1,完成一个字符码传送后,光标右移,AC自动加1;
I/D=0,完成一个字符码传送后,光标左移,AC自动减1;
S:
显示移位标志:
S=1,将全部显示向右(I/D=0)或者向左(I/D=1)移位;
S=0,显示不发生移位;
S=1时,显示移位时,光标似乎并不移位;
此外,读DDRAM操作以及对CGRAM的访问,不发生显示移位。
4)Displayon/offcontrol显示开/关控制
D
C
B
D:
显示开/关控制标志:
D=1,开显示;
D=0,关显示;
关显示后,显示数据仍保持在DDRAM中,立即开显示可以再现;
C:
光标显示控制标志:
C=1,光标显示;
C=0,光标不显示;
不显示光标并不影响模块其它显示功能;
显示5X8点阵字符时,光标在第八行显示,显示5X10点阵字
符时,光标在第十一行显示;
B:
闪烁显示控制标志:
B=1,光标所指位置上,交替显示全黑点阵和显示字符,产生闪烁效果,Fosc=250kHz
时,闪烁频率为0.4ms左右;
通过设置,光标可以与其所指位置的字符一起闪烁。
5)Cursorordisplayshift光标或显示移位
S/C
R/L
光标或显示移位指令可使光标或显示在没有读写显示数据的情况下,向左或向右移动;
运用此指令可以实现显示的查找或替换;
在双行显示方式下,第一行和第二行会同时移位;
当移位越过第一行第四十位时,光标会从第一行跳到第二行,但显示数据只在本行内水平移位,第二行的显示决不会移进第一行;
倘若仅执行移位操作,地址计数器AC的内容不会发生改变。
说明
光标向左移动,AC自动减1
光标向右移动,AC自动加1
光标和显示一起向左移动,AC值不变
光标和显示一起向右移动,AC值不变
6)Functionset功能设置
DL
N
F
功能设置指令设置模块数据接口宽度和LCD显示屏显示方式,即MPU与模块接口数据总线为4位或者是8位、LCD显示行数和显示字符点阵规格;
所以建议用户最好在执行其它指令设置(读忙标志指令除外)之前,在程序的开始,进行功能设置指令的执行;
DL:
数据接口宽度标志:
DL=1,8位数据总线DB7~DB0;
DL=0,4位数据总线DB7~DB4,DB3~DB0不用,使用此方式传送数据,需分两次进行;
N:
显示行数标志:
N=1,两行显示模式;
N=0,单行显示模式;
F:
显示字符点阵字体标志:
F=1:
5X10点阵+光标显示模式;
F=0:
5X7点阵+光标显示模式。
7)SetCGRAMaddressCGRAM地址设置
ACG5
ACG4
ACG3
ACG2
ACG1
ACG0
CGRAM地址设置指令设置CGRAM地址指针,它将CGRAM存储用户自定义显示字符的字模数据的首地址ACG5~ACG0送入AC中,于是用户自定义字符字模就可以写入CGRAM中或者从CGRAM中读出。
8)SetDDRAMaddressDDRAM地址设置
ADD6
ADD5
ADD4
ADD3
ADD2
ADD1
ADD0
DDRAM地址设置指令设置DDRAM地址指针,它将DDRAM存储显示字符的字符码的首地址ADD6~ADD0送入AC中,于是显示字符的字符码就可以写入DDRAM中或者从DDRAM中读出;
值得一提的是:
在LCD显示屏一行显示方式下,DDRAM的地址范围为:
00H~4FH;
两行显示方式下,DDRAM的地址范围为:
第一行00H~27H,第二行40H~67H。
9)Readbusyflagandaddress读忙标志BF和AC
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
当RS=0和R/W=1时,在E信号高电平的作用下,BF和AC6~AC0被读到数据总线DB7~DB0的相应位;
BF:
内部操作忙标志,BF=1,表示模块正在进行内部操作,此时模块不接收任何外部指令和数据,直到BF=0为止;
AC6~AC0:
地址计数器AC内的当前内容,由于地址计数器AC被CGROM、CGRAM和DDRAM的公用指针,因此当前AC内容所指区域由前一条指令操作区域决定;
同时,只有BF=0时,送到DB7~DB0的数据AC6~AC0才有效。
10)WritedatatoCGRAMorDDRAM写数据到CGRAM或DDRAM
D7
D6
D5
D4
D3
D2
D1
D0
写数据到CGRAM或DDRAM指令,是将用户自定义字符的字模数据写到已经设置好的CGRAM的地址中,或者是将欲显示字符的字符码写到DDRAM中;
欲写入的数据D7~D0首先暂存在DR中,再由模块的内部操作自动写入地址指针所指定的CGRAM单元或者DDRAM单元中。
11)ReaddatafromCGRAMorDDRAM从CGRAM或DDRAM中读数据
从CGRAM或DDRAM中读数据指令,是从地址计数器AC指定的CGRAM或者DDRAM单元中,读出数据D7~D0;
读出的数据D7~D0暂存在DR中,再由模块的内部操作送到数据总线DB7~DB0上;
需要注意的是,在读数据之前,应先通过地址计数器AC正确指定读取单元的地址。
6、DS18B20温度传感器
1、DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
⏹独特的单线接口仅需要一个端口引脚进行通信;
⏹实际应用中不需要外部任何元器件即可实现测温;
⏹可通过数据线供电,电压范围为3.0~5.5V;
⏹在DS18B20中的每个器件上都有独一无二的序列号;
⏹温度以9或12位数字量读出;
⏹报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
⏹负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能工作。
2、工作原理如下
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;
高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
3、内部构造如下
4、硬件接线图如下
7、AT89S51单片机引脚资源、引脚分配。
1、单片机组要参数
40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
如下图所示:
简单介绍如下:
1、电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
2、时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
3、控制线:
控制线共有4根,
1ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
1ALE功能:
用来锁存P0口送出的低8位地址
2PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
2PSEN:
外ROM读选通信号。
3RST/VPD:
复位/备用电源。
1RST(Reset)功能:
复位信号输入端。
2VPD功能:
在Vcc掉电情况下,接备用电源。
4EA/Vpp:
内外ROM选择/片内EPROM编程电源。
1EA功能:
内外ROM选择端。
2Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
4、I/O线:
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
⏹有4个8位并行I/O口,共32条端线:
P0、P1、P2和P3口。
每一个I/O口都能用作输入或输出。
⏹用作输入时,均须先写入“1”;
用作输出时,P0口应外接上拉电阻。
⏹P0口的负载能力为8个LSTTL门电路;
P1~P3口的负载能力为4个LSTTL门电路。
⏹在并行扩展外存储器或I/O口情况下,P0口用于低8位地址总线和数据总线(分时传送),P2口用于高8位地址总线,P3口常用于第二功能
端口
第二名称
第二功能
P3.0
RXD
串行口输入端
P3.1
TXD
串行口输出端
P3.2
INT0
外部中断0请求输入端
P3.3
INT1
外部中断1请求输入端
P3.4
T0
定时/计数器0外部信号输入端
P3.5
T1
定时/计数器1外部信号输入端
P3.6
WR
外RAM写选通信号输出端
P3.7
RD
外RAM读选通信号输出端
图五
⏹LM1602的数据中线接AT89S51的P2口;
⏹LM1602的RS接P3.0口,RW接P3.1口,E端接P3.2口;
⏹晶振电路接XTAL1和XTAL2;
⏹复位电路接RST;
⏹DS18B20接P3.7口;
六、实验总结
通过这次课程设计,使我认识到理论联系实际的重要性,在实践中扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,从各方面提高了自身的综合素质。
经过这次一个较完整的产品设计和制作过程,对于将来学习和工作也是有所裨益的。
在课程设计过程中,遇到了很多的问题通过查阅资料最终得以解决了,这个过程让我受益匪浅。
七、主要参考文献
1、何立民.单片机高级教程.第1版.北京:
北京航空航天大学出版社,2001
2、MCS—51单片机应用设计张毅刚修林成胡振江编
3、MCS—51单片微型计算机原理与开发王树勋王朝玉张新发编
4、徐爱钧KEILCxV7.0单片机高级语言编程与uVision2应用实践,北京,电子工业出版社,2004
5、李全利、仲伟峰、徐军,单片机原理及应用,北京:
清华大学出版社,2006
附录1参考程序
#include<
AT89X51.h>
/*****************************************/
#defineLCD_DBP2
#defineucharunsignedchar
#defineuintunsignedint
uintt0,t1;
ucharstr[]={"
2012-06-13"
};
//显示日期
uchartemp1[11];
//存放分解ASCII码温度数据
sbitLCD_RS=P3^0;
sbitLCD_RW=P3^1;
sbitLCD_E=P3^2;
sbitQS=P3^7;
//DS18B20数据引脚
sbitINTR=P3^3;
//中断
/******定义函数****************/
voidLCD_init(void);
//初始化函数
voidLCD_write_command(ucharcommand);
//写指令函数
voidLCD_write_data(uchardat);
//写数据函数
voidLCD_set_xy(ucharx,uchary);
//写地址函数
voidLCD_disp_string(ucharx,uchary,uchar*p);
//显示字符串
voiddelay_n40us(uintn);
//延时函数
//*******初始化函数***************
voidLCD_init(void)
{
LCD_write_command(0x38);
//设置8位格式,2行,5x7
LCD_write_command(0x0c);
//整体显示,关光标,不闪烁
LCD_write_command(0x06);
//设定输入方式,增量不移位
LCD_write_command(0x01);
//清除屏幕显示
delay_n40us(100);
}
//********写指令函数************
voidLCD_write_command(uchardat)
LCD_DB=dat;
LCD_RS=0;
//指令
LCD_RW=0;
//写入
LCD_E=1;
//允许
LCD_E=0;
delay_n40us
(1);
//********写数据函数*************
voidLCD_write_data(uchardat)
LCD_RS=1;
//数据
//*******字符位置函数*********
voidLCD_set_xy(ucharx,uchary)
ucharaddress;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
//*******字符串显示*********
voidLCD_disp_string(ucharx,uchary,uchar*p)//显示字符串
{LCD_set_xy(x,y);
while(*p)
{LCD_write_data(*p);
p++;
}
delay_n40us
(1);
//********延时函数***************
voiddelay_n40us(uintn)
{uinti;
ucharj;
for(i=n;
i>
0;
i--)
for(j=0;
j<
2;
j++);
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
//DS18B20的程序
/******************时钟延时*************************************/
voiddelay(intus)
{ints;
for(s=0;
s<
us;
s++);
/******************DS18B20的复位*************************************/
ucharow_reset(void)
{
ucharflag;
QS=0;
//拉低电平
delay(30);
//延时500us左右
QS=1;
//释放总线
delay(3);
//等待DS18B20回应
flag=QS;
//采样总线信号
delay(20);
//等待
return(flag);
/******************读位*************************************/
ucharread_bit(void)
uinti;
//拉低总线
QS=1;
for(i=0;
i<
3;
i++);
//延时15us左右
return(QS);
//返回QS的值
/******************写位*************************************/
voidwrite_bit(charbitval)
if(bitval==1)QS=1;
//写数据
delay(5);
//延时
/******************读字节****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 数字 温度计 设计