当前位置: 首页 > news >正文

单片机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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

在这里插入图片描述

相关文章:

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

一、系统方案 设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮&#xff0c;当患者需要呼叫护士时&#xff0c;按下按钮&#xff0c;此时护士值班室内的呼叫系统板上显示该患者的床位号&#xff0c;并蜂鸣器报警。当护士按下“响应”键时&#xff0c;结束当前呼叫…...

C语言——多种方式打印出1000之内的所有的“水仙花数”

所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。水仙花数是指一个三位数&#xff0c;它的每个位上的数字的立方和等于它本身。例如&#xff0c;153是一个水仙花数&#xff0c;因为1^3 5^3 3^3 153。 方法一 #define _CRT_SECURE_NO_WARNINGS 1#include <std…...

.net 8 发布了,试下微软最近强推的MAUI

先看下实现的效果&#xff1a; 下面发下XAML文件&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <ContentPage xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/…...

【产品经理】AI在SaaS产品中的应用及挑战

随着ChatGPT大模型在全球的爆火&#xff0c;AI迅速在各个行业内&#xff0c;助力于各行业的效率提升。而SaaS领域&#xff0c;AI同样也大有可为。 AI&#xff08;人工智能&#xff0c;Artificial Intelligence的缩写&#xff09;近一年来一直处于舆论风口&#xff0c;随着ChatG…...

Python实现一箭穿心

文章目录 &#x1f384;效果&#x1f3f3;️‍&#x1f308;Turtle模块&#x1f339;代码&#x1f33a;代码讲解 &#x1f384;效果 &#x1f3f3;️‍&#x1f308;Turtle模块 Turtle是一个绘图工具&#xff0c;是Python标准库中的一个模块。它提供了一种简单而直观的方式来创…...

机器人AGV小车避障传感器测距

一、A22超声波传感器 该模块是基于机器人自动控制应用而设计的超声波避障传感器&#xff0c;针对目前市场上对于超声波传感器模组盲区大、测量角度大、响应时间长、安装适配性差等问题而着重设计。 具备了盲区小、测量角度小、响应时间短、过滤同频干扰、体积小、安装适配性高…...

Boost:进程间共享内存

Linux编程:进程间共享内存_linux 判断共享内存是否存在-CSDN博客 介绍了如何在linux的进程间共享内存。 Boost对共享内存进行了封装,可以更为方便的使用共享内存。 1.创建共享内存 #include <boost/interprocess/shared_memory_object.hpp> using namespace boost::i…...

Android Camera Surface显示相关问题总结

1.默认创建的Preview Surface填充RGBA数据显示异常。 //界面创建的Surface format默认为4(RGB_565),而预览界面所需的格式是RGBA_8888 ANativeWindow_setBuffersGeometry(window, width, height, WINDOW_FORMAT_RGBA_8888); 2.调用ANativeWindow的dequeueBuffer出错&#xff…...

php通过curl方式发送接受xml数据

目录 1、php通过curl方式发送xml数据 2、php通过file_get_contents接受curl方式发送xml数据 1、php通过curl方式发送xml数据 <?php function sendXmlData($url, $xmlData) {$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFE…...

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建 持续更新中… java+vue+微信小程序项目】从零开始搭建——健身房管理平台 项目简介Java项目搭建(IDEA)1.新建项目2.项目类型3.项目设置4…...

Python语言创建爬虫代理IP池详细步骤和代码示例

目录 一、引言 二、代理IP的选择 三、使用代理IP的代码示例 四、创建代理IP池的代码示例 五、总结 一、引言 在爬虫程序中&#xff0c;代理IP的使用是避免IP被封禁、提高爬取效率的重要手段。本文将详细介绍如何使用Python语言创建一个爬虫代理IP池&#xff0c;包括代理I…...

Oracle研学-介绍及安装

一 ORACLE数据库特点: 支持多用户&#xff0c;大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性(跨平台&#xff0c;linux转Windows) 二 ORACLE体系结构 数据库&#xff1a;oracle是一个全局数据库&#xff0c;一个数据库可以有多个实例&#xff0c;每个…...

建设银行新余市分行积极开展国债下乡宣传活动

近日&#xff0c;为了普及国债知识&#xff0c;提高农村居民对国债的认知度和投资意识&#xff0c;建设银行新余市分行组织员工前往下村开展了一场国债下乡宣传活动。 活动当天&#xff0c;工作人员早早地来到了下乡地点&#xff0c;悬挂起了国债宣传横幅&#xff0c;并摆放了…...

【javascript】如何判断一个对象属性是否存在

前言 在javascript里&#xff0c;可以有多种判断对象属性是否存在的方法&#xff0c;使用哪种方法来判断&#xff0c;取决于对 “存在” 两个字的定义是什么。 方法1&#xff1a;对比undefined const obj {} if (obj.id ! undefined) {console.log(存在) } else {console.l…...

Linux-hid

/kernel/drivers/hid/hid-core.c hid总线驱动/kernel/drivers/hid/hid-generic.c hid通用驱动/kernel/drivers/hid/hid-multitouch.c 多点触控面板驱动/kernel/drivers/hid/hid-quirks.c hid-quirks.c 是 Linux 内核中的一个文件&#xff0c;用于实现 HID&#xff08;Human…...

Paraformer 语音识别原理

Paraformer(Parallel Transformer)非自回归端到端语音系统需要解决两个问题&#xff1a; 准确预测输出序列长度&#xff0c;送入预测语音信号判断包含多少文字。 如何从encoder 的输出中提取隐层表征&#xff0c;作为decoder的输入。 采用一个预测器&#xff08;Predictor&…...

用户注册这样玩,保你平安

前言 基本上每个系统系统都包含用户注册、发送验证码等基本操作。在前些年&#xff0c;我还记得我在逛 csdn、贴吧、网易新闻等网站的时候是可以不登陆也能浏览完网页内容的&#xff0c;但是近几年这些网站已经改成了不登陆不让用&#xff0c;浏览网页时不时提醒你要进行登录&…...

QXDM Filter使用指南

QXDM Filter使用指南 1. QXDM简介2 如何制作和导入Filter2.1 制作Filter2.1.1 制作Windows环境下Filter2.1.2 制作Linux环境下Filter 2.2 Windows环境下导入Filter 3 Filter配置3.1 注册拨号问题3.1.1 LOG Packets(OTA)3.1.2 LOG Packets3.1.3 Event Reports3.1.4 Message Pack…...

智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝴蝶算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…...

3dsMax插件Datasmith Exporter安装使用方法

3dsMax插件Datasmith Exporter安装使用方法 某些文件格式无法用Datasmith直接导入虚幻引擎&#xff0c;这些数据必须先被转换为Datasmith能够识别的文件格式。Datasmith Exporter插件就可以帮助您的软件导出可以被Datasmith导入虚幻引擎的.udatasmith格式文件。 在开始使用虚幻…...

量子机器学习安全威胁:NISQ时代的数据投毒攻击与防御挑战

1. 量子机器学习与NISQ时代的安全隐忧量子机器学习&#xff08;QML&#xff09;正站在一个激动人心的十字路口。它承诺将量子计算的指数级并行能力与经典机器学习的模式识别潜力相结合&#xff0c;为解决药物发现、材料科学和金融建模中的复杂问题开辟新路径。其核心在于&#…...

统信UOS 20.1060专业版美化全攻略:从桌面到GRUB再到锁屏,一次搞定个性化设置

统信UOS 20.1060专业版深度美化指南&#xff1a;打造高效统一的视觉工作流第一次打开统信UOS专业版时&#xff0c;默认的蓝色渐变桌面确实给人一种专业稳重的印象。但连续使用几周后&#xff0c;我发现自己开始对着千篇一律的界面走神——这就像每天穿着同样的西装上班&#xf…...

非欧几里得机器学习:流形与拓扑结构下的回归与嵌入方法

1. 项目概述&#xff1a;当数据不再“平直” 在机器学习的日常实践中&#xff0c;我们习惯于将数据点视为高维欧几里得空间&#xff08;即我们熟悉的“平直”空间&#xff0c;如二维平面、三维空间&#xff09;中的向量。线性回归、主成分分析&#xff08;PCA&#xff09;乃至大…...

Linux服务器基线检查实战:从合规到安全能力的跃迁

1. 为什么基线检查不是“走个过场”&#xff0c;而是服务器生死线上的第一道闸门很多人第一次接触“Linux服务器基线检查”&#xff0c;是在安全团队发来的一份《等保2.0整改清单》里&#xff0c;或是运维晨会时被点名&#xff1a;“XX系统基线不合规&#xff0c;限期3天修复”…...

Unity Android StreamingAssets路径原理与安全读取方案

1. 为什么这个路径问题会让人反复踩坑&#xff1f;在Unity Android项目里&#xff0c;StreamingAssets路径看似只是个字符串拼接问题&#xff0c;但实际开发中&#xff0c;它几乎是我接手过的每个中大型项目必修的“排障课”。不是因为代码难写&#xff0c;而是因为——它在不同…...

VR交互框架VRF:输入抽象、物理建模与多端同步工程实践

1. 这不是又一个“VR按钮点击Demo”&#xff0c;而是一套能直接进产线的交互骨架我第一次在客户现场看到用Unity裸写VR交互逻辑的项目&#xff0c;是在2021年冬天。那是个工业培训场景&#xff0c;需要让学员用手柄抓取虚拟阀门、旋转、再插入对应接口——听起来简单&#xff0…...

【Java后端开发】花了2k+多的人民币,烧了几十亿Token,慢慢整理出来适用于Java开发人员的codex配置,还在持续优化中

&#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》&#xff08;基础篇&#xff09;、&#xff08;进阶篇&#xff09;、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域…...

【Lovable高阶开发者私藏技巧】:绕过平台限制实现自定义CSS/JS注入与第三方SDK深度对接

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Lovable无代码开发教程 Lovable 是一款面向业务人员与轻量级开发者的可视化应用构建平台&#xff0c;它通过拖拽式界面、逻辑编排画布和内置数据连接器&#xff0c;将复杂功能封装为可复用的模块。无需编写传统…...

从Java全栈开发到云原生:一次真实的面试对话与技术剖析

从Java全栈开发到云原生&#xff1a;一次真实的面试对话与技术剖析 面试场景回顾 在一次真实的互联网大厂Java全栈开发岗位的面试中&#xff0c;面试官和应聘者展开了一场围绕技术栈、项目经验和系统设计的深入交流。面试官以专业严谨的态度&#xff0c;逐步引导应聘者展示其技…...

AI绘画中的诡异谷:从技术缺陷到可控美学的跃迁

1. 项目概述&#xff1a;当AI画笔开始颤抖——我们为什么该认真对待“诡异谷”里的美你有没有盯着一张AI生成的肖像画&#xff0c;越看越不对劲&#xff1f;眼睛太亮、皮肤太滑、手指多了一节&#xff0c;或者笑容弧度精准得像用圆规画出来的——那种说不上来哪里怪&#xff0c…...