欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機病床呼叫器設計思路 [打印本頁]

作者: 齊全1    時間: 2020-5-15 10:33
標題: 51單片機病床呼叫器設計思路
目前大多的病床呼叫系統采用有線傳輸方式,有線傳輸占用空間較大,耗材多,而且不易移動,因此現今需要對病床呼叫系統進行升級,近年來在我國無線領域有了大的進展,這為此提供了有力的技術支持。有的一些簡易無線發射接收模塊傳輸距離近,效率低,可靠性差,不適合用于產品的設計。
本設計是基于單片機實現的無線多路病床呼叫系統,分為無線發射模塊、無線接收模塊、單片機控制模塊、顯示模塊、呼叫報警部分和復位應答部分。本系統通過無線電實現信號的傳遞,單片機作為控制部件協調處理整個系統的工作,實現無線信號的遠距離傳輸,減少了材料的耗費,安裝簡單,使醫患溝通更加靈活,是無線網絡技術在醫學臨床上的大膽應用,具有創新性。

1.2設計要求及預期目標
設計要求:設計出穩定高效的運行系統,并且有一定的抗干擾能力,能夠實現多路呼叫且互不干擾。距離在100m范圍內,實現多路無線病床呼叫,并留有擴展空間。
預期目標:病人按呼叫鍵時,無線發射器發射信號,無線接收器接收無線信號,通過單片機控制處理,護士值班室發出呼叫警報,同時1602液晶上顯示相應的床位號,當護士按鍵應答,呼叫報警停止,液晶顯示以應答,警報由定時器控制關閉。當有多個病人呼叫沒有及時應答時,對應顯示各床床位號,同時報警。

1.3設計可行性
有線呼叫器受位置的制約不能很好的達到醫患溝通,無線呼叫系統就顯示其很大的優越性,可移動,不受位置制約,現今無線傳輸技術有了突飛猛進的發展,技術越來越成熟,普遍應用到生活、娛樂、學習和軍工等領域,這為無線傳輸技術與醫學臨床的結合提供了技術支持。在校期間也學習了與單片機相關的,有了一定的理論基礎。因此,本課題具有可行性,能夠得到實現。

1.4 設計方案及步驟
針對單片機的無線病床呼叫系統,制定以下方案及步驟:
第一步,根據設計目的構想設計的原理圖框架,學習設計中要用到的知識,如無線發射模塊的原理、編碼解碼,單片機C語言編程設計,液晶1602的顯示,使用的芯片引腳工作原理, Protel軟件使用等。
第二步,對硬件模塊進行設計。如無線發射模塊、無線接收模塊、1602顯示模塊、聲音呼叫模塊。在Protel中繪制原理圖。
第三步,對系統軟件進行設計。如主函數程序設計、初始化程序設計、延時子程序設計、液晶顯示子程序設計、定時器中斷服務子程序設計。

第二章  系統硬件設計


2.1 系統原理框圖

根據單片機的無線病床呼叫系統要求初步繪制出系統原理框圖如圖2-1所示。

圖2-1 系統原理框圖

2.2  單片機STC89C51芯片簡介

STC89C51是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統可編程Flash,使得STC89C51為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節Flash,512字節RAM, 32 位I/O 口線,看門狗定時器,內置4KB EEPROM,MAX810復位電路,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串行口。另外 STC89X51 可降至0Hz 靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35Mhz,6T/12T可選。

圖2-2 STC89C51單片機引腳圖

單片機是美國STC公司最新推出的一種新型51內核的單片機。片內含有Flash程序存儲器、SRAM、UART、SPI、PWM等模塊。
(一)STC89C51主要功能、性能參數如下:
(1)內置標準51內核,機器周期:增強型為6時鐘,普通型為12時鐘;
(2)工作頻率范圍:0~40MHZ,相當于普通8051的0~80MHZ;
(3)STC89C51RC對應Flash空間:4KB;
(4)內部存儲器(RAM):512B;
(5)定時器\計數器:3個16位;
(6)通用異步通信口(UART)1個;
(7)中斷源:8個;
(8)有ISP(在系統可編程)\IAP(在應用可編程),無需專用編程器\仿真器;
(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能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,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(外部數據存儲器寫選通)
P3.7 /RD(外部數據存儲器讀選通)
P3口同時為閃爍編程和編程校驗接收一些控制信號。
I/O口作為輸入口時有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時實際上并不從外部讀入數據,而是把端口鎖存器的內容讀入到內部總線,經過某種運算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數據讀入到內部總線。上面圖中的兩個三角形表示的就是輸入緩沖器CPU將根據不同的指令分別發出讀端口或讀引腳信號以完成不同的操作。這是由硬件自動完成的,不需要我們操心,1然后再實行讀引腳操作,否則就可能讀入出錯,為什么看上面的圖,如果不對端口置1端口鎖存器原來的狀態有可能為0Q端為0Q^為1加到場效應管柵極的信號為1,該場效應管就導通對地呈現低阻抗,此時即使引腳上輸入的信號為1,也會因端口的低阻抗而使信號變低使得外加的1信號讀入后不一定是1。若先執行置1操作,則可以使場效應管截止引腳信號直接加到三態緩沖器中實現正確的讀入,由于在輸入操作時還必須附加一個準備動作,所以這類I/O口被稱為準雙向口。89C51的P0/P1/P2/P3口作為輸入時都是準雙向口。
RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。
ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。
/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
(三)STC89C51單片機最小系統:
最小系統包括單片機及其所需的必要的電源、時鐘、復位等部件,能使單片機始終處于正常的運行狀態。電源、時鐘等電路是使單片機能運行的必備條件,可以將最小系統作為應用系統的核心部分,通過對其進行存儲器擴展、A/D擴展等,使單片機完成較復雜的功能。
STC89C51是片內有ROM/EPROM的單片機,因此,這種芯片構成的最小系統簡單﹑可靠。用STC89C52單片機構成最小應用系統時,只要將單片機接上時鐘電路和復位電路即可,結構如圖2-3所示,由于集成度的限制,最小應用系統只能用作一些小型的控制單元。

圖2-3 單片機最小系統原理框圖

(1) 時鐘電路
STC89C51單片機的時鐘信號通常有兩種方式產生:一是內部時鐘方式,二是外部時鐘方式。內部時鐘方式如圖2-4所示。在STC89C51單片機內部有一振蕩電路,只要在單片機的XTAL1(18)和XTAL2(19)引腳外接石英晶體(簡稱晶振),就構成了自激振蕩器并在單片機內部產生時鐘脈沖信號。圖中電容C1和C2的作用是穩定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率范圍在1.2~12MHz間選擇,典型值為12MHz和6MHz。

圖2-4 STC89C51內部時鐘電路
(2) 復位電路
當在STC89C51單片機的RST引腳引入高電平并保持2個機器周期時,單片機內部就執行復位操作(若該引腳持續保持高電平,單片機就處于循環復位狀態)。
復位電路通常采用上電自動復位和按鈕復位兩種方式。
最簡單的上電自動復位電路中上電自動復位是通過外部復位電路的電容充放電來實現的。只要Vcc的上升時間不超過1ms,就可以實現自動上電復位。
除了上電復位外,有時還需要按鍵手動復位。本設計就是用的按鍵手動復位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST(9)端與電源Vcc接通而實現的。按鍵手動復位電路見圖2-5。時鐘頻率用11.0592MHZ時C取10uF,R取10kΩ。

圖2-5 STC89C51復位電路

(四) STC89C51中斷技術概述
中斷技術主要用于實時監測與控制,要求單片機能及時地響應中斷請求源提出的服務請求,并作出快速響應、及時處理。這是由片內的中斷系統來實現的。當中斷請求源發出中斷請求時,如果中斷請求被允許,單片機暫時中止當前正在執行的主程序,轉到中斷服務處理程序處理中斷服務請求。中斷服務處理程序處理完中斷服務請求后,再回到原來被中止的程序之處(斷點),繼續執行被中斷的主程序。
圖2-6為整個中斷響應和處理過程。


                                                                      圖2-6  中斷響應和處理過程

如果單片機沒有中斷系統,單片機的大量時間可能會浪費在查詢是否有服務請求發生的定時查詢操作上。采用中斷技術完全消除了單片機在查詢方式中的等待現象,大大地提高了單片機的工作效率和實時性。

2.3 硬件模塊設計

由圖2-1系統原理框圖可知,整個系統分為五個模塊:無線發射模塊、無線接收模塊、聲音報警模塊、液晶顯示模塊、按鍵應答模塊。

下面將簡單的介紹各個模塊設計方案。


2.3.1無線發射模塊

PT2262是一種CMOS 工藝制造的低功耗低價位通用編碼電路,PT2262最多可有12 位(A0-A11)三態地址端管腳(懸空,接高電平,接低電平),任意組合可提供531441 地址碼,PT2262 最多可有6 位(D0-D5)數據端管腳,設定的地址碼和數據碼從17 腳串行輸出,可用于無線遙控發射電路。

PT2262 管腳說明如表2-4

表2-4 PT2262管腳說明
名稱
管腳
說明
A0-A11
1-8,10-13
地址管腳,用于進行地址編碼,可置為“0”、 “1” 、“懸空”。
D0-D5
7-8,10-13
數據輸入端,有一個為“1”即有編碼發出,內部下拉。
VCC
18
電源正端(+)
GND
9
電源負端(-)
TE
14
編碼啟動端,用于多數據的編碼發射,低電平有效;
OSC1
16
振蕩電阻輸入端,與OSC2所接電阻決定振蕩頻率;
OSC2
15
振蕩電阻振蕩器輸出端;
DOUT
17
編碼輸出端(正常時為低電平)


T10A發射模塊(如表2-5)采用SMD技術,在穩頻處理上采用最先進聲表諧振器(SAW)元件,電路板(PCB)采用介質損耗最小的材料,體積小巧。


表2-5 T10A發射模塊
技術指標
參數
工作電壓
3V-12V
工作電流
≤25mA(12V); ≤2mA(3V)
諧振方式
聲表諧振(SAW)
調制方式
AM/ASK/OOK
工作頻率
315MHz、433.92MHz可選
頻率誤差
±150kHz(max)
發射功率
25mW(315MHz, 12V時)

圖2-6所示為無線發射模塊圖,由PT2262編碼,發射模塊的四個按鍵分別代表不同的病床號,按下表示病人呼叫。


圖2-6 無線發射模塊圖

發射模塊有密碼保證功能,最多可以編6個數據碼和6561個地址碼,使重復的機會大大減少。其性能參數如下:

? 電源電壓: DC3V~DC12V              ? 靜態電流:≤0.02uA ? 發射頻率:315MHz

? 發射電流:5~50mA                            ? 發射距離:50~800m ? 調制方式:ASK

在通常使用中,一般采用8位地址碼和4位數據碼,這時編碼芯片PT2262和解碼芯片PT2272的第1~8腳為地址設定腳,有三種狀態可供選擇:懸空、接正電源、接地三種狀態,3的8次方為6561,所以地址編碼不重復度為6561組,只有發射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用,一般生產廠家都把地址編碼端懸空,用戶可以自己設置編碼。設置地址碼的原則是:同一個系統地址碼必須一致;不同的系統可以依靠不同的地址碼加以區分。

2.3.3液晶顯示模塊

圖2-10 1602實物圖

1602LCD的基本參數及引腳功能
1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖10-54所示:
圖2-11 1602LCD尺寸圖
1602LCD主要技術參數:
顯示容量: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
數據
2
VDD
電源正極
10
D3
數據
3
VL
液晶顯示偏壓
11
D4
數據
4
RS
數據/命令選擇
12
D5
數據
5
R/W
讀/寫選擇
13
D6
數據
6
E
使能信號
14
D7
數據
7
D0
數據
15
BLA
背光源正極
8
D1
數據
16
BLK
背光源負極
表2-12:引腳接口說明表
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。
第7~14腳:D0~D7為8位雙向數據線。
第15腳:背光源正極。
第16腳:背光源負極。

2.3.4聲音報警模塊

該設計有聲音報警,當有病人呼叫時,蜂鳴器就會大聲提示,直到護士應答回復,才會停止鳴叫,控制引腳接在P3.4引腳上,利用三極管當做開關電路可以保護單片機,還可以起到放大電流的作用,當三極管基極為高電平時,發射極截止,為低電平時,發射極導通。報警模塊如圖2-13所示。


圖2-13聲音報警模塊


2.3.5應答電路

本設計中四個床位使用一個應答按鈕,接在P3.3引腳上,當有病人按下按鈕,報警開始時,按下應答按鈕,即可停止報警,應答模塊圖如圖2-14所示


圖2-14應答電路



第三章  系統軟件設計

2.3.2無線接收模塊

解碼接收模塊包括接收頭和解碼芯片PT2272兩部分。接收頭將接收的信號輸入PT2272的14引腳(DIN),PT2272對接收到的信號解碼。無線接收模塊如圖2-7所示。

圖2-7 無線接收模塊圖

編碼芯片PT2262 發出的編碼信號由:地址碼、數據碼、同步碼組成一個完整的碼字,解碼芯片PT2272 接收到信號后,其地址碼經過兩次比較核對后,VT 腳才輸出高電平,與此同時相應的數據腳也輸出高電平,如果發送端一直按住按鍵,編碼芯片也會連續發射。當發射機沒有按鍵按下時,PT2262 不接通電源,其17 腳為低電平,所以315MHz 的高頻發射電路不工作,當有按鍵按下時,PT2262 得電工作,其第17 腳輸出經調制的串行數據信號,當17 腳為高電平期間315MHz 的高頻發射電路起振并發射等幅高頻信號,當17 腳為低平期間315MHz 的高頻發射電路停止振蕩,所以高頻發射電路完全收控于PT2262 的17 腳輸出的數字信號,從而對高頻電路完成幅度鍵控(ASK 調制)相當于調制度為100%的調幅。

PT2272管腳說明如表2-9


表2-8 PT2272管腳說明
名稱
管腳
說明
A0-A11
1-8,10-13
地址管腳,用于進行地址編碼,可置為     “0”,“1”,“f”(懸空),必須與2262一致,否則不解碼
D0-D5
7-8,10-13
地址或數據管腳,當做為數據管腳時,只有在地址碼與2262一致
一致,數據管腳才能輸出與2262數據端對應的高電平,否則輸出為低電平,鎖存型只有在接收到下一數據才能轉換
VCC
18
電源正端(+)
GND
9
電源負端(-)
DIN
14
數據信號輸入端,來自接收模塊輸出端
OSC1
16
振蕩電阻輸入端,與OSC2所接電阻決定振蕩頻率;
OSC2
15
振蕩電阻振蕩器輸出端;
VT
17
解碼有效確認 輸出端(常低)解碼有效變成高電平(瞬態)

PT2262和PT2272除地址編碼必須完全一致外,振蕩電阻還必須匹配,一般要求譯碼器振蕩頻率要高于編碼器振蕩頻率的2.5~8倍,否則接收距離會變近甚至無法接收,隨著技術的發展市場上出現一批兼容芯片,在實際使用中只要對振蕩電阻稍做改動就能配套使用。在具體的應用中,外接振蕩電阻可根據需要進行適當的調節,阻值越大振蕩頻率越慢,編碼的寬度越大,發碼一幀的時間越長。市場上大部分產品都是用2262/1.2M=2272/200K組合的,少量產品用2262/4.7M=2272/820K。

解碼接收模塊包括接收頭和解碼芯片PT2272兩部分組成。接收頭將收到的信號輸入PT2272的14腳(DIN),PT2272再將收到的信號解碼。           

接收板工作電壓為DC 5V,接收靈敏度: -103dBm ,尺寸(mm): 49*20*7 ,工作頻率:315MHz,工作電流:5mA ,編碼類型:固定碼(板上焊盤跳接設置)  應用說明:與各類型遙控器配合使用,解碼輸出后進行相應控制,在通常使用中,我們一般采用8位地址碼和4位數據碼,這時編碼芯片PT2262和解碼芯片PT2272的第1~8腳為地址設定腳,有三種狀態可供選擇:懸空、接正電源、接地三種狀態,地址編碼不重復度為38=6561組,只有發射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用,遙控模塊的生產廠家為了便于生產管理,出廠時遙控模塊的PT2262和PT2272的八位地址編碼端全部懸空,這樣用戶可以很方便選擇各種編碼狀態,用戶如果想改變地址編碼,只要將PT2262和PT2272的1~8腳設置相同即可,例如將發射機的PT2262的第2腳接地,第3腳接正電源,其它引腳懸空,那么接收機的PT2272只要也第2腳接地,第3腳接正電源,其它引腳懸空就能實現配對接收。當兩者地址編碼完全一致時,接收機對應的D1~D4端輸出約4V互鎖高電平控制信號,同時VT端也輸出解碼有效高電平信號。


3.1設計的軟件環境簡介

3.1.1Keil_c51

Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。用過匯編語言后再使用C來開發,體會更加深刻。   Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。下面詳細介紹Keil C51開發系統各部分功能和使用。Keil_c軟件界面如圖3-1-1:

圖3-1-1Keil_c軟件界面

該軟件是一款集編程和仿真于一體的軟件,它支持匯編、C語言及二者的混合編程。
3.1.2 Protel99SE

Protel99SE是PORTEL公司在80年代末推出的EDA軟件。Protel99SE是應用于Windows9X/2000/NT操作系統下的EDA設計軟件,采用設計庫管理模式,可以網設計,具有很強的數據交換能力和開放性及3D模擬功能,是一個32位的設計軟件,可以完成電路原理圖設計,印制電路板設計和可編程邏輯器件設計等工作,可以設計32個信號層,16個電源--地層和16個機加工層。

Protel99SE軟件的特點:

Protel99SE的工作界面是一種標準的Windows界面,如圖所示,包括:標題欄、主菜單、標準工具欄、繪圖工具欄、狀態欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口。Protel99SE軟件界面如圖3-1-2。


圖3-1-2Prtel99SE軟件界面

運行Protel99SE程序后,進入軟件的主界面。通過左側工具欄中的Browse(從庫中選擇元件命令)命令

3.2 主函數程序設計

一個完整的程序中只有一個main函數,首先調用初始化函數進行初始化,然后判斷并調用顯示子程序使液晶1602顯示、蜂鳴器鳴響報警。程序流程如圖3-2所示。


圖3-2 主程序流程圖

3.3 初始化程序設計

初始化程序包括液晶初始化顯示、定時器中斷系統初始化。

(一)、液晶初始化

根據液晶使用手冊,在液晶使用之前,要對其設置顯示模式,光標設置,然后進行清屏操作。方便之后使用。

(二)、定時器中斷系統初始化

STC89C51有兩個定時/計數器,都有定時和計數兩種工作模式,四種工作方式(方式0、方式1、方式2、方式3),屬于增一計數器。特殊功能寄存器TMOD用于選擇定時器/計數器T0、T1的工作模式和工作方式。但無論是工作在定時器模式還是計數器模式,實質都是對脈沖信號進行計數,只是計數的來源不同,計數器模式是對加在T0(P3.4)和T1(P3.5)兩個引腳的外部脈沖進行計數,而定時器模式是對單片機的時鐘振蕩器信號經片內12分頻后的內部脈沖信號計數。

                        圖3-3 寄存器TMOD的格式

M0、M1共有4種編碼,對應于4種工作方式的選擇,見表3-4。

表3-4 M1、M0工作方式選擇

M1     M0

工作方式

0       0

方式0,為13位定時器/計數器

0       1

方式1,為16位定時器/計數器

1       0

方式2,8位的常數自動重裝的定時器/計數器

1       1

方式3,僅用于T0,此時T0分為兩個8位計數器,T1停止計數


定時器的工作方式設置好以后就要給定時器裝入初值,工作方式不同初值也不同。

1、下面介紹一下單片機的時鐘周期、機器周期和指令周期。

本設計中,時鐘晶體的頻率為11.0592MHZ,所以時鐘周期為1/12M。T0作為定時器使用,工作方式為方式1,作為16位計數器。設計數個數為N,計數初值為X,那么X=216-N,      定時時間=N×12/晶振頻率,所以,定時時間=(216-X)×12/晶振頻率。

本設計設置每隔50ms中斷一次,那么得出初值X=0x4BFF,定時器T0的高8

位TH0賦值0x4B,低8位TL0賦值0xFF。

2、定時器/計數器控制寄存器TCON,可位尋址,其格式見表3-5。

表3-5 特殊寄存器TCON的格式


D7

D6

D5

D4

D3

D2

D1

D0

TCON

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

位地址

8FH

__

8DH

__

8BH

8AH

89H

88H


① TR0:定時器啟動位。TR0=0,關閉定時器0;TR0=1,開啟定時器0.

② IT0:選擇外部中斷0為跳沿觸發方式還是電平觸發方式。IT0=0,為電平觸發方式;IT0=1,為跳沿觸發方式。

              4、單片機對各中斷源的開放或屏蔽是由片內的中斷允許寄存器IE控制的,可位尋址,其格式見表3-6。

表3-6 中斷允許寄存器IE的格式


D7

D6

D5

D4

D3

D2

D1

D0

IE

EA

__

__

ES

ET1

EX1

ET0

EX0

位地址

AFH

__

__

ACH

ANH

AAH

A9H

A8H


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 延時子程序設定

延時子程序作為方便其他程序調用,避免程序繁瑣重復。我將延時子程序定為有參函數,延時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);


結束語


至此,本設計的主要內容已經完成。本章是在對前面完成的工作進行總結的基礎上,提出今后進一步工作的建議和設想。

選擇這個課題之后,我明白要解決的難點:病人都按開關時,在數碼顯示器能循環顯示病床,這也就是考驗我們對所學知識有比較透徹的了解和我們的耐心。

接下來每天奔波在宿舍、餐廳三點一線的生活,雖然有點累,但很充實,在這之中還去請教老師和同學,他們耐心的教導讓我更加堅定了對該課題的研究,另外還有很多老師的幫助。

在設計的過程中遇到了很多問題,可以說得是困難重重,在遇到各種各樣問題的同時,會發現了自己的不足之處,如對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。比如說Protel軟件應用的不夠熟練、Proteus仿真知識及操作、對單片機匯編語言掌握得不好。不過通過這次設計之后,也學到了很多知識,更重要的是一定把以前所學過的知識重新溫故,學好用好,學以致用。

最后在百般努力下,這次設計終于完成了,在設計中遇到了很多編程問題,最后在老師的辛勤指導下,終于實現了設計的要求。這一次設計給我的總體感覺很好,因為我學到了很多的東西。只要自己能夠找好的學習方法,在過程中不斷的努力。那么學到的東西肯定會有很多,我相信我是能夠做好的。



附錄一:Protel原理圖



以上的文字Word格式文檔51黑下載地址(求大神根據以上電路 弄個完整的程序啊):
文檔.doc (438.74 KB, 下載次數: 12)





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1