51单片机医院病床呼叫系统Protues仿真以及详细程序
完全模拟现实情况,一分价钱一分货
任意病房病床呼叫报警,护士接到呼叫后,可任意对病房病床取消报警。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1b5dT-mjzWk_BqurXvTO2jw?pwd=8888
部分代码展示
include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit cs1=P2^3;
sbit cs2=P2^4;
sbit di=P2^2;
sbit rw=P2^1;
sbit e=P2^0;
sbit d1=P1^0;
sbit d2=P1^1;
sbit d3=P1^2;
sbit d4=P1^3;
sbit d5=P1^4;
sbit d6=P1^5;
sbit buzzer=P3^7;
uchar keydata;
uchar senddata;
uchar receivedata;
uchar Btime;
uchar Btime1;
uchar room[6]={0,0,0,0,0,0};
uchar bed[6]={0,0,0,0,0,0};
/**********************************取字模 ********************************************/
/*-- 文字:房 --*/
/*-- Times New Roman12; 宽x高=16x16 --*/
uchar code fang[32]={0x00,0x00,0xFC,0x94,0x94,0x94,0x94,0x95,0xB6,0xD4,0x94,0x94,0x94,0x9C,0x80,0x00,
0x40,0x30,0x0F,0x80,0x40,0x30,0x0F,0x04,0x04,0x44,0x84,0x44,0x3C,0x00,0x00,0x00};
/*-- 文字:间 --*/
/*-- Times New Roman12; ??????????:?x?=16x16 --*/
uchar code jian[32]={0x00,0xF8,0x01,0x06,0x00,0xF0,0x92,0x92,0x92,0x92,0xF2,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x07,0x40,0x80,0x7F,0x00,0x00};
/*-- 文字:床 --*/
/*-- Times New Roman12; 宽x高=16x16 --*/
uchar code chuang[32]={0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0xC5,0xFE,0x44,0x44,0x44,0x44,0x44,0x04,0x00,
0x80,0x60,0x1F,0x40,0x20,0x18,0x06,0x01,0xFF,0x01,0x02,0x04,0x08,0x30,0x10,0x00};
/*-- 文字:号 --*/
/*-- Times New Roman12; 宽x高=16x16 --*/
uchar code hao[32]={0x40,0x40,0x40,0x5F,0xD1,0x51,0x51,0x51,0x51,0x51,0x51,0x5F,0x40,0x40,0x40,0x00,
0x00,0x00,0x00,0x02,0x07,0x02,0x02,0x22,0x42,0x82,0x42,0x3E,0x00,0x00,0x00,0x00};
/*--0--9数字--*/
/*-- Times New Roman12; 宽x高=16x16 --*/
uchar code shu[10][16]={
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},
{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},
{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},
{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},
{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},
{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},
};
/**********************毫秒延时************************/
void delay(uint num)
{
while(num--) ;
}
/*************************写LCD函数********************************/
void lw(uchar x,uchar y,uchar dd)
{
if (x<64)
{
cs1=cs2=0;
di=rw=0;cs1=1;cs2=0;P0=0xb8|y;e=1;delay(2);e=0;delay(2);
di=rw=0;cs1=1;cs2=0;P0=0x40|x;e=1;delay(2);e=0;delay(2);
di=1;rw=0;cs1=1;cs2=0;P0=dd;e=1;delay(2);e=0;delay(2);
}
else
{
cs1=cs2=0;x=x-64;
di=rw=0;cs1=0;cs2=1;P0=0xb8|y;e=1;delay(2);e=0;delay(2);
di=rw=0;cs1=0;cs2=1;P0=0x40|x;e=1;delay(2);e=0;delay(2);
di=1;rw=0;cs1=0;cs2=1;P0=dd;e=1;delay(2);e=0;delay(2);
cs1=cs2=1;
}
}
/************************LCD初始化*************************/
void lcd_init(void) {
uchar x,y;
e=di=rw=0;
cs1=cs2=1;
cs1=0;cs2=1;
di=rw=0;P0=0x3f;e=1;delay(2);e=0;delay(2);
cs1=0;cs2=1;
di=rw=0;P0=0xc0;e=1;delay(2);e=0;delay(2);
cs1=cs2=0;
cs1=1;cs2=0;
di=rw=0;P0=0x3f;e=1;delay(2);e=0;delay(2);
cs1=1;cs2=0;
di=rw=0;P0=0xc0;e=1;delay(2);e=0;delay(2);
cs1=cs2=0;
for (y=0;y<8;y++) {
for (x=0;x<128;x++) lw(x,y,0);
}
}
/***************写16*16分辨率汉字************/
void write_chinese(x,y,array)
uchar x,y;
uchar array[];
{
uchar j,dd;
for(j=0;j<32;j++)
{
dd=array[j];
if(j<16) lw(x+j,y,dd);
else lw(x+j-16,y+1,dd);
}
}
/***************写8*16分辨率数字,字母**********/
void write_english(x,y,array)
uchar x,y;
uchar array[];
{
uchar j,dd;
for(j=0;j<16;j++)
{
dd=array[j];
if(j<8) lw(x+j,y,dd);
else lw(x+j-8,y+1,dd);
}
}