基于51单片机的无线病床呼叫系统
(仿真+程序+原理图+设计报告)
功能介绍
具体功能:
1.病人按下按键,LCD1602显示对应的床位号;
2.多人同时呼叫,显示屏同时显示;
3.呼叫时,蜂鸣器报警;
4.护士站可以按“响应”键取消呼叫;
演示视频:
基于51单片机的无线病床呼叫系统设计—LCD1602显示
/*
基于单片机的无线病床呼叫系统*/
#include <reg52.h> //头文件
#define uc unsigned char
#define ui unsigned int //宏定义sbit RS=P1^4;
sbit RW=P1^5;
sbit E=P1^6; //这3个是1602引脚定义
sbit D0=P1^3; //上升按键
sbit D1=P1^2; //下降按键
sbit D2=P1^1; //模式切换
sbit D3=P1^0; //光敏识别引脚
sbit bg_1602=P2^6; //1602背光
sbit key=P3^3; //应答按键
sbit Beep=P3^4; //蜂鸣器uc code tab0[]=" 123456789#"; //显示几号的码表
uc code tab1[]="Calling!!!"; //显示呼叫的码表
uc code tab2[]="I Know!"; //显示相应的码表
uc code tab3[]="Happy Every Day!"; //显示开心快乐每一天的码表uc num_D0=0,num_D1=0,num_D2=0,num_D3=0; //床号
bit bdata fu_D0=0, fu_D1=0, fu_D2=0, fu_D3=0,flag;//初始床号void delay(ui x) //延时函数
{ui i,j;for(i=0;i<x;i++)for(j=0;j<121;j++); //为1ms的延时函数
}void init() //初始化函数
{bg_1602=0; //开启背光TMOD=0x01; //定时器0工作方式1TH0=0x4b;TL0=0xff; //赋初值EA=1; //开总中断ET0=1; //定时器中断开TR0=1; //定时器0中断开D0=0;D1=0;D2=0;D3=0; //清零床号引脚
}
/******LCD1602******/
void com_1602(uc com) //写命令
{RS=0;P0=com;delay(1);E=1;delay(1);E=0;RS=1;
}void data_1602(uc date) //写数据
{RS=1;P0=date;delay(1);E=1;delay(1);E=0;RS=0;
}void dis_1602(uc word_num,uc hang,uc lie,uc tab_num,uc num)
/**word_num:显示字符个数,hang,lie:显示坐标,****
***tab_num:显示数组号,num:从第几字符开始显示****/
{uc n;for(n=0;n<word_num;n++){com_1602(0x80+hang*0x40+lie);if(tab_num==0)data_1602(tab0[num+n]);else if(tab_num==1)data_1602(tab1[num+n]);else if(tab_num==2)data_1602(tab2[num+n]);else if(tab_num==3)data_1602(tab3[num+n]);delay(5);lie++;}
}
void init_1602() //初始化1602
{RW=0; //写命令com_1602(0x38);//设置1602com_1602(0x0c);//设置显示,光标不闪烁com_1602(0x06);//不移动,指针加1com_1602(0x01);//清屏
}void know() //应答函数
{if(D0!=fu_D0)num_D0=1;if(D1!=fu_D1)num_D1=2;if(D2!=fu_D2)num_D2=3;if(D3!=fu_D3)num_D3=4; //数据脚状态改变,将床号赋给变量if(key==0) //检测按键{delay(5);if(key==0){if((num_D0!=0)||(num_D1!=0)||(num_D2!=0)||(num_D3!=0))//如果有呼叫时{bg_1602=0; //打开背光Beep=1; //关闭蜂鸣器flag=0; //标志位清零num_D0=0;num_D1=0;num_D2=0;num_D3=0;fu_D0=D0;fu_D1=D1;fu_D2=D2;fu_D3=D3;//将床位清零,并记录当前引脚状态com_1602(0x01); //清屏dis_1602(7,1,4,2,0); //显示I Know }else //如果没有呼叫时bg_1602=0; //只点亮背光}while(!key); //按键释放delay(2000);com_1602(0x01);//清屏}
}void display() //显示函数
{if((num_D0==0)&&(num_D1==0)&&(num_D2==0)&&(num_D3==0)) //当没有床位呼叫时dis_1602(16,0,0,3,0); //显示Happy else //有床位呼叫时{if(flag==0){flag=1;com_1602(0x01);//清屏}if(num_D0==1){dis_1602(1,0,2,0,num_D0);dis_1602(1,0,3,0,10);}if(num_D1==2){dis_1602(1,0,5,0,num_D1);dis_1602(1,0,6,0,10);}if(num_D2==3){dis_1602(1,0,8,0,num_D2);dis_1602(1,0,9,0,10);}if(num_D3==4){dis_1602(1,0,11,0,num_D3);dis_1602(1,0,12,0,10);}dis_1602(10,1,3,1,0); //在对应床位显示床位号}
}void LED() //背光函数
{if((D0!=fu_D0)||(D1!=fu_D1)||(D2!=fu_D2)||(D3!=fu_D3)) //如果有呼叫bg_1602=0; //打开背光
}
硬件设计
使用元器件:
单片机:STC89C51;
(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)
5*7万用板;7*9万用板;
LCD1602液晶;16p母座;
插针*20;315M无线可再生遥控模块;
315M无线可再生接收模块;
SC2272-M4;SC2262;12V电池;
18脚坐*2;4.7M电阻(贴片);
820k电阻(贴片);1N4148*4;
按键*6;10k排阻(103);
10k电阻*10 ;2.2k电阻*6 ;
1.5k电阻(200~1.5k之间);
9013*4;9012*2;
12M晶振;30pf电容*2;
10uf电容 ;40脚坐;
5V有源蜂鸣器;电源插口;
自锁开关;天线(23cm长导线)*2;
5mmLED(红);导线若干;
流程图:
设计资料
01 仿真图
本设计使用proteus8.9版本设计,资料中有软件安装教程,无需担心!具体如图!
02 原理图
本系统原理图采用Altium Designer19设计,具体如图!
03 程序
本设计使用软件keil5版本编程设计,资料中有软件安装教程,无需担心!具体如图!
04 设计报告
九千字设计报告,具体如下!
05 设计资料
资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)、AD原理图、开题报告、参考论文、流程图、任务书、元件清单、视频讲解等。具体内容如下,全网最全! !
资料获取请观看前面演示视频!
点赞分享一起学习成长。