⑴ 求VB高手,需要VB通過串口接收51單片機採集到的溫度,並在VB上顯示出來溫度值,不需要曲線
僅供參考
Private Sub Form_Load()
Dim i As Integer
With MSComm1
If .CommPort <> 2 Then .CommPort = 2 '設置Com2為通信埠
.Settings = "9600,N,8,1" '設置通信埠參數 9600赫茲、無校驗、8個數據位、1個停止位.(這里需要進一步說明的是:.Setting=」BBBB,P,D,S」。
'含義是:B:Baud Rate(波特率);P:Parity(奇偶);D:Data Bit;S:Stop Bit)
.InBufferSize = 1024 '設置緩沖區接收數據為1024位元組
.OutBufferSize = 512
.InputMode = comInputModeText '設置數據接收模式為16進制形式
.InputLen = 1 '設置Input一次從接收緩沖讀取位元組數為1
.RThreshold = 1 '設置接收一個位元組就產生OnComm事件
.OutBufferCount = 0 '清空發送緩沖區
.InBufferCount = 0 '滑空接收緩沖區
If Not .PortOpen Then
.PortOpen = True '打開通信埠
End If
End With
⑵ 使用51單片機與PC進行串口通信時,怎麼將一個溫度值(帶兩位小數)發送到VB編寫的上位機界面上顯示
使用51單片機與PC進行串口通信時,需將一個溫度值(帶兩位小數)按通信協議規范組成的數據幀發送到PC機,VB則按通信協議規范組成的數據幀編寫的上位機程序,接收和處理數據幀,並顯示於運行程序界面或控制項上。
數據幀組成:分幀長、幀首、數據和幀尾等。
數據:
帶兩位小數的溫度值發送需要制定好合適的數據約定,假釋溫度值是在1000攝氏度以內。
可以使將實際溫度值乘100倍取整,以兩位元組的整形變數傳送。
也可以使將實際溫度值乘100倍取整,以5個ASCII字元直接傳送。
51單片機按上述方案取一組成數據幀發送給上位機串口。
VB編寫的上位機串口接收程序的數據接收處理代碼,按下位機採取的數據約定和數據幀格式接收和處理數據,取出數據除以100,獲得所需的帶兩位小數在程序界面顯示。
需要注意的是整形變數方式接收需要按二進制模式接收,字元串方式接收以文本模式接收。
⑶ 這個單片機程序可以往VB裡面傳送數據 可以正常顯示溫度,但是發送到VB里邊顯示00
數據頭校驗加上AA,隨便你加,解包的時候,判斷這個標志位就行了,校驗位,加不加都可以,常見的加奇偶校驗,就是多發一個位過去,實際上串口一旦出錯,都是很明顯的錯誤,奇偶校驗的作用非常小,串口常常都會收到多數據幀的情況,一般把這些篩選掉就可以了,想要安全,就考慮USB來,說一下你的程序。初步估計你這個程序本身就有問題, 程序發送出去的數據是否正確,這個很容易辦,藉助串口調試助手這個是很多工程師都在用的,就不用考慮PC接收數據部准確的情況,網上下一個,看電腦上顯示的數據,是否正常。找出錯誤的原因,是在單片機發送程序還是你自己寫的VB程序,個人感覺是你單片機端不正確,這個我沒有運行你的程序,因為你前面提到一秒發送好多次數據。你的目的應該是想1S更新一次數據到電腦上去吧。也不排除VB端接收數據也出現了錯誤,
⑷ 我需要將單片機採集到的溫濕度 通過485 傳送到電腦上用VB做的上位機進行顯示 請問vb與485這塊要注意什麼呢
單片機UART轉RS485,即串口接一個MAX485就可以了
PC端需要用USB轉RS485的模塊
軟體上只要具有統一的通信握手協議就可以了
⑸ vb進行編程,接收單片機發送來的數據溫度和濕度,顯示在指定文本里。
1.將單片機與PC 連接,並在計算機管理的硬體中找到埠為COM*的設備,USB的也一樣
2.用MSCOMM控制項進行連接,要點是要偵測到指定的埠和數據返回,意思是你要編寫代碼查詢COM1-16號埠有沒連接設備,並返回單片機傳送的起始數據,
3.根據數據調用中斷或者事件觸發編程即可,非常簡單。如手頭沒有單片機用手機即可。
⑹ 基於VB的單片機溫度數據採集,將單片機數據送入VB時,數據要怎麼處理,為什麼VB會顯示亂碼
你的數據格式完全是數字的話,估計你發送的是ASCII碼,每個位元組減去48(十進制)就可以得到實際數字,比如收到0x34 0x33,各減去48得到21,21就是最終的值,不知道說清楚沒有
⑺ 把單片機採集的溫度經過串口傳輸到PC機上,在PC機上如何用VB做出曲線圖顯示溫度的變化
根據從串口收到的溫度值,一個一個的描點到曲線圖,點多了就組成了曲線。
⑻ 做一個溫度採集系統,程序是單片機溫度顯示部分可以正常顯示溫度,要把採集的溫度發送到VB里,
回答1:
用串口前請初始化串口。
回答2:
看數據定義
float tp; //設定為單精度
display((uint) tp); //將單精度浮點型小數轉換成無符號整型,這里會丟棄小數部分數據,但對tp本身無影響
send_char((uchar) tp);//將單精度浮點型小數轉換成無符號字元型,尼瑪還不是丟掉了小數部分。然後發送了個8位的tp過去。
回答3:
t1=(a&0x0f)*0.0625;//取小數部分
t=((b<<4)|(a>>4));//取整數部分
//尼瑪你非得要這樣表示小數?難道你就不可以用2個uchar接收小數和整數,然後去發送?
if(t>128)
{
t=t+1;
}
t=t+t1;
//上面是不是這個意思 如果整數部分大於128就讓整數部分加1.如果不是那麼就讓整數部分加上小數部分。你的意思是不是大於128就不要小數了,小於128就要個小數。
解決方案先給我分我再給你附上代碼
⑼ 用VB編寫上位機界面, 將單片機傳來的溫度信號進行顯示,界麵包括溫度曲線,當前溫度,最高溫度,急需。
這個不難,只不過現在沒時間,需要的話,周末可以幫你編一個。