4~20mA是一个量程范围,对应温度的范围。你需要一个AD模块,将接受到的电流信号(比如说15mA)转化为数字信号(比如说01000111)以便单片机处理,以及电脑获取。
你要明白以下几件事:
1该温度变送器的参数,4和20对应的温度值是多少,以便你自己将第二步中的AD接受到的电流值换算成二进制数;
2需要一个模拟量转换为数字量的模块,可以用ADXXXX,也可以用内置AD模块的单片机,比如AVR的mega16单片机,才15块钱左右,内部集成AD模块;温度变送器的输出口接AD的信号进入口,AD模块会自动输出数字量(需要你自己换算,编写运算程序)
3将运算得到的数字量,进行处理,可以保存、发送、表格存储、图像显示等等(需要在电脑上编写相关软件),用VB、C语言都可以。
以下是vb从数据库中提取每日对应的温度曲线图代码。
Private Sub Command1_Click()
Dim i As Integer
Dim conn As New ADODBConnection
Dim rs As New ADODBRecordset
Set conn = New ADODBConnection
Set rs = New ADODBRecordset
connConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=" & AppPath & "\tepmdb"
connOpen
rsOpen "select from mrwdb", conn, adOpenKeyset, adLockOptimistic
' Set MSChart1DataSource = rs
With MSChart1
'// 以线条方式显示
chartType = 3
'// 把刻录改为手工方式
PlotAxis(VtChAxisIdY)ValueScaleAuto = False
'// 设置最大值
PlotAxis(VtChAxisIdY)ValueScaleMaximum = 50
'// 设置最小值
PlotAxis(VtChAxisIdY)ValueScaleMinimum = 0
'// 设置每格为 1
PlotAxis(VtChAxisIdY)ValueScaleMinorDivision = 1
'// 增加测试数据
ColumnCount = 1
'//轴坐标标题
PlotAxis(VtChAxisIdX, 0)AxisTitle = "日期"
PlotAxis(VtChAxisIdY, 0)AxisTitle = "温度"
'//轴坐标标题字体大小的设置
PlotAxis(VtChAxisIdX, 0)AxisTitleVtFontSize = 15
PlotAxis(VtChAxisIdY, 0)AxisTitleVtFontSize = 25
'//设置图表标题
TitleText = "日期和温度对应折线图"
'// 将图表作为图例的背景。
ShowLegend = False
'// 标记每个点的值
For i = 1 To PlotSeriesCollectionCount
PlotSeriesCollection(i)DataPoints(-1)DataPointLabelLocationType = VtChLabelLocationTypeAbovePoint
Next
If rsRecordCount > 0 Then
rsMoveFirst
Else
Exit Sub
End If
For i = 0 To rsRecordCount - 1
RowCount = rsRecordCount
Row = i + 1
RowLabel = CStr(rs("日期"))
Data = rs("温度")
rsMoveNext
Next
End With
End Sub
最终调试效果图如下:
回答1:
用串口前请初始化串口。
回答2:
看数据定义
float tp; //设定为单精度
display((uint) tp); //将单精度浮点型小数转换成无符号整型,这里会丢弃小数部分数据,但对tp本身无影响
send_char((uchar) tp);//将单精度浮点型小数转换成无符号字符型,尼玛还不是丢掉了小数部分。然后发送了个8位的tp过去。
回答3:
t1=(a&0x0f)00625;//取小数部分
t=((b<<4)|(a>>4));//取整数部分
//尼玛你非得要这样表示小数?难道你就不可以用2个uchar接收小数和整数,然后去发送
if(t>128)
{
t=t+1;
}
t=t+t1;
//上面是不是这个意思 如果整数部分大于128就让整数部分加1如果不是那么就让整数部分加上小数部分。你的意思是不是大于128就不要小数了,小于128就要个小数。
解决方案先给我分我再给你附上代码
VB,VC中都有串口控件MSComm
,利用这个控件读取51单片机发送过来的数据包,至于数据包格式自己去定义。温度的数据量不大,所以在上位机编程处理好说点。具体MSComm控件的使用方法,你可以看搜索下,也可以看一些书,好几本书都是教VB,VC边串口通信的。
可以通过向通讯控制总站发送命令用VB编写体温判断。
上位机监控管理软件采用VB编制,用户可以通过向通讯控制总站发送命令,提取下位机温湿度数据,完成温度检测。
以上就是关于请问电脑如何通过温度变送器获取温度全部的内容,包括:请问电脑如何通过温度变送器获取温度、VB中如何从Access数据库中提取出一个月温度数据并绘制成月曲线、做一个温度采集系统,程序是单片机温度显示部分可以正常显示温度,要把采集的温度发送到VB里,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)