第二章 系統硬件設計
2.1 系統原理框圖
根據單片機的無線病床呼叫系統要求初步繪制出系統原理框圖如圖2-1所示。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
圖2-1 系統原理框圖
2.2 單片機STC89C51芯片簡介





圖2-6為整個中斷響應和處理過程。
2.3 硬件模塊設計
由圖2-1系統原理框圖可知,整個系統分為五個模塊:無線發射模塊、無線接收模塊、聲音報警模塊、液晶顯示模塊、按鍵應答模塊。
下面將簡單的介紹各個模塊設計方案。
2.3.1無線發射模塊
PT2262是一種CMOS 工藝制造的低功耗低價位通用編碼電路,PT2262最多可有12 位(A0-A11)三態地址端管腳(懸空,接高電平,接低電平),任意組合可提供531441 地址碼,PT2262 最多可有6 位(D0-D5)數據端管腳,設定的地址碼和數據碼從17 腳串行輸出,可用于無線遙控發射電路。
PT2262 管腳說明如表2-4
名稱 | 管腳 | 說明 |
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)采用介質損耗最小的材料,體積小巧。
技術指標 | 參數 |
工作電壓 | 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實物圖

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

Protel99SE是PORTEL公司在80年代末推出的EDA軟件。Protel99SE是應用于Windows9X/2000/NT操作系統下的EDA設計軟件,采用設計庫管理模式,可以網設計,具有很強的數據交換能力和開放性及3D模擬功能,是一個32位的設計軟件,可以完成電路原理圖設計,印制電路板設計和可編程邏輯器件設計等工作,可以設計32個信號層,16個電源--地層和16個機加工層。
Protel99SE軟件的特點:
Protel99SE的工作界面是一種標準的Windows界面,如圖所示,包括:標題欄、主菜單、標準工具欄、繪圖工具欄、狀態欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口。Protel99SE軟件界面如圖3-1-2。

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仿真知識及操作、對單片機匯編語言掌握得不好。不過通過這次設計之后,也學到了很多知識,更重要的是一定把以前所學過的知識重新溫故,學好用好,學以致用。
最后在百般努力下,這次設計終于完成了,在設計中遇到了很多編程問題,最后在老師的辛勤指導下,終于實現了設計的要求。這一次設計給我的總體感覺很好,因為我學到了很多的東西。只要自己能夠找好的學習方法,在過程中不斷的努力。那么學到的東西肯定會有很多,我相信我是能夠做好的。

文檔.doc
(438.74 KB, 下載次數: 12)
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |