数字温度计设计报告书Word格式文档下载.docx
《数字温度计设计报告书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字温度计设计报告书Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
![数字温度计设计报告书Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/21/620f1427-e717-445e-93d2-41381f79327f/620f1427-e717-445e-93d2-41381f79327f1.gif)
用单片机收集转换后的数字信息进行处理和温度的显示。
此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生测量误差。
1.1.2方案二
采用数字式温度传感器—DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
综合以上两种方案分析,采用数字式温度传感器,可以得到较高的测量精度和较广的测量范围,还可以简化系统电路,以提高系统性价比。
1.2显示模块的设计
1.2.1方案一
采用LCD液晶显示,由单片机驱动。
此方案有美观、显示清晰多样的优点。
但同时液晶显示器的驱动程序复杂,价格昂贵,从而使整个系统的性价比下降。
1.2.2方案二
采用LED数码管静态显示方法,电路容易理解,驱动程序简单,但需要多片七段译码器驱动显示,增加成本,而且需要占用单片机多个I/O口,浪费系统硬件资源。
1.2.3方案三
采用LED数码管动态扫描显示方法,价格低廉,只需要7个I/O口就可以同时驱动八个数码管显示,硬件利用效率高,驱动程序容易理解和编写。
综合以上三种方案分析,采用LED数码管动态扫描显示方法。
1.3控制按键的选择
1.3.1方案一
采用独立式按键,每个按键实现一个功能,易于控制,程序编写简单,可是需要大量占用单片机的I/O接口资源,当需要多个功能按键时,需要对单片机外扩I/O口,使得线路繁琐,增加硬件成本开支。
1.3.2方案二
采用阵列式按键,可以减少对单片机I/O接口的使用,扫描M×
N个按键只需要占用M+N个I/O接口即可实现,降低对硬件资源的占用,但是需要编写按键扫描程序,会增加软件程序难度。
比较此两种方案,采用阵列式按键。
通过增加软件程序来降低硬件开支。
二、系统模块分析
2.1软、硬件系统分析
2.1.1硬件系统框图:
经过方案论证与比较,选择出最优方案的系统框图如图1所示:
图1总系统框图
2.1.2软件程序:
软件程序可以分为两大部分,第一部分为主系统,第二部分为温度计,两部分的程序流程图如图2、图3。
键盘功能表
年
(1)
年
(2)
月
日
时
分
清秒
星期
闹钟1
闹钟2
关闹1
关闹2
显温度
显华度
显星期
显日期
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
图2主程序流程图
按键
按键功能
P0.0
转换两路温度显示
P0.1
摄氏、华氏温度显示转换
P0.2
上限温度设定
P0.3
下限温度设定
P0.4
修改温度
图3温度计程序流程图
2.2微控制器模块
温度计的控制器采用AT89C51单片机,AT89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。
电路如图4。
第20引脚为接地端;
第40引脚为电源端;
第31引脚需要接高电位使单片机选用内部程序存储器;
第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;
第9脚为复位脚,当其接高电位时,单片机停止工作。
P0口接两个发光二极管和一个蜂鸣器以实现声光报警功能,P1口连接一片七段译码器和一片3-8译码器以动态扫描方式同时驱动八个数码管,P2口与16个阵列式按键相连以实现对键盘的扫描。
图4AT89C51单片机接线图
2.3温度采集模块
温度采集模块选用数字式温度传感器DS18B20,其可以与单片机I/O口直接连接,不需要外接A/D转换模块。
DS18B20的性能特点如下:
1.独特的单线接口仅需要一个端口引脚进行通信;
2.可通过数据线供电,电压范围为3.0~5.5V;
3.温度测量范围为-55℃~+125℃;
4.测温分辨率可达0.0625℃;
5.温度以9位或12位A/D转换。
DS18B20采用3脚PR-35封装,电路如图5所示:
图5DS18B20与单片机接口电路图
DS18B20的工作是由单片机软件程序控制的,控制方法如下:
1.复位操作:
首先单片机应向DS18B20输送复位信号,将数据线拉低并保持480-960μS再释放,然后由上拉电阻拉高16-60μS,最后再由DS18B20发出响应低电平60-240μS就完成复位操作。
2.写操作:
单片机先将数据线拉低1μS以上,再写入数据。
3.读操作:
读数据之前,单片机应先将数据线拉低,再释放。
DS18B20在数据线从高电平跳低后15μS内将数据送出,单片机在15μS后读取数据线。
DS18B20控制程序如下:
CONFIG12EQU7FH;
定义转换精度为12位
TEMPHEQU40H;
温度值高位
TEMPLEQU41H;
温度值低位
REG2EQU42H
REG3EQU43H
REG4EQU44H
DATEQUP2.0;
数据线
ORG0000H
SJMPSTART
ORG30H
START:
MOVSP,#09
MOVP1,#0FFH
LCALLINIT;
调用初始化程序
MAIN:
MOVP0,#00H
LCALLRDTEMP;
调用读温度值程序
INIT:
LCALLRESET;
调用复位子程序
MOVA,#0CCH
LCALLWRITE;
调用写子程序
MOVA,#4EH
LCALLWRITE
MOVA,#CONFIG12
LCALLWRITE
RET
RDTEMP:
LCALLRESET
MOVA,#44H
LCALLDELAY
MOVA,#0BEH
LCALLREAD
MOVTEMPL,A
MOVTEMPH,A
MOVREG2,A
LCALLREAD
MOVREG3,A
MOVREG4,A
RESET:
LA:
SETBDAT
MOVR2,#200
LB:
CLRDAT
DJNZR2,LB
MOVR2,#30
LC:
DJNZR2,LC
CLRC
ORLC,DAT
JCLB
MOVR6,#80
LD:
JCLP
DJNZR6,LD
SJMPLA
LP:
MOVR2,#250
LF:
DJNZR2,LF
WRITE:
MOVR3,#8
WR1A:
SETBDAT
MOVR4,#8
RRCA
WR2A:
DJNZR4,WR2A
MOVDAT,C
MOVR4,#30
WR3A:
DJNZR4,WR3A
DJNZR3,WR1A
READ:
CLREA
MOVR6,#8
RD1A:
MOVR4,#6
NOP
RD2A:
DJNZR4,RD2A
MOVC,DAT
MOVR5,#30
RD3A:
DJNZR5,RD3A
DJNZR6,RD1A
2.4LED温度显示模块
LED温度显示模块采用动态扫描显示方法电路如图6
图6LED动态扫描显示电路
从图中可以观察到单片机P1口低4位连接一片七段译码器74LS47,由于74LS47是共阳极数码管的七段译码器所以要选用共阳极的数码管。
单片机P1.0-P1.3的输出信号经过74LS47译码后就可以驱动数码管的段码显示相应的数字,另外在74LS47的输出与数码管之间还要接上7个470欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。
P1.4-P1.6口接于3-8译码器74LS138的三个输入端,而74LS138的输出端通过三极管分别接于八个数码管的公共极。
通过由P1.4-P1.6口的输出量来控制74LS138选择点亮某一个数码管。
由于74LS138是低电位有效,所以应该采用PNP型的三极管来驱动数码管,在此三极管相当于一个开关的作用。
依靠这两块芯片就可以控制数码管实现动态扫描显示。
例如:
使八个数码管显示12345678。
在第一时刻输出“0001”给74LS47,让数码管显示“1”,同时输出“000”给74LS138,选择第一个数码管工作,其余数码管不工作,这样第一时刻就只有第一个数码管显示“1”,其余数码管均不显示。
同理第二时刻也只有第二个数码管显示“2”,依次类推第N时刻就只有第N个数码管显示“N”。
人的肉眼只能分辨0.1秒内的变化,所以如果以每一时刻0.01秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“12345678”。
对应的LED温度显示模块的程序如下:
MOVP1,#00000001B
CALLDELAY
MOVP1,#00010010B
MOVP1,#00100011B
MOVP1,#00110100B
MOVP1,#01000101B
MOVP1,#01010110B
MOVP1,#01100111B
MOVP1,#01111000B
AJMPSTART
DELAY:
MOVR0,#250
DJNZR0,$
2.5声光报警模块
为了使温度计具备高、低温度上、下限报警的能力,增加了声光报警模块。
该模块工作原理如下:
首先用按键设定温度上、下限数值,然后用当前显示温度数值分别与上、下限温度进行比较,一旦当前温度值高于上限温度或低于下限温度就会启动蜂鸣器和发光二极管报警。
声光报警模块电路图如图7。
图7声光报警模块电路
声光报警模块程序如下:
DUIBI:
;
上、下限对比子程序
MOVA,62H
CLRC
SUBBA,72H;
对比十位温度值
JCSHANGBAO
JZZAIBI1
LJMPCHU1
ZAIBI1:
对比个位温度值
MOVA,61H
SUBBA,71H
JZSHANGBAO
SHANGBAO:
上限报警
SETBP0.6;
启动上限报警灯(红)
SETBP0.5;
启动蜂鸣器
CALLDELAY10
CHU1:
MOVA,72H
SUBBA,64H;
JCXIABAO
JZZAIBI2
LJMPCHU2
ZAIBI2:
MOVA,71H
SUBBA,63H
LJMPCHU2
XIABAO:
下限报警
SETBP0.7;
启动下限报警灯(绿)
SETBP0.5;
MOVR7,#100
DJNZR7,$
CALLDELAY10
CHU2:
2.6电子日历、时钟模块
为了实现实时播报温度、日期、时间功能就必须设计日历、时钟模块。
该模块全部由软件程序来实现,步骤如下:
1.由定时器T0产生秒时钟,产生方法为:
单片机系统由12MHz晶振提供时钟,则定时器T0的计数周期为1÷
(12MHz/12)=1μS,让计数器每次计数4000次后就产生计数益出中断,则计数器初值应设为65536-4000=61536=F060H,所以分别给TH0和TL0赋值F0、60。
2.开启定时器0中断,使得计数益出后产生中断,再设定产生250次中断之后就产生一个秒信号。
产生秒信号的程序如下:
START1:
MOVTMOD,#00000001B;
设置定时器0工作方式为1
MOVTH0,#0F0H;
设定定时器初值计数每次计数4000次MOVTL0,#60H
MOVIE,#10000010B;
开启总中断和定时器0中断允许位
MOVR4,#250;
定时250次,250X4000=1S
SETBTR0
AJMPSTART1;
启动定时器
TIM0:
MOVTH0,#0F0H
MOVTL0,#60H
DJNZR4,X2
MOVR4,#250
CALLCLOCK;
时钟调整子程序
CALLDISP;
时钟显示子程序
X2:
RETI
3.由秒信号来计数,当达到60后向“分”进位;
分计数,当达到60后向“时”进位;
时计数,当达到24后向“日”进位;
日计数,日超出当月上限后进位到“月”;
月计数,当月计数到达12后向“年”进位,依次实现电子日历、时钟功能。
日历、时钟系统程序流程如图8
图8日历、时钟系统程序流程图
2.7电子闹钟模块
为了提高使用价值和丰富功能,本温度计扩展了两个独立的电子闹钟作为其它
功能。
通过按键设定某一时间,用当前时间与该设定时间进行对比,每秒钟对比一次,一旦发现当前时间与设定时间一致则驱动蜂鸣器发出闹钟声。
实现闹钟功能的程序如下:
(注:
以下仅是闹钟1的程序,闹钟2的程序与此类似)
ZHONG1:
MOV4AH,#00H;
存放闹钟1所设定的时间
MOV4BH,#00H;
NAOZHONG1:
扫描与闹钟1有关的4键盘
MOVR3,#0FEH
MOVR1,#00H
MOVA,R3
MOVP2,A
MOVA,P2
SETBC
MOVR5,#04H
LLL1:
RLCA
JNCKEYIN1
INCR1
DJNZR5,LLL1
LCALLDISP1
LJMPNAOZHONG1
KEYIN1:
MOVA,R1
XRLA,#00H
JZXXX0
XRLA,#01H
JZXXX1
XRLA,#02H
JZXXX2
XXX0:
MOVA,4AH
ADDA,#1
DAA
MOV4AH,A
CJNEA,#24H,HUI0
MOV4AH,#00
HUI0:
XXX1:
MOVA,4BH
MOV4BH,A
CJNEA,#60H,HUI1
MOV4BH,#00
HUI1:
XXX2:
LJMPSAOMIAO
DISP1:
显示闹钟设定值
ANLA,#11110000B
SWAPA
ADDA,#00H
MOVP1,A
CALLDELAY1
ANLA,#00001111B
ADDA,#10H
ADDA,#20H
ADDA,#30H
MOVP1,#01000000B
MOVP1,#01010000B
NAO1:
用设定闹钟时间值与当前时间值比较
MOVA,2AH
CJNEA,4AH,FANHUI
MOVA,2BH
CJNEA,4BH,FANHUI
MOVR2,#2
SHENG:
产生闹铃声
MOVP0,#0FFH
MOVP0,#00H
DJNZR2,SHENG
FANHUI:
2.8语音播报模块
语音播报模块采用语音芯片ISD1420构成,该芯片能够高质量地完成声音录制与还原,最大录音时间为20秒,具备分段录音功能,便于与单片机连接。
语音播报模块电路如图9。
图9语音播报模块电路
其中S3键为录音键,S1、S2键为播放键,A0-A7为地址选择端,将ISP1420的A0-A7直接与单片机的P1口相连,就可以实现录音地址选择功能,再将播放键接于P3.0口以实现单片机控制的实时播放功能。
2.9直流稳压电源模块
整个温度计系统需要+5V电源供电,采用直流稳压电源提供,但这样不便于携带,所以还设计一个自制的简易可调直流稳压电源。
该电源采用三端可调稳压管LM317以及外围电路构成,可以提供+3V、+5V、+6V、+12V四种档位的电压。
电源电路如图10。
电源电路原理:
1.220V交流电经过变压器变为15V交流电,然后通过桥式整流电路和滤波电容后得到近似为直流的电信号送入LM317,电压约为18V。
图10自制直流稳压电源
2.在进入LM317之前分出一条支路,并经过一个稳压管7812得到一个稳定的12V电压提供给继电器工作。
3.由一片十进制计数器4017控制四个模拟开关芯片4066。
只选取4017中的“0”输出、“1”输出、“2”输出、“3”输出分别控制开关1、2、3、4,即任一时刻只能有一个开关接通,当记数到“4”时二极管D7导通复位。
不同的开关接通就可以将不同的电阻接入LM317的控制脚1,从而改变控制脚1的电位,而改变LM317的输出电压,再经过大功率集成开关TWH8778输出。
4.开关S2为复位开关,按下后4017复位脚15脚为高电位有效,所以复位;
开关S1为调压开关,接于4017的第14脚CLOCK,每按下一次使4017计数一次;
S3为电压输出按钮,按下继电器吸合;
S4为停止供电按钮,按下继电器不工作。
2.10键盘扫描模块
由于此数字温度计功能丰富,需要很多控制开关,为了减少开关对单片机I/O口的占用,所以采用阵列式按键。
键盘扫描模块电路如图11。
图11键盘扫描模块电路
键盘扫描程序流程图如图12。
图12键盘扫描程序流程图
键盘扫描程序说明:
给键盘所连接的P2口赋扫描码,例如:
MOVP2,#0FEH,
则扫描最后一行按键。
写入这个扫描码后P2口的高4位写入“1”,被设为输入状态,低4位中只有P2.0为“0”。
而P2口的高4位通过