高职物联网页面切换

高职物联网页面切换

题目

使用一个LoRa模块完成LoRa模块上的屏幕输出控制并实现功能,使用提供的未完成工程进行开发。

任务要求:

Ø 通电后LED1、LED2灭,液晶屏显示如下信息:


主菜单  
K2.Formula 
K3.WIFI 
K4.QRCode  

Ø 当按下KEY2时,LED1亮,LED2灭并显示LXD数学公式,参数X为电流值,***表示公式:

Formula F:*************

Ø 当按下KEY3时,LED1灭,LED2亮并显示如下:

WIFI

img

Ø 当按下KEY4时,LED1亮,LED2亮并显示如下。

QRCode

img

Ø 能重复实现以上2~4的操作。

Ø 需调用封装的API实现。

分析

  • 题目很明白

代码

/**
  ******************************************************************************
  * File Name          : main.c
  * Description        : Main program body
  ******************************************************************************
  */
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"

uint8_t  State = 0;

uint8_t ZCD[][32] ={

0x00,0x08,0x08,0x08,0x08,0x08,0x09,0xFA,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x00,


0x04,0x04,0x44,0xC4,0x4F,0x44,0x44,0xC4,0x24,0x24,0x2F,0xB4,0x24,0x04,0x04,0x00,
0x40,0x44,0x24,0x24,0x15,0x0C,0x04,0xFE,0x04,0x0C,0x15,0x24,0x24,0x44,0x40,0x00,

0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,
0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,


};

uint8_t QC_Code[]={
/*--  ???????:D:\?????_?????\?????????.assets\QC Code.bmp  --*/
/*--  ??x??=48x48  --*/
0xAC,0xFF,0xFE,0xFE,0xFE,0xDE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,
0xFF,0xAC,0xFF,0xFF,0xFF,0xBD,0xFE,0x9F,0x9F,0xFF,0xFF,0xFE,0x8D,0x8D,0xAC,0xFF,
0xFE,0xFE,0xDE,0xDE,0xFF,0xFF,0xFE,0xFF,0xFF,0xFE,0xDF,0xFF,0xFE,0xFE,0xFF,0xD2,
0xB7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,
0xFF,0x43,0xFF,0xFF,0xFF,0xFF,0xBF,0xBF,0xBF,0xFF,0xFF,0xFF,0xF7,0xF7,0xC9,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC5,
0x5E,0x13,0xAF,0xAF,0xF3,0xFD,0xFD,0xFF,0xFF,0xFF,0xF3,0xFD,0xF1,0xF1,0x7D,0xFF,
0xFD,0xF1,0xFF,0xFF,0xF3,0x7F,0xFF,0x5D,0x5D,0xFF,0xFF,0xFF,0x5F,0x5F,0xFE,0x71,
0x7D,0x9F,0xBD,0xBD,0xFD,0x1F,0xDF,0xFF,0xFF,0xFD,0xFF,0xFF,0xDF,0xDF,0xFD,0x31,
0x88,0xFE,0xFF,0xFF,0xFF,0xBB,0xBD,0xBF,0xBF,0xFF,0xC7,0x8B,0xBF,0xBF,0xB2,0xBF,
0xBF,0x77,0xFB,0xFB,0xFF,0xFE,0xFF,0xF2,0xF2,0xFF,0xFF,0xFF,0xBE,0xBE,0xFF,0xBE,
0xFA,0xF7,0xFD,0xFD,0xFB,0xFE,0xCF,0xFF,0xFF,0xFB,0xFF,0xBF,0x77,0x77,0xB7,0x84,
0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,
0xFF,0xDE,0xED,0xED,0xD0,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xEF,0xFF,
0x7C,0xFF,0xFF,0xFF,0xBF,0xFE,0xEE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,0xFE,0xDE,
0x45,0x7F,0x7F,0x7F,0xFF,0x7B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x7F,
0xFF,0x7D,0x03,0x03,0xFD,0x7F,0xFD,0x4F,0x4F,0x8D,0x8F,0x7F,0x7D,0x7D,0xFF,0xFD,
0x36,0x7B,0xFF,0xFF,0x7F,0x7F,0x3D,0xFF,0xFF,0x7F,0xFB,0xFF,0xCF,0xCF,0x0F,0x75,
};

uint8_t wifi[] = {
/*--  ???????:D:\?????_?????\?????????.assets\wifi.bmp  --*/
/*--  ??x??=48x48  --*/
0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xE0,0xE0,0xF0,0xF8,0xF8,0xF8,0xFE,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0xFE,0xF8,0xF8,0xF8,0xF0,0xE0,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF8,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x1F,0x8F,0x8F,0x87,
0xE7,0xE7,0xE7,0xE7,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE7,0xE7,0xE7,0x87,0x87,0x8F,
0x8F,0x1F,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF8,0xF0,0x00,0x00,
0x00,0x01,0x0F,0x0F,0x0F,0x0F,0x0F,0xE7,0xF1,0xF0,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,
0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFE,0xFE,0xF8,0xF1,0xE1,0x0F,0x0F,0x0F,0x0F,0x0F,0x07,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x0F,0x0F,0x87,0xF1,0xF0,0xF8,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xF8,0xF8,0xF1,
0xF1,0x87,0x0F,0x0F,0x0F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x1F,
0x1F,0x1F,0x1F,0x0F,0x8F,0x87,0xE7,0xE7,0x87,0x8F,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,
0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x0F,0x7F,0x7F,0x7F,0x7F,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

void KEY_STATE();

/**********************************************************************************************
*º¯Êý£ºvoid Init( void )
*¹¦ÄÜ£ºÆ½Ì¨³õʼ»¯
*ÊäÈ룺ÎÞ
*Êä³ö£ºÎÞ
*ÌØÊâ˵Ã÷£ºÎÞ
**********************************************************************************************/
void Init() {
    // ¿ª·¢°åƽ̨³õʼ»¯
    BoardInitMcu();
    BoardInitPeriph();
    keys_init();//°´¼ü³õʼ»¯
    setTimer2Callback(Time2Handler);
    Tim2McuInit(1);//¶¨Ê±Æ÷³õʼ»¯£¬ÉèÖö¨Ê±ÖжÏ1msÖжÏÒ»´Î
	 
}

/**********************************************************************************************
*º¯Êý£ºvoid KeyDownHandler( void )
*¹¦ÄÜ£º°´Å¥Ê¼þ¼àÌý
*ÊäÈ룺ÎÞ
*Êä³ö£ºÎÞ
*ÌØÊâ˵Ã÷£ºÎÞ
**********************************************************************************************/
void KeyDownHandler(void) {
	
	if(isKey2Pressed()){
		OLED_Clear();
		resetKey2();
		State = 1;
		KEY_STATE();
	}
	
	if(isKey3Pressed()){
		OLED_Clear();
		resetKey3();
		State = 2;
		KEY_STATE();
	}
	if(isKey4Pressed()){
		OLED_Clear();
		resetKey4();
		State = 3;
		KEY_STATE();
	}
	
}

/**********************************************************************************************
*º¯Êý£ºvoid handlerPre10Ms( void )
*¹¦ÄÜ£º10ºÁÃëÑ­»·
*ÊäÈ룺ÎÞ
*Êä³ö£ºÎÞ
*ÌØÊâ˵Ã÷£ºÑ­»·´¦Àí×Üʱ³¤300ms
**********************************************************************************************/
void handlerPre10Ms(void) {
    for (int delay = 0; delay < 30; delay++) {
        HAL_Delay(10);
        
    }
}

void KEY_STATE(){
	if(State == 0){
		OLED_ShowCHineseArray(40,0,ZCD[0]);OLED_ShowCHineseArray(40+16,0,ZCD[1]);OLED_ShowCHineseArray(40+32,0,ZCD[2]);
		OLED_ShowString(16,2,"K2.Formula ");OLED_ShowString(16,4,"K3.WIFI ");OLED_ShowString(16,6,"K4.QRCode  ");
		}
	if(State == 1){
		OLED_ShowString(32,0,"Formula ");
		OLED_ShowString(0,3,"F:*************");
		}
	if(State == 2){
		OLED_ShowString(48,0,"WIFI");
		OLED_DrawBMP(40,2,48,48,wifi);
	}
		if(State == 3){
		OLED_ShowString(40,0,"QRCode");
		OLED_DrawBMP(40,2,48,48,QC_Code);
	}
	
}

/**
 * Main application entry point.
 */
int main( void )
{
    Init();
	OLED_Init();
	OLED_Clear();
	KEY_STATE();
    while( 1 )
    {
			KeyDownHandler();
    }
}

posted @ 2022-10-17 10:18  ~内个臣呐~  阅读(316)  评论(0)    收藏  举报