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

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

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!
一、系统方案
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.kler.cn/a/146741.html

相关文章:

  • 定长滑动窗口基础模板题:LeetCode——2379.得到K个黑块的最少涂色次数和643.子数组最大平均数 1
  • Android开发实战班 - Activity 生命周期
  • Jmeter 如何导入证书并调用https请求
  • C++ 并发专题 - 线程安全的单例模式
  • 人工智能与自动驾驶:从梦想到现实
  • go-zero(二) api语法和goctl应用
  • innovus如何在floorplan view显示所有module
  • 每日一题:LeetCode-202.快乐数(一点都不快乐)
  • 经典的回溯算法题leetcode组合问题整理及思路代码详解
  • GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF
  • 【斗破年番】萧炎斩杀蝎山,活捉魂殿铁护法,救小医仙身中魔斑毒
  • apple macbook M系列芯片安装 openJDK17
  • github访问失败
  • Unsupervised MVS论文笔记(2019年)
  • Postgresql WAL日志解析挖掘(walminer 4.0)
  • Java LeetCode篇-深入了解关于数组的经典解法
  • 【nlp】4.1 fasttext工具介绍(文本分类、训练词向量、词向量迁移)
  • 为啥网络安全那么缺人,但很多人却找不到工作?
  • 2、用命令行编译Qt程序生成可执行文件exe
  • 为什么选择美国VPS服务器
  • Spring Security 6.1.x 系列(5)—— Servlet 认证体系结构介绍
  • 【新手解答2】深入探索 C 语言:一些常见概念的解析
  • Mysql 锁机制分析
  • Django框架环境的搭建(图文详解)
  • spring Cloud在代码中如何应用,erueka 客户端配置 和 服务端配置,Feign 和 Hystrix做高可用配置
  • IDEA DeBug