廣東工業大學華立學院 課 程 設 計(論文)
課程名稱 計算機控制系統 題目名稱 基于單片機的病房呼叫系統設計 學生學部(系) 機電與信息工程學部 專業班級 14電氣2班 學 號 511412030125 學生姓名 肖*朗 指導教師 王*赟 |
|
廣東工業大學華立學院 課程設計(論文)任務書 題目名稱 | 基于單片機的病房呼叫系統設計 | 學生學部(系) | 機電與信息工程學部 | 專業班級 | 14電氣2班 | 姓 名 | 肖*朗 | 學 號 | 511*0125 |
本次設計主要是設計一個單片機控制的病房呼叫系統。利用AT89C51結合現實電路,LED數碼管以及按鍵來設計。在設計時,應將軟硬件有機地結合起來,使得系統能夠正確的反應病人的呼叫并使服務臺能夠回應。 1.用單片機實現; 2.設計一個可容64張床位的病房呼叫系統。 3.每個床位都有一個按鈕,患者需要 呼叫護士時,按下按鈕。 4. 護士值班室內的呼叫系統板上顯示該患者的病床號,并振鈴。 5.護士按下“響應”鍵時,取消當前呼叫。 三、課程設計(論文)應完成的工作 1. 完成硬件和軟件設計,繪出電路原理圖; 2. 完成課程設計報告的撰寫。
四、課程設計(論文)進程安排 序號 | 設計(論文)各階段內容 | 地點 | 起止日期 | 1 | 收集單片機等相關資料,確定設計方案 | 校內 | 2017年5月5日 | 2 | 進行硬件和軟件設計,繪出電路原理圖 | 校內 | 2017年5月5-15日 | 3 | 進行課程設計報告的撰寫 | 校內 | 2017年5月15、16日 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
五、應收集的資料及主要參考文獻 1.收集單片機及設計中所涉及的主要器件等方面的資料 2.收集相關的軟件編程方面的資料
|
目錄 1、概述5 1.2設計要求 5 1.2設計要求 5 1.3功能簡介 5 2、系統總體方案及硬件設計5 2.1系統總體方案 5 2.2硬件設計 6 3、軟件設計6 3.1程序設計簡要 6 3.2系統的工作流程 7 3.3軟件設計 8 4、Proteus軟件仿真8 5、設計體會8 附錄10 附錄A 10 附錄B 12 參考文獻13
1.概述 1.1 設計任務 本次設計主要是設計一個單片機控制的病房呼叫系統。利用AT89C51 結合顯示電路,LED數碼管以及按鍵來設計。在設計時,我們應將軟硬件有機地結合起來,使得系統能夠正確的反應病人的呼叫并使服務臺能夠回應。 1.2 設計要求 設計一個可容64張床位的病房呼叫系統。要求每個床位都有一個按鈕,當患者需要呼叫護士時,按下按鈕。此時護士值班室內的呼叫系統板上顯示該患者的床位號,并振鈴。當護士按下“響應”鍵時,取消當前呼叫。 1.3. 功能簡介: 臨床求助呼叫(監護)是傳送臨床信息的重要手段,病房呼叫系統是病人請求值班醫生或護士進行診斷和護理的緊急呼叫工具,可將病人的請求快速傳送給值班醫生或護士,并在值班室的監控中心電腦上留下準確完整的記錄,是提高醫院和病室護理水平的必備設備之一。呼叫系統的優劣直接關系到病員的安危,歷來受到各大醫院的普遍重視。它要求及時、準確、可靠、簡便可行。為此,我們采用單片機AT89C51為系統核心,配以LED及鍵盤電路模塊和MPX2彩屏LCD電路模塊實現病人呼叫(監護)系統的設計。 2. 系統總體方案及硬件設計 2.1系統總體方案 在本系統中,我們采用單片機AT89C51為核心的系統主要包括2個部分:數據采集和數據的輸出,數據的輸出用來進行呼叫,編碼使用單片機完成,數據采集負責接收分機發來的信號,并進行解碼、顯示該患者的床位號,并振鈴,主機上設有鍵盤取消當前呼叫 其實現結構框圖如圖1所示。 圖1 病人呼叫系統框圖 將由8×8鍵盤矩陣采集到的鍵值經過P0.P2輸入到單片機AT89C51中,通過簡單的點亮呼叫病號對應床號燈和病區內的警示燈,然后通過P1口把相關信息傳送到MPX2彩屏LCD顯示。同時報警警示燈閃爍、報警聲響起。醫療人員可以通過控制鍵盤操作,完成呼叫響應和信息查詢等監護工作。
1.001.jpg (8.51 KB, 下載次數: 101)
下載附件
2017-6-2 18:02 上傳
圖1 2.2 硬件設計 2.2.1單片機AT89C51的特點 隨著單片機功能集成化的發展,其應用領域也逐漸從傳統的控制擴展為控制處理、數據處理以及數字信號處理等領域,AT89C51具有低電壓、低功耗、性價比高、功能強、指令效率高等優點[2]。AT89C51的主要特點,(1)集成度高,易于擴展; (2)較強的中斷處理能力,支持異常中斷、事件中斷和軟件中斷三種類型的中斷;(3)高效的指令系統。程序編程指令特別嚴密,它有多種中斷系統和多種定時器系統,可以根據需要具體選擇,靈活性很大。 2.2.2 MPX2彩屏LCD電路模塊 本系統采用的MPX2電路模塊是一款高畫質的低溫多晶硅TFT真彩LCD模塊,具有接口簡單、編程方便、易于擴展等良好性能。MPX2內置專用驅動和控制IC,以驅動IC自己集成顯示緩存。無需外部顯示緩存。 MPX2系列模塊實際上就是將MPX2的TFT-LCD顯示器連接在PCB電路板上,并加在PCB電路板上設計了總線緩沖、保護電路,以及背光限流電路,將顯示器不便于與開發板連接的軟PCB連接接口引出,并以DIP的雙排插針引出模塊以便于應用上的連接。為了方便應用上的擴展使用,MPX2系列模塊將顯示器主供電源和顯示器背光電源分開供電。 2.2.3 報警電路的設計 主機在接受到呼叫后,首先進行報警告知值班人員。報警電路可以用單片機P2.0輸出1 kHz和500 Hz的音頻信號經放大后驅動其揚聲器,做報警信號,要求1 kHz信號響100 ms,再500 Hz信號響200 ms,交替進行。這里使用音頻放大器LM386,他的工作電壓為4~ 12 V,輸出功率最大可達1 W,輸入阻抗為50 kHz。 2.2.4 鍵盤模塊電路設計 8×8鍵盤矩陣和64個LED警示燈模塊組成。在鍵盤掃描和LED驅動部分,使用了 LED 顯示電路原理圖如圖2所示。
1.002.jpg (15.56 KB, 下載次數: 89)
下載附件
2017-6-2 18:02 上傳
圖2 3. 系統軟件的設計 3.1程序設計簡要 在設計程序之前,我們首先對單片機應用系統預完成的任務進行深入的分析,明確系統的設計任務功能要求和技術指標。其次,要對系統的硬件資源和工作環境進行分析。這是單片機應用系統程序設計的基礎和條件。經過任務分析,算法優化后,就可以進行程序的總體構思,確定程序的結構和數據結構,并考慮資源的分配和參數的計算燈,然后根據程序運行的過程,勾畫出程序執行的邏輯順序,用圖形符號將總體設計思路及程序流向繪制在平面圖上,從而使程序結構關系直觀明了,便于檢查和修改.模塊化程序設計方法具有明顯有點。把一個多功能復雜的程序劃分位若干個簡單,功能單一的程序模塊,有利于程序的設計和調試,有利于程序的優化和分工,提高了程序的閱讀性和可靠性,使程序結構層次一目了然。 3.2系統的工作流程 如圖3所示。
1.003.jpg (25.7 KB, 下載次數: 96)
下載附件
2017-6-2 18:02 上傳
3.3軟件設計 該系統軟件主要完成以AT89C51為核心的數據的采集、處理和有線傳輸。采用模塊化程序設計方法,將系統軟件的設計主要分為顯示模塊,輸入模塊,輸出模塊。單片機掃描發射鍵,如果掃描到有發射鍵按下,系統便掃描撥碼開關的狀態以確定地址碼,通過P0口和P2口開始地址碼傳送當服務臺接收到呼叫信號后,護士值班室內的呼叫系統板上顯示該患者的床位號,并振鈴。當護士按下“響應”鍵時,取消當前呼叫。 4. Proteus軟件仿真 我們利用KEILV805中文版對源程序進行編譯,編譯成功后,把編譯結果保存并生成.HEX文件,然后把.HEX加載到單片機上進行Proteus軟件仿真。看其是否能實現預想的功能。 Proteus仿真圖如圖4下,當按下27號床位時,顯示如下:
1.004.jpg (20.49 KB, 下載次數: 123)
下載附件
2017-6-2 18:02 上傳
圖4 5. 設計體會 單片機在當今計算機領域應用十分廣泛,在自動控制領域更是非常重要。通過這次設計,我覺得自己對單片機的理解有了新的提高,也使自己綜合運用所學知識,發現,提出,分析,解決實際問題的能力有很大進步。我知道單片機已經成為當今計算機應用中空前活躍的領域,在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。 想起這次單片機設計,至今我仍感慨頗多,在整整一個多星期的日子里,可以說是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說對器件的不熟悉,對應用軟件操作的困難,對單片機匯編語言掌握得不好。通過這次設計之后,我對自己以前的知識有了很大提高。 設計順利完成了,在設計中遇到了很多編程問題,在同學和老師的細心幫助下,都得以解決。在此,對給過我幫助的所有同學和各位指導老師表示忠心的感謝! 附錄 附錄A 源程序代碼
附錄B 系統原理圖
1.005.jpg (19.87 KB, 下載次數: 102)
下載附件
2017-6-2 18:02 上傳
參考文獻 [1] 張培仁,張志堅,高修峰.十六位單片微處理器原理及應用.北京,清華大學出版社[M].2005: 46~49 [2] 田會方,吳興強.基于LabVIEW與凌陽SPCE061A實現串口數據采集[J].微計算機信息.2006:6:2.22~25 [3] 北京比高科技公司. BC7281B中文技術手冊. 2002(6) [4] 北京銘正同創科技有限公司.MT22G06B彩屏LCD模組簡要介紹.2006(12) [5] 張立才.基SPCE061A的多功能信號發生器設計實現[J].微計算機信息.2004:20:3.33~35 | 單片機在當今計算機領域應用十分廣泛,在自動控制領域更是非常重要。通過這次設計,我覺得自己對單片機的理解有了新的提高,也使自己綜合運用所學知識,發現,提出,分析,解決實際問題的能力有很大進步。我知道單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。 想起這次單片機設計,至今我仍感慨頗多,在整整一個多星期的日子里,可以說是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說對器件的不熟悉,對應用軟件操作的困難,對單片機匯編語言掌握得不好。通過這次設計之后,我對自己以前的知識有了很大提高。
| |
| | |
- #include
- #define uchar unsigned char
- #define uint unsigned int
- sbit B1=P3^6;
- sbit B2=P3^7;
- sbit buzzer=P3^5;
- sbit clear=P3^4; 定義字符
- B1,B2,BUZZER,CLEAR
- uchar code distab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar code keytab[8][8]={{1,2,3,4,5,6,7,8}, 定義鍵盤值
- {9,10,11,12,13,14,15,16}, {17,18,19,20,21,22,23,24}, {25,26,27,28,29,30,31,32}, {33,34,35,36,37,38,39,40}, {41,42,43,44,45,46,47,48}, {49,50,51,52,53,54,55,56}, {57,58,59,60,61,62,63,64}, };
- uchar bed_NO;
- uchar btime;
- uchar itime; 定義字符bed_NO,uchar btime,uchar itime void delay(uint x) 定義延遲程序塊
- { uint i,j;
- for(i=0;i{;;}
- }
- }
- void display(void)
- {
- uchar a10,a1;
- a10=bed_NO/10;
- a1=bed_NO%10;
- P1=distab[a10];
- B1=0;
- delay(10);
- B1=1;
- P1=distab[a1];
- B2=0;
- delay(10);
- B2=1;
- } 定義顯示管塊
- void key(void) 掃描鍵盤值
- {
- uchar hang,lie; P0=0x00;P2=0xff; delay(1); if(P2!=0xff) { delay(5); 延遲(5)后查詢行列值 if(P2!=0xff) { switch(P2&0xff) 掃描列值 { case 0xfe:lie=0;break; case 0xfd:lie=1;break; case 0xfb:lie=2;break; case 0xf7:lie=3;break; case 0xef:lie=4;break; case 0xdf:lie=5;break; case 0xbf:lie=6;break; case 0x7f:lie=7;break; }
- P2=0x00;P0=0xff;
- switch(P0&0xff) 掃描行值 {
- case 0xfe:hang=0;break; case 0xfd:hang=1;break; case 0xfb:hang=2;break; case 0xf7:hang=3;break; case 0xef:hang=4;break; case 0xdf:hang=5;break; case 0xbf:hang=6;break; case 0x7f:hang=7;break; }
- P2=0xff;P0=0x00;
- while(P2!=0xff);
- bed_NO=keytab[hang][lie];TR0=1; }
- else
- bed_NO=0;
- }
- }
- void time_init(void) 計數器的初始化
- {行列值賦值給bed_NO
- TH0=(65536-8333)/256; 裝入初值 TL0=(65536-8333)%256;
- EA=1;
- ET0=1;
- }
- void time(void) interrupt 1 using 1 {
- TH0=(65536-8333)/256;
- TL0=(65536-8333)%256;
- itime++;
- if(itime>=100)
- {
- itime=0;
- btime++;
- if(btime>6){TR0=0;btime=0;} buzzer=!buzzer;
- }
- }
- void main(void)
- {
- time_init(); 定義中斷塊
- } { } key(); display(); if(TR0==0){buzzer=1;} if(clear==0) 服務臺取消呼叫
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整論文下載(word格式 可編輯):
http://www.zg4o1577.cn/bbs/dpj-86638-1.html
|