当前位置:   article > 正文

人脸识别的安全门禁系统设计_人脸识别门禁系统设计

人脸识别门禁系统设计

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近看到HLK出了个人脸识别,准备画个板子做个小项目。


一、硬件设计

这里使用AD进行原理图以及电路的绘制。

原理图
在这里插入图片描述
在这里插入图片描述
使用stm32F103C8T6作为主控,语音选择的是ASRPRO,屏幕选择的是OLED 0.96寸屏幕。

二、软件开发

利用cubemx进行配置,使用freertos操作系统进行开发,配置了三个任务,按键任务,串口任务,显示任务
在这里插入图片描述
在这里插入图片描述
屏幕使用的是模拟IIC进行控制,人脸识别模块是串口以及语音模块都是使用串口通讯。ASRPRO是使用天问软件开发,比较简单,都不能用开发来形容,只能说使用天问的图形化编程,上手比较快在这里插入图片描述

三、程序设计

写了一天的BUG,完成的差不多了。
首先是变量

struct 
{
	u8 key_falg;
	u8 module_result;
	u8 module_command0[20];//识别指令
	u8 module_command1[20];//注册指令
	u8 module_command2[20];//. 删除用户指令
	u8 module_command3[20];//删除全部指令
	u8 module_command4[20];//打开背光控制指令
	u8 module_command5[20];//打开显示控制指令
	u8 module_command6[20];//打开白光灯控制指令
	u8 module_command7[20];//重启指令
	u8 module_command8[20];//读取已注册用户数量指令
	u8 module_command9[20];//关闭背光控制指令
	u8 module_command10[20];//关闭显示控制指令
	u8 module_command11[20];//关闭白光灯控制指令
	u8 asr_command[10];//语音模块控制指令
	u8 key_ud_num;//标记按键上下位置
	u8 key_lr_num;//标记按键左右位置
	u8 function_falg;//功能标记
	u8 lim_key_flag;//按键限时标志位
	u8 module_control_falg[3];//模块控制标志位
	u8 sg90_falg;//舵机转动标志位
	u8 sg90_turn_time;//舵机转动时间
}door_guard_data;
u8 Usart1_Rx[50];
u8 Usart2_Rx[50];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

宏定义

#define KEY_OK HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15)
#define KEY_UP HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)
#define KEY_DOWN HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)
#define KEY_LEFT HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_13)
#define KEY_RIGHT HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14)
#define KEY_ALL_NUM 5 //按键总数
#define MODULE_FH1 0xEF//人脸识别模块帧头
#define MODULE_FH2 0xAA
#define ASR_USART_FH 0xAA//语音识别通讯帧头
#define ASR_USART_FE 0xEE//语音识别通讯帧尾
#define OLED_UD_NUM 3
#define OLED_RL_NUM 2
#define KEY_DESHAKE_TIME 100//按键消抖时间 ms
#define SG90_TURN_1 500//舵机转动角度控制
#define SG90_TURN_2 1500
#define SG90_TIME 100 //舵机转动时间
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

自定义函数

u8 KEY_GetStatus(u8 keynum)
{
	u8 temp;
	switch(keynum)
	{
		case 0x01:
			temp = KEY_OK;
			break;
		case 0x02:
			temp = KEY_UP;
			break;
		case 0x03:
			temp = KEY_DOWN;
			break;
		case 0x04:
			temp = KEY_LEFT;
			break;
		case 0x05:
			temp = KEY_RIGHT;
			break;
		default: 
					break;
	}
	return temp;
}
u8 key_scan_t(void)
{
	u8 k_num;
	for(k_num=1;k_num<KEY_ALL_NUM+1;k_num++)
	{
		if(KEY_GetStatus(k_num))
		{
			break;
		}
		
	}
	if(k_num == KEY_ALL_NUM+1)
	{
		k_num = 0;
	}
	return k_num;
}
void lim_key_num()
{
	if(door_guard_data.key_lr_num<= 0)
	{
		door_guard_data.key_lr_num = 0;
	}
	if(door_guard_data.key_ud_num<= 0)
	{
		door_guard_data.key_ud_num = OLED_RL_NUM;
	}
	if(door_guard_data.key_lr_num>= OLED_RL_NUM)
	{
		door_guard_data.key_lr_num = OLED_RL_NUM;
	}
	if(door_guard_data.key_ud_num>= OLED_UD_NUM+1)
	{
		door_guard_data.key_ud_num = 1;
	}
}
void lim_key_num1()
{
	if(door_guard_data.key_ud_num<= 2)
	{
		door_guard_data.key_ud_num = 2;
	}
	if(door_guard_data.key_ud_num>= 3)
	{
		door_guard_data.key_ud_num = 3;
	}
	
}
u8 Negation_Var(u8 variable)
{
	if(variable == 0) variable = 1;
	else  variable = 0;
	return variable;
}
void MY_OLED_Clear()
{
	OLED_ShowString(0,2,(u8*)"                    ",16);
	OLED_ShowString(0,4,(u8*)"                  ",16);
	OLED_ShowString(0,6,(u8*)"                 ",16);
}
void OLED_Detect()
{
	OLED_ShowCHinese(15,2,6);
	OLED_ShowCHinese(30,2,7);
	OLED_ShowCHinese(15,4,2);
	OLED_ShowCHinese(30,4,3);
	OLED_ShowCHinese(15,6,4);
	OLED_ShowCHinese(30,6,5);
}
void OLED_Input()
{
	OLED_ShowCHinese(15,2,0);
	OLED_ShowCHinese(30,2,1);
	OLED_ShowCHinese(15,4,8);
	OLED_ShowCHinese(30,4,9);
	OLED_ShowCHinese(15,6,4);
	OLED_ShowCHinese(30,6,5);
}
void OLED_Delete()
{
	OLED_ShowCHinese(15,2,0);
	OLED_ShowCHinese(30,2,1);
	OLED_ShowCHinese(15,4,2);
	OLED_ShowCHinese(30,4,3);
	OLED_ShowCHinese(15,6,10);
	OLED_ShowCHinese(30,6,11);
}
void OLED_Delete_All()
{
	OLED_ShowCHinese(15,2,14);
	OLED_ShowCHinese(30,2,15);
	OLED_ShowCHinese(15,4,16);
	OLED_ShowCHinese(30,4,17);
}
void OLED_Delete_One()
{
	OLED_ShowCHinese(15,2,18);
	OLED_ShowCHinese(30,2,19);
	OLED_ShowCHinese(15,4,12);
	OLED_ShowCHinese(30,4,13);
}
void OLED_Display()
{
	OLED_ShowCHinese(15,2,26);
	OLED_ShowCHinese(30,2,27);
	OLED_ShowCHinese(45,2,34);
	OLED_ShowCHinese(60,2,35);
	OLED_ShowCHinese(15,4,22);
	OLED_ShowCHinese(30,4,23);
	OLED_ShowCHinese(45,4,32);
	OLED_ShowCHinese(60,4,33);
	OLED_ShowCHinese(15,6,24);
	OLED_ShowCHinese(30,6,25);
	OLED_ShowCHinese(45,6,32);
	OLED_ShowCHinese(60,6,33);
}
void OLED_Backlight()
{
	OLED_ShowCHinese(15,2,20);
	OLED_ShowCHinese(30,2,21);
	OLED_ShowCHinese(45,2,32);
	OLED_ShowCHinese(60,2,33);
	OLED_ShowCHinese(15,4,28);
	OLED_ShowCHinese(30,4,29);
	OLED_ShowCHinese(45,4,34);
	OLED_ShowCHinese(60,4,35);
	OLED_ShowCHinese(15,6,24);
	OLED_ShowCHinese(30,6,25);
	OLED_ShowCHinese(45,6,32);
	OLED_ShowCHinese(60,6,33);
}
void OLED_Whitelight()
{
	OLED_ShowCHinese(15,2,20);
	OLED_ShowCHinese(30,2,21);
	OLED_ShowCHinese(45,2,32);
	OLED_ShowCHinese(60,2,33);
	OLED_ShowCHinese(15,4,22);
	OLED_ShowCHinese(30,4,23);
	OLED_ShowCHinese(45,4,32);
	OLED_ShowCHinese(60,4,33);
	OLED_ShowCHinese(15,6,30);
	OLED_ShowCHinese(30,6,31);
	OLED_ShowCHinese(45,6,34);
	OLED_ShowCHinese(60,6,35);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171

按键任务

		door_guard_data.key_falg = key_scan_t();
    osDelay(KEY_DESHAKE_TIME);
		switch(door_guard_data.key_falg)
		{
			case 1://KEY_OK
				door_guard_data.key_falg = 0;
				door_guard_data.lim_key_flag = 0;
				if(door_guard_data.key_lr_num == 1)
				{
					door_guard_data.function_falg = door_guard_data.key_ud_num ;
				}
				if(door_guard_data.key_lr_num == 0)
				{
					door_guard_data.function_falg = door_guard_data.key_ud_num + 3;
				}
			break;
			case 2://KEY_DOWN
				door_guard_data.key_falg = 0;
				door_guard_data.key_ud_num--;
				osDelay(KEY_DESHAKE_TIME);
			break;
			case 3://KEY_UP
				door_guard_data.key_falg = 0;
				door_guard_data.key_ud_num++;
				osDelay(KEY_DESHAKE_TIME);
			break;
			case 4://KEY_LEFT
				door_guard_data.key_falg = 0;
				door_guard_data.key_lr_num--;
				osDelay(KEY_DESHAKE_TIME);
			break;
			case 5://KEY_RIGHT
				door_guard_data.key_falg = 0;
				door_guard_data.key_lr_num++;
				osDelay(KEY_DESHAKE_TIME);
			break;
		}
		if(door_guard_data.function_falg == 3)
		{
			door_guard_data.function_falg = 0;
			door_guard_data.key_lr_num = 0;
		}
		if(door_guard_data.lim_key_flag == 0)
		{
			lim_key_num();
		}
		if(door_guard_data.sg90_falg)
		{
			__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,SG90_TURN_1);
			door_guard_data.sg90_turn_time++;
			if(door_guard_data.sg90_turn_time >= SG90_TIME)
			{
				__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,SG90_TURN_2);
				door_guard_data.sg90_falg = 0;
			}
		}
    osDelay(KEY_DESHAKE_TIME);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

串口任务

	switch(door_guard_data.function_falg)
		{
			case 1://检测
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command0,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0x12)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0) door_guard_data.sg90_falg = 1;
					door_guard_data.asr_command[1] = door_guard_data.module_result;
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
					osDelay(500);
				}
				break;
			case 2://录入
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command1,10,100);
				osDelay(1500);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0x13)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x02;
					}
					else if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x04;
					}
					else
					{
						door_guard_data.asr_command[1] = door_guard_data.module_result;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 7://删除单个
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				door_guard_data.module_command2[8] = door_guard_data.key_ud_num;
				HAL_UART_Transmit(&huart2,door_guard_data.module_command2,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0x20)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x05;
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x0B;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 5://删除全部
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command3,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0x21)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x05;
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x10;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 8://关闭显示
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command10,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0xC1)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x11;
						OLED_ShowString(90,2,(u8*)"OFF   ",12);
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x12;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 9://关闭背光
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command9,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0xC0)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x11;
						OLED_ShowString(90,4,(u8*)"OFF  ",12);
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x12;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 10://开启白光
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command6,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0xC2)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x11;
						OLED_ShowString(90,6,(u8*)"ON ",12);
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x12;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 11://开启显示
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command5,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0xC1)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x11;
						OLED_ShowString(90,2,(u8*)"ON ",12);
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x12;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 12://打开背光
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command4,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0xC0)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x11;
						OLED_ShowString(90,4,(u8*)"ON ",12);
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x12;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
			case 13://关闭白光
				door_guard_data.function_falg = 0;
				memset(Usart2_Rx,0,sizeof(Usart2_Rx));
				HAL_UART_Transmit(&huart2,door_guard_data.module_command11,10,100);
				osDelay(1000);
				if(Usart2_Rx[0]==MODULE_FH1&&Usart2_Rx[1] == MODULE_FH2 && Usart2_Rx[7] == 0xC2)
				{
					door_guard_data.module_result = Usart2_Rx[8];
					if(door_guard_data.module_result == 0)
					{
						door_guard_data.asr_command[1] = 0x11;
						OLED_ShowString(90,6,(u8*)"OFF  ",12);
					}
					if(door_guard_data.module_result == 1)
					{
						door_guard_data.asr_command[1] = 0x12;
					}
					HAL_UART_Transmit(&huart1,door_guard_data.asr_command,3,100);
				}
				break;
		}
    osDelay(100);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200

OLED显示任务

if(door_guard_data.key_lr_num == 1 )//处于第一界面
		{
			oled_flag = 0;
			if(oled_flag1)
			{
				oled_flag1 = 0;
				MY_OLED_Clear();
				OLED_ShowString(30,6,(u8*)"     ",16);
			}
			switch(door_guard_data.key_ud_num)
			{
				case 1:
					OLED_Detect();
					break;
				case 2:
					OLED_Input();
					break;
				case 3:
					OLED_Delete();
					break;
			}
		}
		if(door_guard_data.key_lr_num  == 0)//处于第0界面
		{
			oled_flag1 = 1;
			if(oled_flag == 0)
			{
				oled_flag = 1;
				MY_OLED_Clear();
			}
			if(door_guard_data.lim_key_flag == 0)
			{
				lim_key_num1();
				switch(door_guard_data.key_ud_num)
				{
					case 0x02:
						OLED_Delete_All();
						break;
					case 0x03:
						OLED_Delete_One();
						break;
				}
			}
			if(door_guard_data.function_falg == 5)
			{
				door_guard_data.key_lr_num  = 1;
			}
			if(door_guard_data.function_falg == 6)
			{
				door_guard_data.lim_key_flag = 1;
//				door_guard_data.key_ud_num = 1;
				OLED_ShowString(15,6,(u8*)"ID:",16);
				OLED_ShowNumber(50,6,door_guard_data.key_ud_num,2,16);
				if(door_guard_data.key_falg == 1)
				{
					door_guard_data.function_falg = 7;
					door_guard_data.key_lr_num  = 1;
					door_guard_data.key_falg = 0;
				}
			}
		}
		if(door_guard_data.key_lr_num  == 2)//处于第2界面
		{
			oled_flag1 = 1;
			if(oled_flag == 0)
			{
				OLED_ShowString(90,2,(u8*)"ON",12);
				OLED_ShowString(90,4,(u8*)"ON",12);
				OLED_ShowString(90,6,(u8*)"OFF",12);
				oled_flag = 1;
			}
			switch(door_guard_data.key_ud_num)
			{
				case 1:
					OLED_Display();
					if(door_guard_data.key_falg == 1)
					{
						door_guard_data.key_falg = 0;
						door_guard_data.module_control_falg[0] =	Negation_Var(door_guard_data.module_control_falg[0]);
						if(door_guard_data.module_control_falg[0])
						{
							door_guard_data.function_falg = 8;
						}
						else
						{
							door_guard_data.function_falg = 11;
						}
					}
					break;
				case 2:
					OLED_Backlight();
					if(door_guard_data.key_falg == 1)
					{
						door_guard_data.key_falg = 0;
						door_guard_data.module_control_falg[1] = Negation_Var(door_guard_data.module_control_falg[1]);
						if(door_guard_data.module_control_falg[1])
						{
							door_guard_data.function_falg = 9;
						}
						else
						{
							door_guard_data.function_falg = 12;
						}
					}
					break;
				case 3:
					OLED_Whitelight();
					if(door_guard_data.key_falg == 1)
					{
						door_guard_data.key_falg = 0;
						door_guard_data.module_control_falg[2] = Negation_Var(door_guard_data.module_control_falg[2]);
						if(door_guard_data.module_control_falg[2])
						{
							door_guard_data.function_falg = 10;
						}
						else
						{
							door_guard_data.function_falg = 13;
						}
					}
					break;
			}
		}
    osDelay(10);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124

成果展示

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/621631
推荐阅读
相关标签
  

闽ICP备14008679号