网站系统搭建,郑州企业网站,企业管理培训课程名称,网站屏蔽中文浏览器一、系统方案 设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮#xff0c;当患者需要呼叫护士时#xff0c;按下按钮#xff0c;此时护士值班室内的呼叫系统板上显示该患者的床位号#xff0c;并蜂鸣器报警。当护士按下“响应”键时#xff0c;结束当前呼叫…一、系统方案 设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮当患者需要呼叫护士时按下按钮此时护士值班室内的呼叫系统板上显示该患者的床位号并蜂鸣器报警。当护士按下“响应”键时结束当前呼叫。 操作视频BIBIBIhttps://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; //RS0,写指令RW_CLR; //RW0,写命令EN_SET; //E1,写操作 LCD_BUSLCD_Com; //数据送往数据端口?_delay_ms(1); //这个延时非常重要结合时序图来理解可以跟送数据顺序调换EN_CLR;// E0下角_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; //RS0,写指令RW_CLR; //RW0,写命令EN_SET; //E1,写操作 LCD_BUSLCD_Com; //数据送往数据端口?_delay_ms(1); //这个延时非常重要结合时序图来理解可以跟送数据顺序调换EN_CLR;// E0下角_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(); DDRB0x7F; PORTB0xff; DDRC0xFF; PORTC0xff; DDRD0x00; PORTD0xff; DDRA0xFF; PORTA0xff; write_string(1,0,Timer_buf); write_string(2,0, wu bingrenhujiao);
while(1)
{Timer_buf[13] br_geshu%1047;write_string(1,0,Timer_buf); //写显示if(br_geshu 1)BEEP_0 ; //蜂鸣器报警else BEEP_1; //取消报警key_with();if((PIND0x01)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x01)0x00) // 确定按键依然1按下 {while((PIND0x01)!0X01); // 判断手松开key_can 1;} } if((PIND0x02)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x02)0x00) // 确定按键依然1按下 {while((PIND0x02)!0X02); // 判断手松开key_can 2;} } if((PIND0x04)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x04)0x00) // 确定按键依然1按下 {while((PIND0x04)!0X04); // 判断手松开key_can 3;} } if((PIND0x08)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x08)0x00) // 确定按键依然1按下 {while((PIND0x08)!0X08); // 判断手松开key_can 4;} }if((PIND0x10)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x10)0x00) // 确定按键依然1按下 {while((PIND0x10)!0X10); // 判断手松开key_can 5;} } if((PIND0x20)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x20)0x00) // 确定按键依然1按下 {while((PIND0x20)!0X20); // 判断手松开key_can 6;} } if((PIND0x40)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x40)0x00) // 确定按键依然1按下 {while((PIND0x40)!0X40); // 判断手松开key_can 7;} } if((PIND0x80)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PIND0x80)0x00) // 确定按键依然1按下 {while((PIND0x80)!0X80); // 判断手松开key_can 8;} } if((PINB0x80)0x00) // 按键1按下 {_delay_ms(10); // 延时消抖if((PINB0x80)0x00) // 确定按键依然1按下 {while((PINB0x80)!0X80); // 判断手松开key_can 9;} }
}}
四、 proteus仿真设计 Proteus软件是一款应用比较广泛的工具它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况这样就可以通过软件仿真来验证我们设计的方案有没有问题如果有问题可以重新选择器件连接器件直到达到我们设定的目的避免我们搭建实物的时候如果当初选择的方案有问题我们器件都已经焊接好了再去卸载下去再去焊接新的方案的器件测试这样会浪费人力和物力也给开发者带来一定困惑Proteus仿真软件就很好的解决这个问题我们在设计之初就使用该软件进行模拟仿真测试选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸焊接实物调试最终完成本设计的作品。