基于单片机的数字温度计设计(附代码及仿真)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STC89C52的数字温度计
目录
1、方案选择
1.1、主控芯片选择 (2)
1.2、显示模块 (2)
1.3、温度检测模块 (2)
2、系统硬件设计
2.1、51单片机最小系统设计 (2)
2.2、温度检测电路设计 (2)
3、系统软件设计
3.1、LED显示电路设计 (2)
3.2、温度检测电路设计 (2)
3.3、仿真界面 (3)
4、实训与焊接过程
4.1、焊接与调试 (4)
4.2、焊接实物图 (4)
6、总结 (4)
7、附录
附录1、原理图 (5)
附录2、程序清单………………………………………….5~9
1、系统方案选择
1.1 主控芯片选择
STC89C52RC是采用8051核的ISP在线可编程芯片,最高工作时钟频率
80MHz,片内含8KB的可反复擦写1000次的Flash只读存储器,器件兼容MCS-51指令系统及8051引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在线可编程特定,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟周期、高速、低功耗的新一代8051单片机。
1.2 时钟及显示模块
数码管亮度高,显示大,特别是显示的温度很直观,价格比较便宜。
1.3 温度检测模块
DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。它在实际应用中不需要外部任何元器件即可实现测温,测量温度范围在-55到+125摄氏度之间。
2、系统硬件设计
2.1 51单片机最小系统设计
以STC89C52单片机为核心,选用12M的晶振,这是最常用的选择,外接电容没有特别的要求,但是外接电容的大小会影响振荡器的频率高低、振荡器的稳定性和起振的快速性,因此我们选用30pf的电容作为起振电容。复位电路为按键低电平复位,当按键按下,RET端为高电平,当高电平持续4us的时间就可以使单片机复位。
2.2 电源供电电路设计
我们采用USB作为电源,D1为电源指示灯,当开关打开,显示灯亮,表示给电路供+5V电压。
3、系统软件设计
3.1 LED显示电路设计
数码管我们用四位一体共阳数码管,A~B笔段加上350欧电阻接单片机的P1.0~7口,位选段我们加上三极管作为驱动接单片机的P2.3~0口。
3.2 温度检测电路设计
DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如
基于STC89C52的数字温度计
下:
•独特的单线接口仅需一个端口引脚进行通讯
•简单的多点分布应用
•无需外部器件
•可通过数据线供电
•零待机功耗
•测温范围-55~+125℃,以0.5℃递增。华氏器件-67~+2570F,以0.90F 递增•温度以9 位数字量读出
•温度数字量转换时间200ms(典型值)
•用户可定义的非易失性温度报警设置
•报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD 为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。
3.3仿真界面
4、实训与焊接过程
4.1、焊接与调试
4.1、焊接实物图
6、总结
1、选择芯片和传感器时,够用易用就可以,综合考虑选择性价比最好的。
2、在进行电路实际制作之前,应该用仿真软件进行仿真,可以使开发进程加快。
3、在实际制作电路时,需要注意电源端和地端要检测过不导通后才能通电检测,防止烧坏芯片。
7、附录
附录1、原理图
附录2、程序清单
ORG 00H
TMPL EQU 29H
TMPH EQU 28H
FLAG1 EQU 38H
DATAIN BIT P3.7
MAIN: LCALL GET_TEMPER
LCALL CVTTMP
LCALL DISP1
AJMP MAIN
INIT_1820:SETB DATAIN
NOP
CLR DATAIN
MOV R1,#3
TSR1: MOV R0,#107
DJNZ 0,$
DJNZ R1,TSR1
SETB DATAIN
NOP
NOP
MOV R0,#25H TSR2: JNB DATAIN,TSR3
DJNZ R0,TSR2
CLR FLAG1
SJMP TSR7
TSR3: SETB FLAG1
CLR P1.7
MOV R0,#117 TSR6: DJNZ R0,$
TSR7: SETB DATAIN
RET
GET_TEMPER:
SETB DATAIN
LCALL INIT_1820
JB FLAG1,TSS2
NOP
RET
TSS2: MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
ACALL DISP1
LCALL INIT_1820
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_18200
RET
WRITE_1820:
MOV R2,#8
CLR C
WR1: CLR DATAIN
MOV R3,#6
DJNZ R3,$
RRC A
MOV DATAIN,C
MOV R3,#23
DJNZ R3,$
SETB DATAIN
NOP
DJNZ R2,WR1
SETB DATAIN