何 冰,王菊霞
(渭南師范學(xué)院 物理與電氣工程學(xué)院,陜西 渭南714000)
設(shè)計一款能滿足大眾要求,適合各種服務(wù)性行業(yè)的緊急呼叫系統(tǒng),無疑會對改善人們生活起著十分重要的作用。對醫(yī)院單位而言,在同類行業(yè)中,需要對病人或客戶進(jìn)行快速、準(zhǔn)確的服務(wù)和治療, 這就需要一種能夠提高醫(yī)院工作人員辦事效率的設(shè)備, 而這種便捷服務(wù)式的呼叫系統(tǒng)節(jié)約了大量的人力,財力。對醫(yī)院工作人員而言,不需要頻繁的去查房、更不需要高聲應(yīng)答病人或家屬,免去了無數(shù)次的來回奔波,維護(hù)了醫(yī)院良好的安靜環(huán)境, 同時能夠準(zhǔn)確的給病人更好的服務(wù)和解決突發(fā)事件。該系統(tǒng)的設(shè)計主要分主機(jī)和從機(jī)兩部分,集串行通信,液晶顯示,蜂鳴器報警于一體,具有施工快捷、簡單、故障率低、移動方便,使用該呼叫器的病人,無需四處張望尋找,也無需高聲喊叫,只需輕松地按一下呼叫器的按鈕,所需要的服務(wù)就會得到及時的解決。
計算機(jī)與外界的信息交換稱為通信,常用的通信方式可分為兩種:并行和串行通信。一次同時傳送多位數(shù)據(jù)稱為并行通信。 并行通信其特點(diǎn)是通信速度快,但傳輸信號線多,傳輸?shù)木嚯x較遠(yuǎn)時線路復(fù)雜,成本高。
所以主要用于近距離的傳輸操作。 按一位接一位順序傳送數(shù)據(jù)的通信稱為串行通信。串行通信其特點(diǎn)是傳輸線少,通信線路簡單,通信速度慢,成本低,適合長距離通信。本設(shè)計采用串行通信。
51 單片機(jī)的串行接口是一個全雙工的接口[1],它可以作為UART(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。 51 單片機(jī)串行接口的結(jié)構(gòu)如下:
1)串行數(shù)據(jù)寄存器(SBUF)
串行數(shù)據(jù)寄存器SBUF,字節(jié)地址為99H,實(shí)際對應(yīng)兩個寄存器:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器。當(dāng)CPU 向SBUF寫數(shù)據(jù)時對應(yīng)的是發(fā)送數(shù)據(jù)寄存器,當(dāng)CPU 讀SBUF 時對應(yīng)的是接收數(shù)據(jù)寄存器。
2)串行控制寄存器(PCON)
SCON 用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0,SM1:串行接口工作方式選擇位,用于選擇四位工作方式。
表1 串行口四位工作方式Tab.1 Serial four port mode
SM2:多機(jī)通信控制位。
REN:接收允許控制位。軟件置1 允許接收;軟件置0 禁止接收。
TB8:方式2 或3 時,TB8 為要發(fā)送的第9 位數(shù)據(jù),根據(jù)需要由軟件置1 或清0。
RB8:為發(fā)送數(shù)據(jù)的第9 位.在方式2 或3 時,存放接收數(shù)據(jù)的第9 位,在方式1 時,若SM2=0,則為接收到的停止位。
TI:發(fā)送中斷標(biāo)志。 發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。 必須要軟件清零后才能繼續(xù)發(fā)送。
RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。 必須要軟件清零后才能繼續(xù)接收。
3)輸入移位寄存器
數(shù)據(jù)先串行進(jìn)入輸入移位寄存器,8 位數(shù)據(jù)全移入后,再并行送入接收SBUF 中。
4)波特率發(fā)生器
波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機(jī)用定時器T1 作為波特率發(fā)生器,T1 設(shè)置在定時方式。 波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。
5)電源控制寄存器PCON
其最高位為SMOD,稱為波特率加倍位。 若SMOD 位為1,則波特率加倍。
6)波特率計算
當(dāng)定時器T1 工作在定時方式的時候, 定時器T1 溢出率=(T1 計數(shù)率)/(產(chǎn)生溢出所需機(jī)器周期)。 由于是定時方式,T1 計數(shù)率= fORC/12。 產(chǎn)生溢出所需機(jī)器周期數(shù)=模M-計數(shù)初值W。
MAX232 芯片是美信(MAXIM)公司[2]專為RS-232 串口設(shè)計的單相電源電平轉(zhuǎn)換的芯片, 使用正5 V 單相電源供電系統(tǒng)。 如圖1 所示。
第1 部分主要是電荷泵電路。由1、2、3、4、5、6 腳和4 只電容構(gòu)成的。其功能是產(chǎn)生+12v 和-12v 電源,提供給RS-232串口。
圖1 MAX232Fig. 1 Chip MAX232
第2 部分主要是數(shù)據(jù)轉(zhuǎn)換。 由7、8、9、10、11、12、13、14腳構(gòu)成其中的兩個數(shù)據(jù)通道。其 中13 腳 (R1IN)、12 腳 (R1OUT)、11 腳 (T1IN)、14 腳(T1OUT)為第一數(shù)據(jù)通道。8 腳(R2IN)、9 腳(R2OUT)、10 腳(T2IN)、7 腳(T2OUT)為 第二數(shù)據(jù)通道。
TTL/CMOS 數(shù)據(jù)從11 引腳(T1IN)、10 引腳(T2IN)轉(zhuǎn)換成RS-232 數(shù)據(jù)從14 腳(T1OUT)、7 腳(T2OUT)送到電腦DB9插 頭;DB9 插 頭 的RS-232 數(shù) 據(jù) 從13 引 腳 (R1IN)、8 引 腳(R2IN)輸入轉(zhuǎn)換成TTL/CMOS 數(shù)據(jù)后從12 引腳(R1OUT)、9 引腳(R2OUT)輸出。
第三部分是供電。 15 腳GND、16 腳VCC(+5 V)。
1)串行口工作于方式1;用定時器1 產(chǎn)生9600bit/s 的波特率。
2)通信協(xié)議:主機(jī)首先發(fā)送連絡(luò)信號(AAH),從機(jī)接收到之后返回一個連絡(luò)信號(BBH)表示從機(jī)已準(zhǔn)備好接收。
3)通信過程使用第九位發(fā)送奇偶校驗(yàn)位。
4)從機(jī)接收到一個數(shù)據(jù)后,立即進(jìn)行奇偶校驗(yàn),若數(shù)據(jù)沒有錯誤,則返回00H,否則返回FFH。
5)主機(jī)發(fā)送一個數(shù)據(jù)后,等待從機(jī)返回數(shù)據(jù);若為00H,則繼續(xù)發(fā)送下一個數(shù)據(jù),若為FFH,則重新發(fā)送數(shù)據(jù)。
液晶顯示LCM1602[3,4,5,6]是利用液晶經(jīng)過處理后能改變光線的傳輸方向的特性來實(shí)現(xiàn)信息顯示。 一種常用的2 行16 個字的液晶模塊,它的顯示功能比較豐富,通過不同的地址編碼, 既可以顯示出不同的阿拉伯?dāng)?shù)字、 英文字母的大小寫,還可以顯示出常用的符號和日文假名等。它的電路設(shè)計比較簡單,八個數(shù)據(jù)線口可以直接和單片機(jī)的口相連,典型的結(jié)構(gòu)如圖2 所示。
LCM1602 共16 個引腳,各個引腳功能如下:
圖2 液晶顯示1602Fig. 2 Liquid crystal display 1602
第1 腳:VSS 為地電源。
第2 腳:VDD 接5V 正電源。
第3 腳:V0 為液晶對比度調(diào)整端,當(dāng)其接正電源時對比度是最弱的,而接地電源時其對比度最高。
第4 腳:RS 為寄存器選擇端,高電平時表示選擇數(shù)據(jù)、低電平時表示選擇指令。
第5 腳:RW 為讀寫信號端,高電平時表示讀操作,低電平表示寫操作。RS 和RW 共同為低電平時表示可以寫入指令或顯示地址。
第6 腳:E 端為使能端, 當(dāng)由高電平跳變成低電平時,液晶模塊執(zhí)行其命令。
第7~14 腳:D0~D7 為8 位雙向的數(shù)據(jù)線。
第15~16 腳:為背光的陽極腳和陰極腳,如果模塊是不帶背光的,則為空腳。
表2 LCD 液晶控制指令Tab.2 LCD?control instruction
主機(jī)程序流程圖如圖3 所示。
圖3 主機(jī)發(fā)射數(shù)據(jù)中斷子程序流程圖Fig. 3 The main transmitting data interrupt program
系統(tǒng)的軟件實(shí)現(xiàn)中主機(jī)的流程圖主要由以下幾個主要部分組成:首先開啟主程序,程序經(jīng)過初始化之后,主機(jī)發(fā)送AAH 到從機(jī),從機(jī)如果不應(yīng)答,則返回上一層流程,否則主機(jī)發(fā)送數(shù)據(jù)進(jìn)行檢驗(yàn)判斷輸出是否完成,若完成則清除標(biāo)志位,否則返回上一層流程。
分機(jī)程序流程圖如圖4 所示。
圖4 分機(jī)發(fā)射數(shù)據(jù)中斷子程序流程圖Fig. 4 The extension transmitting data interrupt program
系統(tǒng)的軟件實(shí)現(xiàn)中分機(jī)的流程圖主要由以下幾個主要部分組成:首先開啟主程序,程序經(jīng)過初始化之后,接收數(shù)據(jù),同時計算檢驗(yàn)主機(jī)發(fā)送數(shù)據(jù)的累加值, 如果檢驗(yàn)的累加值和主機(jī)的數(shù)據(jù)相等,則發(fā)送00H 到主機(jī),否則發(fā)送FFH;發(fā)送00H到主機(jī)后,進(jìn)行接收完成判斷,若完成則清除標(biāo)志位,然后將結(jié)果顯示到LCD 屏上,否則返回到第三個流程階段,再次計算檢驗(yàn)主機(jī)發(fā)送數(shù)據(jù)的累加值,然后重復(fù)后續(xù)流程階段。
本設(shè)計在設(shè)計過程中遇到的最大的困難就是程序的調(diào)試,串口程序的初始調(diào)試還算比較順利,先根據(jù)數(shù)碼管實(shí)現(xiàn)了串口間的發(fā)送與接收, 然后換成1602 液晶以后問題接踵而來,開始的時候復(fù)位需要在分機(jī)上進(jìn)行,但是問題是分機(jī)上復(fù)位了患者也不能立馬看到主機(jī)上的復(fù)位效果, 所以效果不能真正的實(shí)現(xiàn)。然而通過再次查閱有關(guān)串口通信的資料,得知串口通信發(fā)送接收一次要進(jìn)行一次初始化,問題隨之而解。其次在進(jìn)行主機(jī)按鍵查詢的程序設(shè)計中費(fèi)了不少功夫, 開發(fā)板上的按鍵不能中斷串口通信的過程, 而且串口通信的接口和鍵盤的一排按鍵的接口是復(fù)用的,給設(shè)計帶來了不小的麻煩,最后利用中斷的優(yōu)先級的設(shè)定, 利用外部中斷的優(yōu)先級高于定時器中斷的優(yōu)先級有效的解決了主機(jī)按鍵查詢的問題。
[1] 謝維成,楊加國.單片機(jī)原理與應(yīng)用及C51程序設(shè)計[M].北京:清華大學(xué)出版社,2009.
[2] 李建兵,周長林.EDA技術(shù)基礎(chǔ)教程[M].北京:國防工業(yè)出版社,2007.
[3] 王意崗.病房呼叫系統(tǒng)[J].建筑電氣,2004,5(23):87-109.WANG Yi-gang.Ward calling system [J].Building Electrical,2004,5(23):87-109.
[4] 朱艷華.基于PL3105的病床呼叫系統(tǒng)設(shè)計[J].北京石油化工學(xué)院報.2009,17(2):40-43.ZHU Yan-hua.Design of sickbed calling system based on PL3105 [J].Journal of Beijing Institute of Petrochemical Technology.2009,17(2):40-43.
[5] 康華光.電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2000.
[6] 胡漢才.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,1995.