{$cfg_webname}
主页 > 电子信息 > 单片机 >

基于单片机的多功能数字温度计的设计(程序+硬件原理图)☆

来源:56doc.com  资料编号:5D1650 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9A5D1650
资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用. 帮助
资料介绍

摘 要:本文介绍以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 T1
  MOV TH1,#0E6H
  MOV TL1,#0E6H
  SETB TR1
;----------------------------
MOV SCON , # 0E0H  ; 串口初始化

       MOV 30H,#0  ;为定时1s设置的计数器
       MOV 31H,#0   ;采样三次用的计数器

推荐资料