基于51单片机病床呼叫系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)
仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0095
1. 主要功能:
基于51单片机的病床呼叫系统proteus仿真设计
1、设计一个可容64张床位的病房呼叫系统;
2、每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮;
3、护士值班室LCD1602显示呼叫床位号,并响铃3秒;
4、当护士按下"响应"键时,取消当前处理的病床呼叫;
5、按照病床呼叫先后时间处理患者需求;
需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
以下为本设计资料展示图:
2. 讲解视频:
讲解视频包含仿真运行讲解和代码讲解
3. 仿真
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD1602显示Bed call。
每个床位都有一个按钮,当患者需要呼叫护士时,病床按键呼叫护士台。护士值班室LCD1602面板上显示呼叫床位号,并响铃3秒;
Call num显示的是当下需要处理的床位号,ALL显示的是等待处理的剩余床位总数。
护士站处理完当前病床后按下,回应按键,LCD显示下一个呼叫的病床床号,按照病床呼叫先后时间处理患者需求。
4. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。
#include "reg51.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0;//按钮
sbit beep=P1^7;//蜂鸣器
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0,sec=0;
uchar xian1[]="Call num:00";//显示数组
uchar xian2[]="All:00";
uchar key=0,all=0;
//按键存储
uchar num[64]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0
};
void key_scan() // 定义一个名为key_scan的函数,用于搜索矩阵键盘上的按键状态
{
uchar i, j; // 定义两个uchar类型(通常为8位无符号字符型)变量i和j,分别用作行和列的计数器
for(i = 0; i < 8; i++) // 通过循环遍历键盘的8行
{
P3 = ~(1<<i); // 将P3口设置为行线输出,这里对P3口进行操作,将第i位置为低电平,其他位不变,实现逐行扫描
// 即置低当前行,让这一行的键处于可检测状态
for(j = 0; j < 8; j++) // 再通过内部循环遍历键盘的8列
{
if((P2 & (1<<j)) == 0) // 检查P2口的状态,如果第j位为0,表示对应的列线上有按键被按下
{
if(!num[i*8+j]) // 如果当前位置的按键尚未记录为已按过(num数组对应元素为0)
{
time = 60; //时间变量time为60,用于蜂鸣器提醒倒计时
num[i*8+j] = 1; // 在num数组中记录此次按键按下,将对应行列号的数组元素置为1
all++; // 增加全局按键按下总数统计all
}
}
}
}
}
void search() // 定义一个名为search的函数,用于搜索下一个被呼叫的位置
{
uchar i; // 定义一个uchar类型变量i,用作循环计数器
for(i = 0; i < 64; i++) // 遍历num数组(大小为64,对应8x8矩阵键盘的所有按键位置)
{
if(num[i]) // 检查num数组中当前位置的元素是否非零,即判断该位置是否有按键被按下并已记录
{
key = i + 1; // 若找到已按下的按键,将其位置索引加1后赋值给全局变量key。通常情况下,矩阵键盘的位置索引是从0开始的,这里加1可能是因为实际应用中从1开始编号
break; // 找到第一个被呼叫的按键后立即跳出循环,避免不必要的额外遍历
}
}
}
void main()
{
init_1602();
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
key_scan();
search();
if(!k1) //清除呼叫
{
if(all>0)
{
all--;
num[key-1]=0;
}
while(!k1);
}
}
}
完整代码见文章压缩包下载链接
5. 设计报告
7464字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等
随着现代医疗技术的飞速发展,医院日常运营中的各个环节都在不断地得到优化和完善。其中,病房管理作为医院运营体系中的核心环节之一,其重要性日益凸显。一个高效、有序的病房管理系统不仅能够提升医院的运营效率,更能为患者提供更加舒适、安全的就医环境。
在病房管理的众多组成部分中,病床呼叫系统占据着举足轻重的地位。它不仅是医护人员与患者之间沟通的重要桥梁,更是保障患者及时就医、提高医疗服务质量的关键所在。然而,传统的病床呼叫系统往往存在诸多弊端,如响应速度慢、误报率高等问题,这些问题不仅影响了患者的就医体验,也给医护人员的日常工作带来了诸多不便。
为了解决上述问题,提高病床呼叫的准确性和效率,我们提出了一种基于51单片机的病床呼叫系统设计方案。通过利用51单片机的强大功能和灵活性,我们可以实现对病床呼叫信号的快速响应和准确处理。同时,结合Proteus仿真设计平台,我们可以在虚拟环境中对系统进行全面的测试和优化,从而确保系统的稳定性和可靠性。
6. 原理图
原理图使用AD绘制,可供实物参考,仿真不同于实物,经验不足不要轻易搞实物。
元器件清单:
元件 | 型号 | 数量 |
---|---|---|
单片机 | AT89C51 | 1 |
电容 | 30pf | 2 |
电容 | 10uf | 1 |
晶振 | 12MHz | 1 |
按钮 | 65 | |
蜂鸣器 | 有源 | 1 |
三极管 | PNP | 1 |
电阻 | 1k | 1 |
显示器 | LCD1602 | 1 |
排阻 | 10k | 1 |
电源部分 | ||
排针 | 2P | 1 |
电容 | 0.1uf | 2 |
电容 | 100uf | 2 |
稳压器 | 7805 | 1 |
Proteus仿真和实物作品的区别:
1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。
2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。
电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。
3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。
4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。
7. 设计资料内容清单&&下载链接
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法--必读!!!!
1、程序
2、proteus仿真
3、功能要求
4、软硬件流程图
5、开题报告
6、设计报告
7、原理图
8、元器件清单
9、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url
资料下载链接(可点击):
https://docs.qq.com/doc/DS1NFaWxPbkZySFBC
更多资源 点击下方链接:
https://docs.qq.com/sheet/DS0xIa0llTmtNakRW
us 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url
资料下载链接:
KEY_S0095 51单片机病床呼叫(64位)系统仿真设计
链接:https://pan.baidu.com/s/1NESTRRudd6KQLf9NPT6I4Q?pwd=mrl6
提取码:mrl6