基于单片机的数字温度计设计Word文档格式.docx
《基于单片机的数字温度计设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计设计Word文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
![基于单片机的数字温度计设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/8/59d64d39-610e-4e0f-8a8d-fe906f40a5bc/59d64d39-610e-4e0f-8a8d-fe906f40a5bc1.gif)
根据所要实现的功能,先在Proteus软件上仿真。
根据所选用的硬件可以将整个软件设计分为若干个程序,有初始化、查询时间、发送指令、读取数据、显示温度等构成,可将以上子程序分别设计,实现各自的功能,再在子程序中调用,就可以实现预期的目标。
在Proteus软件里画出相应的电路图,将编写好的程序编译后的文件下载到Proteus电路图的单片机里,进行仿真,对温度传感器设置不同的参数,看是否达到了本设计所要求的目标,若不符合要求,需要检查程序算法和硬件连接是否有误。
若仿真成功,就按照电路图连接硬件。
最后在硬件上调试并实现功能。
2.3设计方案
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,在选择显示模块时可以选择四位LED数码管显示和1602液晶显示,但是1602具有显示字符多而且更直观所以选择1602作为显示模块。
因此,本设计的总体方案是:
1、设计读写温度传感器DS18B20的程序,进行温度采集以及传送;
2、设计基于STC89C52单片机的温度处理程序,处理由DS18B20传送到单片机的数据;
3、设计1602液晶显示程序,显示通过单片机处理后的温度数据。
4、设计基于中断的温度上下限报警模块;
2.4基本原理
温度计电路设计总体设计方框图如图1所示,控制器采用单片机STC89C52,温度传感器采用DS18B20,用1602实现温度显示,同时蜂鸣器作为报警电路。
图1:
总体设计方案
第3章系统硬件设计
3.1单片机概述
3.1.1单片机简介
当今在全世界范围内,已经形成了以计算机(Computer)通信(Communication)和消费类电子(ConsumptiveElectron)三足鼎立的发展新格局,而我作为做21世纪的工科大学生,而我们又是学的电子这门专业,无论是从事科学研究工作,还是开办电子电器制造企业,抑或是经营电子元器件贸易,不仅要熟练地使用通用微机进行各种数据处理,还要把计算机技术运用到本专业领域或相关领域,即具有“开发”能力。
所以新世纪的工科大学生既要掌握通用微机,又要掌握“单片机”。
单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。
这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
由此来看,单片机有着微处理器所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
正是因为单片机功能之强大,应用范围之广,我们要努力掌握它。
3.1.2单片机的应用
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1、在智能仪器仪表上的应用
2、在工业控制中的应用
3、在计算机网络和通信领域中的应用
4、在家用电器中的应用
5、单片机在医用设备领域中的应用
3.1.3单片机STC89C52
1STC89C52的性能
(1)高速:
一个时钟/机器周期,增强型8051内核,速度比普通8051快8-12倍;
(2)低功耗设计:
空闲模式,掉电模式(可由外部中断唤醒);
(3)工作频率:
0-35MHZ,相当于普通8051的0-420MHZ;
(4)时钟:
外部晶体或内部RC振荡可选,在ISP下载编程用户程序时可设置
(5)12K/10K/8K/6K/4K/2K片内Flash程序存储器,擦下次数10万次以上;
(6)512字节片内RAM数据存储器;
(7)芯片内EEPROM功能;
(8)ISP/IAP在系统可编程/在应用可编程,无需要编程器/仿真器;
(9)2个硬件16位定时器,兼容普通8051的定时器。
4路PCA还可以实现4个定时器;
(10)硬件看门狗(WDT);
(11)高速SP通信端口;
(12)全双工异步串行口(UART),兼容普通8051的串口;
(13)先进的指令集结构,兼容普通8051指令集,84个8为通用工作寄存器(共32个通用寄存器);
2STC89C52的引脚功能
STC89C52的功能除了上述与如同8051单片机不同外其余大部分都是相同的,有许多特殊功能而我们也并未用到过,下面介绍STC89C52的常用引脚及功能。
(1)P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
(2)P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。
具体如下所示:
在flash编程和校验时,P1口接收低8位地址字节。
引脚号有第二功能:
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
(3)P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
(4)P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为STC89C52特殊功能(第二功能)使用,如下所示。
在flash编程和校验时,P3口也接收一些控制信号。
表一:
P3引脚功能
口线
第二功能
信号名称
P3.0
RXD
串行数据接收
P3.1
TXD
串行数据发送
P3.2
INT0
外部中断0申请
P3.3
INT1
P3.4
T0
定时器/计数器0输入
P3.5
T1
定时器/计数器1输入
P3.6
WR
外部RAM写选通
P3.7
RD
外部RAM读选通
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
(5)RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
(6)ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
(7)PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
(8)EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp
3STC89C52单片机的复位方式和复位电路
(1)复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或者操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。
复位操作还对单片机的个别引脚信号有影响,例如把ALE和PSEN非信号变为无效状态,即ALE=0,PSEN=1。
(2)RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间持续24个振荡脉冲周期(即2个机器周期)以上,若使用频率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
产生复位信号的电路逻辑如图2所示:
图2:
复位信号的电路逻辑图
整个复位电路包括芯片内外两部分。
外部电路产生的复位信号(RST)送施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样。
然后才得到内部复位操作所需要的信号。
(3)复位操作有上电自动复位和按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,在单片机控制的数字显示温度计电路设计中的单片机复位就是这种方式,其中电容C为22uF,电阻R为1k欧姆,其电路图如图3(a),(b)所示
(a)上电复位(b)按键电平复位
4STC89C52的时钟电路
单片机的时钟可以由内部方式和外部方式产生,XTAL1(19脚)和XTAL2(18脚)即为单片机的两个时钟引脚。
(1)内时钟引脚STC89C52单片机片内有振荡电路,只需在XTAL1和XTAL2间外接石英晶体和电容组成的并联振荡电路(晶振器),晶体可以在固有频率1.2~12MHZ的晶振器之间任选晶体,电容可以在20~60pF的电容之间任选,通常选择30PF的瓷片电容。
在单片机控制的数字显示温度计电路设计的这个部分,就是采用内时钟引脚,其中晶振器为6MHz,两个电容均为30pF。
(2)外时钟方式,XTAL1接地,XTAL2接外部振荡器。
由于XTAL1端的电平不是TTL电平,故接一个上拉电阻。
外部振荡器的频率应低于12MHZ。
其基本电路如图4下:
图4:
时钟电路图
3.2显示电路
3.2.1SMC1602A的接口信号说明
表二:
SMC1602A的接口信号说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据I/O
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压信号
11
D4
4
RS
数据/命令选择端
12
D5
5
R/W
读/写选择端
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光正极
8
D1
16
BLK
背光负极
3.2.2SMC1602A的基本时序图
(1)读状态:
输入RS=L,RW=H,E=H输出:
D0~D7=状态字
(2)写指令:
输入:
RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:
无
(3)读数据:
RS=H,RW=H,E=H输出:
D0~D7=数据
(4)写数据:
RS=H,RW=L,D0~D7=数据,E=高脉冲输出:
3.2.3RAM地址映射图
控制器内部带有80×
8(80字节)的RAM缓冲区,对应关系如图5所示:
图5:
RAM地址映射图
3.2.4指令说明
(1)初始化设置
(2)显示模式设置
表三:
显示模式设置指令码
指令码
功能
0
设置16×
2显示,5×
7点阵,8位数据接口
(3)显示开/关及光标设置
表四:
显示开/关及光标设置指令码
D
C
B
D=1开显示;
D=0关显示
C=1显示光标;
C=0不显示光标
B=1光标闪烁;
B=0光标不显示
N
S
N=1当读或写一个字符后地址制作加一,且光标加一
N=0当读或写一个字符后地址制作减一,且光标减一
S=1当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。
S=0当写一个字符,整屏显示不移动
(4)数据控制
控制器内部设有一个数据地址指针,用户可以通过它来访问内部的全部80字节RAM。
表五:
数据地址控制指令码
80H+地址码(0—27H,40H—60H)
设置数据地址指针
(5)写操作时序图
图6:
写操作时序图
3.3温度传感器工作原理
3.3.1DS18B20概述
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作,DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图7所示。
图7:
DS18B20内部结构框图
DS18B20采用简单的TO-92封装,占用极少的电路板空间。
DS18B20的引脚排列,如图8(a),(b)所示:
图(a)DS18B20实物图图(b)DS18B20引脚排列
3.3.2DS18B20供电方式
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
在使用DS18B20时需要注意,如果温度高于100℃,则不推荐使用寄生电源供电方式,而应采用外部电源供电方式。
3.3.3DS18B20的数据操作
1-Wire总线将通信时使用的引脚减少到只有一根,在数据传输时需要满足特定的格式才能进行。
1-Wire总线通信的第一步是选择1-Wire设备,然后1-Wire主机发送各种命令来进行数据传输。
(1)初始化单总线的所有处理均从初始化开始。
初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。
初始化后,才可进行读写操作。
(2)ROM操作命令总线主机检测到DS18B20的存在便可以发出ROM操作命令之一命令表如下表6所示:
表6:
ROM操作命令
指令
代码
ReadROM(读ROM)
[33H]
MatchROM(匹配ROM)
[55H]
SkipROM(跳过ROM]
[CCH]
SearchROM(搜索ROM)
[F0H]
Alarmsearch(告警搜索)
[ECH]
(3)存储器操作DS18B20内部存储器由一个高速暂存器和一个非易失性可擦出EEPRAM组成。
DS18B20存储器映像如下图所示。
其中,高速暂存器用来保持数据的完整性,EEPRAM用来存储高低温报警触发值TH和TL。
表七:
DS18B20存储器映像