病房呼叫體統(tǒng)課程設(shè)計(jì)_第1頁
病房呼叫體統(tǒng)課程設(shè)計(jì)_第2頁
病房呼叫體統(tǒng)課程設(shè)計(jì)_第3頁
病房呼叫體統(tǒng)課程設(shè)計(jì)_第4頁
病房呼叫體統(tǒng)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì)報(bào)告(本科/專科)課程:單片機(jī)課程設(shè)計(jì)學(xué)號(hào):09104210100910421050姓名:肖國健王合杰班級(jí):09普本非師范班教師:劉樂群時(shí)間:2012.4.20計(jì)算機(jī)科學(xué)與技術(shù)系設(shè)計(jì)名稱:病房救護(hù)系統(tǒng)設(shè)計(jì)內(nèi)容、目的與要求:本系統(tǒng)利用單片機(jī)(at89c51芯片)為控制核心,由按鍵模塊、系統(tǒng)控制模塊、床號(hào)顯示模塊、聲光提示模塊以及電源模塊構(gòu)成。其中,按鍵模塊采用8*8矩陣鍵盤模式,顯示模塊采用動(dòng)態(tài)led顯示,系統(tǒng)主要通過軟件控制實(shí)現(xiàn)了所有硬件功能。當(dāng)病人緊急呼叫是,會(huì)產(chǎn)生聲、光提示,并顯示病人編號(hào),以便醫(yī)護(hù)人員及時(shí)處理。(1)設(shè)計(jì)一個(gè)可容64張床位的病房呼救系統(tǒng)。(2)要求每個(gè)床位都有一個(gè)

2、按鈕,當(dāng)護(hù)著需要呼叫護(hù)士時(shí),按下按鈕。此時(shí)護(hù)士值班室內(nèi)的呼叫系統(tǒng)板上顯示該患者的床位號(hào)。當(dāng)護(hù)士按下“相應(yīng)”鍵時(shí),取消當(dāng)前呼叫。計(jì)劃與進(jìn)度安排:第一階段:查閱資料,查找相關(guān)書籍 。第二階段:proteus軟件設(shè)計(jì),畫出實(shí)驗(yàn)圖 。第三階段:編寫相應(yīng)代碼,并與 proteus連接,調(diào)試程序。第四階段: 調(diào)試完整的程序代碼,填寫實(shí)驗(yàn)報(bào)告。設(shè)計(jì)過程、步驟(可加頁):由于需要比較多的輸入輸出口,所有采用內(nèi)部存儲(chǔ)系統(tǒng)資源比較多的at89c51單片機(jī),2位led動(dòng)態(tài)顯示,需要10根數(shù)據(jù)線,其中8根作為位選線,相當(dāng)于地址線,選擇其中一位顯示,另外2跟作為led顯示碼輸入線。 根據(jù)按鍵要求,每個(gè)床位需要一個(gè)按鈕,

3、共64個(gè)。揚(yáng)聲器可以用一個(gè)準(zhǔn)i/o。采用at89c51作為運(yùn)算和控制單元完全沒滿足系統(tǒng)的需求。如圖1所示。圖1 at89c511. 電路設(shè)計(jì)(1) 復(fù)位電路:rst引腳是復(fù)位信號(hào)輸入端嗎,高電平有效。采用上點(diǎn)復(fù)位,因?yàn)楸鞠到y(tǒng)設(shè)計(jì)的值班室“響應(yīng)按鈕”具有復(fù)位鍵,所以不需要進(jìn)行手動(dòng)復(fù)位,以節(jié)省資源,如圖2所示圖2 復(fù)位設(shè)計(jì)(2) 時(shí)鐘電路:時(shí)鐘是時(shí)序的基礎(chǔ),時(shí)鐘可以由兩種方式產(chǎn)生,內(nèi)部方式和外部方式。本系統(tǒng)采用內(nèi)部方式,在xtal1和xtal2端外接石英芯片作為定時(shí)原件。內(nèi)部反向放大器自激震蕩,產(chǎn)生時(shí)鐘。時(shí)鐘發(fā)生器對(duì)震蕩脈沖二分頻。電容采用33pf電容。如圖3所示。 圖3 時(shí)鐘電路設(shè)計(jì)(3) 數(shù)碼

4、顯示電路:采用2位8段共陰極led,p0口作為led顯示碼輸出端,p3.0、p3.1口接線選端,如圖4。圖4 數(shù)碼顯示設(shè)計(jì)(4) 鍵盤開關(guān)矩陣設(shè)計(jì):由于都使用按鈕形式,每個(gè)病房一個(gè)按鈕,當(dāng)病人有緊急情況是按下響應(yīng)按鈕,值班室便會(huì)及時(shí)找到該病人,如圖5所示。圖5 鍵盤矩陣設(shè)計(jì)(5) 提示電路的設(shè)計(jì):采用發(fā)光二極管和嗡鳴器相串聯(lián),用三極管加限流電阻作為控制開關(guān),用單片機(jī)p3.7端口控制,當(dāng)有高電平導(dǎo)通,二極管發(fā)光同時(shí)嗡鳴器發(fā)出“嘀嘀”聲作為呼叫提示。電路連接圖如6圖所示。圖6 提示設(shè)計(jì)2系統(tǒng)軟件設(shè)計(jì)(1) 病房呼叫系統(tǒng)結(jié)構(gòu)設(shè)計(jì)圖7 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)圖8 系統(tǒng)結(jié)構(gòu)框圖圖9 硬件構(gòu)成示意圖(2) 系統(tǒng)初始

5、化及呼叫過程啟動(dòng)系統(tǒng)后,系統(tǒng)進(jìn)行初始化,此時(shí),單片機(jī)執(zhí)行ea=1; /開總中斷et0=1; /定時(shí)器t0中斷允許 tmod=0x01; /使用定時(shí)器t0的模式1th0=(65536-500)/256; /定時(shí)器t0的高8位賦初值tl0=(65536-500)%256; /定時(shí)器t0的高8位賦初值tr0=1; /啟動(dòng)定時(shí)器t0keyval=0x00; /按鍵值初始化為0ex0=1; /允許使用外中斷 it0=1; /選擇負(fù)跳變來觸發(fā)外中斷系統(tǒng)進(jìn)行初始化后led顯示00,等待呼叫,如圖10所示。圖10 初始化顯示(3)數(shù)碼管顯示過程接通led的端口輸出響應(yīng),連接響鈴speaker的p3.7端位置,

6、led顯示按鈕所帶變得床位,響鈴發(fā)出報(bào)警響聲,提醒值班室的人眼有病人出現(xiàn)緊急情況。如圖所示,比如24號(hào)按下按鈕,led顯示24,響鈴如圖。圖11 病房顯示程序如下:void display(unsigned char k) p3=0xfe; /點(diǎn)亮數(shù)碼管1 p0=tabk/10; /顯示十位 led_delay(); /動(dòng)態(tài)掃描延時(shí) p3=0xfd; /點(diǎn)亮數(shù)碼管2 p0=tabk%10; /顯示個(gè)位 led_delay(); /動(dòng)態(tài)掃描延時(shí) if(keyval!=0x00) p=0; (4)延時(shí)程序設(shè)計(jì) void led_delay(void) unsigned char j;for(j=0

7、;j<200;j+) ; (5)鍵盤掃描過程端口p2進(jìn)行鍵盤橫向掃描,初始化后輸出高電平。p0端口掃描鍵盤列向,當(dāng)有按鈕按下時(shí),按鈕左右電路接聽,有信號(hào)輸入。void time0_interserve(void) interrupt 1 using 1 tr0=0; /關(guān)閉定時(shí)器t0 p1=0xff; /所有列線置為高電平? p2=0x00; /所有行線置為低電平“0”?” if(p1&0xff)!=0xff) /列線中有一位為低電平“0”,說明有鍵按下 delay20ms(); /延時(shí)一段時(shí)間、軟件消抖 if(p1&0xff)!=0xff) /確實(shí)有鍵按下 p2=0xf

8、e; /第一行置為低電平“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=0x7f) keyval=8; /可判斷是s8鍵被按下

9、 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; /可判斷是s15鍵被按下 if(p1=0x7f) ke

10、yval=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鍵被按下 if(p1=0xbf) keyval=23; /可判

11、斷是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) keyval=30; /可判斷是s30鍵被按下 if(p

12、1=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; /可判斷是s37鍵被按下 if(p1=0xdf) keyva

13、l=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; /可判斷是s4

14、5鍵被按下 if(p1=0xdf) keyval=46; /可判斷是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=

15、0xef) keyval=53; /可判斷是s53鍵被按下 if(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=6

16、0; /可判斷是s60鍵被按下 if(p1=0xef) keyval=61; /可判斷是s61鍵被按下 if(p1=0xdf) keyval=62; /可判斷是s62鍵被按下 if(p1=0xbf) keyval=63; /可判斷是s63鍵被按下 if(p1=0x7f) keyval=64; /可判斷是s64鍵被按下 tr0=1; /開啟定時(shí)器t0 th0=(65536-500)/256; /定時(shí)器t0的高8位賦初值 tl0=(65536-500)%256; /定時(shí)器t0的高8位賦初值 (4)響應(yīng)過程當(dāng)有呼叫發(fā)出是,值班室人員收到相應(yīng)信息后,可按下“響應(yīng)按鈕”,單片機(jī)執(zhí)行中斷程序。void t

17、ime0(void) interrupt 0 using 0 keyval=0x00;按鈕按下時(shí),intr0端口接地,發(fā)出中斷指令,使p3.7響鈴結(jié)束,led回到00,如圖。圖12 復(fù)位按鍵設(shè)計(jì)結(jié)果與分析(可以加頁): 1. 系統(tǒng)全局圖圖13 系統(tǒng)全局圖2. 當(dāng)64號(hào)病房緊急呼叫時(shí),顯示器顯示64并且系統(tǒng)發(fā)出警報(bào)音圖14 病房顯示3. 當(dāng)值班人員響應(yīng)呼叫時(shí),按下復(fù)位鍵(即響應(yīng)按鍵)時(shí),顯示器復(fù)位,等待下一個(gè)病房呼叫。圖15 復(fù)位顯示圖16 復(fù)位按鈕設(shè)計(jì)體會(huì)與建議: 經(jīng)過這些天的分析,設(shè)計(jì)和制作,我們終于成功的完成了病房呼救系統(tǒng)。半月的單片機(jī)課程設(shè)計(jì),讓我對(duì)proteus軟件的使用有了基本的掌握

18、,在對(duì)題目的分析過程中,對(duì)以前所學(xué)的知識(shí)特別是單片機(jī)知識(shí)回顧的過程也對(duì)proteus和keil uvision2有了更深層次的理解和領(lǐng)悟。在使用proteus軟件畫圖時(shí),對(duì)自己將理論知識(shí)運(yùn)用到實(shí)際已經(jīng)形成嚴(yán)謹(jǐn)思維都有很大幫助。通過翻閱資料,對(duì)單片機(jī)的知識(shí)也有了進(jìn)一步的認(rèn)識(shí)。在設(shè)計(jì)過程中,遇到了不少問題,老是和同學(xué)的講解給了我很大的幫助,讓我進(jìn)一步認(rèn)識(shí)到了同學(xué)的幫助及相互合作的重要性。這個(gè)課程設(shè)計(jì)對(duì)自己的思考及動(dòng)手能力的提高有一定的幫助,對(duì)我們?cè)诓饺肷鐣?huì)之前得到鍛煉。附錄:實(shí)驗(yàn)源程序#include<reg51.h> /包含51單片機(jī)寄存器定義的頭文件unsigned char co

19、de tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /數(shù)字09的段碼unsigned char keyval; /定義變量儲(chǔ)存按鍵值sbit p=p37;/*函數(shù)功能:數(shù)碼管動(dòng)態(tài)掃描延時(shí)*/void led_delay(void) unsigned char j;for(j=0;j<200;j+) ; /*函數(shù)功能:按鍵值的數(shù)碼管顯示子程序*/ void display(unsigned char k) p3=0xfe; /點(diǎn)亮數(shù)碼管1 p0=tabk/10; /顯示十位 led_delay(); /動(dòng)態(tài)掃描延時(shí) p3=0

20、xfd; /點(diǎn)亮數(shù)碼管2 p0=tabk%10; /顯示個(gè)位 led_delay(); /動(dòng)態(tài)掃描延時(shí) if(keyval!=0x00) p=0; /*函數(shù)功能:軟件延時(shí)子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i<100;i+) for(j=0;j<60;j+) ; /*函數(shù)功能:主函數(shù)*/ void main(void) ea=1; /開總中斷et0=1; /定時(shí)器t0中斷允許 tmod=0x01; /使用定時(shí)器t0的模式1th0=(65536-500)/256; /定時(shí)器t0的高8位賦初值tl0=(65536-5

21、00)%256; /定時(shí)器t0的高8位賦初值tr0=1; /啟動(dòng)定時(shí)器t0keyval=0x00; /按鍵值初始化為0ex0=1; /允許使用外中斷 it0=1; /選擇負(fù)跳變來觸發(fā)外中斷/p1=0xff; while(1) /無限循環(huán) display(keyval); /調(diào)用按鍵值的數(shù)碼管顯示子程序/*函數(shù)功能:定時(shí)器0的中斷服務(wù)子程序,進(jìn)行鍵盤掃描,判斷鍵位*/ void time0_interserve(void) interrupt 1 using 1 tr0=0; /關(guān)閉定時(shí)器t0 p1=0xff; /所有列線置為高電平? p2=0x00; /所有行線置為低電平“0”?” if(p1

22、&0xff)!=0xff) /列線中有一位為低電平“0”,說明有鍵按下 delay20ms(); /延時(shí)一段時(shí)間、軟件消抖 if(p1&0xff)!=0xff) /確實(shí)有鍵按下 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鍵被按

23、下 if(p1=0xdf) keyval=6; /可判斷是s6鍵被按下 if(p1=0xbf) keyval=7; /可判斷是s7鍵被按下 if(p1=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=

24、13; /可判斷是s13鍵被按下 if(p1=0xdf) keyval=14; /可判斷是s14鍵被按下 if(p1=0xbf) keyval=15; /可判斷是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

25、鍵被按下 if(p1=0xef) keyval=21; /可判斷是s21鍵被按下 if(p1=0xdf) keyval=22; /可判斷是s22鍵被按下 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=0xf

26、7) keyval=28; /可判斷是s28鍵被按下 if(p1=0xef) keyval=29; /可判斷是s29鍵被按下 if(p1=0xdf) keyval=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;

27、 /可判斷是s35鍵被按下 if(p1=0xf7) keyval=36; /可判斷是s36鍵被按下 if(p1=0xef) keyval=37; /可判斷是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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論