基于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工作方式1
 	TH0=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);//设置1602
	com_1602(0x0c);//设置显示,光标不闪烁
	com_1602(0x06);//不移动,指针加1
	com_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原理图、开题报告、参考论文、流程图、任务书、元件清单、视频讲解等。具体内容如下,全网最全! !

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

点赞分享一起学习成长。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vitis HLS 学习笔记--优化循环启动间隔(II)

目录 1. 概述 2. 常规矩阵乘法 3. 数据依赖性和内存访问模式 4. 优化循环 5. 总结 1. 概述 Initiation Interval&#xff08;II&#xff09;定义为启动连续操作之间的时间间隔&#xff0c;以时钟周期为单位。低的II是高性能和高资源利用率的关键。 较高的II意味着在单位…

《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)

1.简介 自动化测试中如何输出日志文件。任何软件&#xff0c;都会涉及到日志输出。所以&#xff0c;在测试人员报bug&#xff0c;特别是崩溃的bug&#xff0c;一般都要提供软件产品的日志文件。开发通过看日志文件&#xff0c;知道这个崩溃产生的原因&#xff0c;至少知道触发崩…

java:特殊文件(properties,xml)和日志

特殊文件 txt(文本文件) txt文件是一种纯文本文件,用于存储文本信息 优缺点:txt文件简单易用,可以使用任何文本编辑器打开和编辑,但不支持数据类型和结构,所有信息均用纯文本形式保存 适合简单的配置信息存储 properties文件 properties文件是一种键值对文件,用于存储配置…

2024最新在线工具箱网站系统源码

2024最新在线工具箱网站系统源码 下载地址: 2024最新在线工具箱网站系统源码-JXASP源码网https://www.jxasp.com/think-php/12489.html

数据库世界信息速递-- TIDB 怎么走向世界如何保证稳定性和可靠性(译)

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…

LeetCode刷题记(三):61~90题

61. 旋转链表 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4 输出&…

C#.net手术麻醉信息系统源码,集成HIS、EMR、LIS、PACS系统

手术麻醉信息系统可以实现手术室监护仪、麻醉机、呼吸机、输液泵等设备输出数据的自动采集&#xff0c;采集的数据能据如实准确地反映患者生命体征参数的变化&#xff0c;并实现信息高度共享&#xff0c;根据采集结果&#xff0c;综合其他患者数据&#xff0c;自动生成手术麻醉…

JavaScript教程(十四)--- 类型化数组

JavaScript 类型化数组 JavaScript 类型化数组是一种类似数组的对象&#xff0c;并提供了一种用于在内存缓冲中访问原始二进制数据的机制。 引入类型化数组并非是为了取代 JavaScript 中数组的任何一种功能。相反&#xff0c;它为开发者提供了一个操作二进制数据的接口。这在操…

SAP软件如何批量修改物料主数据

在SAP/ERP系统日常运维中经常会遇到批量修改物料主数据的业务需求&#xff0c; 遇到这种业务需求可以使用SAP提供的标准的事务代码MM17进行处理。 下面按业务场景介绍下具体的操作步骤 业务场景1 需要将一批物料主数据的采购组字段全部修改为002。 具体操作步骤如下&#…

[漏洞复现]D-Link未授权RCE漏洞复现(CVE-2024-3273)

声明&#xff1a;亲爱的读者&#xff0c;我们诚挚地提醒您&#xff0c;Aniya网络安全的技术文章仅供个人研究学习参考。任何因传播或利用本实验室提供的信息而造成的直接或间接后果及损失&#xff0c;均由使用者自行承担责任。Aniya网络安全及作者对此概不负责。如有侵权&#…

Spring+SpringMVC的知识总结

一:技术体系架构二:SpringFramework介绍三:Spring loC容器和核心概念3.1 组件和组件管理的概念3.1.1什么是组件:3.1.2:我们的期待3.1.3Spring充当组件管理角色(IOC)3.1.4 Spring优势3.2 Spring Ioc容器和容器实现3.2.1普通和复杂容器3.2.2 SpringIOC的容器介绍3.2.3 Spring IOC…

L1-027 出租

下面是新浪微博上曾经很火的一张图&#xff1a; 一时间网上一片求救声&#xff0c;急问这个怎么破。其实这段代码很简单&#xff0c;index数组就是arr数组的下标&#xff0c;index[0]2 对应 arr[2]1&#xff0c;index[1]0 对应 arr[0]8&#xff0c;index[2]3 对应 arr[3]0&…

30、链表-两两交换链表

思路&#xff1a; 放入集合中两两交换&#xff0c;然后再重新构建链表可以解决。但是不是最优方案 第二种方式如下&#xff1a; 代码如下&#xff1a; public ListNode swapPairs(ListNode head) {if (headnull||head.nextnull){return head;}ListNode dummy new ListNode(…

麒麟服务器操作系统安装DHCP服务02

原文链接&#xff1a;麒麟服务器操作系统安装DHCP服务02 Hello&#xff0c;大家好啊&#xff01;继昨天介绍了在麒麟服务器操作系统上部署DHCP服务并演示了终端自动获取IP地址的过程之后&#xff0c;今天我们将进一步探讨如何通过绑定终端的MAC地址来为其分配固定的IP地址。这种…

第四十八周:文献阅读

目录 摘要 Abstract 文献阅读&#xff1a;时间序列预测的傅里叶图卷积网络 现有问题 提出方法 方法论 傅里叶级数 图信号的傅里叶变换 论文方法&#xff1a;F-GCN&#xff08;傅立叶图卷积网络&#xff09; 数据构建 傅立叶嵌入模块 时空ChebyNet层 框架伪代码 研…

七、Yocto使用systemd设置开机自启动程序

文章目录 Yocto使用systemd设置开机自启动程序一、 systemd介绍及service设置二、yocto集成 Yocto使用systemd设置开机自启动程序 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第七篇文章&#xff1a; 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于rasp…

人工智能轨道交通行业周刊-第77期(2024.4.1-4.14)

本期关键词&#xff1a;货车巡检机器人、铁路安全技防、车辆换长、阿里千问、大模型创业 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界…

宝妈如何在家创造收入?五种兼职工作让你轻松赚钱!

许多宝妈为了陪伴孩子成长&#xff0c;毅然选择了全职妈妈的角色&#xff0c;然而&#xff0c;她们内心仍希望能有一份收入&#xff0c;实现经济独立。于是&#xff0c;寻找既能照顾家庭又能赚钱的工作成了她们的迫切需求。 然而&#xff0c;这样的需求也往往让宝妈们成为一些…

鸿蒙语言TypeScript学习第16天:【类】

1、TypeScript 类 TypeScript 是面向对象的 JavaScript。 类描述了所创建的对象共同的属性和方法。 TypeScript 支持面向对象的所有特性&#xff0c;比如 类、接口等。 TypeScript 类定义方式如下&#xff1a; class class_name { // 类作用域 }定义类的关键字为 class&am…

《自动机理论、语言和计算导论》阅读笔记:p139-p171

《自动机理论、语言和计算导论》学习第 7 天&#xff0c;p139-p171总结&#xff0c;总计 33 页。 一、技术总结 1.reversal p139, The reversal of a string a1a2…an is the string written backwards, that is anan-1…a1. 2.homomorphism A string homomorphism is a f…