本文介绍: 设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮,此时护士值班室内的呼叫系统板上显示患者床位号,并蜂鸣器报警操作视频BIBIBI:https://www.bilibili.com/video/BV1kN4y127f8/LCD_BUS_Direction_REG =0XFF;//LCD数据端口设置输出。//LCD数据端口设置输出。1、首先是系统初始化。//LCD端口初始化。//LCD端口初始化

一、系统方案
设计一个可容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 &gt; 1)
			BEEP_0 ;   //蜂鸣器报警
	else 
				BEEP_1;       //取消报警
   key_with();
   if((PIND&amp;0x01)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x01)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x01)!=0X01); // 判断手松开
	     key_can = 1;
	   }		
	} 
	  if((PIND&amp;0x02)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x02)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x02)!=0X02); // 判断手松开
	     key_can = 2;
	   }		
	} 
	  if((PIND&amp;0x04)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x04)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x04)!=0X04); // 判断手松开
	     key_can = 3;
	   }		
	} 
  if((PIND&amp;0x08)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x08)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x08)!=0X08); // 判断手松开
	     key_can = 4;
	   }		
	}
	  if((PIND&amp;0x10)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x10)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x10)!=0X10); // 判断手松开
	     key_can = 5;
	   }		
	} 
	  if((PIND&amp;0x20)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x20)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x20)!=0X20); // 判断手松开
	     key_can = 6;
	   }		
	} 
	  if((PIND&amp;0x40)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;0x40)==0x00)   // 确定按键依然1按下     
	   {
	     while((PIND&amp;0x40)!=0X40); // 判断手松开
	     key_can = 7;
	   }		
	} 
	  if((PIND&amp;0x80)==0x00)    // 按键1按下          
   {
	  _delay_ms(10);  // 延时消抖
	   if((PIND&amp;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仿真软件就很好的解决这个问题,我们在设计之初,就使用软件进行模拟仿真测试选择满足我们设计的最优方案最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品

在这里插入图片描述

原文地址:https://blog.csdn.net/bbxyliyang/article/details/134721263

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_38680.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注