機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
BS2系統(tǒng)編程與應用實例
BS2系統(tǒng)編程與應用實例
 更新時間:2009-5-26 14:36:01  點擊數(shù):1
【字體: 字體顏色

摘要:針對BS2微功耗單片機應用系統(tǒng)硬件結構與指令系統(tǒng)的特點,以系統(tǒng)監(jiān)控程序為例,著重分析系統(tǒng)程序設計方法與技巧;結合谷物流量在線測量系統(tǒng),闡述BS2在實際工程中的應用。

    關鍵詞:外圍芯片 編程 數(shù)據(jù)采集 沖量傳感器

在閱讀了本刊2001年第10期《一種新穎的器件型嵌入式單片機系統(tǒng)》后,讀者對BS2系統(tǒng)的硬件資源配置、指令系統(tǒng)與開發(fā)方式已經(jīng)有了基本的認識,本文將從系統(tǒng)編程與應用的角度進一步給予詳述。

一、BS2系統(tǒng)的變量類型與定義

BS2系統(tǒng)的PBASIC支持的變量類型有很特色,除了通常的字節(jié)(Byte)、字(Word)外,還有二進制位(bit)、半字節(jié)(nib),這顯然既靈活又節(jié)省內(nèi)存這間。比如,在使用BCD碼時,用nib變量比Byte變量能節(jié)省一半內(nèi)存。nib變量可以說明為數(shù)據(jù),例如:number var nib(10)占用5個字節(jié),可存放10個BCD碼數(shù)據(jù)。PBASIC支持將端口地址定義為常量(con),再用指令對數(shù)量操作來實現(xiàn)端口激活、復位與數(shù)據(jù)輸入/輸出。與直接的I/O地址讀/寫相比,這種方式使程序的可讀性大大改善。

通常在應用程序中首先定義系統(tǒng)變量。BS2系統(tǒng)中常用的系統(tǒng)端口變量定義如下:

CKL con 15 ''所有SPI串行外圍設備共

''享的時鐘線

DATA_ con 14 ''所有SPI串行外圍設備共

''享的數(shù)據(jù)線

EE_CS1 con 13 ''EEPROM1(U3)片選線

EE_CS0 con 12 ''EEPROM0(U2)片選線

NJU_CE con 11 ''時鐘日歷(NJU6355)允許

NJU_IO con 10 ''時鐘日歷(NJU6355)讀/寫

PwrOn con $31 ''外圍可控電源啟動

Shtdwn con 9 ''外圍可控電源關閉

b96 con $54 ''傳輸速率9600bps。

二、BS2系統(tǒng)程序設計實例解析

1.系統(tǒng)初始化

程序啟動運行時,通常需要執(zhí)行以下初始化命令:

OUTH=PwrOn ''打開外圍設備電源

DIRH=$FF ''設置端口高8位為輸出

DIRL=$FF ''設置端口低8位為輸出

2.時鐘/日歷芯片NJU6355的訪問與數(shù)據(jù)讀取

NJU6355ED時鐘/日歷芯片包含13個BCD碼存儲器,分別用于存儲當前的年、月、日、周、時、分、秒等信息,時間采取24小時制。時鐘子程序?qū)⑦@13個變量轉換為1個nib數(shù)組,定義為日期-時間數(shù)組DTG(13)。每個單元存放1個BCD碼,其取值范圍為0~9。BS2系統(tǒng)支持給數(shù)組下標命名,訪問數(shù)組變量時可以通過下標名訪問。例如:“Y10s”定義為常量1,通過DTG(Y10s)可以獲得存放在DTG數(shù)組第一單元數(shù)據(jù)。日期-時間數(shù)組及下標變量定義如下:

Yls con 0 ''存放“年份”個位

Y10s con 1 ''存放“年份”十位

Mols con 2 ''存放“月份”個位

Mo10s con 3 ''存放“月份”十位

D1s con 4 ''存放“日”個位

D10s con 5 ''數(shù)組下標,存放“日”的

''十位數(shù)信息

Day con 6 ''數(shù)組下標,存放“星期幾”對應信息

H1s con 7 ''數(shù)組下標,存放“小時”對應的個位數(shù)信息

H10s con 8 ''數(shù)組下標,存放“小時”對應的十位數(shù)信息

M1s con 9 ''數(shù)組下標,存放“分”對應的個位數(shù)信息

M10s con 10 ''數(shù)組下標,存放“分”對應的十位數(shù)信息

S1s con 11 ''數(shù)組下標,存放“秒”對應的個位數(shù)信息

S10s con 12 ''數(shù)組下標,存放“秒”對應的十位數(shù)信息

Digit var nib ''變量,4bitBCD碼

DTG var nib(13)'' 日期-時間數(shù)組

Temp var word ''臨時變量

(1)set_clock子程序

功能:以人機對話方式讀取用戶輸入的日期、時間數(shù)據(jù),存放到DTG()數(shù)組中,作為計時初值。

set_clock:

serout 16, b96,[CR,“Year(YY):"]:

gosub get2BCD ''取年值

DTG(Y10s)=temp.tighnib存儲年份的十位到DTG ''(Y10s)

DTG(Y1s)=temp.lownib ''存儲年份的個位到DTG ''(Y1s)

用與取年值相同的方法可取得月份、日期、時、分、星期幾等數(shù)據(jù),并分別存放到DTG(Mo10s)、DTG(Mo1s)、DTG(D10s)、DTG(D1s)、DTG(H10s)、DTG(Hls)、DTG(M10s)、DTG(M1s)、DTG(day)中。

(2)write_clock子程序

功能:將DTG()數(shù)組中的數(shù)據(jù)寫入時鐘芯片,秒的起始值為0。

write_clock:

high NJU_IO ''置位時鐘/日歷芯片為允許寫

high NJU_CE ''選擇時鐘/日歷芯片

for digit=0 to 10''寫11個數(shù)據(jù)到DTG(0)~DTG(10)

shiftout DATA_,CLK,lsbfirst,[DTG(digit)4] ''串行輸出4位到時鐘

next

low NJU_CE ''禁止時鐘/日歷芯片

return

(3)read_clock子程序

功能:用于實時讀取當前時鐘/日歷到DTG()數(shù)組。

Read_clock:

low NJU_IO ''置位時鐘/日歷芯片為允許讀

high NJU_CE ''選擇時鐘/日歷芯片

for digit=0 to 12 ''從DTG(0)~DTG(12)取13個實時數(shù)據(jù)

shiftin DATA_,CLK,lsbpre,[DTG(digit)4] ''串行輸入4位

next

low NJU_CE''Deselect the chip. ''禁止時鐘/日歷芯片

return

(4)get2BCD子程序

功能:以2位十六進制數(shù)形式取兩個BCD碼,每個BCD碼表示數(shù)值0~9。用戶設置時鐘參數(shù)時需調(diào)用此子程序。

get2BCD:

serin16,b96,[HEX2 temp]

return

3.A/D采樣子程序

    以下程序是對用戶系統(tǒng)中外圍芯片LTC1298編程。LTC1298是12位A/D轉換器,輸入量程序0~5V,以外圍電源的5V輸出為參考電壓。LTC1298有兩種輸入模式:兩路單端輸入或1路差分輸入。模式=1為單端,通道號為0~1;模式=0為差分,通道號為0。

A/D轉換程序中變量定義如下:

ADC_CS con 8 ''A/D轉換器LTC1298片選線

ADcnfg var nib ''存儲ADC配置位

ADstb var Adcnfg.bit0 ''與ADC(always 1)

ADmode var Adcnfg.bit1 ''A/D輸入模式

ADch var Adcnfg.bit2 ''通道號

Admsbf var Adcnfg.bit3 ''輸出0(無意義)

以下Adread子程序觸發(fā)A/D轉換,將采集轉換的結果存放到Adres中。

Adread:

Adcnfg=Adcnfg l%1001 ''設置配置參數(shù)

Low ADC_CS ''激活A/D轉換

Shiftout DATA_,CLK,lsbfirst,[Adcnfg4] ''傳送4位配置位

Shiftin DATA_,CLK,msbpost,[Adres12] ''取采樣結果,保存到Adres的低12位中

High ADC_CS ''禁止A/D

Return ''返回調(diào)用程序

若用戶選擇了不同的A/D轉換器,本程序不能完全照搬使用,應根據(jù)所選芯片的可編程信息改寫程序;而前面的時鐘讀寫程序和EEPROM程序用戶可直接使用。

三、BS2系統(tǒng)應用實例

筆者在科研工作中使用配備了LTC1298 A/D轉換器的BS2系統(tǒng),利用廠家提供的免費軟件與PC電腦經(jīng)過串行總線連接,構成了通用實時數(shù)據(jù)采集、控制器,完成了對溫度、多相流測量等多種試驗。使用后感覺最大優(yōu)點之一是微功耗:一節(jié)普通的9V疊層電池可以連續(xù)工作兩個月以上。尤其適用于外出攜帶的野外工作,需長時間連續(xù)監(jiān)測的場合。另外它開發(fā)成本低,不像一般的單片機需要另外花費購置專用開發(fā)系統(tǒng)。本實例介紹的是筆者在谷物產(chǎn)量實時監(jiān)測系統(tǒng)中用BS2為主控制器組成的實時數(shù)據(jù)采集系統(tǒng)。圖1所示為谷物產(chǎn)品實時監(jiān)測系統(tǒng)的示意圖。

由被測物料重量與流量的基本關系知,物料累積重量W、瞬時單位長度質(zhì)量mi、流速vi與瞬時質(zhì)量流利Q之間存在著關系:

式(1)中:Δt為定時采樣時間間隔;mi(t)為在t時刻、傳送帶上任意處單位長度上的谷物質(zhì)量;vi(t)為谷物t時刻的瞬時運動速度。如果在谷物脫離收割機傳送帶后的運行軌跡某處插入一個攔截板,并安裝沖量傳感器,處于運行狀態(tài)的谷物在與攔截板碰撞后谷物的動量將發(fā)生變化,傳感器輸出隨之變化。則由物理學沖量的定義知沖量:

Ii(t)=mi(t)vi(t)    (2)

因此,由式(1)與(2)知,利用連續(xù)測量谷物撞擊攔截板后其動量的變化進而實現(xiàn)谷物累積重量的實時測量,從理論上說是可行的。由試(2)可見,沖量數(shù)值的大小既與谷物的重量有關,也與谷物的流速有關。對不同谷物的收割機來說,收獲過程中不同谷物(例如玉米、小麥、水稻和黃豆)的收獲過程對應著不同的運送速度;而對于確定的谷物對象,物料輸送裝置的運行速度基本上是不變的。

實驗得知,在物料輸送裝置的運行速度不變情況下,在單位時間內(nèi)運送某谷物Xkg,與傳感器輸出值D成正比,用公式X=KD表示。通過標定方式為不同種類谷物計算出不同的K。用BS2系統(tǒng)測量計算谷物總量的程序中,使用了前節(jié)所列的部分系統(tǒng)定義變量,在此程序中增加了幾個本程序必要的變量定義。

源程序代碼如下:

Wgt VAR WORD ''谷物累計重量

Seconds VAR WORD ''累計秒數(shù)

Temp1 VAR BYTE ''臨時變量

Temp2 VAR BYTE ''臨時變量

Temp3 VAR BYTE ''臨時變量

K VAR BYTE ''標定系數(shù)

主程序:

Admode=0 ''差分輸入模式

Adch=0 ''通道號為0

Wgt=0 ''測量前谷物重量為0

Seconds=0 ''初始秒值為0

Temp2=0

Temp3=0

Gosubread_clock ''讀當前時鐘

Temp1=DTG(Sls) ''取時鐘的秒值

K=0.2 ''谷物標定系數(shù)

Mcycle:

Gosub Adread ''調(diào)用采樣子程序

IF Adres<8 Then Goto Mcycel ''采樣值<8,視為無谷物輸入, ''采樣無效

Temp3=Temp3+1 ''1s內(nèi)采樣次數(shù)累加

Advalue=Advalue+Adres ''1s采樣值累加

Temp2=DTG(Sls)

IF Temp2=Temp1 Then Mcycle ''1s內(nèi)重復采樣

Second=Second+1 ''秒值增加1

Temp1=Temp2

Wgt=Wgt+K*Advalue/Temp3 ''重量按每秒平均值增加

Advalue=0 ''每秒采樣值清0

Temp3=0 ''每秒采樣次數(shù)清0

Debug "當前谷物重量為:",dec5 Wgt,cr

IF Seconds=3600 Then End ''測1h(小時)結束。

Goto MCycle

End

在上述程序中,BS2每秒多次采樣后輸出一個平均值進行重量累加。因為收獲機械不可避免地存在著振動,即使沒有容 物通過沖量傳感器,仍然會有一定幅度的噪聲電平。為了降低噪聲的影響,提高測量精確定,根據(jù)實驗情況,程序設計引入了噪聲門限閥。若采樣值<8,則認為無容物輸入,采樣值作放棄處理。

以上僅是筆者在自己科研中的應用實例與經(jīng)驗。從網(wǎng)上看Parallax公司組織過幾次專門的應用大賽,獲獎作品有可辨識障礙與聲音的微型機器人,微型灌溉控制器,河流水質(zhì)變化監(jiān)測系統(tǒng),氣象站風力、風速、空氣濕度監(jiān)測系統(tǒng)等等。美國一家航天公司,甚至同時使用6套BS2系統(tǒng),分別用于控制火箭發(fā)射角度、傳送GPS信息、電子攝像等等。有興趣的讀者從那里能得到更多信息?傊,在美、歐、澳洲等國家,BS2系統(tǒng)的應用成果已經(jīng)是遍地開花。

  • 上一篇: 紅外線遙控器解碼程序
  • 下一篇: 利用單片機I/O口直接驅(qū)動LCD
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1