基于单片机的多功能数字温度计的设计(程序+硬件原理图)☆
摘 要:本文介绍以AT89C51单片机作为智能温度计控制核心,采用以PT热敏电阻为温度传感器和ADC0809转换进行温度数据采集的基于单片机控制的数字温度计,本温度计属于多功能温度计,显示采用串行接口芯片ZLG7289A,与PC机通讯,把测量到的数据进行存贮,显示采用RS - 232C 串行通信标准接口实现通讯。
关键词:单片机,温度传感器,温度计,RS - 232C
1 引言
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,以PT热敏电阻为传感器的信号采集端,将温度信号转换成电压信号,再经ADC0809进行模数转换,进一步将电压信号转换成单片机可以处理的00H~FFH数字信号,并保证温度与数字信号实时同步,经单片机80C51进行数据处理,再进一步变成与实际温度相符合的数字信号,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。并在LED数码管上实时跟踪显示,在温度与设置标准温度相异时进行温度控制。显示采用串行接口芯片ZLG7289A,硬件简单,数据处理进行多次采集取平均值的方法,手动设置标准温度,贴近实际,实用性强。 [资料来源:www.doc163.com]
串口实验的源程序如下所示:
;这是AT89C51单片机实验开发板向PC机的串口单向发送数据AF的演示程序
;采用MAX232专用芯片作RS232/TTL电平转换.
;通讯波特率为1200KBPS,只要按下一次K1(就是P3.6引脚变成低电平)
;就发送一个16进制的AF字符
ORG 0000H
MOV SCON,#50H ;设置成串口1方式
MOV TMOD,#20H ;波特率发生器T1工作在模式2上
MOV PCON,#80H ;波特率翻倍
MOV TH1,#0F3H ;预置初值
MOV TL1,#0F3H ;预置初值
SETB TR1 ;启动定时器T1
;以上完成通讯初始化设置
WRIT:
JB P3.6,$ ;判断K1是否按下,如果没有按下就等待
ACALL DELAY10 ;延时10毫秒消触点抖动
JB P3.6,WRIT ;去除干扰信号
JNB P3.6,$ ;等待按键松开
MOV A,#0AFH ;将16进制的字符AF发送到串口去
MOV SBUF,A ;将AF通过串口发送出去
AJMP WRIT
;10毫秒延时子程序
DELAY10:MOV R4,#20
D2:MOV R5,#248 [来源:http://Doc163.com]
DJNZ R5,$
DJNZ R4,D2
RET
END
(2) 89C51软件的调试
使用单片机仿真器进行软件的调试。
硬件的连接。为数字问度计提供直流+5V,-5V,以及接地电源。将单片机仿真头插接在温度计的插槽了,再将仿真头的接头通过计算机的串口连接到计算机。
打开计算机中的Keil µVision2软件,单击Project菜单,在弹出的下拉菜单中选中New Project选项,新建工程。然后,选择要保存的路径,输入工程文件的名字。之后则会弹出一个对话框,选择单片机的型号Atmel 的89C51然后点击“确定”。再打开“File”菜单,在下拉菜单中单击“New”选项,此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但应首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击。在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。 最后,回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单, 单击“Add File to Group ‘Source Group 1’”即可。
(3) VB程序调试
程序的调试对于最终整个系统的正常运行相当的重要,对于程序的调试不得有半点的马虎,整个过程虽然了了几步,但实际操作也比较的困难,需要认真的执行每个步骤。
但在把串口通讯到VB上的显示与存贮时,第一次调试失败了,因为form1的名字没有变过来,说明程序根本没有进入初始话状态,数码显示管显示了18摄氏度,而VB界面上的当前温度没有显示。
再一次运行程序时,开心的事情发生了:VB界面上成功的显示了18摄氏度,当老师用手握住传感器一会时,数码显示管上显示的温度立刻变成20摄氏度,同时VB界面上的当前温度也立刻变成了20摄氏度,可见VB程序是正确的。
因为整个系统比较复杂,因此采用了自底向上的调试方法,也就是先进行各个单元电路的软件仿真和硬件调试,在各个单元电路调试好后再进行系统联调,最后进行硬件的编程固化及系统的组装。程序在keil2上调试通过。并使用汇编语言编写。方便调试。
最后,实现程序的仿真。如实现数码管显示温度值,表示程序正确。如出现错误,应考虑多方面的原因。如硬件电路元器件、芯片等的损坏,则更换,如是软件部分的错误,则必须进一步的调试。直至所有故障和问题都排除,实现本温度计的功能
毕业设计说明书目录
1 引言 …………………………………………………………………………………13
2 方案论证 ……………………………………………………………………………13
3 硬件设计……………………………………………………………………………13
3.1硬件系统的硬件结构 …………………………………………………………14
3.2各功能块原理 …………………………………………………………………14
(毕业设计)
3.3通信方式的实现 ………………………………………………………………24
4 软件设计……………………………………………………………………………25
4.1程序流程………………………………………………………………………26
4.2程序……………………………………………………………………………28
4.3应用VB对串口进行应用编程 ………………………………………………35
4. 4 VB界面 ………………………………………………………………………36
5 软硬件系统的调试…………………………………………………………………37
6 附录…………………………………………………………………………………43
7 参考文献……………………………………………………………………………46
[来源:http://www.doc163.com]
主程序
BIT_COUNT DATA 34H ;传输点位数
SHOW_COUNT DATA 35H ;点亮的数码管个数
SEND_BUF DATA 36H
REC_BUF DATA 37H
DELAYY DATA 38H
RENT_C DATA 3BH
CS BIT P1.3
CLK BIT P1.4
DIO BIT P1.5
KEY BIT P1.6
ORG 00H [版权所有:http://DOC163.com]
LJMP MAIN
ORG 03H
LJMP INT_EX0
ORG 0BH
LJMP INT_T0
ORG 13H
LJMP INT_EX1
ORG 50H
MAIN:
MOV SP,#58H
MOV TMOD,#21H ;set the T0:tmod0,T1:tmod2
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
[资料来源:http://www.doc163.com]
;------------------------- ;INIT THE T1
MOV TH1,#0E6H
MOV TL1,#0E6H
SETB TR1
;----------------------------
MOV SCON , # 0E0H ; 串口初始化
MOV 30H,#0 ;为定时1s设置的计数器
MOV 31H,#0 ;采样三次用的计数器
[资料来源:http://www.doc163.com]