病床呼叫系統(tǒng)設(shè)計,病床,呼叫,呼喚,系統(tǒng),設(shè)計
摘 要
本課題運(yùn)用PLC對病床緊急呼叫系統(tǒng)進(jìn)行改造,通過PLC可以省去煩瑣的配線,使整個程序更為簡單。隨著控制系統(tǒng)的復(fù)雜性與微電腦的發(fā)展,我們普遍使用可編程控制器PLC來控制一些較為復(fù)雜的線路,這樣既可以減少配線而且可靠性高,使用維修方便。病床緊急呼叫系統(tǒng)通過PLC的改造為醫(yī)院和病人之間架起一座橋梁,使病人覺得醫(yī)院更方便更人性化,也使得醫(yī)生對病人的治療更及時有效。
關(guān)鍵字:PLC 數(shù)碼管 七段碼譯碼指令 區(qū)間復(fù)位指令
畢業(yè)論文(設(shè)計)
課題名稱 病床呼叫系統(tǒng)設(shè)計
姓 名 管新宇
學(xué) 號 02
專 業(yè) 工業(yè)電氣自動化
指導(dǎo)老師 鮑卓娟
無錫職業(yè)技術(shù)學(xué)院
日 期: 2012年 6 月 20 日
第一章 緒論
病床呼叫系統(tǒng)的應(yīng)用在實際生活中運(yùn)用較為廣泛,在醫(yī)院尤為重要。在醫(yī)院病房中如果病人有什么不適或其他需要幫忙的地方就需要叫護(hù)士或醫(yī)生,這時就可以按醫(yī)院的病床緊急呼叫系統(tǒng)的按鈕,醫(yī)生或護(hù)士看到其值班室的燈亮,再通過數(shù)碼管顯示的病床號就可以快速地去病人的病房進(jìn)行處理,提高了效率。這個系統(tǒng)大大方便了病人,也為醫(yī)院為病人治療縮短了不必要的時間。病床呼叫系統(tǒng)通過PLC的改造為醫(yī)院和病人之間架起一座橋梁,使病人覺得醫(yī)院更方便更人性化,也使得醫(yī)生對病人的治療更及時有效。這次課題雖然只是簡單的呼叫系統(tǒng),可是我能感覺到呼叫系統(tǒng)的應(yīng)用在實際生活中變得至關(guān)重要,也是個值得研究的課題。
病床呼叫系統(tǒng)在實際生活中的應(yīng)用
在工作實踐中,對呼叫系統(tǒng)的功能作了更進(jìn)一步的挖掘,以滿足不同層次客戶的實際需要。比如,有些單位推出多種具有不同功能的產(chǎn)品,供用戶選擇,有的只具有呼叫功能,有的具有呼叫和對講功能,有的具有呼叫、對講、LED、插卡槽等多種組合功能。不同功能的產(chǎn)品價位上也有比較大的差別,用戶可根據(jù)自己的實際情況選用不同的產(chǎn)品。在產(chǎn)品設(shè)計上,制造商站在使用者的角度思考產(chǎn)品功能,如設(shè)計了一個帶聲光顯示、可拉可按、并且安裝方便的呼叫按鈕,主要是考慮到有些重癥病人或體衰老人,按或拉了呼叫按鈕后,都希望護(hù)理人員盡快到達(dá),但如何知道呼叫信號已經(jīng)傳送出去了呢?在呼叫按鈕上加載了5V的電壓,當(dāng)呼叫信號接通時,呼叫床位提示燈亮,使用者一看心里就放心了,知道信號已經(jīng)送了出去。之所以在這個呼叫按鈕上設(shè)計了光電信號,也是考慮到夜間護(hù)理對象使用時,呼叫按鈕能夠發(fā)光,使那些病人看到光亮心里就放心許多。
在實際工作中還經(jīng)常遇到這樣的情況,即護(hù)理對象呼叫后,護(hù)理站的護(hù)理員需要盡快趕到現(xiàn)場,如果事情不大,護(hù)理員就可以自己解決掉,但如果出現(xiàn)危急情況,需要馬上通知醫(yī)生到達(dá)現(xiàn)場,這時該如何做到呢?時下大部分醫(yī)院都是采取“直接找人”的方法,即護(hù)士自己或通知其它護(hù)士盡快尋找醫(yī)生,如果是一個護(hù)士值班,發(fā)生緊急情況時,就出現(xiàn)了難題,即假如護(hù)士自己跑去找醫(yī)生,可能病人因得不到緊急監(jiān)護(hù)而發(fā)生危險,不去找醫(yī)生,自己又無法實現(xiàn)緊急救治,往往延誤搶救時機(jī)。考慮到這種情況,我們在呼叫系統(tǒng)內(nèi)增加了更加細(xì)化的功能,即操作面板上有“叫醫(yī)生”按鈕,當(dāng)護(hù)士感覺到有必要叫醫(yī)生時,只要到門口的操作面板上按一下“叫醫(yī)生”按鍵,此時,呼叫醫(yī)生的程序啟動,系統(tǒng)會立即在醫(yī)生值班室的監(jiān)視器上發(fā)出呼叫,或通過無線尋呼機(jī)通知醫(yī)生,這樣確保護(hù)士不去直接找人的情況下醫(yī)生就可自己識別呼叫源,從而快速到位。同樣,如果找行政人員,也是只要在操作面板上按一下“叫行政”按鍵,則行政人員辦公室的監(jiān)視器及尋呼機(jī)就會收到呼叫信號。“叫醫(yī)生”、“叫行政”等功能就是這套呼叫系統(tǒng)的“分級呼叫”的基本思想。
目前,呼叫系統(tǒng)以布線方式,可以分成多種,目前市面上比較多的是三種,一種是星形結(jié)構(gòu)布線,這種產(chǎn)品的優(yōu)點是系統(tǒng)穩(wěn)定,一個呼叫按鈕出現(xiàn)故障,不會影響到其它呼叫按鈕的工作,但缺點是布線比較麻煩。另一種是采用總線制,這種呼叫產(chǎn)品的優(yōu)點是布線簡單,施工容易,但缺點是故障率高,一旦某一節(jié)點出現(xiàn)故障,則整個呼叫系統(tǒng)將陷入癱瘓。第三種是采用無線技術(shù),這種呼叫系統(tǒng)的優(yōu)點是安裝容易,改變位置方便,但缺點是信號受外界影響比較嚴(yán)重,比如氣候不好時,信號傳遞就會出現(xiàn)差錯,而且分機(jī)與主機(jī)的直線距離不能太遠(yuǎn),否則信號傳遞中出錯較多。還有一種無線呼叫,就是戶外移動呼叫,當(dāng)老人在戶外活動時,如果感覺身體不適,就按一下隨身攜帶的無線按鈕,則信號傳遞出去,監(jiān)護(hù)中心可以收到這個信號,然后解碼定位,從而實現(xiàn)呼叫目的。這種呼叫系統(tǒng)成本比較高,并且比較適合空曠場合,而且呼叫器需要經(jīng)常充電,不太方便。我們經(jīng)常還聽說有一種社區(qū)呼叫系統(tǒng),即在現(xiàn)有的電話線路上安裝一個盒子,當(dāng)有需要時,按一下按鍵,信號就通過電話傳遞出去,很快就有人員上門提供服務(wù)。其實這種呼叫系統(tǒng)適用于社區(qū),其基本原理是利用現(xiàn)有的電話交換技術(shù),當(dāng)按下呼叫按鈕時,系統(tǒng)會自動啟動一個撥號動作,撥某一個固定的號碼,而該號碼就是服務(wù)中心的號碼,服務(wù)中心可以通過解碼識別出呼叫源的具體位置,從而實現(xiàn)呼叫目的。
第二章 病床呼叫系統(tǒng)的整體結(jié)構(gòu)
本次設(shè)計的系統(tǒng)的整體結(jié)構(gòu)由plc部分、護(hù)士站顯示部分、用戶按鈕部分三部分組成。
1、按鈕部分采集信號,當(dāng)病人按下按鈕時,將信號傳送到plc部分。
2、PLC部分的作用是接受用戶部分的信息,經(jīng)過處理后再反饋給顯示部分。
3、顯示部分接收到信息后兩個數(shù)碼管相應(yīng)的輸出序號,以便護(hù)士了解確認(rèn)。
整體框架圖 如圖2-1所示。
PLC
一號房
二號房
三號房
四號房
護(hù)士站數(shù)碼管顯示
按鈕
按鈕
按鈕
按鈕
圖2-1
第三章 FX 系列PLC簡介
3.1.1 PLC的定義
可編程序控制器(Programmable Controller)原本應(yīng)簡稱PC,為了與個人計算機(jī)專稱PC相區(qū)別,所以可編程序控制器簡稱定為PLC(Programmable Logic Controller),但并非說PLC只能控制邏輯信號。PLC是專門針對工業(yè)環(huán)境應(yīng)用設(shè)計的,自帶直觀、簡單并易于掌握編程語言環(huán)境的工業(yè)現(xiàn)場控制裝置。
傳統(tǒng)繼電器控制盤的配線復(fù)雜又不靈活,隨著控制系統(tǒng)的復(fù)雜性與微電腦的發(fā)展,傳統(tǒng)繼電器控制配電盤已不符合時代的需求,取而代之的為工業(yè)界普通使用的可編程邏輯控制器以下簡稱可編程控制器(PLC Programmable Logic Controller)。PLC是一種數(shù)字電子設(shè)備,用內(nèi)存來存儲程序指令,以執(zhí)行邏輯、順序、計時、技術(shù)及算數(shù)運(yùn)算等機(jī)械控制的功能。
3.1.2 PLC主要的特點
1、高可靠性
(1)所有的I/O接口電路均采用光電隔離,使工業(yè)現(xiàn)場的外電路與PLC內(nèi)部電路之間電氣上隔離。
(2)各輸入端均采用R-C濾波器,其濾波時間常數(shù)一般為10~20ms.
(3)各模塊均采用屏蔽措施,以防止輻射干擾。
(4)采用性能優(yōu)良的開關(guān)電源。
(5)對采用的器件進(jìn)行嚴(yán)格的篩選。
(6)良好的自診斷功能,一旦電源或其他軟,硬件發(fā)生異常情況,CPU立即采用有效措施,以防止故障擴(kuò)大。
(7)大型PLC還可以采用由雙CPU構(gòu)成冗余系統(tǒng)或有三CPU構(gòu)成表決系統(tǒng),使可靠性更進(jìn)一步提高?! ?
3.1.3 PLC的功能
1、邏輯控制 2、定時控制 3、計數(shù)控制 4、步進(jìn)(順序)控制 5、PID控制 6、數(shù)據(jù)控制:PLC具有數(shù)據(jù)處理能力。 7、通信和聯(lián)網(wǎng) 8、其它:PLC還有許多特殊功能模塊,適用于各種特殊控制的要求,如:定位控制模塊,CRT模塊。
3.1.4 PLC的基本組成
PLC基本組成包括中央處理器(CPU)、存儲器、輸入/輸出接口(縮寫為I/O,包括輸入接口、輸出接口、外部設(shè)備接口、擴(kuò)展接口等)、外部設(shè)備編程器及電源模塊組成,見圖1。PLC內(nèi)部各組成單元之間通過電源總線、控制總線、地址總線和數(shù)據(jù)總線連接,外部則根據(jù)實際控制對象配置相應(yīng)設(shè)備與控制裝置構(gòu)成PLC控制系統(tǒng)。 請登陸:輸配電設(shè)備網(wǎng) 瀏覽更多信息
PLC的基本組成
3.1.5 PLC的選型
因每種品牌配置不一樣,所以它的選型方式也有所差異,下面著重介紹大家常用的大眾品牌三菱plc的選型方法,大家可以做一個參考來選擇使用三菱PLC。
(一)分析被控對象并提出控制要求
詳細(xì)分析被控對象的工藝過程及工作特點,了解被控對象機(jī)、電、液之間的配合,提出被控對象對三菱PLC控制系統(tǒng)的控制要求,確定控制方案,擬定設(shè)計任務(wù)書。
(二)如何確定三菱PLC的輸入/輸出設(shè)備
根據(jù)系統(tǒng)的控制要求,確定系統(tǒng)所需的全部輸入設(shè)備(如:按紐、位置開關(guān)、轉(zhuǎn)換開關(guān)及各種傳感器等)和輸出設(shè)備(如:接觸器、電磁閥、信號指示燈及其它執(zhí)行器等),從而確定與三菱PLC有關(guān)的輸入/輸出設(shè)備,以確定PLC的I/O點數(shù)。
(三)如何選擇三菱PLC
三菱 PLC選擇包括對三菱PLC的機(jī)型、容量、I/O模塊、電源等的選擇,詳見本章第二節(jié)。
? ? (四)三菱plc分配I/O點并設(shè)計三菱PLC外圍硬件線路
因本課題需要使用24個點輸出,所以選用三菱fx2n-48mr比較安全實惠。
3.2 數(shù)碼管介紹
圖4-1
數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。(實物參照圖片4-1)
4.2.1數(shù)碼管的分類
數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。
4.2.2 數(shù)碼管的驅(qū)動方式
數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。
?、?靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機(jī)的I/O端口進(jìn)行驅(qū)動,或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動,要知道一個89S51單片機(jī)可用的I/O端口才32個呢:),實際應(yīng)用時必須增加譯碼驅(qū)動器進(jìn)行驅(qū)動,增加了硬件電路的復(fù)雜性。
?、?動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,h"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。
4.2.3數(shù)碼管應(yīng)用
數(shù)碼管是一類顯示屏 通過對其不同的管腳輸入相對的電流 會使其發(fā)亮 從而顯示出 數(shù)字
可以顯示 時間 日期 溫度 等索用可以用數(shù)字代替的參數(shù)
由于它的價格便宜 使用簡單 在電器 特別是家電領(lǐng)域應(yīng)用極為廣泛 空調(diào) 熱水器 冰箱 等等
絕大多數(shù) 熱水器用的都是數(shù)碼管 其他家電 也用液晶屏與 熒光屏
4.2.4 數(shù)碼管的檢測
找公共共陰和公共共陽首先,我們找個電源(3到5伏)和1個1K(幾百的也歐的也行)的電阻, VCC串接個電阻后和GND接在任意2個腳上,組合有很多,但總有一個LED會發(fā)光的找到一個就夠了,,然后用GND不動,VCC(串電阻)逐個碰剩下的腳,如果有多個LED(一般是8個),那它就是共陰的了。相反用VCC不動,GND逐個碰剩下的腳,如果有多個LED(一般是8個),那它就是共陽的。也可以直接用數(shù)字萬用表,紅表筆是電源的正極,黑表筆是電源的負(fù)極。
在本課題的設(shè)計中使用共陰極的七段數(shù)碼管的顯示。
第四章 病床呼叫系統(tǒng)的控制方案
4.1 病床呼叫系統(tǒng)的工作流程
當(dāng)病人按下呼叫按鈕,呼叫指示燈亮提示病人已呼叫成功。這時護(hù)士站的兩個數(shù)碼管分別顯示呼叫病人的房號和床號,當(dāng)護(hù)士看到提示,立即按下復(fù)位按鈕,表示已經(jīng)知道呼叫者的位置(這時其他病人也可以進(jìn)行對護(hù)士的呼叫),知道呼叫者位置的護(hù)士對相應(yīng)房號床號的病人采取相應(yīng)措施。
4.2 I/O分配表
輸入
輸出
一號房
1號床呼叫按鈕
X1
一號房
1號床提示燈
Y0
2號床呼叫按鈕
X2
2號床提示燈
Y1
二號房
1號床呼叫按鈕
X3
二號房
1號床提示燈
Y2
2號床呼叫按鈕
X4
2號床提示燈
Y3
三號房
1號床呼叫按鈕
X5
三號房
1號床提示燈
Y4
2號床呼叫按鈕
X6
2號床提示燈
Y5
四號房
1號床呼叫按鈕
X7
四號房
1號床提示燈
Y6
2號床呼叫按鈕
X10
2號床提示燈
Y7
護(hù)士站重置按鈕
X0
顯示房號七段燈
Y10-Y17
顯示床號七段燈
Y20-Y27
圖4.2
4.3 接線圖
圖4.3
4.5 梯形圖
4.6 指令表
結(jié)論
病床緊急呼叫系統(tǒng)的應(yīng)用可以使醫(yī)院與病人之間的距離變得更進(jìn)近,醫(yī)院的治療更人性化,通過PLC對其的改造可以省去煩瑣的配線,使整個程序更為簡單。隨著控制系統(tǒng)的復(fù)雜性與微電腦的發(fā)展,我們普遍使用可編程控制器PLC來控制一些較為復(fù)雜的線路,這樣既可以減少配線而且可靠性高,使用維修方便。病床緊急呼叫系統(tǒng)通過PLC的改造為醫(yī)院和病人之間架起一座橋梁,使病人覺得醫(yī)院更方便更人性化,也使得醫(yī)生對病人的治療更及時有效。 通過這次課題的實際,對plc的工作原理和應(yīng)用有了更深的了解,在這次畢業(yè)設(shè)計的過程中,自己所學(xué)的知識得到了應(yīng)用,進(jìn)而專業(yè)知識面得到了更大的進(jìn)展,分析問題和解決問題的能力得到了提高。查閱書籍、資料的能力也有了提高。
致謝
在做這次畢業(yè)設(shè)計過程中我首先要感謝我的導(dǎo)師鮑老師,感謝鮑老師在這些日子對我悉心教導(dǎo),她為我們操了好多心思,我由衷的感謝她。我按照論文的提綱,開始動筆寫論文。在這次畢業(yè)設(shè)計中,我覺得從與老師的溝通過程中,我能學(xué)到很多東西,老師可以從另外一個角度來啟發(fā)我,給了我很多鼓勵。同時通過這次寫畢業(yè)論文,還提高了我對Office基本操作的熟練程度。再次感謝我的指導(dǎo)老師鮑老師的細(xì)心指導(dǎo)。
參考文獻(xiàn)
【1】 孫振強(qiáng). 可編程控制器原理及應(yīng)用教程 北京:清華大學(xué)出版社
【2】 鐘肇.可編程控制器原理及應(yīng)用 華南:理工大學(xué)出版社
【3】 范次猛.可編程控制器原理與應(yīng)用 北京:北京理工大學(xué)
【4】 丁慶廣.可編程控制器原理及系統(tǒng)設(shè)計 北京:清華大學(xué)出版社
【5】 江思敏.Protel電路設(shè)計教程 北京:清華大學(xué)出版社
【6】 吳中俊. 可編程序控制器原理及應(yīng)用北京:機(jī)械工業(yè)出版社
【7】 劉載文.梯控制系統(tǒng).北京:電子工業(yè)出版社
【8】 陳家盛.電梯結(jié)構(gòu)原理及安裝枝術(shù) 北京:機(jī)械工業(yè)出版社
【9】 徐蹲.可編程序控制器應(yīng)用基礎(chǔ) 山東:科學(xué)技術(shù)出版社
【10】 張漢杰編著.現(xiàn)代電標(biāo)控制技術(shù) 哈爾濱:工業(yè)大學(xué)出版杜
第21頁
無錫職業(yè)技術(shù)學(xué)院
畢業(yè)設(shè)計(論文)任務(wù)書
系:電氣系 專業(yè):電氣自動化 班級:70702
學(xué)生姓名
管新宇
指導(dǎo)教師
鮑卓娟
職稱
高級講師
課題名稱
課
題
工
作
內(nèi)
容
病床呼叫系統(tǒng)的應(yīng)用在實際生活中運(yùn)用較為廣泛,在醫(yī)院尤為重要。本課題運(yùn)用PLC對病床緊急呼叫系統(tǒng)進(jìn)行改造,通過PLC可以省去煩瑣的配線,使整個程序更為簡單。使用可編程控制器PLC來控制一些較為復(fù)雜的線路,這樣既可以減少配線而且可靠性高,使用維修方便。病床緊急呼叫系統(tǒng)通過PLC的改造為醫(yī)院和病人之間架起一座橋梁。
指
標(biāo)
︵
目
標(biāo)
︶
要
求
1.學(xué)習(xí)PLC的基本結(jié)構(gòu),工作原理,組成系統(tǒng)和功能。
2.可編程控制器機(jī)型的選擇。PLC輸入/輸出口(I/O)分配表。
3.編寫PLC程序,對病床呼叫系統(tǒng)的實際設(shè)計與改造。
進(jìn)
程
安
排
第1周 選題、調(diào)研和資料收集
第2周 確定課題方案,進(jìn)行課題設(shè)計
第3周 進(jìn)行控制系統(tǒng)的設(shè)計
第4周 進(jìn)行軟件程序的設(shè)計
第5-6周 完成撰寫論文
第7周 檢查、修改并打印論文
第8周 答辯
主
要
參
與
文
獻(xiàn)
孫振強(qiáng). 可編程控制器原理及應(yīng)用教程 北京:清華大學(xué)出版社
鐘肇.可編程控制器原理及應(yīng)用 華南:理工大學(xué)出版社
丁慶廣.可編程控制器原理及系統(tǒng)設(shè)計 北京:清華大學(xué)出版社
江思敏.Protel電路設(shè)計教程 北京:清華大學(xué)出版社
徐蹲.可編程序控制器應(yīng)用基礎(chǔ) 山東:科學(xué)技術(shù)出版社
張漢杰編著.現(xiàn)代電標(biāo)控制技術(shù) 哈爾濱:工業(yè)大學(xué)出版杜
地
點
無錫技師學(xué)院
起止
日期
2012.05.07 — 2012.05.29
系主任: 指導(dǎo)教師:鮑卓娟
年 月 日 年 月 日
S0
S21
Y1
T0 K5
T1 K10
SEGDP K1 K2Y10
SEGDP K1 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
M8002
T0
T0
T0
T1
T1
S22
Y2
T0 K5
T1 K10
SEGDP K1 K2Y10
SEGDP K2 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
S23
Y3
T0 K5
T1 K10
SEGDP K2 K2Y10
SEGDP K1 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
S24
Y4
T0 K5
T1 K10
SEGDP K2 K2Y10
SEGDP K2 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
X1
X2
X3
X4
X5
X6
X7
X10
X1
X2
X3
X4
X5
X6
X7
X10
X1
X2
X3
X4
X5
X6
X7
X10
X1
X2
X3
X4
X5
X6
X7
X10
4.4流程圖
圖4.4
S25
Y5
T0 K5
T1 K10
SEGDP K3 K2Y10
SEGDP K1 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
S26
Y6
T0 K5
T1 K10
SEGDP K3 K2Y10
SEGDP K2 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
S27
Y7
T0 K5
T1 K10
SEGDP K4 K2Y10
SEGDP K1 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
S28
Y10
T0 K5
T1 K10
SEGDP K4 K2Y10
SEGDP K2 K2Y20
SEGDP K1 K2Y10
SEGDP K1 K2Y20
T0
T0
T0
T1
T1
X1
X2
X3
X4
X5
X6
X7
X10
X1
X2
X3
X4
X5
X6
X7
X10
X1
X2
X3
X4
X5
X6
X7
X10
X1
X2
X3
X4
X5
X6
X7
X10
目 錄
緒論 1
第一章 緒論 1
1.1 病床呼叫系統(tǒng)在實際生活中的應(yīng)用 1
第二章 病床呼叫系統(tǒng)的整體結(jié)構(gòu) 3
第三章 FX 系列PLC簡介 4
3.1.1 PLC的特點 4
3.1.2 PLC的主要特點 4
3.1.3 PLC的功能 5
3.1.4 PLC的基本組成 5
3.1.5 PLC的選型 6
3.2 數(shù)碼管介紹 7
3.2.1數(shù)碼管的分類 7
3.2.2數(shù)碼管的驅(qū)動方式 7
3.2.3數(shù)碼管應(yīng)用 8
3.2.4數(shù)碼管的檢測 8
第四章 病床呼叫系統(tǒng)的控制方案 9
4.1 病床呼叫系統(tǒng)的工作流程 9
4.2 I/O分配表 9
4.3 接線圖 10
4.4 流程圖 10
4.5 梯形圖 13
4.6 指令表 17
結(jié)論 21
致謝 21
參考文獻(xiàn) 22
武漢理工大學(xué)《能力強(qiáng)化訓(xùn)練》課程設(shè)計說明書
能力拓展訓(xùn)練任務(wù)書
學(xué)生姓名: 梅浪奇 專業(yè)班級: 自動化1002班
指導(dǎo)教師: 孫曉明 工作單位: 自動化學(xué)院
題 目: 病床呼叫系統(tǒng)設(shè)計
初始條件:計算機(jī)、Max+plusⅡ、EDA實驗箱。
要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)
設(shè)計病床呼叫系統(tǒng),使用3X8矩陣開關(guān)分別模擬醫(yī)院病房與病床位數(shù),當(dāng)某開關(guān)按下時,系統(tǒng)顯示呼叫的病房與病床、呼叫的時間。處理完畢可清除該呼叫顯示記錄。
提高部分:
同時有數(shù)個病床呼叫時,可以循環(huán)呼叫記錄顯示。
任務(wù)安排:
(1) 設(shè)計任務(wù)及要求分析
(2) 方案比較及認(rèn)證說明
(3) 系統(tǒng)原理闡述,寫出設(shè)計方案結(jié)構(gòu)圖。
(4) 軟件設(shè)計課題需要說明:軟件思想,流程圖,源程序及程序注釋
(5) 調(diào)試記錄及結(jié)果分析、
(6) 總結(jié)
(7) 參考資料5篇以上
(8) 附錄:程序清單
時間安排:
6月24日:安排設(shè)計任務(wù);收集資料;方案選擇
6月25日:程序設(shè)計
6月26——27日:實驗室內(nèi)調(diào)試程序并演示
6月28日:撰寫報告
7月1日:交能力拓展訓(xùn)練報告
指導(dǎo)教師簽名:
孫曉明 2013 年 6 月 24 日
系主任(或責(zé)任教師)簽名: 年 月 日
I
摘要
病房呼叫系統(tǒng)是傳送臨床信息的重要手段,可將病人的請求快速傳送給值班醫(yī)生或護(hù)士,它主要用于協(xié)助醫(yī)院病員在病床上方便地呼叫醫(yī)務(wù)人員,是提高醫(yī)院和病室護(hù)理水平的必備設(shè)備之一。讓患者需要服務(wù)時,只要按一下隨身攜帶的呼叫器,信息立馬就能傳至護(hù)工處.避免沒有看護(hù)人在時,病人急需服務(wù)卻無法通知醫(yī)生的情況.它要求及時、準(zhǔn)確、可靠、簡便可行。
本設(shè)計的呼叫系統(tǒng)由按鍵檢測,數(shù)據(jù)處理,信息顯示三部分組成。由C51單片機(jī)作為主要控制器,利用液晶顯示器作為顯示部分,使用3X8矩陣開關(guān)分別模擬醫(yī)院病房與病床位數(shù)。病人按下按鍵時,C51立即獲取病人的病房號和病床號,同時采集此時的時間并一起顯示在液晶顯示器上,當(dāng)護(hù)士看到顯示器上病人的信息,并按下清零鍵后,液晶顯示器恢復(fù)到初始狀態(tài)。本系統(tǒng)對鍵盤的檢測采用中斷的方式,能夠提高系統(tǒng)的立即性和高效性。當(dāng)同時有數(shù)個病床呼叫時,本系統(tǒng)還可以循環(huán)呼叫記錄顯示。
關(guān)鍵詞:病房呼叫 單片機(jī) 中斷 液晶顯示
34
目錄
1設(shè)計任務(wù)及要求分析 1
1.1 設(shè)計任務(wù) 1
1.2 任務(wù)要求分析 1
2 系統(tǒng)設(shè)計和方案選擇 2
2.1 設(shè)計思路 2
2.2 鍵盤采集方案選擇 2
2.3設(shè)計芯片的選擇 3
3病床呼叫系統(tǒng)硬件電路設(shè)計 4
3.1單片機(jī)控制系統(tǒng)硬件設(shè)計 4
3.2液晶顯示的硬件設(shè)計 4
3.3掃描鍵盤的硬件設(shè)計 5
3.4時鐘芯片的硬件設(shè)計 6
3.4中斷電路設(shè)計 6
4病房呼叫系統(tǒng)軟件設(shè)計 7
4.1主程序設(shè)計 7
4.2矩陣鍵盤的中斷程序的設(shè)計 8
4.3液晶LCD12864驅(qū)動程序的設(shè)計 10
4.4實時時鐘DS1302驅(qū)動程序的設(shè)計 11
5仿真結(jié)果及分析 12
5.1 無病人呼救時的仿真結(jié)果 12
5.2 有病人呼救時的仿真結(jié)果 12
5.3 有多個病人呼救時的仿真結(jié)果 12
6心得體會 14
參考文獻(xiàn) 15
附錄1系統(tǒng)原理圖 16
附錄2程序源代碼 17
1設(shè)計任務(wù)及要求分析
近年來,隨著人們生活水平的不斷提高,人們對醫(yī)療水平的要求也不斷提高,特別是突發(fā)情況下病人請求值班醫(yī)生或護(hù)士進(jìn)行及時診斷或護(hù)理,這一環(huán)節(jié)對提高醫(yī)院的管理服務(wù)質(zhì)量顯得尤其重要,這同時也大大提高了醫(yī)院醫(yī)護(hù)人員應(yīng)對突發(fā)事件的能力。因此,一種新型臨床呼叫儀器的研制成為近些年來的研究熱點之一。呼叫系統(tǒng)的優(yōu)劣直接關(guān)系到病員的安危,歷來受到各大醫(yī)院的普遍重視。它要求及時、準(zhǔn)確、可靠、簡便可行、利于推廣。利用電力線載波通信技術(shù)、單片機(jī)多機(jī)通信和計算機(jī)監(jiān)控管理技術(shù)設(shè)計的具有呼叫、振鈴、顯示排隊、優(yōu)先權(quán)設(shè)定、存儲記錄等功能的病床呼叫系統(tǒng),滿足了醫(yī)院的病房管理和護(hù)理要求。
1.1 設(shè)計任務(wù)
本病床呼叫系統(tǒng)中,使用3X8矩陣開關(guān)分別模擬醫(yī)院病房與病床位數(shù),當(dāng)某開關(guān)按下時,系統(tǒng)顯示呼叫的病房與病床、呼叫的時間。處理完畢可清除該呼叫顯示記錄。當(dāng)同時有數(shù)個病床呼叫時,本系統(tǒng)還可以循環(huán)呼叫記錄顯示。
1.2 任務(wù)要求分析
通過對上述設(shè)計任務(wù)的分析,可以將之細(xì)分為以下幾點,最后的調(diào)試也將以下面各點為依據(jù)。
①當(dāng)有病人按下按鍵時,液晶顯示器上顯示病人的病房號,病床號,以及按鍵時的時間。
②在護(hù)士按下清零鍵后,液晶顯示器上內(nèi)容恢復(fù)到初始狀態(tài)。
③若在護(hù)士按下清零鍵前有多個病人按鍵,則液晶顯示器上將循環(huán)顯示各個病人的信息,直到護(hù)士按下清零鍵后,液晶顯示器上內(nèi)容恢復(fù)到初始狀態(tài)。
2 系統(tǒng)設(shè)計和方案選擇
2.1 設(shè)計思路
根據(jù)設(shè)計要求,該病床呼叫系統(tǒng)利用C51單片機(jī)作為核心,外接3X8矩陣鍵盤,每一個鍵對應(yīng)著不同的床位。在沒有病人呼叫時,單片機(jī)循環(huán)等待按鍵按下;當(dāng)病人按下床頭對應(yīng)的按鍵,產(chǎn)生中斷信號。單片機(jī)收到中斷信號后調(diào)用中斷服務(wù)程序識別出呼叫病床的病房號碼和床位號碼,同時記錄當(dāng)時系統(tǒng)的時間,將呼叫記錄通過LCD12864顯示出來,護(hù)士通過讀取屏幕上提示的呼叫信息即可快速的、正確的查出病人的床位,并做相應(yīng)的準(zhǔn)備以及時處理,處理完成后,按下清除按鈕,即可清除本次呼叫記錄,等待下次呼叫,同時液晶屏幕上再次顯示“一切正常”。其結(jié)構(gòu)圖如下:
單
片
機(jī)
鍵盤
液晶顯示
實時時鐘芯片
圖2.1 病床呼叫系統(tǒng)結(jié)構(gòu)圖
2.2 鍵盤采集方案選擇
鍵盤的工作方式應(yīng)該根據(jù)實際應(yīng)用系統(tǒng)中CPU的工作狀況而定其選取的原則是既要保
證CPU能及時響應(yīng)按鍵操作又不要過多占用CPU的工作時間。通常鍵盤的工作方式有三種即編程掃描、定時掃描和中斷掃描。
1編程掃描方式
編程掃描方式是利用CPU完成其他工作的空余時間調(diào)用鍵盤掃描子程序來檢驗按鍵態(tài)響應(yīng)鍵盤輸入。執(zhí)行鍵功能程序時CPU不再享有鍵輸入要求直到CPU重新掃描鍵盤為止。
2定時掃描方式
定時掃描方式就是每隔一段時間對鍵盤掃描一次她利用單片機(jī)內(nèi)部的定時器產(chǎn)生一定時間如20ms的定時定時時間到產(chǎn)生定時器溢出中斷。CPU在中斷服務(wù)程序中鍵盤進(jìn)行掃描并在有鍵按下時識別出該鍵并保存鍵號然后在中斷服務(wù)程序或主程序中執(zhí)行該鍵的功能程序。
3中斷掃描方式
中斷掃描方式就是當(dāng)按鍵有按下時,產(chǎn)生中斷信號,CPU收到中斷信號后就執(zhí)行相應(yīng)的中斷服務(wù)子程序響應(yīng)該按鍵,處理完后CPU又開始循環(huán)等待下一次按鍵按下。
當(dāng)采用前兩種鍵盤描方式時,無論是否有鍵按下CPU都要定時掃描鍵盤而單片機(jī)應(yīng)用系統(tǒng)工作時并非經(jīng)常需要鍵盤輸入。因此CPU經(jīng)常處于空掃描狀態(tài),浪費(fèi)CPU大量時間。CPU不掃描鍵盤而有鍵按下時通過相應(yīng)電路產(chǎn)生中斷請求,CPU響應(yīng)中斷,執(zhí)行鍵盤掃描子程序并識別鍵號。
所以本設(shè)計中采用中斷掃描方式采集鍵盤信息。
2.3設(shè)計芯片的選擇
C51單片機(jī):
單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的CPU、RAM、ROM、多路I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能集成到一塊芯片上的一個小系統(tǒng),通過編寫程序下載到單片機(jī)的程序存儲器以實現(xiàn)不同的功能。
液晶顯示器LCD12864:
相對于數(shù)碼管、LED二極管點陣等,液晶顯示具有可以實現(xiàn)漢字的顯示,硬件電路連接比較簡單等優(yōu)點。
3病床呼叫系統(tǒng)硬件電路設(shè)計
3.1單片機(jī)控制系統(tǒng)硬件設(shè)計
單片機(jī)控制系統(tǒng)功能是:鍵盤數(shù)據(jù)采集并保留采集結(jié)果、控制液晶顯示設(shè)計要求的內(nèi)容、讀取實時時間,并作適當(dāng)?shù)臄?shù)據(jù)處理。
該控制系統(tǒng)中單片機(jī)AT89C51的P0,P1,P2及P3.0,P3.1接口作普通I/O使用,其中P0口作為LCD12864的數(shù)據(jù)傳輸口,P2.0~P2.5口的作為其控制端口,P2.6、P2.7、P3.0以及P1口為鍵盤的行列口,P3.0作為清除按鍵的數(shù)據(jù)輸入口。P3.2作為外部中斷信號輸入口。P3部分口與時鐘芯片DS1302相連實現(xiàn)時間的通信。具體電路圖顯示如圖3.1所示。
圖3.1 單片機(jī)控制系統(tǒng)電路圖
3.2液晶顯示的硬件設(shè)計
液晶顯示的功能包括:沒有病人呼叫時,顯示“一切正?!保划?dāng)有病人呼叫時,顯示病人的具體位置和呼叫的時間、日期。
通用型LCD12864共有18個引腳,其中DB7~DB0是連接控制器的數(shù)據(jù)總線,其他的引腳中6根控制線,另外還有電源線,具體連接見圖3.2。
其中上拉電阻是由于P0口作普通口時內(nèi)部沒有上拉電阻。
圖3.2液晶LCD12864電路圖
3.3掃描鍵盤的硬件設(shè)計
鍵盤輸入的功能:每個按鍵對應(yīng)著一張病床,由3X8矩陣鍵盤組成。
該矩陣鍵盤的總共需要11個接口,其中列分別與單片機(jī)P2.6、P2.7、P3.0口相接,行占用了整個P1口。具體連接如圖3.3所示。
圖3.3 3X8矩陣鍵盤
3.4時鐘芯片的硬件設(shè)計
時鐘芯片DS1302有兩個電源引腳,VCC1和VCC2,其中VCC1是主電源,VCC2是備份電源。當(dāng)VCC2>VCC1+0.2V時,由VCC2向DS1302供電,當(dāng)VCC2
#include
#define uint unsigned int
#define uchar unsigned char
#define LCD_databus P0
uchar room_num,bed_num,n,y,r,s,f,m,t=0;
uchar num[10][2],time[10][6];
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar keyscan();
sbit RS=P2^4; //RS為0命令,為1數(shù)據(jù)
sbit RW=P2^5; //RW為1寫,為0讀
sbit EN=P2^2; //使能端
sbit CS1=P2^0; //片選1低電平有效,控制左半屏
sbit CS2=P2^1; //片選2低電平有效,控制右半屏
sbit L1=P2^6;
sbit L2=P2^7;
sbit L3=P3^0;
sbit IO=P3^7;
sbit SCLK=P3^6;
sbit RST=P3^5;
sbit CLEAR=P3^1;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
uchar code ZK[]={
/*-- 文字: 病 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x10,0x60,0x00,0xFC,0x04,0x24,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x04,0x00,
0x84,0x42,0x31,0x0F,0x00,0xFF,0x11,0x09,0x05,0x03,0x05,0x59,0x81,0x7F,0x00,0x00,
/*-- 文字: 床 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0x00,0xFC,0x04,0x44,0x44,0x44,0x45,0xF6,0x44,0x44,0x44,0x44,0x44,0x04,0x00,
0x40,0x30,0x0F,0x20,0x10,0x08,0x06,0x01,0xFF,0x01,0x06,0x08,0x10,0x20,0x20,0x00,
/*-- 文字: 房 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0x25,0x66,0xA4,0x24,0x24,0x24,0x24,0x3C,0x00,0x00,
0x40,0x30,0x0F,0x81,0x41,0x31,0x0F,0x09,0x09,0x09,0x49,0x89,0x79,0x01,0x00,0x00,
/*-- 文字: 時 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,
/*-- 文字: 間 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0xF8,0x01,0x06,0x00,0xF0,0x12,0x12,0x12,0xF2,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x1F,0x11,0x11,0x11,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00,
/*-- 文字: 日 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00,
/*-- 文字: 期 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0x04,0xFF,0x24,0x24,0x24,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,
0x88,0x48,0x2F,0x09,0x09,0x19,0xAF,0x48,0x30,0x0F,0x02,0x42,0x82,0x7F,0x00,0x00,
/*-- 文字: 號 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x80,0x80,0x80,0xBE,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xBE,0x80,0x80,0x80,0x00,
0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x44,0x84,0x44,0x3C,0x00,0x00,0x00,0x00,
/*-- 文字: 一 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 切 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x40,0x40,0x40,0xFF,0x20,0x20,0x20,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x00,0x00,0x00,0x1F,0x08,0x84,0x42,0x20,0x18,0x07,0x40,0x80,0x40,0x3F,0x00,0x00,
/*-- 文字: 正 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,
0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
/*-- 文字: 常 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=16x16 --*/
0x20,0x18,0x08,0xEA,0xAC,0xA8,0xA8,0xAF,0xA8,0xA8,0xAC,0xEA,0x08,0x28,0x18,0x00,
0x00,0x00,0x3E,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x12,0x22,0x1E,0x00,0x00,0x00,
};
uchar code SK[]={
/*-- 文字: 0 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*-- 文字: 3 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 4 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
/*-- 文字: 5 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 6 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 7 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
/*-- 文字: 9 --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
/*-- 文字: : --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
/*-- 時間號: : --*/
/*-- 宋體12;此符號下對應(yīng)的點陣為: 寬x高=8x16 --*/
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
/*-- 文字: - --*/
/*-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
};
void delay(uint i)
{
uint x,y;
for(x=i;x>0;x--)
for(y=110;y>0;y--);
}
void read_busy() //讀忙函數(shù),數(shù)據(jù)線最高位為DB7為1則busy
{
P0=0x00;RS=0;RW=1;EN=1;
while(P0&0x80);EN=0;
}
void write_LCD_command(uchar value)
{
read_busy();
RS=0;RW=0;
LCD_databus=value;
EN=1;
_nop_();
_nop_();
EN=0;
}
void write_LCD_data(uchar value)
{
read_busy();
RS=1;RW=0;
LCD_databus=value;
EN=1;
_nop_();
_nop_();
EN=0;
}
void set_page(uchar page)
{
page=page|0xb8;
write_LCD_command(page);
}
void set_line(uchar startline)
{
startline=0xc0|startline;
write_LCD_command(startline);
}
void set_column(uchar column)
{
column=column&0x3f;
column=0x40|column;
write_LCD_command(column);
}
void setonoff(uchar onoff)
{
onoff=0x3e|onoff;
write_LCD_command(onoff);
}
void selectscreen(uchar screen)
{
switch(screen)
{
case 0: CS1=0;CS2=0;break;
case 1:CS1=0;CS2=1; break;
case 2:CS1=1;CS2=0;break;
default:break;
}
}
void clearscreen(uchar screen)
{
uchar i,j;
selectscreen(screen);
for(i=0;i<8;i++)
{
set_page(i);
set_column(0);
for(j=0;j<64;j++)
{
write_LCD_data(0x00);
}
}
}
void init_LCD()
{
read_busy();
selectscreen(0);
setonoff(0);
selectscreen(0);
setonoff(1);
selectscreen(0);
clearscreen(0);
set_line(0);
}
void display(uchar ss,uchar page,uchar column,uchar p)
{
uint i;
selectscreen(ss);
set_page(page);
set_column(column);
for(i=0;i<16;i++)
{
write_LCD_data(ZK[i+p*32]);
}
set_page(page+1);
set_column(column);
for(i=0;i<16;i++)
{
write_LCD_data(ZK[i+16+p*32]);
}
}
void display1(uchar ss,uchar page,uchar column,uchar p)
{
uint i;
selectscreen(ss);
set_page(page);
set_column(column);
for(i=0;i<8;i++)
{
write_LCD_data(SK[i+p*16]);
}
set_page(page+1);
set_column(column);
for(i=0;i<8;i++)
{
write_LCD_data(SK[i+8+p*16]);
}
}
void write_byte1302(uchar dat)
{
uchar kk;
ACC=dat;
RST=1;
for(kk=8;kk>0;kk--)
{
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC>>1;
}
}
uchar read_byte1302()
{
uchar kk;
RST=1;
for(kk=8;kk>0;kk--)
{
ACC7=IO;
SCLK=1;
SCLK=0;
ACC=ACC>>1;
}
return ACC;
}
void write_1302(uchar add,uchar dat)
{
RST=0;SCLK=0;RST=1;
write_byte1302(add);
write_byte1302(dat);
SCLK=1;RST=0;
}
uchar read_1302(uchar add)
{
uchar temp;
RST=0;SCLK=0;RST=1;
write_byte1302(add);
temp=read_byte1302();
SCLK=1;RST=0;
return(temp/16*10+temp%16); //返回十進(jìn)制數(shù)據(jù)顯示
}
void init1302()
{
RST=0;
SCLK=0;
write_1302(0x80,0x00);
}
void key_display(uchar aa)
{
m=time[aa][0];
f=time[aa][1];
s=time[aa][2];
r=time[aa][3];
y=time[aa][4];
n=time[aa][5];
RST=0;
clearscreen(0);
display(1,0,0*16,0); //病
display(1,0,1*16,2); //房
display1(1,0,2*16,11); // 冒號
display1(2,0,0*16,num[aa][0]); //房號 數(shù)
display(2,0,1*16,7); //號
display(1,2,0*16,0); //病
display(1,2,1*16,1); //床
display1(1,2,2*16,11); //冒號
display1(2,2,0*16,num[aa][1]); //床號數(shù)
display(2,2,1*16,7); //號
display(1,4,0*16,3); //時
display(1,4,1*16,4); //間
display1(1,4,2*16,11); //冒號
display1(2,4,24,10);
display1(2,4,0,10); //時間符
display1(2,4,32,m/10);
display1(2,4,40,m%10);
display1(2,4,16,f%10);
display1(2,4,8,f/10);
display1(1,4,48,s/10);
display1(1,4,56,s%10); //時分秒的顯示
display(1,6,0*16,5);
display(1,6,1*16,6);
display1(1,6,2*16,11);
display1(1,6,40,2);
display1(1,6,48,0);
display1(1,6,56,n/10);
display1(2,6,0,n%10);
display1(2,6,16,y/10);
display1(2,6,24,y%10);
display1(2,6,40,r/10);
display1(2,6,48,r%10);
display1(2,6,32,12);
display1(2,6,8,12);
}
void clear_display()
{
t=0;
clearscreen(0);
display(1,2,2*16,8);
display(1,2,3*16,9);
display(2,2,0*16,10);
display(2,2,1*16,11);
}
void main()
{
uchar i;
init_LCD();
init1302();
set_line(0);
clear_display();
EA=1;
EX0=1;
INT0=1;
P1=0x00;
L1=L2=L3=1;
while(1)
for(i=0;i
收藏