(2)主程序的C代码如下:
void main() //主函数 {
uchar buff[4],i; dula=0; wela=0; init_com(); while(1) {
tempchange(); //温度转换函数 for(i=10;i>0;i--) {
dis_temp(get_temp()); //获取温度并显示 }
deal(temp); //进行温度处理
sprintf(buff,\将浮点型温度格式化为字符型for(i=10;i>0;i--) {
dis_temp(get_temp()); //温度显示 }
comm(buff); //串口发送数据 for(i=10;i>0;i--) {
dis_temp(get_temp()); } } }
27
5.2温度获取并转换
温度获取且转换的步骤是先对DS18B20复位初始化,延时一下,然后单点测温,写温度转换指令,下一步就是读取寄存器存储的温度数据,最后就是温度数据乘以10,返回数值。下图5-2是温度获取与转换子程序流程图。
图5-2温度获取与转换子程序流程图
5.3温度的控制
当空间温度在26℃-28℃范围时,并不需要对被检测空间进行热量的交换。当被检测空间温度在24℃ 28 图5-3温度控制流成图 其C程序代码如下: void deal(uint t) //温度控制函数 { uchar i; if((t>warn_l2)&&(t<=warn_l1))//大于24度小于26度 { warn(40,0x01); //第一个亮,蜂鸣器发出“滴”声 } else if(t<=warn_l2) { warn(10,0x03); } else if((t warn(40,0x04); } 29 else if(t>=warn_h2) { warn(10,0x0c); } else //在26度和28度之间时只是调用显示函数延时 { i=40; while(i--) { dis_temp(get_temp()); } } } 30 6 单片机与上位机通信 在最后要在上位机上显示实时温度值,就要借助串口通信了。在我们调试实验的时候首先需要对串口进行调试,以确保其能正常通信。本毕业设设仅是采用VB6.0调用MSComm控件接收、处理和显示温度数据。在新建工程添加完MSComm控件和TextBox控件后,双击【TextBox】控件在Private Sub From_load()函数中增加如下代码: MSComm1.Settings = \ '波特率9600bit/s,无校验,8位数据,1位停止位 MSComm1.CommPort = 3 '设定串口,3为com3(视具体情况而定,可以在计算机设备管理那里看到,我的是使用com3) MSComm1.InBufferSize = 8 '设置返回接受缓冲区的大小,以字符为单位 MSComm1.OutBufferSize = 2 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False '关串口 MSComm1.RThreshold = 4 '设置并返回产生oncomm事件的字符数,以字符为单位 'Rthreshold为1,接收缓冲区收到每一个字符都会产生MSComm控件产生OnComm事件 MSComm1.SThreshold = 1 MSComm1.InputMode = comInputModeText '以文本方式接收 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True MSComm1.InBufferCount = 0 '清空接收缓存区 Me.Caption = \温度\ 编辑完以上代码双击窗体内MSComm控件,在Private Sub MSComm1_OnComm()函数中添加如下接收数据的代码: Dim rec As String Select Case MSComm1.CommEvent Case comEvReceive rec = MSComm1.Input 31 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机和温度传感器的温度控制系统(7)在线全文阅读。
相关推荐: