基于AT89C51的無線病房呼叫系統(tǒng)設計
主程序流程圖
2.2 從機程序設計
從機的程序設計主要包括初始化程序、外部呼叫信號等待程序、數(shù)據(jù)接收程序、數(shù)據(jù)發(fā)送程序、延時程序等主要程序。這里需要說明的是在設計外部呼叫信號等待程序時,在接收到外部呼叫信息后,需要經(jīng)過一段延時(約30 ms)后再進行采樣看是否是瞬時干擾信號。
3 系統(tǒng)通信協(xié)議設計
3.1 系統(tǒng)無線通信協(xié)議設計
由于本設計的無線網(wǎng)絡系統(tǒng)中存在一個中心(主機)和多個用戶端(從機),因此本系統(tǒng)呈現(xiàn)為點對多點的通信方式,協(xié)議為點到多點的通信協(xié)議。在整個病房呼叫系統(tǒng)所設計的通信系統(tǒng)中,無論是在發(fā)射請求信息還是在發(fā)射應答信息時,發(fā)射的數(shù)據(jù)量始終保持固定的字節(jié)數(shù)且信息結構簡單,數(shù)據(jù)量較??;而且為了降低發(fā)射信息出現(xiàn)碰撞的概率,在該系統(tǒng)中從機的數(shù)量有一定限制,因此在本設計中采用了比較簡單的純ALOHA法來解決信息碰撞的問題[3]。
3.2 通信協(xié)議數(shù)據(jù)幀設計
本系統(tǒng)采用固定字節(jié)長度的數(shù)據(jù)幀,并使得請求信息數(shù)據(jù)幀和應答信息數(shù)據(jù)幀格式相互對應,從機請求信息數(shù)據(jù)傳輸采用引導字頭、接收地址、發(fā)送地址和校驗字的數(shù)據(jù)幀格式,而主機應答信息數(shù)據(jù)傳輸采用引導字頭、接收地址、確認指令和校驗字的數(shù)據(jù)幀格式。
?。?)引導字頭:對主機而言,為了隨時接收從機發(fā)送的請求信息,其射頻芯片nRF401總是處于接收狀態(tài)。本設計的傳輸協(xié)議中,數(shù)據(jù)幀的引導字采用OxFF后跟OxAA作為通信同步碼,接收協(xié)議只能夠接收以OxFF后跟OxAA開始的數(shù)據(jù)包。要注意的是,上面已經(jīng)說明的引導字頭前還要再加一個隨機字節(jié),因為起始傳輸時第一個字節(jié)往往是接收不到的,它的作用是使接收機進入狀態(tài)抑制噪聲,在本設計中該隨機字節(jié)采用Ox00。
?。?)接收地址:接收地址既包括從機發(fā)送請求信息中的接收地址,也包括主機發(fā)送應答信息中的接收地址。在醫(yī)院的病房樓中,很可能存在多套同規(guī)格的射頻無線病房呼叫系統(tǒng)同時工作。這樣就必須給每一個主機編上代碼,才能使主機確認接收的信息是否是發(fā)送給自己的,這個主機編號同時也就作為了從機發(fā)送請求信息時的接收地址。而每個主機下的從機也會有一個對應的編號,這個編號在本設計中就采用病房號,也就是主機發(fā)送應答信息時的接收地址。
?。?)發(fā)送地址:發(fā)送地址既存在于從機發(fā)送的請求信息中也存在于主機回復的應答信息中。從機請求信息中的發(fā)送地址是提供給主機用于顯示的病房號,也是在主機發(fā)送應答信息時的接收地址。通過應答信息中的接收地址,從機可以判斷出該接收到的信息是否是發(fā)給自己的。如果不是,從機將重新發(fā)送一遍請求信息,否則將繼續(xù)接收確認信息。同理,主機也可以根據(jù)請求信息中的發(fā)送地址確認發(fā)送信息的是否是自己轄區(qū)內(nèi)的從機,如果不是將不予以接收顯示。
?。?)確認指令:確認指令用于主機通告從機信息發(fā)送是否正確。在本設計中,采用OxFF作為信息發(fā)送正確的指令,而采用OxEE作為信息發(fā)送錯誤的指令。事實上,在本設計的軟件設計中,為了確保信息的準確發(fā)送,只要確認信息不是OxFF,則從機就會自動地重新發(fā)送信息。
?。?)
評論