制作的多參數床邊監護系統實物圖:
0.jpg (22.33 KB, 下載次數: 50)
下載附件
2018-1-9 03:51 上傳
0.jpg (25.18 KB, 下載次數: 51)
下載附件
2018-1-9 03:51 上傳
0.png (13.26 KB, 下載次數: 57)
下載附件
2018-1-9 03:48 上傳
資料包里面含有完整的設計論文
基于單片機的多參數床邊監護系統仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (18.61 KB, 下載次數: 52)
下載附件
2018-1-9 03:49 上傳
多參數床邊監護系統單片機源程序如下:
- ;***********************************************************************************************************
- ; 基于AT89C51的多參數床邊監護系統
- ;************************************************************************************************************
- SHIWEI EQU 32H;
- GEWEI EQU 33H;
- HUANCUN EQU 36H;
- BEATS EQU 40H ;
- XIN_BAI EQU 41H ;
- XIN_SHI EQU 42H ;
- XIN_GE EQU 43H ;
- CLOCK BIT P2.4;
- ST BIT P3.2;
- EOC BIT P3.1;
- D_A BIT P2.3;
- D_B BIT P2.2;
- D_C BIT P2.1;
- E BIT P2.7;
- RW BIT P2.5;
- RS BIT P2.6;
- XIN BIT P3.5;
- ORG 0000H;
- LJMP START;
- ORG 000BH;
- LJMP INT_T0;
- ORG 0100H;
- ;***********主程序開始******************************************************
- START: LCALL LCDINIT;調用液晶顯示屏初始化程序
- LCALL TISHI1;
- LCALL TISHI2;
- ;*********************************************************************************
- ; 溫度部分
- ;*******************************************************************************
- BEGIN: MOV TMOD,#02H;
- MOV TH0,#236; 定時鐘頻位50khz
- MOV TL0,#236;
- MOV IE,#82H; 開T0中斷
- SETB TR0; 啟動定時器
- CLR D_A; AD0809選擇IN0通道
- CLR D_B;
- CLR D_C;
- WEN:
- CLR ST;
- SETB ST;
- CLR ST;啟動AD轉換
- JNB EOC,$; 等待轉換結束
- LCALL DELAY1S;
- ;*********查表法得到轉換值*********************************
- MOV HUANCUN,P1;
- MOV DPTR,#TAB1
- MOV A,HUANCUN
- MOVC A,@A+DPTR
- ;*********將查表得到的值轉換成BCD碼**********************
- MOV B,#10
- DIV AB
- MOV SHIWEI,A
- MOV GEWEI,B
- ;*********顯示整數部分的溫度值**************************
- XIANSHI: MOV A,#84H;
- LCALL WRC;
- NOP
- MOV R0,#32H; 顯示溫度的十位、個位
- WDA1: MOV A,@R0
- ADD A,#30H; 轉換成ASCII碼
- LCALL WRD; 寫數據
- INC R0;
- CJNE R0,#34H,WDA1; 判斷溫度是否顯示完
- ;*********顯示小數點***********************************************************
- DIAN: MOV A,#86H; 顯示小數點
- LCALL WRC;
- MOV A,#2EH;
- LCALL WRD;
- ;*********查表得小數部分得溫度值********************************************
- MOV DPTR,#TAB2
- MOV A,HUANCUN
- MOVC A,@A+DPTR
- ;*********將小數部分的值轉換成BCD碼**********************************************************************
- MOV B,#10
- DIV AB
- MOV SHIWEI,A
- MOV GEWEI,B
- ;**********顯示小數子程序********************
- XIANSHI1: MOV A,#87H;
- LCALL WRC;
- MOV R0,#32H; 顯示溫度的十位、個位
- WDA12: MOV A,@R0
- ADD A,#30H; 轉換成ASCII碼
- LCALL WRD; 寫數據
- INC R0;
- CJNE R0,#34H,WDA12; 判斷溫度是否顯示完
- ;*********顯示溫度符號*************************************************************************
- MOV A,#089H; 顯示溫度符號,設定顯示位置
- LCALL WRC; 寫入命令
- MOV A,#0DFH; “。”的 ASCII碼
- LCALL WRD; 寫數據
- MOV A,#43H; “C"的ASCII碼
- LCALL WRD; 寫數據
- ;******************************************************************************
- ; 心率部分
- ;****************************************************************************
- JISHU: MOV TMOD,#60H ;
- MOV TH1,#00H;
- MOV TL1,#00H;
- SETB XIN;
- SETB TR1;
- MOV R3,#10;
- REPPS:
- CALL DELAY1S;
- DJNZ R3,REPPS;
- MOV BEATS,TL1;
- CLR TR1;
- CLR TF1;
- MOV A,BEATS;
- CJNE A,#00H,DOWNSX1;
- AJMP DOWNSX;
- DOWNSX1:
- CLR C;
- SUBB A,#08H;
- JNC DOWNSU;
- AJMP DOWNSX;
- DOWNSU:
- MOV A,BEATS;
- ADD A,BEATS;
- ADD A,BEATS;
- ADD A,BEATS;
- ADD A,BEATS;
- ADD A,BEATS;
- MOV BEATS,A;
- DOWNSX:
- ;轉換成BCD
- MOV B,#100;
- DIV AB;
- MOV XIN_BAI,A;
- MOV A,B;
- MOV B,#10;
- DIV AB;
- MOV XIN_SHI,A;
- MOV XIN_GE,B;
- ;*******心率顯示子程序******************************************************
- XIN_XIAN:
- MOV A,#0C4H;
- LCALL WRC;
- MOV R0,#41H;
- WDA2: MOV A,@R0; 心率值顯示
- ADD A,#30H;
- LCALL WRD;
- INC R0;
- CJNE R0,#44H,WDA2;
- XIN_DAN: ;顯示心率單位
- MOV A,#0C9H;
- LCALL WRC;
- MOV A,#54H;
- LCALL WRD;
- MOV A,#2FH;
- LCALL WRD;
- MOV A,#6DH;
- LCALL WRD;
- MOV A,#69H;
- LCALL WRD;
- MOV A,#6EH;
- LCALL WRD;
-
- AJMP WEN
-
-
- ;*********溫度提示字符顯示**************************************************************
- TISHI1: MOV DPTR,#M_1; 指針指到顯示消息
- LINE11: MOV A,#80H; 設置LCD的第一行地址
- LCALL WRC; 寫入命令
- FILL1: CLR A; 輸入字符
- MOVC A,@A+DPTR; 由消息區取出字符
- CJNE A,#0,LC11; 判斷是否為結束碼
- JMP RET_END1 ;子程序返回
- LC11: LCALL WRD; 寫入數據
- INC DPTR; 指針加1
- JMP FILL1; 繼續填入字符
- RET_END1: RET
- ;********心率提示字符顯示***************************************************
- TISHI2: MOV DPTR,#M_2; 指針指到顯示消息
- LINE12: MOV A,#0C0H; 設置LCD的第二行地址
- LCALL WRC; 寫入命令
- FILL2: CLR A; 輸入字符
- MOVC A,@A+DPTR; 由消息區取出字符
- CJNE A,#0,LC12; 判斷是否為結束碼
- JMP RET_END2 ;子程序返回
- LC12: LCALL WRD; 寫入數據
- INC DPTR; 指針加1
- JMP FILL2; 繼續填入字符
- RET_END2: RET
- M_1: DB "WEN:",0;
- M_2: DB "XIN:",0;
- ;********液晶初始化子程序***************************
- LCDINIT: MOV A,#01H; 清屏
- LCALL WRC; 調用寫入命令子程序
- MOV A,#38H; 8位數據,2行,5*8點陣
- LCALL WRC;
- MOV A,#0CH; 開顯示和光標,字符不閃爍
- LCALL WRC;
- MOV A,#06H; 字符不動,光標自動右移1格
- LCALL WRC;
- RET;
- ;********忙檢查子程序************************
- CBUSY: PUSH ACC; 將A的值暫存于堆棧
- PUSH DPH; 將DPH的值暫存于堆棧
- PUSH DPL; 將DPL的值暫存于堆棧
- PUSH PSW; 將PSW的值暫存于堆棧
- WEIT:
- CLR RS; RS=0,選擇指令寄存器
- SETB RW; RW=1,選擇讀模式
- CLR E; E=0,禁止讀/寫LCD
- SETB E; E=1,允許讀/寫LCD
- NOP
- MOV A,P0; 讀操作
- CLR E; E=0,禁止讀/寫LCD
- JB ACC.7,WEIT; 忙碌循環等待
- POP PSW; 從堆棧中取回PSW的值
- POP DPL; 從堆棧中取回DPL的值
- POP DPH; 從堆棧中取回DPH的值
- POP ACC; 從堆棧中取回ACC的值
- LCALL DELAY; 延時
- RET;
- ;********寫子程序**************************
- WRC: LCALL CBUSY; 寫入命令子程序
- CLR E; E=0,禁止讀/寫LCD
- CLR RS; RS=0,選擇指令寄存器
- CLR RW; RW=0,選擇寫模
- SETB E; E=1,允許讀/寫LCD
- MOV P0,A; 寫操作
- CLR E; E=0,禁止讀/寫LCD
- LCALL DELAY; 延時
- RET
- WRD: LCALL CBUSY; 寫入數據子程序
- CLR E; E=0,禁止讀/寫LCD
- SETB RS; RS=1,選擇數據寄存器
- CLR RW; RW=0,選擇寫模式
- SETB E; E=1,允許讀/寫LCD
- MOV P0,A; 寫操作
-
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
多參數床邊監護儀.rar
(12.34 MB, 下載次數: 62)
2018-1-4 15:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|