基于51单片机的无线病床呼叫系统设计—LCD1602显示

基于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原理图、开题报告、参考论文、流程图、任务书、元件清单、视频讲解等。具体内容如下,全网最全! !

资料获取请观看前面演示视频!

点赞分享一起学习成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/618635.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机银行客户端框架之TMF框架介绍

腾讯移动开发平台&#xff08;Tencent Mobile Framework&#xff09;整合了腾讯在移动产品中开发、测试、发布和运营的技术能力&#xff0c;为企业提供一站式、覆盖全生命周期的移动端技术平台。核心服务包括移动客户端开发组件、H5容器、灰度发布、热更新、离线包、网关服务、…

springBoot+vue编程中使用mybatis-plus遇到的问题

mybatis-plus中遇到的问题Code Companion Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)…

【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )

文章目录 13.路径总和13.1问题13.2解法一&#xff1a;递归13.2.1递归思路&#xff08;1&#xff09;确定递归函数参数以及返回值&#xff08;2&#xff09;确定终止条件&#xff08;3&#xff09;确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一&#xff1a;递归…

UDTF函数 explode

场景&#xff1a; 原hive数据形式 split 处理到一个Array 形式 使用explode炸开后的效果是 explode结合侧面视图达到targeType 目标形式&#xff1a; 一进多出 explode 将hive 中复杂的 array 炸成多行 因为炸开后&#xff0c; movie 列值少于categoryname 列所以这里为了达到…

【THM】Net Sec Challenge(网络安全挑战)-初级渗透测试

介绍 使用此挑战来测试您对网络安全模块中获得的技能的掌握程度。此挑战中的所有问题都可以仅使用nmap、telnet和来解决hydra。 挑战问题 您可以使用Nmap、 Telnet 和Hydra回答以下问题。 2.1小于10000的最大开放端口号是多少? 8080 nmap -p- -T4 10.10.234.218 2.2普通…

vue3+ts中判断输入的值是不是经纬度格式

vue3ts中判断输入的值是不是经纬度格式 vue代码&#xff1a; <template #bdjhwz"{ record }"><a-row :gutter"8" v-show"!record.editable"><a-col :span"12"><a-input placeholder"经度" v-model:v…

搜索之bfs

广度优先搜索的定义&#xff1a; 广度优先搜索&#xff08;Breadth-First Search&#xff0c;简称BFS&#xff09;是一种用于遍历或搜索树或图的算法。该算法从根节点&#xff08;或任意一个节点&#xff09;开始&#xff0c;并探索最靠近根节点的邻居节点。在遍历过程中&…

ELK日志分析系统(上)

目录 引言 一、ELK日志分析系统简介 1.1 日志服务器 1.2 ELK日志分析系统的组成 1.3 日志处理步骤 二、Elasticsearch介绍 2.1 概述 2.2 核心概念 三、Logstash介绍 3.1 概述 3.2 主要组件 四、Kibana介绍 4.1 概述 4.2 主要功能 五、ELK的工作原理 六、部署ELK…

创建线程池的例子

public class ExecutorTest {public static void main(String[] args) {//创建线程池的5种方式&#xff1a; // Executors.newFixedThreadPool();//创建固定线程数的线程池 // Executors.newSingleThreadExecutor();//创建单线程的线程池 // Executors.ne…

【C++进阶】--智能指针

1. 为什么需要智能指针 首先我们来分析一下下面这段代码 #include<iostream> using namespace std; int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; } void Func() {int* p1 new int;int* p2 n…

监控系统Prometheus--与第三方框架集成

文章目录 Prometheus和Flink集成拷贝jar包修改Flink配置为了运行测试程序&#xff0c;启动netcat启动hdfs、yarn&#xff0c;提交flink任务到yarn上可以通过8088跳到flinkUI的job页面&#xff0c;查看指标统计刷新Prometheus页面&#xff0c;如果有flink指标&#xff0c;集成成…

Matlab 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到MatlabR2024a“。 2.打开解压后的文件夹&#xff0c;鼠标右击“MATHWORKS_R2024A“选择装载。 鼠标右击“setup“选择”以管理员身份运行“。点击“是“&#xff0c;然后点击”下一步“。复制一下密钥粘贴至输入栏&#xff0c;然后…