4 软件设计
系统单片机程序采用C51进行编程,主要完成对DS18B20的调用中断管理、测量温度值的计算以及单片机与PC机的串口通信。上位机软件采用VBMSComm控件制作,由于C51程序较长,此处只介绍上位机软件编写程序,VB程序如下:
Private SubForm_Load()'........初始化设置
MSComm1.CommPort=1'……使用Com1口
MSComm1.Settings="9600,n,8,1"'.设置通讯参数
MSComm1.InBufferSize=4'设置接收寄存器等待读取的字符数为4
MSComm1.RThreshold=0'初始化为不产生OnComm事件
MSComm1.PortOpen=True'.打开串口
MSComm1.InputLen=4'设置并返回Input属性从接收缓冲区读取的字符数为4
MSComm1.InputMode=comInputModeText'设置接收方式为文本方式
Me.Caption="实时温度控制系统"'设置标题为"实时温度控制系统"
End Sub
Private SubCommand1_Click()'..自动读取按钮
Timer1.Enabled=True'........开启定时器
MSComm1.RThreshold=1'........开启OnComm事件触发
End Sub
Private SubCommand2_Click()'..清空内容按钮
Timer1.Enabled=False'........关闭定时器
MSComm1.RThreshold=0'........停止产生OnComm事件
Shape1.FillColor=RGB(255,255,255)
'........设置信号指示灯的颜色为白色
Text1.Text=""'........清空文本框1的内容
Text2.Text=""'........清空文本框2的内容
Text3.Text=""'........清空文本框3的内容
End Sub
Private SubCommand3_Click()'..关闭窗口按钮
Unload Me'........卸载窗体
End Sub
Private SubMSComm1_OnComm()'......事件触发
Dimrec AsString
Select CaseMSComm1.CommEvent
Casecom EvReceive
rec=MSComm1.Input
Text3.Text=rec
MyResult=(Text3.Text<"31")
'........判断当前温度是否达到31℃
If MyResult=FalseThen'....达到31℃
Shape1.FillColor=RGB(255,0,0)'........信号灯为红色
Text1.Text="产生报警"'........同时信息提示显示"产生报警"
Else'........未达到31℃
Shape1.FillColor=RGB(0,128,0)'........信号灯为绿色
Text1.Text="温度正常"'........同时信息提示显示"温度正常"
End If
Text3.Text=""
Text3.Text=rec+"℃"
MSComm1.InBufferCount=0'清空接收缓冲区
End Select
End Sub
Private SubTimer1_Timer()
Text2.Text=Now'........设置定时器产生时钟,显示当前时间
End Sub
5 系统调试
系统实现功能包括,通过下位机(单片机)将DS18B20所测温度值实时传输给上位机(PC机),通过上位机(PC机)监控环境温度,并具有报警功能。
1.在上位机软件中点击"自动读取"按钮实现自动读取当前时间,温度值。当正常温度情况下,信号指示灯为绿色,同时信息提示为"温度正常"。
2.当温度达到所设温度极限时(本系统所设温度极限为31℃),信号灯变为红色,信息提示为"产生报警",同时硬件部分的蜂鸣器会报警,如图4所示为产生报警时上位机显示部分。
文章评论(0条评论)
登录后参与讨论