(完整版)基于AT89S52单片机的温湿度检测系统设计定稿毕业论文 下载本文

在该软件系统中,定时器T0为工作方式1,定时周期为125ms,8次定时器中断为1S,由于实际环境温度和湿度变化是连续和平缓的,故这里采用分段定值平缓滤波算法处理每次测得的温度和湿度值,有效防止了突发干扰使测得值波动很大,导致反馈系统关启工作,影响系统的稳定,提高了系统的抗干扰性。

4.1 程序流程图

4.1.1 温湿度主程序流程图 4.1.2

4.1.3 AD4.1.4 键盘中断流程图

4.2 程序清单

4.2.1 温度采集初始化程序

ORG 0300H;

ADCON:MOV DPTR,#0F0FFH;

MOV A,#00H;

MOVX @DPTR,A; HERE:JNB P2.1RE;

报警器流程图

转换子程序流程图

MOVX;

MOV 20H,A; RET ;

4.2.2 湿度采集初始化程序 ORG 0301H

ADCON:MOV DPTR,#0F0FFH; MOV A,#00H;

MOVX @DPTR,A; HERE:JNB P2.2E; MOVX;

MOV 20H,A; RET ;

4.2.3 显示电路程序 程序: ORG 0700H; DIS : MOV R5,#04;

MOV R0,#30H; MOV DPTR,#TAB; LOOP:MOV; MOVC +DPTR; MOV SBUF,A; WAIT:JNB T1,WAIT;

CLR T1; INC R0; DJNZ R5,LOOP; RET;

TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;

4.2.4 AD转换程序 MAIN:MOV R0,#0A0H MOV R2,#08H SETB IT1 SETB IT2 MOV DPTR,#7FF8H MOVX @DPTR,A HERE: SJMP HERE

4.2.5 制交流蜂鸣器发声程序 程序:

main.sm ;控制交流蜂鸣器发出固定频率的声音;定义IO BUZZER BIT P1.2 ;复位入口 ORG 0000H

LJMP main ;定义中断T0中断入口 ORG 000BH

LJMP T0INTSVC ;函数:T0INSVC() Void T0INTSVC() interrupt1 T0INTSVC: CLR TR0

MOV TH0,#0FDH MOV TL0,#0C0H SETB TR0 CPL BUZZER

RETI ;主程序main() main:

ANL TOMD,#0F0H ORL TOMD,01H MOV TH0,#0FDH MOV TL0,#0C0H SETB ET0 SETB EA SETB TR0 SJMPS $ END

4.3 上位机软件设计

4.3.1系统进入界面程序

在此系统软件中共有3个界面,首先进入的是系统进入界面。在这个界面当中用到了Picture box、Text box、Timer等几个控件。首先,将这些控件一一拖入窗体当中,摆放好其位置。接着在图片控件中加载一个背景图片,选中图片控件,其属性当中有个“Picture”,选择图片的目录,再点击打开,图片被成功加载。日期的显示是利用Timer和Label控件实现的,Timer的特点是每隔一定的时间间隔产生一次Timer事件,将其Invernal属性设置为1000,即1秒。再写入如下程序:

Private Sub Form_Load() Timer1.Enabled = True End Sub

Private Sub Timer1_Timer() Label4.Caption = Date End Sub

这样即可完成日期显示。

在进入系统按扭对应程序段中写入以下语句即可, Private Sub Command1_Click() If Text1.Text = \Form2.Show Unload Form1 Else

MsgBox \您的学号有误,请重新输入。\警告\End If End Sub

这样即可实现在输入正确学号后才可进入系统,如果学号错误则会弹出提示对话框。 4.3.2实时显示界面

实时显示界面是在上位机对下位机的实时监测对下位机上传的数据进行曲线的绘制。

界面上的六个按钮分别为参数设置的确定键、下位机初始化、采集、停止、历史数据及退出键。点击采集键,上位机会发送命令字,使下位机开始开始采集数据并送至上位机,与此同时上位机绘出温度变化曲线,第一路为红色曲线,第二路为黄色,第三路为蓝色,第四路为绿色。采集及