目前大多的病床呼叫系統(tǒng)采用有線傳輸方式,有線傳輸占用空間較大,耗材多,而且不易移動,因此現(xiàn)今需要對病床呼叫系統(tǒng)進行升級,近年來在我國無線領(lǐng)域有了大的進展,這為此提供了有力的技術(shù)支持。有的一些簡易無線發(fā)射接收模塊傳輸距離近,效率低,可靠性差,不適合用于產(chǎn)品的設(shè)計。
本設(shè)計是基于單片機實現(xiàn)的無線多路病床呼叫系統(tǒng),分為無線發(fā)射模塊、無線接收模塊、單片機控制模塊、顯示模塊、呼叫報警部分和復位應(yīng)答部分。本系統(tǒng)通過無線電實現(xiàn)信號的傳遞,單片機作為控制部件協(xié)調(diào)處理整個系統(tǒng)的工作,實現(xiàn)無線信號的遠距離傳輸,減少了材料的耗費,安裝簡單,使醫(yī)患溝通更加靈活,是無線網(wǎng)絡(luò)技術(shù)在醫(yī)學臨床上的大膽應(yīng)用,具有創(chuàng)新性。
1.2設(shè)計要求及預期目標
設(shè)計要求:設(shè)計出穩(wěn)定高效的運行系統(tǒng),并且有一定的抗干擾能力,能夠?qū)崿F(xiàn)多路呼叫且互不干擾。距離在100m范圍內(nèi),實現(xiàn)多路無線病床呼叫,并留有擴展空間。
預期目標:病人按呼叫鍵時,無線發(fā)射器發(fā)射信號,無線接收器接收無線信號,通過單片機控制處理,護士值班室發(fā)出呼叫警報,同時1602液晶上顯示相應(yīng)的床位號,當護士按鍵應(yīng)答,呼叫報警停止,液晶顯示以應(yīng)答,警報由定時器控制關(guān)閉。當有多個病人呼叫沒有及時應(yīng)答時,對應(yīng)顯示各床床位號,同時報警。
1.3設(shè)計可行性
有線呼叫器受位置的制約不能很好的達到醫(yī)患溝通,無線呼叫系統(tǒng)就顯示其很大的優(yōu)越性,可移動,不受位置制約,現(xiàn)今無線傳輸技術(shù)有了突飛猛進的發(fā)展,技術(shù)越來越成熟,普遍應(yīng)用到生活、娛樂、學習和軍工等領(lǐng)域,這為無線傳輸技術(shù)與醫(yī)學臨床的結(jié)合提供了技術(shù)支持。在校期間也學習了與單片機相關(guān)的,有了一定的理論基礎(chǔ)。因此,本課題具有可行性,能夠得到實現(xiàn)。
1.4 設(shè)計方案及步驟
針對單片機的無線病床呼叫系統(tǒng),制定以下方案及步驟:
第一步,根據(jù)設(shè)計目的構(gòu)想設(shè)計的原理圖框架,學習設(shè)計中要用到的知識,如無線發(fā)射模塊的原理、編碼解碼,單片機C語言編程設(shè)計,液晶1602的顯示,使用的芯片引腳工作原理, Protel軟件使用等。
第二步,對硬件模塊進行設(shè)計。如無線發(fā)射模塊、無線接收模塊、1602顯示模塊、聲音呼叫模塊。在Protel中繪制原理圖。
第三步,對系統(tǒng)軟件進行設(shè)計。如主函數(shù)程序設(shè)計、初始化程序設(shè)計、延時子程序設(shè)計、液晶顯示子程序設(shè)計、定時器中斷服務(wù)子程序設(shè)計。
第二章 系統(tǒng)硬件設(shè)計
2.1 系統(tǒng)原理框圖 根據(jù)單片機的無線病床呼叫系統(tǒng)要求初步繪制出系統(tǒng)原理框圖如圖2-1所示。            圖2-1 系統(tǒng)原理框圖 2.2 單片機STC89C51芯片簡介 STC89C51是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復位電路,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 STC89X51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式?臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35Mhz,6T/12T可選。 
圖2-2 STC89C51單片機引腳圖 單片機是美國STC公司最新推出的一種新型51內(nèi)核的單片機。片內(nèi)含有Flash程序存儲器、SRAM、UART、SPI、PWM等模塊。 (一)STC89C51主要功能、性能參數(shù)如下: (1)內(nèi)置標準51內(nèi)核,機器周期:增強型為6時鐘,普通型為12時鐘; (2)工作頻率范圍:0~40MHZ,相當于普通8051的0~80MHZ; (3)STC89C51RC對應(yīng)Flash空間:4KB; (4)內(nèi)部存儲器(RAM):512B; (5)定時器\計數(shù)器:3個16位; (6)通用異步通信口(UART)1個; (7)中斷源:8個; (8)有ISP(在系統(tǒng)可編程)\IAP(在應(yīng)用可編程),無需專用編程器\仿真器; (9)通用I\O口:32\36個; (10)工作電壓:3.8~5.5V; (11)外形封裝:40腳PDIP、44腳PLCC和PQFP等。 (二)STC89C51單片機的引腳說明: VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 I/O口作為輸入口時有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時實際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過某種運算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。上面圖中的兩個三角形表示的就是輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號以完成不同的操作。這是由硬件自動完成的,不需要我們操心,1然后再實行讀引腳操作,否則就可能讀入出錯,為什么看上面的圖,如果不對端口置1端口鎖存器原來的狀態(tài)有可能為0Q端為0Q^為1加到場效應(yīng)管柵極的信號為1,該場效應(yīng)管就導通對地呈現(xiàn)低阻抗,此時即使引腳上輸入的信號為1,也會因端口的低阻抗而使信號變低使得外加的1信號讀入后不一定是1。若先執(zhí)行置1操作,則可以使場效應(yīng)管截止引腳信號直接加到三態(tài)緩沖器中實現(xiàn)正確的讀入,由于在輸入操作時還必須附加一個準備動作,所以這類I/O口被稱為準雙向口。89C51的P0/P1/P2/P3口作為輸入時都是準雙向口。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 (三)STC89C51單片機最小系統(tǒng): 最小系統(tǒng)包括單片機及其所需的必要的電源、時鐘、復位等部件,能使單片機始終處于正常的運行狀態(tài)。電源、時鐘等電路是使單片機能運行的必備條件,可以將最小系統(tǒng)作為應(yīng)用系統(tǒng)的核心部分,通過對其進行存儲器擴展、A/D擴展等,使單片機完成較復雜的功能。 STC89C51是片內(nèi)有ROM/EPROM的單片機,因此,這種芯片構(gòu)成的最小系統(tǒng)簡單﹑可靠。用STC89C52單片機構(gòu)成最小應(yīng)用系統(tǒng)時,只要將單片機接上時鐘電路和復位電路即可,結(jié)構(gòu)如圖2-3所示,由于集成度的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。   圖2-3 單片機最小系統(tǒng)原理框圖 (1) 時鐘電路 STC89C51單片機的時鐘信號通常有兩種方式產(chǎn)生:一是內(nèi)部時鐘方式,二是外部時鐘方式。內(nèi)部時鐘方式如圖2-4所示。在STC89C51單片機內(nèi)部有一振蕩電路,只要在單片機的XTAL1(18)和XTAL2(19)引腳外接石英晶體(簡稱晶振),就構(gòu)成了自激振蕩器并在單片機內(nèi)部產(chǎn)生時鐘脈沖信號。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率范圍在1.2~12MHz間選擇,典型值為12MHz和6MHz。 
圖2-4 STC89C51內(nèi)部時鐘電路 (2) 復位電路 當在STC89C51單片機的RST引腳引入高電平并保持2個機器周期時,單片機內(nèi)部就執(zhí)行復位操作(若該引腳持續(xù)保持高電平,單片機就處于循環(huán)復位狀態(tài))。 復位電路通常采用上電自動復位和按鈕復位兩種方式。 最簡單的上電自動復位電路中上電自動復位是通過外部復位電路的電容充放電來實現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復位。 除了上電復位外,有時還需要按鍵手動復位。本設(shè)計就是用的按鍵手動復位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST(9)端與電源Vcc接通而實現(xiàn)的。按鍵手動復位電路見圖2-5。時鐘頻率用11.0592MHZ時C取10uF,R取10kΩ。 
圖2-5 STC89C51復位電路
(四) STC89C51中斷技術(shù)概述 中斷技術(shù)主要用于實時監(jiān)測與控制,要求單片機能及時地響應(yīng)中斷請求源提出的服務(wù)請求,并作出快速響應(yīng)、及時處理。這是由片內(nèi)的中斷系統(tǒng)來實現(xiàn)的。當中斷請求源發(fā)出中斷請求時,如果中斷請求被允許,單片機暫時中止當前正在執(zhí)行的主程序,轉(zhuǎn)到中斷服務(wù)處理程序處理中斷服務(wù)請求。中斷服務(wù)處理程序處理完中斷服務(wù)請求后,再回到原來被中止的程序之處(斷點),繼續(xù)執(zhí)行被中斷的主程序。  圖2-6為整個中斷響應(yīng)和處理過程。
圖2-6 中斷響應(yīng)和處理過程
如果單片機沒有中斷系統(tǒng),單片機的大量時間可能會浪費在查詢是否有服務(wù)請求發(fā)生的定時查詢操作上。采用中斷技術(shù)完全消除了單片機在查詢方式中的等待現(xiàn)象,大大地提高了單片機的工作效率和實時性。 2.3 硬件模塊設(shè)計 由圖2-1系統(tǒng)原理框圖可知,整個系統(tǒng)分為五個模塊:無線發(fā)射模塊、無線接收模塊、聲音報警模塊、液晶顯示模塊、按鍵應(yīng)答模塊。 下面將簡單的介紹各個模塊設(shè)計方案。
2.3.1無線發(fā)射模塊 PT2262是一種CMOS 工藝制造的低功耗低價位通用編碼電路,PT2262最多可有12 位(A0-A11)三態(tài)地址端管腳(懸空,接高電平,接低電平),任意組合可提供531441 地址碼,PT2262 最多可有6 位(D0-D5)數(shù)據(jù)端管腳,設(shè)定的地址碼和數(shù)據(jù)碼從17 腳串行輸出,可用于無線遙控發(fā)射電路。 PT2262 管腳說明如表2-4 表2-4 PT2262管腳說明 | | | | | 地址管腳,用于進行地址編碼,可置為“0”、 “1” 、“懸空”。 | | | 數(shù)據(jù)輸入端,有一個為“1”即有編碼發(fā)出,內(nèi)部下拉。 | | | | | | | | | 編碼啟動端,用于多數(shù)據(jù)的編碼發(fā)射,低電平有效; | | | | | | | | | |
T10A發(fā)射模塊(如表2-5)采用SMD技術(shù),在穩(wěn)頻處理上采用最先進聲表諧振器(SAW)元件,電路板(PCB)采用介質(zhì)損耗最小的材料,體積小巧。
表2-5 T10A發(fā)射模塊
圖2-6所示為無線發(fā)射模塊圖,由PT2262編碼,發(fā)射模塊的四個按鍵分別代表不同的病床號,按下表示病人呼叫。 
圖2-6 無線發(fā)射模塊圖 發(fā)射模塊有密碼保證功能,最多可以編6個數(shù)據(jù)碼和6561個地址碼,使重復的機會大大減少。其性能參數(shù)如下: ? 電源電壓: DC3V~DC12V ? 靜態(tài)電流:≤0.02uA ? 發(fā)射頻率:315MHz ? 發(fā)射電流:5~50mA ? 發(fā)射距離:50~800m ? 調(diào)制方式:ASK 在通常使用中,一般采用8位地址碼和4位數(shù)據(jù)碼,這時編碼芯片PT2262和解碼芯片PT2272的第1~8腳為地址設(shè)定腳,有三種狀態(tài)可供選擇:懸空、接正電源、接地三種狀態(tài),3的8次方為6561,所以地址編碼不重復度為6561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用,一般生產(chǎn)廠家都把地址編碼端懸空,用戶可以自己設(shè)置編碼。設(shè)置地址碼的原則是:同一個系統(tǒng)地址碼必須一致;不同的系統(tǒng)可以依靠不同的地址碼加以區(qū)分。 2.3.3液晶顯示模塊 
圖2-10 1602實物圖 1602LCD的基本參數(shù)及引腳功能 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖10-54所示: 圖2-11 1602LCD尺寸圖 1602LCD主要技術(shù)參數(shù): 顯示容量:16×2個字符 芯片工作電壓:4.5—5.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.95×4.35(W×H)mm 引腳功能說明 1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表10-13所示: 編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 | 1 | VSS | 電源地 | 9 | D2 | 數(shù)據(jù) | 2 | VDD | 電源正極 | 10 | D3 | 數(shù)據(jù) | 3 | VL | 液晶顯示偏壓 | 11 | D4 | 數(shù)據(jù) | 4 | RS | 數(shù)據(jù)/命令選擇 | 12 | D5 | 數(shù)據(jù) | 5 | R/W | 讀/寫選擇 | 13 | D6 | 數(shù)據(jù) | 6 | E | 使能信號 | 14 | D7 | 數(shù)據(jù) | 7 | D0 | 數(shù)據(jù) | 15 | BLA | 背光源正極 | 8 | D1 | 數(shù)據(jù) | 16 | BLK | 背光源負極 |
表2-12:引腳接口說明表 第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負極。 2.3.4聲音報警模塊 該設(shè)計有聲音報警,當有病人呼叫時,蜂鳴器就會大聲提示,直到護士應(yīng)答回復,才會停止鳴叫,控制引腳接在P3.4引腳上,利用三極管當做開關(guān)電路可以保護單片機,還可以起到放大電流的作用,當三極管基極為高電平時,發(fā)射極截止,為低電平時,發(fā)射極導通。報警模塊如圖2-13所示。 
圖2-13聲音報警模塊
2.3.5應(yīng)答電路 本設(shè)計中四個床位使用一個應(yīng)答按鈕,接在P3.3引腳上,當有病人按下按鈕,報警開始時,按下應(yīng)答按鈕,即可停止報警,應(yīng)答模塊圖如圖2-14所示 
圖2-14應(yīng)答電路
第三章 系統(tǒng)軟件設(shè)計 2.3.2無線接收模塊 解碼接收模塊包括接收頭和解碼芯片PT2272兩部分。接收頭將接收的信號輸入PT2272的14引腳(DIN),PT2272對接收到的信號解碼。無線接收模塊如圖2-7所示。 
圖2-7 無線接收模塊圖 編碼芯片PT2262 發(fā)出的編碼信號由:地址碼、數(shù)據(jù)碼、同步碼組成一個完整的碼字,解碼芯片PT2272 接收到信號后,其地址碼經(jīng)過兩次比較核對后,VT 腳才輸出高電平,與此同時相應(yīng)的數(shù)據(jù)腳也輸出高電平,如果發(fā)送端一直按住按鍵,編碼芯片也會連續(xù)發(fā)射。當發(fā)射機沒有按鍵按下時,PT2262 不接通電源,其17 腳為低電平,所以315MHz 的高頻發(fā)射電路不工作,當有按鍵按下時,PT2262 得電工作,其第17 腳輸出經(jīng)調(diào)制的串行數(shù)據(jù)信號,當17 腳為高電平期間315MHz 的高頻發(fā)射電路起振并發(fā)射等幅高頻信號,當17 腳為低平期間315MHz 的高頻發(fā)射電路停止振蕩,所以高頻發(fā)射電路完全收控于PT2262 的17 腳輸出的數(shù)字信號,從而對高頻電路完成幅度鍵控(ASK 調(diào)制)相當于調(diào)制度為100%的調(diào)幅。 PT2272管腳說明如表2-9
表2-8 PT2272管腳說明 | | | | | 地址管腳,用于進行地址編碼,可置為 “0”,“1”,“f”(懸空),必須與2262一致,否則不解碼 | | | 地址或數(shù)據(jù)管腳,當做為數(shù)據(jù)管腳時,只有在地址碼與2262一致 一致,數(shù)據(jù)管腳才能輸出與2262數(shù)據(jù)端對應(yīng)的高電平,否則輸出為低電平,鎖存型只有在接收到下一數(shù)據(jù)才能轉(zhuǎn)換 | | | | | | | | | 數(shù)據(jù)信號輸入端,來自接收模塊輸出端 | | | | | | | | | 解碼有效確認 輸出端(常低)解碼有效變成高電平(瞬態(tài)) |
PT2262和PT2272除地址編碼必須完全一致外,振蕩電阻還必須匹配,一般要求譯碼器振蕩頻率要高于編碼器振蕩頻率的2.5~8倍,否則接收距離會變近甚至無法接收,隨著技術(shù)的發(fā)展市場上出現(xiàn)一批兼容芯片,在實際使用中只要對振蕩電阻稍做改動就能配套使用。在具體的應(yīng)用中,外接振蕩電阻可根據(jù)需要進行適當?shù)恼{(diào)節(jié),阻值越大振蕩頻率越慢,編碼的寬度越大,發(fā)碼一幀的時間越長。市場上大部分產(chǎn)品都是用2262/1.2M=2272/200K組合的,少量產(chǎn)品用2262/4.7M=2272/820K。 解碼接收模塊包括接收頭和解碼芯片PT2272兩部分組成。接收頭將收到的信號輸入PT2272的14腳(DIN),PT2272再將收到的信號解碼。 接收板工作電壓為DC 5V,接收靈敏度: -103dBm ,尺寸(mm): 49*20*7 ,工作頻率:315MHz,工作電流:5mA ,編碼類型:固定碼(板上焊盤跳接設(shè)置) 應(yīng)用說明:與各類型遙控器配合使用,解碼輸出后進行相應(yīng)控制,在通常使用中,我們一般采用8位地址碼和4位數(shù)據(jù)碼,這時編碼芯片PT2262和解碼芯片PT2272的第1~8腳為地址設(shè)定腳,有三種狀態(tài)可供選擇:懸空、接正電源、接地三種狀態(tài),地址編碼不重復度為38=6561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用,遙控模塊的生產(chǎn)廠家為了便于生產(chǎn)管理,出廠時遙控模塊的PT2262和PT2272的八位地址編碼端全部懸空,這樣用戶可以很方便選擇各種編碼狀態(tài),用戶如果想改變地址編碼,只要將PT2262和PT2272的1~8腳設(shè)置相同即可,例如將發(fā)射機的PT2262的第2腳接地,第3腳接正電源,其它引腳懸空,那么接收機的PT2272只要也第2腳接地,第3腳接正電源,其它引腳懸空就能實現(xiàn)配對接收。當兩者地址編碼完全一致時,接收機對應(yīng)的D1~D4端輸出約4V互鎖高電平控制信號,同時VT端也輸出解碼有效高電平信號。
3.1設(shè)計的軟件環(huán)境簡介 3.1.1Keil_c51 Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。 Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。Keil_c軟件界面如圖3-1-1: 圖3-1-1Keil_c軟件界面
該軟件是一款集編程和仿真于一體的軟件,它支持匯編、C語言及二者的混合編程。 3.1.2 Protel99SE Protel99SE是PORTEL公司在80年代末推出的EDA軟件。Protel99SE是應(yīng)用于Windows9X/2000/NT操作系統(tǒng)下的EDA設(shè)計軟件,采用設(shè)計庫管理模式,可以網(wǎng)設(shè)計,具有很強的數(shù)據(jù)交換能力和開放性及3D模擬功能,是一個32位的設(shè)計軟件,可以完成電路原理圖設(shè)計,印制電路板設(shè)計和可編程邏輯器件設(shè)計等工作,可以設(shè)計32個信號層,16個電源--地層和16個機加工層。 Protel99SE軟件的特點: - 可生成30多種格式的電氣連接網(wǎng)絡(luò)表;
- 強大的全局編輯功能;
- 在原理圖中選擇一級器件,PCB中同樣的器件也將被選中;
- 同時運行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò)
- 既可以進行正向注釋元器件標號(由原理圖到PCB),也可以進行反向注釋(由PCB到原理圖),以保持電氣原理圖和PCB在設(shè)計上的一致性;
- 滿足國際化設(shè)計要求(包括國標標題欄輸出,GB4728國標庫); * 方便易用的數(shù);旌戏抡妫嫒SPICE 3f5);
- 支持用CUPL語言和原理圖設(shè)計PLD,生成標準的JED下載文件; * PCB可設(shè)計32個信號層,16個電源-地層和16個機加工層;
- 強大的“規(guī)則驅(qū)動”設(shè)計環(huán)境,符合在線的和批處理的設(shè)計規(guī)則檢查;
- 智能覆銅功能,覆鈾可以自動重鋪;
- 提供大量的工業(yè)化標準電路板做為設(shè)計模版;
- 放置漢字功能;
- 可以輸入和輸出DXF、DWG格式文件,實現(xiàn)和AutoCAD等軟件的數(shù)據(jù)交換;
- 智能封裝導航(對于建立復雜的PGA、BGA封裝很有用);
- 方便的打印預覽功能,不用修改PCB文件就可以直接控制打印結(jié)果;
- 獨特的3D顯示可以在制板之前看到裝配事物的效果;
- 強大的CAM處理使您輕松實現(xiàn)輸出光繪文件、材料清單、鉆孔文件、貼片機文件、測試點報告等;
- 經(jīng)過充分驗證的傳輸線特性和仿真精確計算的算法,信號完整性分析直接從PCB啟動;
- 反射和串擾仿真的波形顯示結(jié)果與便利的測量工具相結(jié)合;
Protel99SE的工作界面是一種標準的Windows界面,如圖所示,包括:標題欄、主菜單、標準工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口。Protel99SE軟件界面如圖3-1-2。
 圖3-1-2Prtel99SE軟件界面
運行Protel99SE程序后,進入軟件的主界面。通過左側(cè)工具欄中的Browse(從庫中選擇元件命令)命令。
3.2 主函數(shù)程序設(shè)計 一個完整的程序中只有一個main函數(shù),首先調(diào)用初始化函數(shù)進行初始化,然后判斷并調(diào)用顯示子程序使液晶1602顯示、蜂鳴器鳴響報警。程序流程如圖3-2所示。
圖3-2 主程序流程圖 3.3 初始化程序設(shè)計 初始化程序包括液晶初始化顯示、定時器中斷系統(tǒng)初始化。 (一)、液晶初始化 根據(jù)液晶使用手冊,在液晶使用之前,要對其設(shè)置顯示模式,光標設(shè)置,然后進行清屏操作。方便之后使用。 (二)、定時器中斷系統(tǒng)初始化 STC89C51有兩個定時/計數(shù)器,都有定時和計數(shù)兩種工作模式,四種工作方式(方式0、方式1、方式2、方式3),屬于增一計數(shù)器。特殊功能寄存器TMOD用于選擇定時器/計數(shù)器T0、T1的工作模式和工作方式。但無論是工作在定時器模式還是計數(shù)器模式,實質(zhì)都是對脈沖信號進行計數(shù),只是計數(shù)的來源不同,計數(shù)器模式是對加在T0(P3.4)和T1(P3.5)兩個引腳的外部脈沖進行計數(shù),而定時器模式是對單片機的時鐘振蕩器信號經(jīng)片內(nèi)12分頻后的內(nèi)部脈沖信號計數(shù)。 - 工作方式控制寄存器TMOD,不能位尋址,其格式如圖3-3所示。

圖3-3 寄存器TMOD的格式 - GATE :門控位。
- M0、M1:工作方式選擇位。
- C/T:計數(shù)器和定時器模式選擇位。C/T=0,為定時器模式;C/T=1為計數(shù)器模式。
M0、M1共有4種編碼,對應(yīng)于4種工作方式的選擇,見表3-4。 表3-4 M1、M0工作方式選擇 | | | | | | | 方式2,8位的常數(shù)自動重裝的定時器/計數(shù)器 | | 方式3,僅用于T0,此時T0分為兩個8位計數(shù)器,T1停止計數(shù) |
定時器的工作方式設(shè)置好以后就要給定時器裝入初值,工作方式不同初值也不同。 1、下面介紹一下單片機的時鐘周期、機器周期和指令周期。 - 時鐘周期是單片機時鐘控制信號的基本時間單位。若時鐘晶體的震蕩頻率為f0sc ,則時鐘周期Tosc=1/fosc 。
- 機器周期是CPU完成一個基本操作所需要的時間。AT89C51單片機的每12個時鐘周期為一個機器周期,即TCY=12/fOSC 。
- 指令周期是執(zhí)行一條指令所需的時間。AT89C51單片機中指令按字節(jié)來分,可分為單字節(jié)、雙字節(jié)和三字節(jié)指令,單字節(jié)和雙字節(jié)指令一般為單機器周期和雙機器周期,三字節(jié)指令都是雙機器周期,只有乘、除指令占4個機器周期。
本設(shè)計中,時鐘晶體的頻率為11.0592MHZ,所以時鐘周期為1/12M。T0作為定時器使用,工作方式為方式1,作為16位計數(shù)器。設(shè)計數(shù)個數(shù)為N,計數(shù)初值為X,那么X=216-N, 定時時間=N×12/晶振頻率,所以,定時時間=(216-X)×12/晶振頻率。 本設(shè)計設(shè)置每隔50ms中斷一次,那么得出初值X=0x4BFF,定時器T0的高8 位TH0賦值0x4B,低8位TL0賦值0xFF。 2、定時器/計數(shù)器控制寄存器TCON,可位尋址,其格式見表3-5。 表3-5 特殊寄存器TCON的格式
① TR0:定時器啟動位。TR0=0,關(guān)閉定時器0;TR0=1,開啟定時器0. ② IT0:選擇外部中斷0為跳沿觸發(fā)方式還是電平觸發(fā)方式。IT0=0,為電平觸發(fā)方式;IT0=1,為跳沿觸發(fā)方式。 4、單片機對各中斷源的開放或屏蔽是由片內(nèi)的中斷允許寄存器IE控制的,可位尋址,其格式見表3-6。 表3-6 中斷允許寄存器IE的格式
- EA:中斷允許總開關(guān)控制位。EA=0,所有的中斷請求被屏蔽;EA=1,所有的中斷請求被開放。
- ES:串行口中斷允許位。ES=0,禁止串行口中斷;ES=1,允許串行口中斷。
- ET0:定時器/計數(shù)器T0的溢出中斷允許位。ETO=0,禁止T0溢出中斷;ETO=1,允許T0溢出中斷。
- EX0:外部中斷0中斷允許位。EX=0,禁止外部中斷0中斷;ES=1,允許外部中斷0中斷。STC89C51復位后,IE被清零,所有的中斷請求被禁止。所以在初始化時,要令EA=1,EX0=1,ET0=1,開放總中斷、允許T0中斷。初始化程序如下:
void init() { bg_1602=0; TMOD=0x01; TL0=0x4b; TH0=0xff; EA=1; ET0=1; TR0=1; E=0; com_1602(0x38); com_1602(0x0c); com_1602(0x06); com_1602(0x80); com_1602(0x01); } 3.4 延時子程序設(shè)定 延時子程序作為方便其他程序調(diào)用,避免程序繁瑣重復。我將延時子程序定為有參函數(shù),延時1ms,程序如下: void delay(ui x) { ui i,j; for(i=0;i<x;i++) for(j=0;j<121;j++); } 3.5 液晶顯示子程序 void display() { if(num_D0||num_D1||num_D2||num_D3) { if(num_D0==1) { dis_1602(1,0,2,0,1); dis_1602(1,0,3,0,10); } if(num_D1==2) { dis_1602(1,0,4,0,2); dis_1602(1,0,5,0,10); } if(num_D2==3) { dis_1602(1,0,6,0,3); dis_1602(1,0,7,0,10); } if(num_D3==4) { dis_1602(1,0,8,0,4); dis_1602(1,0,9,0,10); } dis_1602(10,1,5,1,0); } else dis_1602(15,0,0,3,0);
結(jié)束語
至此,本設(shè)計的主要內(nèi)容已經(jīng)完成。本章是在對前面完成的工作進行總結(jié)的基礎(chǔ)上,提出今后進一步工作的建議和設(shè)想。 選擇這個課題之后,我明白要解決的難點:病人都按開關(guān)時,在數(shù)碼顯示器能循環(huán)顯示病床,這也就是考驗我們對所學知識有比較透徹的了解和我們的耐心。 接下來每天奔波在宿舍、餐廳三點一線的生活,雖然有點累,但很充實,在這之中還去請教老師和同學,他們耐心的教導讓我更加堅定了對該課題的研究,另外還有很多老師的幫助。 在設(shè)計的過程中遇到了很多問題,可以說得是困難重重,在遇到各種各樣問題的同時,會發(fā)現(xiàn)了自己的不足之處,如對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。比如說Protel軟件應(yīng)用的不夠熟練、Proteus仿真知識及操作、對單片機匯編語言掌握得不好。不過通過這次設(shè)計之后,也學到了很多知識,更重要的是一定把以前所學過的知識重新溫故,學好用好,學以致用。 最后在百般努力下,這次設(shè)計終于完成了,在設(shè)計中遇到了很多編程問題,最后在老師的辛勤指導下,終于實現(xiàn)了設(shè)計的要求。這一次設(shè)計給我的總體感覺很好,因為我學到了很多的東西。只要自己能夠找好的學習方法,在過程中不斷的努力。那么學到的東西肯定會有很多,我相信我是能夠做好的。
附錄一:Protel原理圖

以上的文字Word格式文檔51黑下載地址(求大神根據(jù)以上電路 弄個完整的程序啊):
文檔.doc
(438.74 KB, 下載次數(shù): 12)
2020-5-15 16:18 上傳
點擊文件名下載附件
多少度
|