版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告(本科/專科)課程:單片機課程設計學號:姓名:肖國健王合杰班級:09普本非師范班教師:劉樂群時間:2012.4.20計算機科學與技術系設計名稱:病房救護系統(tǒng)設計內容、目的與要求:本系統(tǒng)利用單片機(AT89C51芯片)為控制核心,由按鍵模塊、系統(tǒng)控制模塊、床號顯示模塊、聲光提示模塊以及電源模塊構成。其中,按鍵模塊采用8*8矩陣鍵盤模式,顯示模塊采用動態(tài)LED顯示,系統(tǒng)主要通過軟件控制實現(xiàn)了所有硬件功能。當病人緊急呼叫是,會產生聲、光提示,并顯示病人編號,以便醫(yī)護人員及時處理。(1)設計一個可容64個病房的病房呼救系統(tǒng)。(2)要求每個床位都有一個按鈕,當護著需要呼叫護士時,按下按鈕。此
2、時護士值班室內的呼叫系統(tǒng)板上顯示該患者的床位號。當護士按下“相應”鍵時,取消當前呼叫。計劃與進度安排:第一階段:查閱資料,查找相關書籍 。第二階段:Proteus軟件設計,畫出實驗圖 。第三階段:編寫相應代碼,并與 Proteus連接,調試程序。第四階段: 調試完整的程序代碼,填寫實驗報告。設計過程、步驟(可加頁):由于需要比較多的輸入輸出口,所有采用內部存儲系統(tǒng)資源比較多的AT89C51單片機,2位LED動態(tài)顯示,需要10根數(shù)據(jù)線,其中8根作為位選線,相當于地址線,選擇其中一位顯示,另外2跟作為LED顯示碼輸入線。 根據(jù)按鍵要求,每個床位需要一個按鈕,共64個。揚聲器可以用一個準I/O。采用
3、AT89C51作為運算和控制單元完全沒滿足系統(tǒng)的需求。如圖1所示。圖1 AT89C511. 電路設計(1) 復位電路:RST引腳是復位信號輸入端嗎,高電平有效。采用上點復位,因為本系統(tǒng)設計的值班室“響應按鈕”具有復位鍵,所以不需要進行手動復位,以節(jié)省資源,如圖2所示圖2 復位設計(2) 時鐘電路:時鐘是時序的基礎,時鐘可以由兩種方式產生,內部方式和外部方式。本系統(tǒng)采用內部方式,在XTAL1和XTAL2端外接石英芯片作為定時原件。內部反向放大器自激震蕩,產生時鐘。時鐘發(fā)生器對震蕩脈沖二分頻。電容采用33pF電容。如圖3所示。 圖3 時鐘電路設計(3) 數(shù)碼顯示電路:采用2位8段共陰極LED,P0
4、口作為LED顯示碼輸出端,P3.0、P3.1口接線選端,如圖4。圖4 數(shù)碼顯示設計(4) 鍵盤開關矩陣設計:由于都使用按鈕形式,每個病房一個按鈕,當病人有緊急情況是按下響應按鈕,值班室便會及時找到該病人,如圖5所示。圖5 鍵盤矩陣設計(5) 提示電路的設計:采用發(fā)光二極管和嗡鳴器相串聯(lián),用三極管加限流電阻作為控制開關,用單片機P3.7端口控制,當有高電平導通,二極管發(fā)光同時嗡鳴器發(fā)出“嘀嘀”聲作為呼叫提示。電路連接圖如6圖所示。圖6 提示設計2系統(tǒng)軟件設計(1) 病房呼叫系統(tǒng)結構設計圖7 系統(tǒng)結構設計圖8 系統(tǒng)結構框圖圖9 硬件構成示意圖(2) 系統(tǒng)初始化及呼叫過程啟動系統(tǒng)后,系統(tǒng)進行初始化,
5、此時,單片機執(zhí)行EA=1; /開總中斷ET0=1; /定時器T0中斷允許 TMOD=0x01; /使用定時器T0的模式1TH0=(65536-500)/256; /定時器T0的高8位賦初值TL0=(65536-500)%256; /定時器T0的高8位賦初值TR0=1; /啟動定時器T0keyval=0x00; /按鍵值初始化為0EX0=1; /允許使用外中斷 IT0=1; /選擇負跳變來觸發(fā)外中斷系統(tǒng)進行初始化后LED顯示00,等待呼叫,如圖10所示。圖10 初始化顯示(3)數(shù)碼管顯示過程接通LED的端口輸出響應,連接響鈴speaker的P3.7端位置,LED顯示按鈕所帶變得床位,響鈴發(fā)出報警
6、響聲,提醒值班室的人眼有病人出現(xiàn)緊急情況。如圖所示,比如24號按下按鈕,LED顯示24,響鈴如圖。圖11 病房顯示程序如下:void display(unsigned char k) P3=0xfe; /點亮數(shù)碼管1 P0=Tabk/10; /顯示十位 led_delay(); /動態(tài)掃描延時 P3=0xfd; /點亮數(shù)碼管2 P0=Tabk%10; /顯示個位 led_delay(); /動態(tài)掃描延時 if(keyval!=0x00) p=0; (4)延時程序設計 void led_delay(void) unsigned char j;for(j=0;j200;j+) ; (5)鍵盤掃描過
7、程端口P2進行鍵盤橫向掃描,初始化后輸出高電平。P0端口掃描鍵盤列向,當有按鈕按下時,按鈕左右電路接聽,有信號輸入。void time0_interserve(void) interrupt 1 using 1 TR0=0; /關閉定時器T0 P1=0xff; /所有列線置為高電平? P2=0x00; /所有行線置為低電平“0”?” if(P1&0xff)!=0xff) /列線中有一位為低電平“0”,說明有鍵按下 delay20ms(); /延時一段時間、軟件消抖 if(P1&0xff)!=0xff) /確實有鍵按下 P2=0xfe; /第一行置為低電平“0”(P1.1出低電平“0”) if(
8、P1=0xfe) keyval=1; /可判斷是S1鍵被按下 if(P1=0xfd) keyval=2; /可判斷是S2鍵被按下 if(P1=0xfb) keyval=3; /可判斷是S3鍵被按下 if(P1=0xf7) keyval=4; /可判斷是S4鍵被按下 if(P1=0xef) keyval=5; /可判斷是S5鍵被按下 if(P1=0xdf) keyval=6; /可判斷是S6鍵被按下 if(P1=0xbf) keyval=7; /可判斷是S7鍵被按下 if(P1=0x7f) keyval=8; /可判斷是S8鍵被按下 P2=0xfd; /第二行置為低電平“0”(P1.1出低電平“
9、0”) if(P1=0xfe) keyval=9; /可判斷是S9鍵被按下 if(P1=0xfd) keyval=10; /可判斷是S10鍵被按下 if(P1=0xfb) keyval=11; /可判斷是S11鍵被按下 if(P1=0xf7) keyval=12; /可判斷是S12鍵被按下 if(P1=0xef) keyval=13; /可判斷是S13鍵被按下 if(P1=0xdf) keyval=14; /可判斷是S14鍵被按下 if(P1=0xbf) keyval=15; /可判斷是S15鍵被按下 if(P1=0x7f) keyval=16; /可判斷是S16鍵被按下 P2=0xfb; /
10、第三行置為低電平“0”(P1.2輸出低電平“0”) if(P1=0xfe) keyval=17; /可判斷是S17鍵被按下 if(P1=0xfd) keyval=18; /可判斷是S18鍵被按下 if(P1=0xfb) keyval=19; /可判斷是S19鍵被按下 if(P1=0xf7) keyval=20; /可判斷是S20鍵被按下 if(P1=0xef) keyval=21; /可判斷是S21鍵被按下 if(P1=0xdf) keyval=22; /可判斷是S22鍵被按下 if(P1=0xbf) keyval=23; /可判斷是S23鍵被按下 if(P1=0x7f) keyval=24;
11、 /可判斷是S24鍵被按下 P2=0xf7; /第三行置為低電平“0”(P1.2輸出低電平“0 if(P1=0xfe) keyval=25; /可判斷是S25鍵被按下 if(P1=0xfd) keyval=26; /可判斷是S26鍵被按下 if(P1=0xfb) keyval=27; /可判斷是S27鍵被按下 if(P1=0xf7) keyval=28; /可判斷是S28鍵被按下 if(P1=0xef) keyval=29; /可判斷是S29鍵被按下 if(P1=0xdf) keyval=30; /可判斷是S30鍵被按下 if(P1=0xbf) keyval=31; /可判斷是S31鍵被按下
12、if(P1=0x7f) keyval=32; /可判斷是S32鍵被按下 P2=0xef; /第一行置為低電平“0”(P1.1出低電平“0”) if(P1=0xfe) keyval=33; /可判斷是S33鍵被按下 if(P1=0xfd) keyval=34; /可判斷是S34鍵被按下 if(P1=0xfb) keyval=35; /可判斷是S35鍵被按下 if(P1=0xf7) keyval=36; /可判斷是S36鍵被按下 if(P1=0xef) keyval=37; /可判斷是S37鍵被按下 if(P1=0xdf) keyval=38; /可判斷是S38鍵被按下 if(P1=0xbf) k
13、eyval=39; /可判斷是S39鍵被按下 if(P1=0x7f) keyval=40; /可判斷是S40鍵被按下 P2=0xdf; /第二行置為低電平“0”(P1.1出低電平“0”) if(P1=0xfe) keyval=41; /可判斷是S41鍵被按下 if(P1=0xfd) keyval=42; /可判斷是S42鍵被按下 if(P1=0xfb) keyval=43; /可判斷是S43鍵被按下 if(P1=0xf7) keyval=44; /可判斷是S44鍵被按下 if(P1=0xef) keyval=45; /可判斷是S45鍵被按下 if(P1=0xdf) keyval=46; /可判
14、斷是S46鍵被按下 if(P1=0xbf) keyval=47; /可判斷是S47鍵被按下 if(P1=0x7f) keyval=48; /可判斷是S48鍵被按下 P2=0xbf; /第三行置為低電平“0”(P1.2輸出低電平“0”) if(P1=0xfe) keyval=49; /可判斷是S49鍵被按下 if(P1=0xfd) keyval=50; /可判斷是S50鍵被按下 if(P1=0xfb) keyval=51; /可判斷是S51鍵被按下 if(P1=0xf7) keyval=52; /可判斷是S52鍵被按下 if(P1=0xef) keyval=53; /可判斷是S53鍵被按下 if
15、(P1=0xdf) keyval=54; /可判斷是S54鍵被按下 if(P1=0xbf) keyval=55; /可判斷是S55鍵被按下 if(P1=0x7f) keyval=56; /可判斷是S56鍵被按下 P2=0x7f; /第三行置為低電平“0”(P1.2輸出低電平“0 if(P1=0xfe) keyval=57; /可判斷是S57鍵被按下 if(P1=0xfd) keyval=58; /可判斷是S58鍵被按下 if(P1=0xfb) keyval=59; /可判斷是S59鍵被按下 if(P1=0xf7) keyval=60; /可判斷是S60鍵被按下 if(P1=0xef) keyv
16、al=61; /可判斷是S61鍵被按下 if(P1=0xdf) keyval=62; /可判斷是S62鍵被按下 if(P1=0xbf) keyval=63; /可判斷是S63鍵被按下 if(P1=0x7f) keyval=64; /可判斷是S64鍵被按下 TR0=1; /開啟定時器T0 TH0=(65536-500)/256; /定時器T0的高8位賦初值 TL0=(65536-500)%256; /定時器T0的高8位賦初值 (4)響應過程當有呼叫發(fā)出是,值班室人員收到相應信息后,可按下“響應按鈕”,單片機執(zhí)行中斷程序。void time0(void) interrupt 0 using 0 k
17、eyval=0x00;按鈕按下時,INTR0端口接地,發(fā)出中斷指令,使P3.7響鈴結束,LED回到00,如圖。圖12 復位按鍵設計結果與分析(可以加頁): 1. 系統(tǒng)全局圖圖13 系統(tǒng)全局圖2. 當64號病房緊急呼叫時,顯示器顯示64并且系統(tǒng)發(fā)出警報音圖14 病房顯示3. 當值班人員響應呼叫時,按下復位鍵(即響應按鍵)時,顯示器復位,等待下一個病房呼叫。圖15 復位顯示圖16 復位按鈕設計體會與建議: 經過這些天的分析,設計和制作,我們終于成功的完成了病房呼救系統(tǒng)。半月的單片機課程設計,讓我對Proteus軟件的使用有了基本的掌握,在對題目的分析過程中,對以前所學的知識特別是單片機知識回顧的過
18、程也對Proteus和Keil uVision2有了更深層次的理解和領悟。在使用Proteus軟件畫圖時,對自己將理論知識運用到實際已經形成嚴謹思維都有很大幫助。通過翻閱資料,對單片機的知識也有了進一步的認識。在設計過程中,遇到了不少問題,老是和同學的講解給了我很大的幫助,讓我進一步認識到了同學的幫助及相互合作的重要性。這個課程設計對自己的思考及動手能力的提高有一定的幫助,對我們在步入社會之前得到鍛煉。附錄:實驗源程序#include /包含51單片機寄存器定義的頭文件unsigned char code Tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
19、,0x80,0x90; /數(shù)字09的段碼unsigned char keyval; /定義變量儲存按鍵值sbit p=P37;/*函數(shù)功能:數(shù)碼管動態(tài)掃描延時*/void led_delay(void) unsigned char j;for(j=0;j200;j+) ; /*函數(shù)功能:按鍵值的數(shù)碼管顯示子程序*/ void display(unsigned char k) P3=0xfe; /點亮數(shù)碼管1 P0=Tabk/10; /顯示十位 led_delay(); /動態(tài)掃描延時 P3=0xfd; /點亮數(shù)碼管2 P0=Tabk%10; /顯示個位 led_delay(); /動態(tài)掃描延時
20、 if(keyval!=0x00) p=0; /*函數(shù)功能:軟件延時子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i100;i+) for(j=0;j60;j+) ; /*函數(shù)功能:主函數(shù)*/ void main(void) EA=1; /開總中斷ET0=1; /定時器T0中斷允許 TMOD=0x01; /使用定時器T0的模式1TH0=(65536-500)/256; /定時器T0的高8位賦初值TL0=(65536-500)%256; /定時器T0的高8位賦初值TR0=1; /啟動定時器T0keyval=0x00; /按鍵值初始化為0
21、EX0=1; /允許使用外中斷 IT0=1; /選擇負跳變來觸發(fā)外中斷 while(1) /無限循環(huán) display(keyval); /調用按鍵值的數(shù)碼管顯示子程序/*函數(shù)功能:定時器0的中斷服務子程序,進行鍵盤掃描,判斷鍵位*/ void time0_interserve(void) interrupt 1 using 1 TR0=0; /關閉定時器T0 P1=0xff; /所有列線置為高電平? P2=0x00; /所有行線置為低電平“0”?” if(P1&0xff)!=0xff) /列線中有一位為低電平“0”,說明有鍵按下 delay20ms(); /延時一段時間、軟件消抖 if(P1&
22、0xff)!=0xff) /確實有鍵按下 P2=0xfe; /第一行置為低電平“0”(P1.1出低電平“0”) if(P1=0xfe) keyval=1; /可判斷是S1鍵被按下 if(P1=0xfd) keyval=2; /可判斷是S2鍵被按下 if(P1=0xfb) keyval=3; /可判斷是S3鍵被按下 if(P1=0xf7) keyval=4; /可判斷是S4鍵被按下 if(P1=0xef) keyval=5; /可判斷是S5鍵被按下 if(P1=0xdf) keyval=6; /可判斷是S6鍵被按下 if(P1=0xbf) keyval=7; /可判斷是S7鍵被按下 if(P1=
23、0x7f) keyval=8; /可判斷是S8鍵被按下 P2=0xfd; /第二行置為低電平“0”(P1.1出低電平“0”) if(P1=0xfe) keyval=9; /可判斷是S9鍵被按下 if(P1=0xfd) keyval=10; /可判斷是S10鍵被按下 if(P1=0xfb) keyval=11; /可判斷是S11鍵被按下 if(P1=0xf7) keyval=12; /可判斷是S12鍵被按下 if(P1=0xef) keyval=13; /可判斷是S13鍵被按下 if(P1=0xdf) keyval=14; /可判斷是S14鍵被按下 if(P1=0xbf) keyval=15;
24、/可判斷是S15鍵被按下 if(P1=0x7f) keyval=16; /可判斷是S16鍵被按下 P2=0xfb; /第三行置為低電平“0”(P1.2輸出低電平“0”) if(P1=0xfe) keyval=17; /可判斷是S17鍵被按下 if(P1=0xfd) keyval=18; /可判斷是S18鍵被按下 if(P1=0xfb) keyval=19; /可判斷是S19鍵被按下 if(P1=0xf7) keyval=20; /可判斷是S20鍵被按下 if(P1=0xef) keyval=21; /可判斷是S21鍵被按下 if(P1=0xdf) keyval=22; /可判斷是S22鍵被按下
25、 if(P1=0xbf) keyval=23; /可判斷是S23鍵被按下 if(P1=0x7f) keyval=24; /可判斷是S24鍵被按下 P2=0xf7; /第三行置為低電平“0”(P1.2輸出低電平“0 if(P1=0xfe) keyval=25; /可判斷是S25鍵被按下 if(P1=0xfd) keyval=26; /可判斷是S26鍵被按下 if(P1=0xfb) keyval=27; /可判斷是S27鍵被按下 if(P1=0xf7) keyval=28; /可判斷是S28鍵被按下 if(P1=0xef) keyval=29; /可判斷是S29鍵被按下 if(P1=0xdf) k
26、eyval=30; /可判斷是S30鍵被按下 if(P1=0xbf) keyval=31; /可判斷是S31鍵被按下 if(P1=0x7f) keyval=32; /可判斷是S32鍵被按下 P2=0xef; /第一行置為低電平“0”(P1.1出低電平“0”) if(P1=0xfe) keyval=33; /可判斷是S33鍵被按下 if(P1=0xfd) keyval=34; /可判斷是S34鍵被按下 if(P1=0xfb) keyval=35; /可判斷是S35鍵被按下 if(P1=0xf7) keyval=36; /可判斷是S36鍵被按下 if(P1=0xef) keyval=37; /可判
27、斷是S37鍵被按下 if(P1=0xdf) keyval=38; /可判斷是S38鍵被按下 if(P1=0xbf) keyval=39; /可判斷是S39鍵被按下 if(P1=0x7f) keyval=40; /可判斷是S40鍵被按下 P2=0xdf; /第二行置為低電平“0”(P1.1出低電平“0”) if(P1=0xfe) keyval=41; /可判斷是S41鍵被按下 if(P1=0xfd) keyval=42; /可判斷是S42鍵被按下 if(P1=0xfb) keyval=43; /可判斷是S43鍵被按下 if(P1=0xf7) keyval=44; /可判斷是S44鍵被按下 if(P1=0xef) keyval=45; /可判斷是S45鍵被按下 if(P1=0xdf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026內蒙古電力(集團)有限責任公司烏海供電公司招聘12人考試參考題庫及答案解析
- 2026廣西出版?zhèn)髅郊瘓F有限公司招聘98人考試參考題庫及答案解析
- 2026廣東江門市臺山市三合鎮(zhèn)人民政府招聘村級動物防疫員1人考試備考題庫及答案解析
- 廬山文化旅游投資控股集團有限公司面向社會公開招聘工作人員考試備考題庫及答案解析
- 2026重慶市永川區(qū)朱沱鎮(zhèn)人民政府招聘全日制和非全日制公益性崗位人員9人考試參考題庫及答案解析
- 2026甘肅白銀市靖遠縣三灘鎮(zhèn)人民政府選聘專業(yè)化管理村文書2人考試備考題庫及答案解析
- 2026山東新瑯琊投資發(fā)展集團有限公司招聘6人考試參考試題及答案解析
- 2026年1月重慶市綦江區(qū)關壩鎮(zhèn)人民政府公益性崗位招聘20人筆試參考題庫及答案解析
- 2026中衛(wèi)市沙坡頭區(qū)團委、婦聯(lián)招聘財務工作人員2人考試備考題庫及答案解析
- 2026內蒙古包頭市昆都侖區(qū)招聘社區(qū)工作者后備庫儲備人員200人筆試模擬試題及答案解析
- 電梯安全培訓課件下載
- 事業(yè)單位職工勞動合同管理規(guī)范
- 老年人靜脈輸液技巧
- 呼吸內科一科一品護理匯報
- 陪診師醫(yī)學知識培訓總結課件
- 項目驗收過程標準化手冊
- 醫(yī)院患者護理隱患預警及上報制度
- 土地復墾項目施工組織設計方案書
- 民航旅客運輸(第二版) 課件 模塊3-國際航空旅客運價基礎
- 五臟與五味的課件
- 非電量保護培訓
評論
0/150
提交評論