單片機(jī)與遠(yuǎn)程PC機(jī)間建立通信的方法
系統(tǒng)軟件框圖如圖4 所示。它是由延時、數(shù)據(jù)采集、數(shù)碼顯示、十六進(jìn)制轉(zhuǎn)ASCII 碼、數(shù)據(jù)協(xié)議、數(shù)據(jù)發(fā)送等6 個模塊組成。
下面將各個模塊的功能進(jìn)行簡單概述:
1) 延時模塊。本模塊完成的功能為延時1 s。利用定時器0 溢出中斷完成。
2) 數(shù)據(jù)采集模塊。每隔一秒對ADC0809 中的一路數(shù)據(jù)進(jìn)行采樣,然后將其保存在數(shù)據(jù)緩沖區(qū)中。
3) 數(shù)碼顯示模塊。當(dāng)ADC0809 中與一路數(shù)據(jù)被采集完畢后,共陰級八段數(shù)碼管顯示當(dāng)前ADC0809 中通道路數(shù),以及當(dāng)前路數(shù)的數(shù)據(jù)值。
4)十六進(jìn)制轉(zhuǎn)ASCII 碼模塊。本子程序完成的功能是把十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII 碼。
5) 數(shù)據(jù)協(xié)議模塊。本程序完成的功能是將要發(fā)送的ASCII 碼數(shù)據(jù)實(shí)現(xiàn)幀封裝,定義數(shù)據(jù)包的頭和尾,以及中間分隔符,起始字符為“! ”,結(jié)束字符為“#”。中間分隔符號為“+”,為方便上位機(jī)接收和存儲單片機(jī)發(fā)送的采集數(shù)據(jù)。
6) 數(shù)據(jù)發(fā)送模塊。本程序完成的功能是將數(shù)據(jù)包發(fā)送到串口服務(wù)器上。
2.3 軟件流程圖
系統(tǒng)的工作原理是系統(tǒng)上電后的, 首先進(jìn)行初始化,包括設(shè)置波特率為9600bps,定時器工作方式,串行口工作方式, 開定時中斷等。然后對八路通道進(jìn)行循環(huán)采集、顯示,最后進(jìn)行數(shù)據(jù)處理,將處理后的數(shù)據(jù)存入緩沖區(qū), 然后由串行口發(fā)送數(shù)據(jù)。流程圖如圖5所示。
3 結(jié)束語
本文所設(shè)計(jì)的方案,采用單片機(jī)和串口服務(wù)器,既可以完成數(shù)據(jù)采集, 又可以將數(shù)據(jù)封裝向Internet 發(fā)送,電路結(jié)構(gòu)簡單,實(shí)用性強(qiáng),非常適用于遠(yuǎn)距離、偏遠(yuǎn)地點(diǎn)的數(shù)據(jù)終端采集工作, 是數(shù)據(jù)網(wǎng)絡(luò)連接的一種可行性解決方案。
評論