单片机AVR单片机病房控制系统设计+源程序

一、系统方案
设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮,此时护士值班室内的呼叫系统板上显示该患者的床位号,并蜂鸣器报警。当护士按下“响应”键时,结束当前呼叫。
操作视频BIBIBI:https://www.bilibili.com/video/BV1kN4y127f8/
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
//LCD端口初始化
void LCDPort_Init(void)
{
LCD_BUS = 0XFF;
LCD_BUS_Direction_REG =0XFF; //LCD数据端口设置为输出

 LCD_ControlPort_SET;          //RS RW EN脚均设置为输出	LCD_ControlPort_CLR;          //RW RW EN低电平

}

//LCD写指令
void Write_Com(unsigned char LCD_Com)
{

 RS_CLR; //RS=0,写指令RW_CLR; //RW=0,写命令EN_SET; //E=1,写操作	LCD_BUS=LCD_Com;    //数据送往数据端口?_delay_ms(1);    //这个延时非常重要,结合时序图来理解,可以跟送数据顺序调换EN_CLR;// E=0,下角_delay_ms(1);  

}
2、液晶显示程序
//LCD端口初始化
void LCDPort_Init(void)
{
LCD_BUS = 0XFF;
LCD_BUS_Direction_REG =0XFF; //LCD数据端口设置为输出

 LCD_ControlPort_SET;          //RS RW EN脚均设置为输出	LCD_ControlPort_CLR;          //RW RW EN低电平

}

//LCD写指令
void Write_Com(unsigned char LCD_Com)
{

 RS_CLR; //RS=0,写指令RW_CLR; //RW=0,写命令EN_SET; //E=1,写操作	LCD_BUS=LCD_Com;    //数据送往数据端口?_delay_ms(1);    //这个延时非常重要,结合时序图来理解,可以跟送数据顺序调换EN_CLR;// E=0,下角_delay_ms(1);  

}

3、按键程序
//按键处理函数
void key_with(void)
{
uchar i;
if(key_can <= 8)
{
if(key_can == 1)
L1_0 ; //1号病房灯亮
if(key_can == 2)
L2_0 ; //2号病房灯亮
if(key_can == 3)
L3_0 ; //3号病房灯亮
if(key_can == 4)
L4_0; //4号病房灯亮
if(key_can == 5)
L5_0 ; //5号病房灯亮
if(key_can == 6)
L6_0 ; //6号病房灯亮
if(key_can == 7)
L7_0 ; //7号病房灯亮
}
4、核心算法程序
void main(void)
{
unsigned char key =1;
LCDPort_Init();
LCD_Init();
DDRB=0x7F;
PORTB=0xff;
DDRC=0xFF;
PORTC=0xff;
DDRD=0x00;
PORTD=0xff;
DDRA=0xFF;
PORTA=0xff;
write_string(1,0,Timer_buf);
write_string(2,0," wu bingrenhujiao");

while(1)
{Timer_buf[13] = br_geshu%10+47;write_string(1,0,Timer_buf); //写显示if(br_geshu > 1)BEEP_0 ;   //蜂鸣器报警else BEEP_1;       //取消报警key_with();if((PIND&0x01)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x01)==0x00)   // 确定按键依然1按下     {while((PIND&0x01)!=0X01); // 判断手松开key_can = 1;}		} if((PIND&0x02)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x02)==0x00)   // 确定按键依然1按下     {while((PIND&0x02)!=0X02); // 判断手松开key_can = 2;}		} if((PIND&0x04)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x04)==0x00)   // 确定按键依然1按下     {while((PIND&0x04)!=0X04); // 判断手松开key_can = 3;}		} if((PIND&0x08)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x08)==0x00)   // 确定按键依然1按下     {while((PIND&0x08)!=0X08); // 判断手松开key_can = 4;}		}if((PIND&0x10)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x10)==0x00)   // 确定按键依然1按下     {while((PIND&0x10)!=0X10); // 判断手松开key_can = 5;}		} if((PIND&0x20)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x20)==0x00)   // 确定按键依然1按下     {while((PIND&0x20)!=0X20); // 判断手松开key_can = 6;}		} if((PIND&0x40)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x40)==0x00)   // 确定按键依然1按下     {while((PIND&0x40)!=0X40); // 判断手松开key_can = 7;}		} if((PIND&0x80)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PIND&0x80)==0x00)   // 确定按键依然1按下     {while((PIND&0x80)!=0X80); // 判断手松开key_can = 8;}		}  if((PINB&0x80)==0x00)    // 按键1按下          {_delay_ms(10);  // 延时消抖if((PINB&0x80)==0x00)   // 确定按键依然1按下     {while((PINB&0x80)!=0X80); // 判断手松开key_can = 9;}		}  
}

}

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

在这里插入图片描述

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

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

相关文章

程序/进程替换(讲解)

本文旨在讲解进程替换的知识&#xff01;希望读完本文&#xff0c;能使读者对进程替换有更深一步的认识&#xff01;&#xff01;好的&#xff0c;废话不多说&#xff0c;干货来了&#xff01; 进程替换的引进&#xff01; 为什么要引进进程替换呢&#xff1f;我们创建子进程总…

Achronix推出基于FPGA的加速自动语音识别解决方案

提供超低延迟和极低错误率&#xff08;WER&#xff09;的实时流式语音转文本解决方案&#xff0c;可同时运行超过1000个并发语音流 2023年11月——高性能FPGA芯片和嵌入式FPGA&#xff08;eFPGA IP&#xff09;领域的领先企业Achronix半导体公司日前自豪地宣布&#xff1a;正式…

ethtool工具添加并验证网口

Filesystem Packages->console->network->ethtool 命令描述&#xff1a; ethtool 是用于查询及设置网卡参数的命令。 使用命令&#xff1a; ethtool ethx //查询ethx网口基本设置&#xff0c;其中 x 是对应网卡的编号&#xff0c;如eth0、eth1等等 ethtool –…

【NodeJS】 API Key 实现 短信验证码功能

这里使用的平台是 短信宝整体来讲还是挺麻烦的平台必须企业才行&#xff0c;个人是无法使用该平台的 平台必须完成 身份信息认证 和 企业认证 这里就需要 “营业执照”了 &#xff0c;没有 “营业执照” 的朋友还是后退一步吧 后端我用的是NodeJS &#xff0c;使用第三方库 ro…

统信UOS和vue.js的一个兼容问题

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 这事到现在说起还很奇怪&#xff0c;在UOS20&#xff08;硬件为华为鲲鹏服务器&#xff0c;arm架构&#xff0c;g8.3&#xff09;上部署uve.js&#xff0…

linux NAT网卡配置static

由于是内网&#xff0c;资料无法拷贝&#xff0c;借助参考资料&#xff0c;整理发出。 镜像安装 基本操作。 查看VM配置 图1&#xff0c;有几个信息。一个是NAT借用了网卡里的VMnet8适配器。 子网IP是从192.168.142.0 子网掩码255.255.255.255&#xff0c;对应下面配置的N…

Java 的第二十章:多线程

创建线程 继承Thread 类 Thread 类时 java.lang 包中的一个类&#xff0c;从类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行&#xff0c;任务是指线程在启动时执行的工作&#xff0c;start() 方法启动线程&am…

11-30 JavaWeb

修改与删除操作 防止空指针异常 localhost:8080 -> 分页查询 修改流程&#xff1a;(先查后改(两个servlet)) 修改&#xff1a; 传用户id(用户id怎么得到 -> 循环一次得到一个user 对象 user对象里用user.getId()得到用户id) UpdateUserQueryServlet.java &#xff08;…

html/css中位置position的绝对位置absolute顺时针盒子案例图片排序

目标图片&#xff1a; Dreamweaver界面&#xff1a; 代码部分&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.red{background-color:r…

element中el-form-item设置label-width=‘auto‘报错

文章目录 一、问题二、解决三、最后 一、问题 el-form中的设置了全局标题宽度是200px&#xff0c;此时想要对el-form-item取消标题宽度&#xff0c;设置了label-widthauto&#xff0c;结果&#xff0c;报错了~~~ <el-form label-width"200px" label-position&quo…

强大的Kubernetes工具的完整指南

在容器化应用程序编排方面&#xff0c;Kubernetes是市场的领导者。它允许用户在多主机环境中管理容器&#xff0c;提供工作负载分配和网络处理。 此外&#xff0c;它还提供了许多在DevOps过程中至关重要的特性&#xff0c;例如自动扩展、自动修复和负载平衡。这些功能解释了Kub…

Android问题笔记四十八:蓝牙obtainMessage数据传输部分数据丢失乱序问题

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)

一、本文介绍 本文给大家带来的改进机制是RFAConv&#xff0c;全称为Receptive-Field Attention Convolution&#xff0c;是一种全新的空间注意力机制。与传统的空间注意力方法相比&#xff0c;RFAConv能够更有效地处理图像中的细节和复杂模式(适用于所有的检测对象都有一定的…

springboot+jsp+java房屋销售出租赁网站的ssm设计与实现7xcvq

三、研究方案&#xff08;主要研究内容、目标、研究方法等&#xff09; 主要研究内容 房屋租售网站采用的开发框架为springboot框架&#xff0c;也就是Spring mvc、Spring、MyBatis这三个框架&#xff0c;页面设计用的是jsp技术作为动态页面文件设计&#xff0c;jsp文件里可以对…

【多传感器融合】BEVFusion: 激光雷达和视觉融合框架 NeurIPS 2022

前言 BEVFusion其实有两篇&#xff0c; 【1】BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出 【2】BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation 2022 | MIT提出 本文先分…

Google Chrome访问出现 NET::ERR_CERT_INVALID

Google Chrome访问出现 NET::ERR_CERT_INVALID然后访问不了当前网站&#xff0c;这个是由于证书失效了&#xff0c;临时解决方式是&#xff1a; 第一种方案&#xff1a; 在Chrome提示“您的连接不是私密连接”页面的空白区域点击一下&#xff0c;然后输入“thisisunsafe”(页…

人工智能 - 目标检测:发展历史、技术全解与实战

目录 一、早期方法&#xff1a;滑动窗口和特征提取滑动窗口机制工作原理 特征提取方法HOG&#xff08;Histogram of Oriented Gradients&#xff09;SIFT&#xff08;Scale-Invariant Feature Transform&#xff09; 二、深度学习的兴起&#xff1a;CNN在目标检测中的应用CNN的…

[c++]—string类___深度学习string标准库成员函数与非成员函数

要相信别人能做出来自己一定可以做出来&#xff0c;只不过是时间没到而已 目录 &#x1f6a9;string类对象capacity操作 &#x1f4bb;reserve()保留 &#x1f4bb;resize() &#x1f6a9;string类对象元素访问操作 &#x1f4bb;operator[]和at() &#x1f4bb;operator…

如何让嵌入式开发板使用主机的网络

配置网络 1.开发板配置 将开发板和主机用网线连接 安装 net-tools&#xff0c;使用 ifconfig 命令 或者使用 ip 命令 su root ip a 发现一个 eth0的网口 ip link set xxx up 有多个网口时可以用该命令启用某一个网口 vim /etc/netplan/00-installer-config.yaml写入以下…

HTML—列表、表格、表单

1、列表 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表 1.1 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域 标签&#xff1a;ul 嵌套 li&#xff0c;ul 是无序列表&#xff0c;li 是列表条目 注意事项&#…