| 摘 要:本文介绍以AT89C51单片机作为智能温度计控制核心,采用以PT热敏电阻为温度传感器和ADC0809转换进行温度数据采集的基于单片机控制的数字温度计,本温度计属于多功能温度计,显示采用串行接口芯片ZLG7289A,与PC机通讯,把测量到的数据进行存贮,显示采用RS - 232C 串行通信标准接口实现通讯。关键词:单片机,温度传感器,温度计,RS - 232C
 1 引言
 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,以PT热敏电阻为传感器的信号采集端,将温度信号转换成电压信号,再经ADC0809进行模数转换,进一步将电压信号转换成单片机可以处理的00H~FFH数字信号,并保证温度与数字信号实时同步,经单片机80C51进行数据处理,再进一步变成与实际温度相符合的数字信号,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。并在LED数码管上实时跟踪显示,在温度与设置标准温度相异时进行温度控制。显示采用串行接口芯片ZLG7289A,硬件简单,数据处理进行多次采集取平均值的方法,手动设置标准温度,贴近实际,实用性强。
 串口实验的源程序如下所示:
 ;这是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
 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
 
  
 
  
 
  
 
  
 
  
 
 主程序
 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
 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
   ;-------------------------    ;INIT THE T1MOV TH1,#0E6H
 MOV TL1,#0E6H
 SETB TR1
 ;----------------------------
 MOV SCON , # 0E0H  ; 串口初始化
        MOV 30H,#0  ;为定时1s设置的计数器MOV 31H,#0   ;采样三次用的计数器
 |