基于51单片机的zigbee病房呼叫系统设计

  • 0、毕业设计选题原则说明(重点)
  • 1、项目简介
  • 1.1 系统构成
  • 1.2 系统功能
  • 1.3 演示视频
  • 2、部分电路设计
  • 2.1 STC89C52单片机核心板电路设计
  • 2.2 按键电路设计
  • 2.3 OLED液晶显示电路设计
  • 3.4、ZigBee通信模块电路设计
  • 3、部分代码展示
  • 3.1 OLED显示字符串
  • 3.2 修改蜂鸣器鸣叫频率
  • 3.3 串口初始化
  • 3.4 串口发送数据
  • 4、资料下载


0、毕业设计选题原则说明(重点)

  • 选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的!
  • 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。
  • 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业证而已!!!
  • 当你明白这一点后,作毕业设计的要求就是在满足老师的要求后,越简单越好,这样不但容易去做,而且你自己也容易去理解,掌握,同样也能花最少的钱!!!
  • 满足老师的要求,这个没办法,毕竟他是决定你是否能通过答辩的人。
  • 每年都有很多同学找到我的时候,后悔当初为什么要把功能写的那么复杂,后悔没有提前找我咨询一下!所以在这里提醒同学们,提交开题报告之前一定要多想想,咨询下以往的学长学姐,不要自己随便写一堆提交上去!!!

1、项目简介

1.1 系统构成

  • 1、系统由一个从机与一个主机构成。
  • 2、主机由stc89c52单片机+zigbee模块+电源电路+按键电路+报警电路+震动电路+OLED显示屏电路构成。
  • 3、从机由stc89c52单片机+zigbee模块+电源电路+按键电路构成。

1.2 系统功能

  • 1、主机接收从机呼叫信息,并显示设备号与呼叫信息
  • 2、等级分为两种,使用蜂鸣器与震动模块进行报警
  • 紧急报警,凤鸣器紧促报警,震动
  • 正常报警,凤鸣器正常报警,震动
  • 3、主机可以关闭报警
  • 4、从机可以发送输液完成与紧急呼叫信息

1.3 演示视频

2、部分电路设计

2.1 STC89C52单片机核心板电路设计

  • 51单片机最小系统是确保51系列单片机能够正常工作的最基本电路配置,通常包括电源电路、晶振电路、复位电路。这些组件共同为单片机提供稳定的工作环境和必要的时钟信号,确保单片机能够准确地执行程序指令。
  • 电源电路:为单片机提供稳定的工作电压,通常采用5V电源供电。电源电路的设计要保证单片机在不同工作条件下都能获得稳定的电压输出,以确保单片机的正常工作。
  • 晶振电路:提供单片机工作所需的时钟信号。晶振电路通过晶振和电容组成,为单片机提供稳定的工作脉冲,确保单片机的定时和同步需求。
  • 复位电路:实现单片机的复位功能,类似于电脑的重启。复位电路通过电容和电阻的配合,实现单片机在上电启动时的自动复位,以及通过手动按键实现复位功能,保证单片机在程序跑飞或异常情况下能够重新开始执行程序。
  • 单片机最小系统原理图如下图所示:
  • 基于51单片机的zigbee病房呼叫系统设计_课程设计

2.2 按键电路设计

  • 在按键产品中,轻触按键作为重要的分类产品之一,其本质就是电子开关。其工作原理是通过轻触按键内部金属弹片受力后弹开,进而实现电路的接通和断开。通过轻轻按下按键,即可使开关接通;松开按键则使开关断开连接。这种设计在电子设备中得到广泛应用,其简单、可靠的操作特性使其成为人机交互中不可或缺的一环。
  • 其具体电路原理图如下图所示:
  • 基于51单片机的zigbee病房呼叫系统设计_毕业设计_02


  • 基于51单片机的zigbee病房呼叫系统设计_单片机_03

2.3 OLED液晶显示电路设计

  • OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
    LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示 OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。在此我们使用的 是0.96寸OLED显示屏,该屏有以下特点:
  • 0.96 寸 OLED 有黄蓝,白,蓝三种颜色可选;其中黄蓝是屏上 1/4 部分为黄光,下 3/4 为蓝;而且是固定区域显示固定颜色,颜色和显示区域均不能修改;白光则为纯白,也就是黑底白字;蓝色则为 纯蓝,也就是黑底蓝字。
  • 分辨率为 128*64
  • 多种接口方式;OLED 裸屏总共种接口包括:6800、8080 两种并行接口方式、3 线或 4 线的串行 SPI 接口方式、 IIC 接口方式(只需要 2 根线就可以控制 OLED 了!),这五种接口是通过屏上的 BS0~BS2 来配置的。
  • 其具体电路原理图如下图所示:
  • 基于51单片机的zigbee病房呼叫系统设计_课程设计_04

  • 实物图如下:
  • 基于51单片机的zigbee病房呼叫系统设计_嵌入式硬件_05

3.4、ZigBee通信模块电路设计

  • 选用DL-20 zigbee无线串口透传模块,它是一款全双工无线透明传输通信模块。
  • DL-20无线串口透传模块使用CC2530芯片。CC2530是适用于IEEE 802.15.4、Zigbee和RF4CE应用的系统芯片(SoC),它能够以极低的成本构建强健的网络节点。
  • 点对点模式:在这种模式下,模块分为A端和B端,两个节点之间可以互相通信,保证了数据的私密性和准确性。这种模式适用于需要直接通信的两个设备之间。
  • 广播模式:一个节点发送的数据可以被所有在范围内且频率相同的节点接收,适用于一对多的通信场景。
  • 配置DL-20 zigbee模块的步骤包括进入配置模式、设置波特率、设置频道、设置模式以及确认设置。这些步骤需要按照特定的顺序进行,以确保模块能够按照预期工作。例如,在点对点模式下,两个模块必须配置在相同的频道上,以确保它们能够相互通信。
  • DL-20 zigbee模块的主要特点包括点对点传输带有确认、支持串口不间断发送、支持串口双向同时收发、最高可达3300字节每秒的传输速率、使用单个按键进行设置,以及支持多对多模式。这些特点使得DL-20 zigbee模块成为实现无线通信的理想选择,尤其适用于需要高速率和稳定性的应用场景
  • 电路图
  • 基于51单片机的zigbee病房呼叫系统设计_嵌入式硬件_06

  • 实物图
  • 基于51单片机的zigbee病房呼叫系统设计_嵌入式硬件_07

3、部分代码展示

3.1 OLED显示字符串

/********************************************************************************************
* Function:	void OLED_P6x8Str(uchar x, uchar y, uchar ch[])
* Description:	显示6*8一组标准ASCII字符串	
* Parameter:	
			显示的坐标(x,y),y为页范围0~7
**************************************************************************************************/
void OLED_P6x8Str(uchar x, uchar y, uchar ch[])
{
	uchar c=0,i=0,j=0;
	
	while ( ch[j] != '\0')
	{
		c = ch[j] - 32;
		if( x > 122)		//如果本行显示不下则换下一行继续显示
		{
			x = 0 ;
			y++ ;
		}
		OLED_Set_Pos(x,y) ;
		
		for (i = 0; i < 6; i++)
			OLED_WrDat(F6x8[c][i]); 
		
		x += 6 ;
		j++ ;
	}
}

3.2 修改蜂鸣器鸣叫频率

/*
输入参数 open_cnt: 无源蜂鸣器鸣叫的时间
输入参数 time: 控制无源蜂鸣器的声音频率
*/
void beep_wuyuan(unsigned int open_cnt, unsigned char time)
{
  while(open_cnt != 0)
  {
    beep = !beep;
    open_cnt--;
    DelayUs2x(time);
  }
  open_cnt = 0;
  beep = 1;
}

3.3 串口初始化

void UART_Init(void)
{
  SCON  = 0x50;		        // SCON: 模式 1, 8-bit UART, 使能接收  
  TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装
  TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz
  TL1 = TH1;  
  TR1   = 1;                  // TR1:  timer 1 打开                         
  EA    = 1;                  //打开总中断
  ES    = 1;                  //打开串口中断
}

3.4 串口发送数据

//串口发送数据
void uartSendStr(unsigned char *s,unsigned char length)
{
	unsigned char NUM;
	NUM=0x00;
	while(NUM<length)	//发送长度对比
	{
		uartSendByte(*s);  //放松单字节数据
		s++;		  //指针++
		NUM++;		  //下一个++
   }
}