基于单片机病房呼叫程序和仿真

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!
一、系统方案
1、本设计采用这51单片机作为主控器。
2、病房呼叫,液晶1602显示。
3、护士站按键取消。
4、蜂鸣器报警。
在这里插入图片描述

二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
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;				//清零床号引脚

}
2、液晶显示程序
/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;
}

3、按键程序
if(key0) //检测按键
{
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);//清屏
}
4、核心算法程序
void display() //显示函数
{
if((num_D00)&&(num_D10)&&(num_D20)&&(num_D30)) //当没有床位呼叫时
dis_1602(16,0,0,3,0); //显示Happy
else //有床位呼叫时
{
if(flag0)
{
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_D12)
{
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); //在对应床位显示床位号
}
}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

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

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

相关文章

堆的应用:堆排序

文章目录 前言堆排序的实现(升序为例)代码 前言 堆排序,顾名思义是一个利用堆来完成排序的一个操作。在之前,小编在[C语言学习系列–>【关于qsort函数的详解以及它的模拟实现】] 谈到冒泡排序,但是冒泡排序…

时间序列预测实战(二十)自研注意力机制Attention-LSTM进行多元预测(结果可视化,自研结构)

一、本文介绍 本文给大家带来的是我利用我自研的结构进行Attention-LSTM进行时间序列预测,该结构是我专门为新手和刚入门的读者设计,包括结果可视化、支持单元预测、多元预测、模型拟合效果检测、预测未知数据、以及滚动长期预测,大家不仅可…

6、Qt使用Log4Qt日志

一、知识点 1、Log4Qt有三部分 logger:负责捕获日志信息 layout:负责使用不同的样式输出日志 appender:负责输出信息到不同的目的地,比如数据库、文件、控制台等等 2、 日志级别如下,从上往下依次递增 ALL:…

概率论与数理统计-第4章 随机变量的数字特征

第4章 随机变量的数字特征 4.1数学期望 一、离散型随机变量的数学期望 定义1设离散型随机变量X的概率分布为 P{Xxi}pi,i1,2,…,如果级数绝对收敛,则定义X的数学期望(又称均值)为 二、连续型随机变量的数学期望 定义2设X是连续型随机变量…

【新手解答2】深入探索 C 语言:一些常见概念的解析

C语言的相关问题解答 写在最前面问题1变量名是否有可能与变量重名?变量名和变量的关系变量名与变量是否会"重名"举例说明结论 变量则是一个地址不变,值时刻在变的“具体数字”变量的地址和值变量名与数据类型具体化示例结论 问题2关于你给我的…

第二十五章 解析cfg文件及读取获得网络结构

网络结构 以YOLOv3_SPP为例 cfg文件 部分,只是用来展示,全部的代码在文章最后 [net] # Testing # batch1 # subdivisions1 # Training batch64 subdivisions16 width608 height608 channels3 momentum0.9 de…

【Spring Boot】Swagger的常用注解

在Swagger的开发过程中,我们需要在Controller代码等处添加相应的注解,以便可以提高生成的接口文档的可读性为了解决这些问题,Swagger提供了很多的注解,通过这些注解,我们可以更好更清晰的描述我们的接口,包…

Kotlin学习之集合

原文链接 Kotlin Collections 现代的软件一般比较复杂,程序语言中的基本数据类型往往不能满足需要,除了基本的数据类型以外,还有对象的容器也非常的重要,比如线性容器(数组,列表和Set)和二维容…

线性分类器--图像表示

整个模型 图像表示 二进制图像 灰度图像 彩色图像 大多数分类算法都要求输入向量! rbg的图像矩阵转列向量 大小为 32X32 的话,图像矩阵转列向量是多少维? 32x32x3 3072 维列向量

Failed to load resource: the server responded with a status of 404 ()

路径问题: 路径省略前面的http://localhost:8080/ 就行了。

[Spring ~必知必会] Bean 基础常识汇总

文章目录 Bean 相关到底什么是beanFactorybeanFactory能干啥ApplicationContext是什么ApplicationContext的功能比 BeanFactory多了什么 容器的实现BeanFactory的实现ApplicationContext的实现xml 配置配置类配置 Bean 的生命周期3.1 Bean 的常见的后处理器测试代码总结 3.2 工…

vue day2

1、指令修饰符:.指明一些指令后缀,不同后缀封装不同处理操作 按键修饰符:keyup.enter v-model修饰符: v-model.trim:去首位空格 v-model.number:转数字 事件修饰符: 阻止事件冒泡&#xff1…