基于单片机的无线病房呼叫系统设计

发布时间:2023年12月27日

目录

摘要 1
Abstract 2
第一章 绪论 4
1.1无线电通信的发展与现状 5
1.2基于单片机的病房无线呼叫系统 7
1.2.1基于单片机的无线呼叫系统 7
1.2.2病房无线呼叫系统的概述与优点 8
1.3 研究目的与意义 8
1.4 研究内容与方法 9
1.5 章节安排 9
第二章 系统的整体设计 9
2.1系统设计的技术指标 9
2.2系统的总体结构 9
2.3系统设计的方法与步骤 10
第三章 硬件介绍 10
3.1.1单片机芯片ST89C52 10
3.2模块电路设计 12
3.2.1 时钟电路 12
3.2.2 复位电路 13
3.2.3 键盘扫描电路 14
3.2.4 无线发射电路 14
3.2.5无线接收电路 15
3.2.6数码管及显示电路 16
3.2.7蜂鸣警报电路 19
3.2.8 编码解码模块的设计 20
第四章 软件设计 22
4.1.1 Keil uVision4 22
4.1.2 Proteus ISIS 22
4.1.3 stc-isp烧录软件 23
4.2 系统程序设计 24
4.2.1单片机主程序 24
4.2.2无线发射模块的系统设计 25
第五章 系统的仿真与调试 27
5.1.1硬件的测试 27
5.1.2 软件的仿真 27
总 结 28
鸣 谢 29
参考文献 30
1.3 研究目的与意义
本研究旨在设计一种基于单片机的无线病房呼叫系统,以解决传统有线呼叫系统存在的问题,提高医院内部通讯的效率和便捷性。通过无线通信技术,实现病房与医护人员之间的快速、准确的信息传递,为病患提供更加及时、有效的服务。同时,该系统的研究与设计对于推动医疗行业的信息化、智能化发展具有重要意义。

1.4 研究内容与方法
本研究以ST89C52单片机为核心,结合时钟电路、复位电路、键盘扫描电路、无线射频接收电路、无线射频发射电路、数码管显示电路和蜂鸣警报电路等外围电路,构建无线病房呼叫系统的硬件平台。通过Keil uVision4编程软件编写控制程序,实现系统的各项功能。同时,利用Proteus ISIS仿真软件对系统进行仿真测试,验证系统的可行性和稳定性。最后,通过stc-isp烧录软件将控制程序烧录到单片机中,完成系统的调试和运行。
1.5 章节安排
本论文共分为以下几个章节:第一章绪论,介绍研究背景、目的与意义、内容与方法以及国内外研究现状及发展趋势;第二章系统设计,详细阐述无线病房呼叫系统的总体设计、硬件设计和软件设计;第三章系统实现与测试,介绍系统的实现过程及测试结果;第四章系统性能分析与优化,对系统性能进行深入分析并提出优化措施;第五章总结与展望,对全文进行总结并展望未来的研究方向。

#include "config.h"
#include <intrins.h>

 uint m;
 uchar yemian=0;
 int n;
 uint count=0,num=0;
 uchar keynum;
 uint i=0;
 uchar save[11]={0};

unsigned char code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88};//共阳数码管显示0~F

sbit bee=P1^5;

void savenum(keynum);
//延时
void DelayMS(uint32_t ms)
{
	uint8_t i;
	while(ms--) 
	for(i=0;i<120;i++);	
}

void delay2(uchar x)
	{
	uchar m,n;
	for(m=5;m>0;m--)
	for(n=x;n>0;n--);	
	}

/*******************************************************************/
/*                                                                 */
/*     主函数                                                      */
/*                                                                 */
/*******************************************************************/

void keyscan()
{
   unsigned char x;
   uchar keynum;
   char rx_buf[8]={0};
   NRFSetRXMode();//设置为接收模式
	if (NRFRevDate(rx_buf))//开始接受数
		{
			UART_Send_Str(rx_buf);
			x=rx_buf[0];
   switch(x)
   {
   case 0x11: keynum=0;savenum(keynum); break;
   case 0x22: keynum=1; savenum(keynum);break;
   case 0x33: keynum=2;savenum(keynum); break;
   case 0x44: keynum=3;savenum(keynum); break;
   case 0x55: keynum=4;savenum(keynum); break;
   case 0x66: keynum=5;savenum(keynum); break;
   case 0x77: keynum=6; savenum(keynum);break;
   case 0x88: keynum=7;savenum(keynum); break;
   case 0x99: keynum=8;savenum(keynum); break;
   case 0xaa: keynum=9;savenum(keynum); break;
   case 0xbb: bee=0;  break;

   default: break;
   }
   }
  

}

void savenum(keynum)
	{
	
	uchar z;
		for(z=4;z>0;z--)
		{
		
		save[z]=save[z-1];
		
		
		}
		save[0]=keynum;
		i++;
	
	
	}	
void display(Q,B,S,G)	
{
	if(i==1)
	{
	
	 	P0 = table[G];
		P3 = 0xbf;
		
		delay2(100);
	}
	if(i==2)
	{
	P0 = table[G];
		P3 = 0xbf;
		
		delay2(100);
	//	P0=show[S];
		P0 = table[S];
		P3 = 0x7f;
		
		delay2(100);
	
	}
	if(i==3)
	{
	
	P0 = table[G];
		P3 = 0xbf;
		
		delay2(100);
	//	P0=show[S];
		P0 = table[S];
		P3 = 0x7f;
		
		delay2(100);
	   	P0 = table[B];
		P3 = 0xdf;
		
		delay2(100);

}
if(i>=4)
{
	P0 = table[G];
	P3 = 0xbf;
	
	delay2(100);
//	P0=show[S];
	P0 = table[S];
	P3 = 0x7f;
	
	delay2(100);
   	P0 = table[B];
	P3 = 0xdf;
	
	delay2(100);
		P0 = table[Q];
	P3 = 0xef;
	
	delay2(100);
	

}
 }
int main(void)
{ 
   //Init();  
   NRF24L01Int();
 //  P0 = P1 = P2 = P3 = 0xff;  //初始化单片机IO口为高电平
//	for(n=0;n<500;n++)//显示启动LOGo"- - - -"
//	{logo();}
	
  while(1)
   {

    keyscan();
	display(save[3],save[2],save[1],save[0]) ;
			    
   } 
return 0;

}






在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/sheziqiong/article/details/135214618
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。