病床呼叫系統(tǒng)設計,病床,呼叫,呼喚,系統(tǒng),設計
武漢理工大學《能力強化訓練》課程設計說明書
能力拓展訓練任務書
學生姓名: 梅浪奇 專業(yè)班級: 自動化1002班
指導教師: 孫曉明 工作單位: 自動化學院
題 目: 病床呼叫系統(tǒng)設計
初始條件:計算機、Max+plusⅡ、EDA實驗箱。
要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)
設計病床呼叫系統(tǒng),使用3X8矩陣開關分別模擬醫(yī)院病房與病床位數(shù),當某開關按下時,系統(tǒng)顯示呼叫的病房與病床、呼叫的時間。處理完畢可清除該呼叫顯示記錄。
提高部分:
同時有數(shù)個病床呼叫時,可以循環(huán)呼叫記錄顯示。
任務安排:
(1) 設計任務及要求分析
(2) 方案比較及認證說明
(3) 系統(tǒng)原理闡述,寫出設計方案結(jié)構(gòu)圖。
(4) 軟件設計課題需要說明:軟件思想,流程圖,源程序及程序注釋
(5) 調(diào)試記錄及結(jié)果分析、
(6) 總結(jié)
(7) 參考資料5篇以上
(8) 附錄:程序清單
時間安排:
6月24日:安排設計任務;收集資料;方案選擇
6月25日:程序設計
6月26——27日:實驗室內(nèi)調(diào)試程序并演示
6月28日:撰寫報告
7月1日:交能力拓展訓練報告
指導教師簽名:
孫曉明 2013 年 6 月 24 日
系主任(或責任教師)簽名: 年 月 日
I
摘要
病房呼叫系統(tǒng)是傳送臨床信息的重要手段,可將病人的請求快速傳送給值班醫(yī)生或護士,它主要用于協(xié)助醫(yī)院病員在病床上方便地呼叫醫(yī)務人員,是提高醫(yī)院和病室護理水平的必備設備之一。讓患者需要服務時,只要按一下隨身攜帶的呼叫器,信息立馬就能傳至護工處.避免沒有看護人在時,病人急需服務卻無法通知醫(yī)生的情況.它要求及時、準確、可靠、簡便可行。
本設計的呼叫系統(tǒng)由按鍵檢測,數(shù)據(jù)處理,信息顯示三部分組成。由C51單片機作為主要控制器,利用液晶顯示器作為顯示部分,使用3X8矩陣開關分別模擬醫(yī)院病房與病床位數(shù)。病人按下按鍵時,C51立即獲取病人的病房號和病床號,同時采集此時的時間并一起顯示在液晶顯示器上,當護士看到顯示器上病人的信息,并按下清零鍵后,液晶顯示器恢復到初始狀態(tài)。本系統(tǒng)對鍵盤的檢測采用中斷的方式,能夠提高系統(tǒng)的立即性和高效性。當同時有數(shù)個病床呼叫時,本系統(tǒng)還可以循環(huán)呼叫記錄顯示。
關鍵詞:病房呼叫 單片機 中斷 液晶顯示
34
目錄
1設計任務及要求分析 1
1.1 設計任務 1
1.2 任務要求分析 1
2 系統(tǒng)設計和方案選擇 2
2.1 設計思路 2
2.2 鍵盤采集方案選擇 2
2.3設計芯片的選擇 3
3病床呼叫系統(tǒng)硬件電路設計 4
3.1單片機控制系統(tǒng)硬件設計 4
3.2液晶顯示的硬件設計 4
3.3掃描鍵盤的硬件設計 5
3.4時鐘芯片的硬件設計 6
3.4中斷電路設計 6
4病房呼叫系統(tǒng)軟件設計 7
4.1主程序設計 7
4.2矩陣鍵盤的中斷程序的設計 8
4.3液晶LCD12864驅(qū)動程序的設計 10
4.4實時時鐘DS1302驅(qū)動程序的設計 11
5仿真結(jié)果及分析 12
5.1 無病人呼救時的仿真結(jié)果 12
5.2 有病人呼救時的仿真結(jié)果 12
5.3 有多個病人呼救時的仿真結(jié)果 12
6心得體會 14
參考文獻 15
附錄1系統(tǒng)原理圖 16
附錄2程序源代碼 17
1設計任務及要求分析
近年來,隨著人們生活水平的不斷提高,人們對醫(yī)療水平的要求也不斷提高,特別是突發(fā)情況下病人請求值班醫(yī)生或護士進行及時診斷或護理,這一環(huán)節(jié)對提高醫(yī)院的管理服務質(zhì)量顯得尤其重要,這同時也大大提高了醫(yī)院醫(yī)護人員應對突發(fā)事件的能力。因此,一種新型臨床呼叫儀器的研制成為近些年來的研究熱點之一。呼叫系統(tǒng)的優(yōu)劣直接關系到病員的安危,歷來受到各大醫(yī)院的普遍重視。它要求及時、準確、可靠、簡便可行、利于推廣。利用電力線載波通信技術、單片機多機通信和計算機監(jiān)控管理技術設計的具有呼叫、振鈴、顯示排隊、優(yōu)先權(quán)設定、存儲記錄等功能的病床呼叫系統(tǒng),滿足了醫(yī)院的病房管理和護理要求。
1.1 設計任務
本病床呼叫系統(tǒng)中,使用3X8矩陣開關分別模擬醫(yī)院病房與病床位數(shù),當某開關按下時,系統(tǒng)顯示呼叫的病房與病床、呼叫的時間。處理完畢可清除該呼叫顯示記錄。當同時有數(shù)個病床呼叫時,本系統(tǒng)還可以循環(huán)呼叫記錄顯示。
1.2 任務要求分析
通過對上述設計任務的分析,可以將之細分為以下幾點,最后的調(diào)試也將以下面各點為依據(jù)。
①當有病人按下按鍵時,液晶顯示器上顯示病人的病房號,病床號,以及按鍵時的時間。
②在護士按下清零鍵后,液晶顯示器上內(nèi)容恢復到初始狀態(tài)。
③若在護士按下清零鍵前有多個病人按鍵,則液晶顯示器上將循環(huán)顯示各個病人的信息,直到護士按下清零鍵后,液晶顯示器上內(nèi)容恢復到初始狀態(tài)。
2 系統(tǒng)設計和方案選擇
2.1 設計思路
根據(jù)設計要求,該病床呼叫系統(tǒng)利用C51單片機作為核心,外接3X8矩陣鍵盤,每一個鍵對應著不同的床位。在沒有病人呼叫時,單片機循環(huán)等待按鍵按下;當病人按下床頭對應的按鍵,產(chǎn)生中斷信號。單片機收到中斷信號后調(diào)用中斷服務程序識別出呼叫病床的病房號碼和床位號碼,同時記錄當時系統(tǒng)的時間,將呼叫記錄通過LCD12864顯示出來,護士通過讀取屏幕上提示的呼叫信息即可快速的、正確的查出病人的床位,并做相應的準備以及時處理,處理完成后,按下清除按鈕,即可清除本次呼叫記錄,等待下次呼叫,同時液晶屏幕上再次顯示“一切正?!薄F浣Y(jié)構(gòu)圖如下:
單
片
機
鍵盤
液晶顯示
實時時鐘芯片
圖2.1 病床呼叫系統(tǒng)結(jié)構(gòu)圖
2.2 鍵盤采集方案選擇
鍵盤的工作方式應該根據(jù)實際應用系統(tǒng)中CPU的工作狀況而定其選取的原則是既要保
證CPU能及時響應按鍵操作又不要過多占用CPU的工作時間。通常鍵盤的工作方式有三種即編程掃描、定時掃描和中斷掃描。
1編程掃描方式
編程掃描方式是利用CPU完成其他工作的空余時間調(diào)用鍵盤掃描子程序來檢驗按鍵態(tài)響應鍵盤輸入。執(zhí)行鍵功能程序時CPU不再享有鍵輸入要求直到CPU重新掃描鍵盤為止。
2定時掃描方式
定時掃描方式就是每隔一段時間對鍵盤掃描一次她利用單片機內(nèi)部的定時器產(chǎn)生一定時間如20ms的定時定時時間到產(chǎn)生定時器溢出中斷。CPU在中斷服務程序中鍵盤進行掃描并在有鍵按下時識別出該鍵并保存鍵號然后在中斷服務程序或主程序中執(zhí)行該鍵的功能程序。
3中斷掃描方式
中斷掃描方式就是當按鍵有按下時,產(chǎn)生中斷信號,CPU收到中斷信號后就執(zhí)行相應的中斷服務子程序響應該按鍵,處理完后CPU又開始循環(huán)等待下一次按鍵按下。
當采用前兩種鍵盤描方式時,無論是否有鍵按下CPU都要定時掃描鍵盤而單片機應用系統(tǒng)工作時并非經(jīng)常需要鍵盤輸入。因此CPU經(jīng)常處于空掃描狀態(tài),浪費CPU大量時間。CPU不掃描鍵盤而有鍵按下時通過相應電路產(chǎn)生中斷請求,CPU響應中斷,執(zhí)行鍵盤掃描子程序并識別鍵號。
所以本設計中采用中斷掃描方式采集鍵盤信息。
2.3設計芯片的選擇
C51單片機:
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的CPU、RAM、ROM、多路I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能集成到一塊芯片上的一個小系統(tǒng),通過編寫程序下載到單片機的程序存儲器以實現(xiàn)不同的功能。
液晶顯示器LCD12864:
相對于數(shù)碼管、LED二極管點陣等,液晶顯示具有可以實現(xiàn)漢字的顯示,硬件電路連接比較簡單等優(yōu)點。
3病床呼叫系統(tǒng)硬件電路設計
3.1單片機控制系統(tǒng)硬件設計
單片機控制系統(tǒng)功能是:鍵盤數(shù)據(jù)采集并保留采集結(jié)果、控制液晶顯示設計要求的內(nèi)容、讀取實時時間,并作適當?shù)臄?shù)據(jù)處理。
該控制系統(tǒng)中單片機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 單片機控制系統(tǒng)電路圖
3.2液晶顯示的硬件設計
液晶顯示的功能包括:沒有病人呼叫時,顯示“一切正?!保划斢胁∪撕艚袝r,顯示病人的具體位置和呼叫的時間、日期。
通用型LCD12864共有18個引腳,其中DB7~DB0是連接控制器的數(shù)據(jù)總線,其他的引腳中6根控制線,另外還有電源線,具體連接見圖3.2。
其中上拉電阻是由于P0口作普通口時內(nèi)部沒有上拉電阻。
圖3.2液晶LCD12864電路圖
3.3掃描鍵盤的硬件設計
鍵盤輸入的功能:每個按鍵對應著一張病床,由3X8矩陣鍵盤組成。
該矩陣鍵盤的總共需要11個接口,其中列分別與單片機P2.6、P2.7、P3.0口相接,行占用了整個P1口。具體連接如圖3.3所示。
圖3.3 3X8矩陣鍵盤
3.4時鐘芯片的硬件設計
時鐘芯片DS1302有兩個電源引腳,VCC1和VCC2,其中VCC1是主電源,VCC2是備份電源。當VCC2>VCC1+0.2V時,由VCC2向DS1302供電,當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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬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; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*-- 文字: 3 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 4 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
/*-- 文字: 5 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 6 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 7 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
/*-- 文字: 9 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
/*-- 文字: : --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
/*-- 時間號: : --*/
/*-- 宋體12;此符號下對應的點陣為: 寬x高=8x16 --*/
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
/*-- 文字: - --*/
/*-- 宋體12; 此字體下對應的點陣為:寬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); //返回十進制數(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
收藏