一,软硬件准备
1.需要的软件:CubeMX,SSCOM串口调试助手,(如需使用LED屏幕显示文字,需要下载pctolLCD2002 字模转换器)
2.硬件:温度传感器dht11,烟雾报警器mq2,stm32板。
二、项目要求
项目名称:基于
NB-IOT
的智能充电桩
项目开发环境:
STM32CubeMX keil_arm
开发语言:
C
语言
使用
HAL
库
硬件描述:
STM32F051K8
芯片
Cortex-m0
处理器
1.4
寸液晶屏
可
组合:温湿度
DHT11
、可燃气体
MQ2
传感器、继电器、
led
灯、风扇(蜂鸣器)、人体红外等模块
功能描述:
1
、按下左键自动模拟充电状态(定时器),充电完成自动停止,并且显示状态(灯光)、lcd
显示;
2
、按下右键显示温湿度的值,温度值超过
28
度自动报警(温度显示变红),并打开风扇降温(lcd
显示);
3
、按下中间按键显示可燃气体的值,超过设定的阈值(自己设)自动报警(可加灯光预警),并且打开风扇;
4
、按下上键盘显示项目信息
:
项目完成日期等
5
、按下下键:关闭所有灯光和充电状态,所有传感器的采集,执行器的工作,进入休眠模式。
三、cubemx设置
选择自己的芯片后,打开所需的串口,可以参考以下接口,在模仿时所需要看手册。
需要注意的几个设置:
1.如果使用烟雾传感器就打开两个通道:
2.采用led采用推挽输出
3.定时器的设置,14用于温度传感器
4.用于模拟充电状态的定时器选用htim3
5.ADC选用DMA方式
四、主要代码部分
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2024 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "adc.h"
#include "dma.h"
#include "rtc.h"
#include "spi.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd.h"
#include "stdio.h"
#include "dma.h"
#include "string.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
//qingping
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
// 路(0) 子(1) 超(2)
//数组定义区:充电状态显示
//状态一:
uint8_t charge1[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/
};
//状态二:
uint8_t charge2[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/
};
//状态三:
uint8_t charge3[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"□",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/
};
//状态四:
uint8_t charge4[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",4*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"□",5*/
};
//状态五:
uint8_t charge5[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xFF,0x7F,0x00,0x00,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x88,0x08,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xFE,0x3F},/*"量",1*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"■",4*/
{0x00,0x00,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,0x00,0x00,0x00,0x00}/*"■",5*/
};
uint8_t humm[][32]={
{0x01,0x00,0xFA,0x03,0x08,0x02,0xF8,0x03,0x09,0x02,0xFA,0x03,0xA0,0x00,0xA4,0x04,0xA8,0x02,0xA2,0x00,0xA1,0x00,0xFC,0x07},/*"湿",0*/
{0x40,0x00,0xFE,0x07,0x12,0x01,0xFE,0x07,0x12,0x01,0xF2,0x01,0x02,0x00,0xFA,0x03,0x12,0x02,0x22,0x01,0xC2,0x00,0x39,0x07},/*"度",1*/
{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00}/*":",2*/
};
uint8_t temm[][32]={
{0xF0,0x01,0x11,0x01,0xF2,0x01,0x10,0x01,0xF0,0x01,0x01,0x00,0xFA,0x03,0xA8,0x02,0xAC,0x02,0xAA,0x02,0xA9,0x02,0xFC,0x07},/*"温",0*/
{0x40,0x00,0xFE,0x07,0x12,0x01,0xFE,0x07,0x12,0x01,0xF2,0x01,0x02,0x00,0xFA,0x03,0x12,0x02,0x22,0x01,0xC2,0x00,0x39,0x07},/*"度",1*/
{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00}/*":",2*/
};
uint8_t gas666[][32]={
{0x00,0x00,0xFC,0x0F,0x00,0x08,0x00,0x08,0xF8,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0xF8,0x09,0x08,0x08,0x00,0x08,0x00,0x0E},/*"可",0*/
{0x24,0x01,0x24,0x05,0x6C,0x01,0xD5,0x07,0x75,0x01,0x4D,0x01,0xB5,0x02,0xA4,0x02,0x54,0x04,0x0A,0x00,0x5A,0x05,0x51,0x05},/*"燃",1*/
{0x04,0x00,0xFC,0x07,0x02,0x00,0xFD,0x03,0x00,0x00,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x06,0x00,0x04},/*"气",2*/
{0x44,0x00,0x44,0x00,0x42,0x00,0xFA,0x03,0x43,0x00,0xE2,0x00,0x52,0x01,0x4A,0x02,0x46,0x04,0xF2,0x01,0x42,0x00,0x42,0x00},/*"体",3*/
{0x44,0x00,0xF4,0x07,0x42,0x00,0xF2,0x03,0x13,0x02,0xF2,0x03,0x12,0x02,0xF2,0x03,0x12,0x02,0xF2,0x03,0x12,0x02,0xFA,0x07}/*"值",4*/
};
uint8_t fan3[][32]={
{0x00,0x00,0xFE,0x01,0x02,0x01,0x42,0x01,0x46,0x01,0x2A,0x01,0x12,0x01,0x12,0x01,0x2A,0x05,0x46,0x05,0x02,0x06,0x01,0x04},/*"风",0*/
{0x40,0x00,0xFE,0x07,0x02,0x04,0xFE,0x07,0x02,0x00,0xBE,0x07,0x22,0x04,0x2A,0x05,0x32,0x06,0x2A,0x05,0xA6,0x04,0x31,0x06},/*"扇",1*/
{0x00,0x00,0xFE,0x03,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x04,0x02,0x04,0xFC,0x07},/*"已",2*/
{0x04,0x00,0xE4,0x07,0x04,0x01,0x1F,0x01,0x04,0x01,0x04,0x01,0x1C,0x01,0x07,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0xC6,0x01},/*"打",3*/
{0x00,0x00,0xFE,0x03,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xFF,0x07,0x88,0x00,0x88,0x00,0x84,0x00,0x84,0x00,0x82,0x00}/*"开",4*/
};
uint8_t group3[][32]={
{0x08,0x01,0x78,0x0F,0xA4,0x04,0x00,0x00,0xF8,0x0F,0x80,0x08,0xF8,0x0F,0x88,0x00,0xF8,0x0F,0xA0,0x00,0x90,0x00,0x8C,0x0C},/*"第",0*/
{0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xF0,0x07,0x1F,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x04,0x10,0x04,0xE0,0x07},/*"七",1*/
{0x04,0x00,0xE4,0x03,0x22,0x02,0x29,0x02,0xE7,0x03,0x24,0x02,0x22,0x02,0xEF,0x03,0x20,0x02,0x2C,0x02,0x23,0x02,0xF0,0x07}/*"组",2*/
};
uint8_t date3[][32]={
{0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00},/*"二",0*/
{0x00,0x00,0x70,0x00,0x8C,0x01,0x02,0x02,0x02,0x02,0x01,0x04,0x01,0x04,0x01,0x04,0x02,0x02,0x02,0x02,0x8C,0x01,0x70,0x00},/*"〇",1*/
{0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00},/*"二",2*/
{0x00,0x00,0xFE,0x07,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x04,0x0A,0x07,0x06,0x04,0x02,0x04,0xFE,0x07,0x02,0x04},/*"四",3*/
{0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xF0,0x07,0x1F,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x04,0x10,0x04,0xE0,0x07},/*"七",4*/
{0x00,0x00,0xFC,0x03,0x04,0x02,0x04,0x02,0xFC,0x03,0x04,0x02,0x04,0x02,0xFC,0x03,0x04,0x02,0x02,0x02,0x02,0x02,0x81,0x03},/*"月",5*/
{0x00,0x00,0xFF,0x03,0x10,0x00,0x10,0x00,0x10,0x00,0xFE,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0x04,0x01,0x04,0x01,0xFF,0x07},/*"五",6*/
{0x00,0x00,0xFE,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x02}/*"日",7*/
};
uint8_t stop1[][32]={
{0x08,0x01,0x08,0x02,0xE8,0x3F,0x04,0x00,0xC4,0x1F,0x46,0x10,0xC6,0x1F,0x05,0x00,0xF4,0x7F,0x14,0x40,0xC4,0x1F,0x04,0x02,0x04,0x02,0x04,0x02,0x84,0x02,0x04,0x01},/*"停",0*/
{0x08,0x00,0x88,0x0F,0x88,0x08,0x88,0x08,0xBF,0x08,0x88,0x08,0x8C,0x08,0x9C,0x08,0xAA,0x08,0xAA,0x08,0x89,0x08,0x88,0x48,0x88,0x48,0x48,0x48,0x48,0x70,0x28,0x00},/*"机",1*/
{0x10,0x02,0x10,0x12,0x10,0x22,0x12,0x22,0x14,0x02,0xF4,0x7F,0x10,0x02,0x10,0x02,0x18,0x02,0x14,0x05,0x13,0x05,0x10,0x09,0x90,0x08,0x90,0x10,0x50,0x20,0x30,0x40},/*"状",2*/
{0x80,0x00,0x80,0x00,0xFE,0x3F,0x80,0x00,0x40,0x01,0x20,0x02,0x50,0x04,0x8C,0x18,0x03,0x60,0x80,0x00,0x10,0x11,0x12,0x21,0x12,0x48,0x12,0x48,0xE1,0x0F,0x00,0x00}/*"态",3*/
};
uint8_t topic1[][32]={
{0x10,0x04,0x10,0x04,0xFE,0x3F,0x10,0x04,0xF0,0x07,0x10,0x04,0xF0,0x07,0x10,0x04,0xFF,0x7F,0x10,0x04,0x88,0x08,0x84,0x10,0xF3,0x67,0x80,0x00,0x80,0x00,0xFC,0x1F},/*"基",0*/
{0x00,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00},/*"于",1*/
{0x08,0x01,0x08,0x01,0x0A,0x01,0x0A,0x3F,0xBE,0x2A,0x4A,0x2A,0x09,0x2A,0x08,0x29,0x38,0x29,0x8F,0x24,0x4A,0x24,0x08,0x22,0x08,0x22,0x08,0x21,0x88,0x14,0x08,0x08},/*"物",2*/
{0x00,0x11,0x3F,0x12,0x12,0x0A,0x12,0x00,0x9E,0x3F,0x12,0x04,0x12,0x04,0x1E,0x04,0xD2,0x7F,0x12,0x04,0x32,0x0A,0x1E,0x0A,0x13,0x11,0x10,0x11,0x90,0x20,0x50,0x40},/*"联",3*/
{0x00,0x00,0xFE,0x3F,0x02,0x20,0x02,0x20,0x42,0x28,0x4A,0x29,0x52,0x2A,0x22,0x24,0x22,0x24,0x52,0x2A,0x52,0x2A,0x4A,0x29,0x86,0x20,0x02,0x20,0x02,0x28,0x02,0x10},/*"网",4*/
{0x04,0x00,0x7C,0x3E,0x12,0x22,0x10,0x22,0xFF,0x22,0x28,0x22,0x44,0x3E,0x02,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08},/*"智",0*/
{0x08,0x02,0x24,0x22,0x42,0x12,0xFF,0x0E,0x80,0x02,0x00,0x42,0x7E,0x42,0x42,0x7C,0x42,0x00,0x7E,0x22,0x42,0x12,0x42,0x0E,0x7E,0x02,0x42,0x42,0x52,0x42,0x22,0x7C},/*"能",1*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",2*/
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",3*/
{0x08,0x04,0x08,0x08,0x08,0x08,0x88,0x7F,0xBF,0x00,0x88,0x08,0x8C,0x08,0x9C,0x08,0xAA,0x3E,0xAA,0x08,0x89,0x08,0x88,0x08,0x88,0x08,0x48,0x08,0x48,0x7F,0x28,0x00}/*"桩",4*/
};
uint8_t upup[][32]={
{0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xC0,0x1F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xFF,0x7F,0x00,0x00},/*"上",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x08,0x00,0x88,0x1F,0x84,0x10,0x84,0x10,0x92,0x10,0x9F,0x1F,0x88,0x10,0x84,0x10,0x82,0x10,0x9F,0x1F,0x82,0x10,0x80,0x10,0x98,0x10,0x87,0x10,0xE2,0x7F,0x00,0x00},/*"组",2*/
{0x00,0x20,0xFE,0x20,0x82,0x20,0x82,0x24,0x82,0x24,0xFE,0x24,0x08,0x24,0x08,0x24,0xFF,0x24,0x88,0x24,0x88,0x24,0x88,0x24,0x84,0x20,0x84,0x20,0x52,0x28,0x21,0x10},/*"别",3*/
{0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08},/*"日",4*/
{0x44,0x00,0x44,0x3E,0xFE,0x22,0x44,0x22,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,0x22,0x7C,0x22,0x44,0x3E,0x44,0x22,0xFF,0x22,0x20,0x21,0x44,0x21,0x82,0x28,0x41,0x10}/*"期",5*/
};
uint8_t left1[][32]={
{0x40,0x00,0x40,0x00,0x40,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0xF0,0x1F,0x08,0x01,0x08,0x01,0x04,0x01,0x02,0x01,0x01,0x01,0xFC,0x7F,0x00,0x00},/*"左",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",2*/
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",3*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",4*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",5*/
};
uint8_t right1[][32]={
{0x40,0x00,0x40,0x00,0x40,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0xF8,0x1F,0x14,0x10,0x12,0x10,0x11,0x10,0x10,0x10,0x10,0x10,0xF0,0x1F,0x10,0x10},/*"右",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x00,0x20,0xE4,0x23,0x28,0x22,0x28,0x2A,0xA1,0x2A,0xA2,0x2A,0xA2,0x2A,0xA8,0x2A,0xA8,0x2A,0xA4,0x2A,0xA7,0x2A,0x84,0x20,0x44,0x21,0x44,0x22,0x24,0x28,0x10,0x10},/*"测",2*/
{0x00,0x14,0x04,0x24,0x08,0x24,0x08,0x04,0xE0,0x7F,0x00,0x04,0x0F,0x04,0xE8,0x07,0x88,0x04,0x88,0x08,0x88,0x08,0xA8,0x08,0x98,0x53,0xE8,0x50,0x40,0x60,0x00,0x40},/*"试",3*/
{0x00,0x00,0xC4,0x1F,0x48,0x10,0x48,0x10,0xC1,0x1F,0x42,0x10,0x42,0x10,0xC8,0x1F,0x08,0x00,0xE4,0x3F,0x27,0x25,0x24,0x25,0x24,0x25,0x24,0x25,0xF4,0x7F,0x00,0x00},/*"温",4*/
{0x80,0x00,0x00,0x01,0xFC,0x7F,0x44,0x04,0x44,0x04,0xFC,0x3F,0x44,0x04,0x44,0x04,0xC4,0x07,0x04,0x00,0xF4,0x0F,0x24,0x08,0x42,0x04,0x82,0x03,0x61,0x0C,0x1C,0x70}/*"度",5*/
};
uint8_t down1[][32]={
{0x00,0x00,0xFF,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00},/*"下",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x08,0x01,0x08,0x02,0xE8,0x3F,0x04,0x00,0xC4,0x1F,0x46,0x10,0xC6,0x1F,0x05,0x00,0xF4,0x7F,0x14,0x40,0xC4,0x1F,0x04,0x02,0x04,0x02,0x04,0x02,0x84,0x02,0x04,0x01},/*"停",2*/
{0x08,0x00,0x88,0x0F,0x88,0x08,0x88,0x08,0xBF,0x08,0x88,0x08,0x8C,0x08,0x9C,0x08,0xAA,0x08,0xAA,0x08,0x89,0x08,0x88,0x48,0x88,0x48,0x48,0x48,0x48,0x70,0x28,0x00},/*"机",3*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",4*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",5*/
};
uint8_t middle[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00},/*"中",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00},/*":",1*/
{0x08,0x02,0x08,0x02,0x08,0x05,0x08,0x05,0xBF,0x08,0x48,0x10,0xAC,0x6F,0x1C,0x00,0x2A,0x11,0x0A,0x12,0x49,0x12,0x88,0x0A,0x88,0x08,0x08,0x04,0xE8,0x7F,0x08,0x00},/*"检",2*/
{0x00,0x20,0xE4,0x23,0x28,0x22,0x28,0x2A,0xA1,0x2A,0xA2,0x2A,0xA2,0x2A,0xA8,0x2A,0xA8,0x2A,0xA4,0x2A,0xA7,0x2A,0x84,0x20,0x44,0x21,0x44,0x22,0x24,0x28,0x10,0x10},/*"测",3*/
{0x08,0x00,0xC8,0x7F,0x48,0x40,0x68,0x44,0x5A,0x44,0x4A,0x44,0xCA,0x7F,0x49,0x44,0x48,0x44,0x48,0x4A,0x48,0x52,0x54,0x51,0xE4,0x40,0x42,0x40,0xC2,0x7F,0x41,0x40},/*"烟",4*/
{0xFC,0x1F,0x80,0x00,0xFE,0x7F,0x82,0x40,0xB9,0x2E,0x80,0x00,0xB8,0x0E,0x20,0x00,0xF0,0x07,0x28,0x02,0xC0,0x01,0x38,0x0E,0x47,0x70,0xF0,0x07,0x20,0x04,0x18,0x06}/*"雾",5*/
};
uint8_t quick1[][32]={
{0x08,0x02,0x08,0x02,0x08,0x02,0xC8,0x1F,0x18,0x12,0x2A,0x12,0x0A,0x12,0x0A,0x12,0xE9,0x7F,0x08,0x02,0x08,0x05,0x08,0x05,0x88,0x08,0x88,0x08,0x48,0x10,0x28,0x60},/*"快",0*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",1*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",2*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",3*/
};
uint8_t slow1[][32]={
{0xC4,0x1F,0x44,0x10,0xC4,0x1F,0x4C,0x10,0xD5,0x1F,0x05,0x00,0xE5,0x3F,0x25,0x25,0x24,0x25,0xE4,0x3F,0x04,0x00,0xC4,0x1F,0x84,0x08,0x04,0x07,0xC4,0x18,0x34,0x60},/*"慢",0*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",1*/
{0x88,0x08,0x88,0x08,0xE8,0x3F,0x88,0x08,0x3F,0x00,0xC8,0x1F,0x4C,0x10,0xDC,0x1F,0x6A,0x10,0xCA,0x1F,0x09,0x02,0xE8,0x3F,0x08,0x05,0x88,0x08,0x48,0x10,0x28,0x60},/*"模",2*/
{0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40}/*"式",3*/
};
uint8_t over1[][32]={
{0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F},/*"电",0*/
{0x00,0x00,0xFC,0x0F,0x00,0x08,0x00,0x08,0x00,0x08,0x04,0x08,0x04,0x08,0xFC,0x0F,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x20,0x04,0x20,0x04,0x20,0xF8,0x3F,0x00,0x00},/*"已",1*/
{0x40,0x00,0x80,0x00,0xFF,0x7F,0x20,0x00,0x20,0x00,0x10,0x04,0x08,0x08,0xFC,0x1F,0x20,0x12,0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x22,0x10,0x22,0x08,0x22,0x06,0x3C},/*"充",2*/
{0x80,0x10,0x84,0x10,0xE8,0x7F,0x88,0x10,0x01,0x00,0xE2,0x7F,0x02,0x09,0x08,0x09,0xE8,0x7F,0x24,0x49,0x27,0x49,0xA4,0x56,0x64,0x62,0x24,0x40,0x24,0x50,0x20,0x20}/*"满",3*/
};
void dht_read(void);
int fputc(int c, FILE *steam)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&c, 1, HAL_MAX_DELAY);
return c;
}
uint8_t key_flag = 0;
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_8)
{
key_flag = 1;
}
}
//数值存放
uint8_t tim3_flag = 0;//定时器数值
uint32_t pdata[2] = {0};//按键数值
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
tim3_flag=tim3_flag+1;
}
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_SPI1_Init();
MX_TIM14_Init();
MX_USART1_UART_Init();
MX_TIM3_Init();
MX_ADC1_Init();
MX_RTC_Init();
/* USER CODE BEGIN 2 */
printf("key");
lcd_init();
lcd_region(0,127,0,127);
lcd_clear(0xFFDF);
//主界面
for(int i=5,x=10;i<10;i++)
{
lcd_drawtext16x16 (x,10,0xD8A7,0xFFDF,topic1 [i]);
x+=15;}
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xBAB3,0xFFDF,upup[i]);
x+=15;}
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,50,0xBAB3,0xFFDF,down1 [i]);
x+=15;}
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,middle [i]);
x+=15;}
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,90,0xBAB3,0xFFDF,left1 [i]);
x+=15;}
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,110,0xBAB3,0xFFDF,right1 [i]);
x+=15;}
//dht_read();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(key_flag ==1){
HAL_ADC_Start_DMA(&hadc1,pdata,2);
HAL_Delay(1000);
printf("key_value:%d\n",pdata[0]);
printf("gas_value:%d\n",pdata[1]);
HAL_Delay(1000);
switch(pdata[0]/100)
{
case 22:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
lcd_clear(0xFFDF);
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,upup[i]);
x+=15;}
HAL_Delay(500);
printf("up pressed\n");
lcd_clear(0xFFDF);
for(int i=0,x=10;i<4;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,date3[i]);
x+=15;
}
for(int i=4,x=10;i<8;i++)
{
lcd_drawtext16x16 (x,50,0xD8A7,0xFFDF,date3[i]);
x+=15;
}
for(int i=0,x=10;i<3;i++)
{
lcd_drawtext16x16 (x,70,0xD8A7,0xFFDF,group3[i]);
x+=15;
}
break;
case 6://下键,休眠
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
lcd_clear(0xFFDF);
printf("down pressed\n");
//执行任务,第一个灯亮,两秒后灯灭
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_Delay(2000);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
//第二个灯亮,进入睡眠状态
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_Delay(2000);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,down1 [i]);
x+=15;}
HAL_Delay(500);
lcd_clear(0x07E0);
for(int i=0,x=10;i<4;i++)
{
lcd_drawtext16x16 (x,70,0xD8A7,0x07E0,stop1[i]);
x+=25;
}
SysTick->CTRL &=~SysTick_CTRL_TICKINT_Msk|SysTick_CTRL_ENABLE_Msk;
HAL_PWR_EnterSTOPMode(0,PWR_SLEEPENTRY_WFI);
break;
case 16:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
lcd_clear(0xFFDF);
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,left1 [i]);
x+=15;}
HAL_Delay(500);
lcd_clear(0xFFDF);
HAL_TIM_Base_Start_IT(&htim3);
tim3_flag = 0;
for(int i=0;tim3_flag<5;i++){
printf ("%d",tim3_flag);
if(tim3_flag==0){
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,charge1[i]);
x+=15;
}
for(int i=0,x=10;i<4;i++)
{
lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,quick1 [i]);
x+=15;}
}
if(tim3_flag==1){
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,charge2[i]);
x+=15;
}
for(int i=0,x=10;i<4;i++)
{
lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,quick1 [i]);
x+=15;}
}
if(tim3_flag==2){
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xF420,0xFFDF,charge3[i]);
x+=15;
}
for(int i=0,x=10;i<4;i++)
{
lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,quick1 [i]);
x+=15;}
}
if(tim3_flag==3){
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0x07E0,0xFFDF,charge4[i]);
x+=15;
}
for(int i=0,x=10;i<4;i++)
{
lcd_drawtext16x16 (x,70,0xBAB3,0xFFDF,slow1 [i]);
x+=15;}
}
if(tim3_flag==4){
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0x07E0,0xFFDF,charge5[i]);
x+=15;
}
for(int i=0,x=10;i<4;i++)
{
HAL_Delay(1000);
lcd_drawtext16x16 (x,70,0x07E0,0xFFDF,over1 [i]);
x+=15;}
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
}
}
break;
case 30:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
lcd_clear(0xFFDF);
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,right1 [i]);
x+=15;}
HAL_Delay(500);
lcd_clear(0xFFDF);
lcd_drawtext16x16 (10,55,0x4416,0xFFDF,humm[0]);
lcd_drawtext16x16 (25,55,0x4416,0xFFDF,humm[1]);
//lcd_drawtext16x16 (30,50,0x4416,0xFFDF,humm[2]);
lcd_drawtext16x16 (10,85,0x4416,0xFFDF,temm[0]);
lcd_drawtext16x16 (25,85,0x4416,0xFFDF,temm[1]);
//lcd_drawtext16x16 (30,80,0x4416,0xFFDF,temm[2]);
HAL_TIM_Base_Start_IT(&htim14);
for(int i=0;i<6;i++)
{
dht_read();
HAL_Delay(2000);
}
break;
//按下左键,显示左键被按下,按下左键自动模拟充电状态(定时器),充电完成自动停止,并且显示状态(灯光)、lcd显示
case 26://中间
lcd_clear(0xFFDF);
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,middle [i]);
x+=15;}
HAL_Delay(500);
for(int i=0;i<10;i++){
lcd_clear(0xFFDF);
printf("gas_value:%d\n",pdata[1]);
int a4=pdata[1]/1000;
int b4=(pdata[1]%1000)/100;
int c4=(pdata[1]%100)/10;
int d4=pdata[1]%10;
for(int i=0,x=10;i<2;i++)
{
lcd_drawtext16x16 (x,10,0x019F,0xFFDF,gas666[i]);
x+=15;
}
if((b4>=4)|(a4>0)){
for(int i=0,x=10;i<5;i++)
{
lcd_drawnum(50,50,0xD8A7,0xFFDF,a4);
lcd_drawnum(70,50,0xD8A7,0xFFDF,b4);
lcd_drawnum(90,50,0xD8A7,0xFFDF,c4);
lcd_drawnum(110,50,0xD8A7,0xFFDF,d4);
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,fan3[i]);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
x+=15;
}
}
else{
lcd_drawnum(50,50,0x019F,0xFFDF,a4);
lcd_drawnum(70,50,0x019F,0xFFDF,b4);
lcd_drawnum(90,50,0x019F,0xFFDF,c4);
lcd_drawnum(110,50,0x019F,0xFFDF,d4);
}
HAL_Delay(1500);
}
break;
}
}
key_flag =0;
}
/* USER CODE END 3 */
}
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
/** Configure the main internal regulator output voltage
*/
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
/** Initializes the peripherals clocks
*/
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
|RCC_PERIPHCLK_ADC;
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK;
PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
}
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
{
}
/* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t *file, uint32_t line)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
调用的其他函数,温度传感器的
#include "stdint.h"
#include "main.h"
#include "stdio.h"
#include "lcd.h"
void delay_us(uint8_t time) //unsigned char
{
TIM14-> CNT = 0 ;
while (TIM14-> CNT < time ) ;
}
uint8_t fan1[][32]={
{0x00,0x00,0xFE,0x01,0x02,0x01,0x42,0x01,0x46,0x01,0x2A,0x01,0x12,0x01,0x12,0x01,0x2A,0x05,0x46,0x05,0x02,0x06,0x01,0x04},/*"风",0*/
{0x40,0x00,0xFE,0x07,0x02,0x04,0xFE,0x07,0x02,0x00,0xBE,0x07,0x22,0x04,0x2A,0x05,0x32,0x06,0x2A,0x05,0xA6,0x04,0x31,0x06},/*"扇",1*/
{0x00,0x00,0xFE,0x03,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x04,0x02,0x04,0xFC,0x07},/*"已",2*/
{0x04,0x00,0xE4,0x07,0x04,0x01,0x1F,0x01,0x04,0x01,0x04,0x01,0x1C,0x01,0x07,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0xC6,0x01},/*"打",3*/
{0x00,0x00,0xFE,0x03,0x88,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xFF,0x07,0x88,0x00,0x88,0x00,0x84,0x00,0x84,0x00,0x82,0x00}/*"开",4*/
};
uint8_t gas3[][32]={
{0x08,0x02,0x08,0x02,0x08,0x05,0x08,0x05,0xBF,0x08,0x48,0x10,0xAC,0x6F,0x1C,0x00,0x2A,0x11,0x0A,0x12,0x49,0x12,0x88,0x0A,0x88,0x08,0x08,0x04,0xE8,0x7F,0x08,0x00},/*"检",0*/
{0x00,0x20,0xE4,0x23,0x28,0x22,0x28,0x2A,0xA1,0x2A,0xA2,0x2A,0xA2,0x2A,0xA8,0x2A,0xA8,0x2A,0xA4,0x2A,0xA7,0x2A,0x84,0x20,0x44,0x21,0x44,0x22,0x24,0x28,0x10,0x10},/*"测",1*/
{0x00,0x00,0xFE,0x7F,0x00,0x08,0x00,0x08,0xF8,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0xF8,0x08,0x88,0x08,0x00,0x08,0x00,0x08,0x00,0x0A,0x00,0x04},/*"可",2*/
{0x88,0x08,0x88,0x28,0x88,0x4B,0x68,0x0A,0x5A,0x7E,0xAA,0x0A,0x0A,0x09,0x49,0x15,0x88,0x14,0x88,0x22,0x48,0x22,0x34,0x41,0x24,0x10,0x42,0x25,0x42,0x4A,0x21,0x4A},/*"燃",3*/
{0x08,0x00,0x08,0x00,0xFC,0x3F,0x04,0x00,0xF2,0x0F,0x01,0x00,0xFC,0x0F,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x40}/*"气",4*/
};
uint8_t fan2[][32]={
{0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF},
{0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",2*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"■",3*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F},
{0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}/*"■",4*/
};
uint8_t data[5] = {0};
//uint8_t wait_level(GPIO_PinState level, uint16_t timeout);
uint8_t wait_level(GPIO_PinState level, uint16_t timeout)
{
uint8_t wait = 0 ;
while( level ==HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8 ))
{//若是想统计的电平状态,则统计该电平持续时间
delay_us(1);
wait++;
if (wait>timeout)
{
printf("timeout\n");
break;
}
}
return wait;
}
///3---读取温湿度
void dht_read()
{
//总线空闲状态为高电平,主机把总线拉低必须大于18毫秒,保证DHT1X能检测到起始信号GPIO_InitTypeDef GPIOIn i t s t r u c t = \{ 0 \} ;
GPIO_InitTypeDef GPIO_InitStruct={0};
GPIO_InitStruct.Pin = GPIO_PIN_8 ;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL ;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init (GPIOB, &GPIO_InitStruct);
HAL_Delay(20);
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);
delay_us(40);
//zong xian wei di dian ping
if(GPIO_PIN_SET ==HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8))
{
printf("sensor no response\n");
return;
}
wait_level(GPIO_PIN_RESET,90);
wait_level(GPIO_PIN_SET,90);
for (int a = 0 ; a < 5 ; a++ )
{
for (int b = 0 ; b < 8 ; b++ )
{
uint8_t low_level = wait_level ( GPIO_PIN_RESET,60);
uint8_t high_level = wait_level ( GPIO_PIN_SET,80);
//如果高电平持续时间小于低电平的50us,则收到了bit0
if(high_level< low_level )
{
data[a] &= ~(0x80>>b) ;
}
else if( high_level>low_level)
{data[a] |= 0x80>>b ;
}
}
}
//一
////当最后一bit数据传送完毕后,DHT1 X拉低总线50us,
wait_level(GPIO_PIN_RESET,60);
////数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi
////温度整数数据+8bit温度小数数据"所得结果的末8位。
//uint8_t checkSum = data[0] + data[1] + data[2] + data[3];
////温度整数数据+8bit温度小数数据"所得结果的末8位。
uint8_t checkSum = data[0]+ data [1] + data [2] + data[3] ;
if(checkSum != data [4])
{
//校验错误 终止读取
printf("chek error\n" );
return;
}
printf("hum:%d.%d\n",data[0],data[1]);
printf("tem:%d.%d\n",data[2],data[3]);
//return data[5];
int a1=data[0]/10;
int b1=data[0]%10;
int a2=data[2]/10;
int b2=data[2]%10;
lcd_drawnum(50,50,0x019F,0xFFDF,a1);
lcd_drawnum(70,50,0x019F,0xFFDF,b1);
lcd_drawnum(90,50,0x019F,0xFFDF,data[1]);
if(data[2]>29){
lcd_drawnum(50,80,0xE000,0xFFDF,a2);
lcd_drawnum(70,80,0xE000,0xFFDF,b2);
lcd_drawnum(90,80,0xE000,0xFFDF,data[3]);
for(int i=0,x=10;i<5;i++)
{
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,fan1[i]);
x+=15;
}
}
else if(data[2]==0)
{
for(int i=0,x=10;i<5;i++)
{
lcd_drawnum(50,80,0x019F,0xFFDF,a2);
lcd_drawnum(70,80,0x019F,0xFFDF,b2);
lcd_drawnum(90,80,0x019F,0xFFDF,data[3]);
lcd_drawtext16x16 (x,30,0xD8A7,0xFFDF,gas3[i]);
x+=15;
}
}else{
lcd_drawnum(50,80,0x019F,0xFFDF,a2);
lcd_drawnum(70,80,0x019F,0xFFDF,b2);
lcd_drawnum(90,80,0x019F,0xFFDF,data[3]);
for(int i=0,x=10;i<6;i++)
{
lcd_drawtext16x16 (x,30,0xFFDF,0xFFDF,fan2[i]);
x+=15;
}
}
}
led的
#include "spi.h"
#include "gpio.h"
#include "lcd.h"
#include "string.h"
//发送命令到ST7735S显示控制芯片
void lcd_sendcmd(uint8_t cmd)
{
//拉低RS引脚,发送的字节作为命令执行
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
//发送一个字节的命令码
HAL_SPI_Transmit(&hspi1, &cmd, 1, HAL_MAX_DELAY);
}
//发送数据到ST7735S显示控制芯片
void lcd_senddata(uint8_t data)
{
//拉高RS引脚,发送的字节作为数据
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_SET);
//发送一个字节的数据
HAL_SPI_Transmit(&hspi1, &data, 1, HAL_MAX_DELAY);
}
//LCD初始化
void lcd_init(void)
{
//发送复位命令
lcd_sendcmd(0x01);
//等待复位完成120ms
HAL_Delay(120);
//关闭睡眠模式
lcd_sendcmd(0x11);
//等待自检完成
HAL_Delay(120);
//配置显存访问方式
lcd_sendcmd(0x36);
//Row Address Order:1
//Column Address Order:1
//Row/Column Exchange:0
//Vertical Refresh Order: Top to Bottom(0)
//RGB-BGR ORDER: BGR(1)
//Horizontal Refresh Order:Left to right(0)
lcd_senddata(0xc8);
//设置像素颜色格式
lcd_sendcmd(0x3a);
//使用16bit颜色
lcd_senddata(0x05);
//显示显存中的内容
lcd_sendcmd(0x29);
}
//设置显示区域
void lcd_region(uint8_t xbegin, uint8_t xend, uint8_t ybegin, uint8_t yend)
{
//设置起始列和结束列
lcd_sendcmd(0x2a);
//起始列高字节
lcd_senddata(0);
//起始列低字节
lcd_senddata(xbegin + 2);
//结束列高字节
lcd_senddata(0);
//结束列低字节
lcd_senddata(xend + 2);
//设置起始行和结束行
lcd_sendcmd(0x2b);
//起始行高字节
lcd_senddata(0);
//起始行低字节
lcd_senddata(ybegin + 3);
//结束行高字节
lcd_senddata(0);
//结束行低字节
lcd_senddata(yend + 3);
//写显存
lcd_sendcmd(0x2c);
}
//发送一个像素的颜色
void lcd_sendpixel(uint16_t color)
{
//高字节先发送
lcd_senddata(color >> 8);
lcd_senddata(color & 0xff);
}
//将RGB888转为RGB565
uint16_t lcd_color(uint8_t red, uint8_t green, uint8_t blue)
{
return ((red & 0xf8) << 11)|((green & 0xfc) << 5)|((blue & 0xf8) >> 3);
}
//清屏函数
void lcd_clear(uint16_t color)
{
int i;
//定位显存写入位置
lcd_region(0, 127, 0, 127);
for (i = 0; i < 128 * 128; i++)
{
lcd_sendpixel(color);
}
}
//显示图片
//x: 起始列
//y: 起始行
//w: 图像宽度(像素)
//h: 图像高度(像素)
//image: 保存图像数据的数组
void lcd_drawimage(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint16_t* image)
{
int i;
//定位显存写入位置
lcd_region(x, x + w - 1, y, y + h - 1);
for (i = 0; i < w * h; i++)
{
lcd_sendpixel(image[i]);
}
}
//取模配置:
//1. 前景色用bit1表示,背景色用bit0表示(阴码)
//2. 低位在前
//显示字符
//x: 起始列
//y: 起始行
//fc: 前景色
//bc: 背景色
//font: 字模数组
void lcd_drawtext8x16(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t* font)
{
lcd_region(x, x + 8 - 1, y, y + 16 -1);
//填充16行
uint8_t j;
for (j = 0; j < 16; j++)
{
//填充一行
uint8_t i;
for (i = 0; i < 8; i++)
{
if ((font[j] & (1 << i)) != 0)
{
//填充前景色
lcd_sendpixel(fc);
}
else
{
//填充背景色
lcd_sendpixel(bc);
}
}
}
}
uint8_t lower[][16] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x30,0x2C,0x22,0x32,0x6C,0x00,0x00},/*"a",0*/
{0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x26,0x1A,0x00,0x00},/*"b",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00},/*"c",2*/
{0x00,0x00,0x00,0x00,0x60,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"d",3*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7E,0x02,0x42,0x3C,0x00,0x00},/*"e",4*/
{0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x3E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"f",5*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x22,0x22,0x1C,0x02,0x3C,0x42,0x42,0x3C},/*"g",6*/
{0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",7*/
{0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"i",8*/
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1E},/*"j",9*/
{0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x72,0x12,0x0A,0x0E,0x12,0x22,0x77,0x00,0x00},/*"k",10*/
{0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"l",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00},/*"m",12*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",14*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x26,0x42,0x42,0x42,0x26,0x1A,0x02,0x07},/*"p",15*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x40,0xE0},/*"q",16*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x4C,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"r",17*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x42,0x02,0x3C,0x40,0x42,0x3E,0x00,0x00},/*"s",18*/
{0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x08,0x08,0x48,0x30,0x00,0x00},/*"t",19*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"u",20*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00},/*"v",21*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDB,0x91,0x52,0x5A,0x2A,0x24,0x24,0x00,0x00},/*"w",22*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00},/*"x",23*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x08,0x08,0x06},/*"y",24*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x22,0x10,0x08,0x08,0x44,0x7E,0x00,0x00},/*"z",25*/
};
void lcd_drawtextlower(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, char ch)
{
if (ch < 'a' || ch > 'z')
{
return;
}
lcd_drawtext8x16(x, y, fc, bc, lower[ch - 'a']);
}
void lcd_drawstringlower(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, char* s)
{
//判断字符串是否结束
while(*s != 0)
{
lcd_drawtext8x16(x, y, fc, bc, lower[*s - 'a']);
s++; //字符指针加1
x += 8; //横坐标右移8个像素
}
}
uint8_t name[][32] = {
{0x00,0x00,0xFE,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x00,0x00},/*"王",0*/
{0x08,0x00,0x88,0x1F,0x08,0x08,0x08,0x04,0x3F,0x02,0x08,0x01,0x8C,0x7F,0x1C,0x49,0x2A,0x49,0x2A,0x49,0x89,0x48,0x88,0x44,0x48,0x44,0x28,0x42,0x08,0x29,0x88,0x10}};/*"杨",1*/
//显示中文字符
//x: 起始列
//y: 起始行
//fc: 前景色
//bc: 背景色
//font: 字模数组
void lcd_drawtext16x16(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t* font)
{
lcd_region(x, x + 16 - 1, y, y + 16 -1);
uint8_t j;
for (j = 0; j < 16*2; j++)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
if ((font[j] & (1 << i)) != 0)
{
//填充前景色
lcd_sendpixel(fc);
}
else
{
//填充背景色
lcd_sendpixel(bc);
}
}
}
}
void lcd_drawname(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
lcd_drawtext16x16(x, y, fc, bc, name[0]);
lcd_drawtext16x16(x + 16, y, fc, bc, name[1]);
}
uint8_t ni[] = {0x10,0x01,0x10,0x01,0x10,0x01,0x88,0x7F,0x88,0x40,0x4C,0x20,0x2C,0x04,0x0A,0x04,0x89,0x14,0x88,0x24,0x48,0x24,0x48,0x44,0x28,0x44,0x08,0x04,0x08,0x05,0x08,0x02};/*"你",0*/
uint8_t fu[][32] = {
{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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0xF0,0x07,0x80,0xFF,0xFF,0x1F,0x00,0x00,0xF8,0x7F,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xF8,0xFF,0xE3,0xFF,0xFF,0xFF,0x07,0x00,0xF8,0xFF,0xF3,0xFF,0xFF,0xFF,0x07},
{0x00,0x00,0xFC,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x10,0x0C,0x00,0x00,0x00,0x80,0x00,0xFF,0xFF,0x1F,0x00},
{0x00,0x38,0xE0,0x03,0xFF,0xFF,0x3F,0x00,0x00,0xFC,0xFF,0x07,0x7F,0x80,0x3F,0x00,0x00,0xFE,0xFF,0x07,0x1F,0x00,0x1F,0x00,0x00,0xFF,0xFF,0x07,0x1E,0x00,0x1E,0x00},
{0x00,0x0F,0xE0,0x03,0x1E,0x00,0x1F,0x00,0x00,0x00,0xF0,0x03,0xBE,0xFF,0x1F,0x00,0x00,0x00,0xF8,0x01,0xFE,0xFF,0x1F,0x00,0x00,0x00,0xFC,0x01,0xFE,0xFF,0x1F,0x00},
{0x00,0x00,0xFE,0x01,0x3C,0x80,0x0F,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xC7,0xE1,0x07,0xC0,0x00,0x00,0xE0,0xFF,0xCF,0xFF,0xFF,0xFF,0x01},
{0x00,0xF8,0xFF,0xDF,0xFF,0xFF,0xFF,0x07,0x00,0xFC,0x7F,0xFE,0x07,0xFF,0xFF,0x07,0x80,0xFF,0x7D,0xC0,0x03,0x3E,0xF0,0x07,0xF0,0xFF,0x7C,0xC0,0x03,0x1E,0xE0,0x07},
{0xFE,0x3F,0x7C,0xC0,0x03,0x1E,0xE0,0x03,0xFC,0x1F,0x7C,0xC0,0x87,0x3F,0xF0,0x03,0xF8,0x0F,0x7C,0xC0,0xFF,0xFF,0xFF,0x03,0xF0,0x03,0x7C,0xC0,0xFF,0xFF,0xFF,0x03},
{0x00,0x00,0x7C,0xC0,0x0F,0x3F,0xE0,0x03,0x00,0x00,0x7C,0xC0,0x07,0x1E,0xE0,0x01,0x00,0x00,0xFC,0xC0,0x07,0x1E,0xE0,0x01,0x00,0x00,0xFC,0xC0,0x07,0x1E,0xE0,0x01},
{0x00,0x00,0xFC,0xC0,0xC7,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xC0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xC0,0xFF,0xFF,0xFF,0x01},
{0x00,0x00,0x78,0x80,0x07,0x00,0xFC,0x01,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"福",0*/
};
void lcd_draw64x64(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t* font)
{
lcd_region(x, x + 64 - 1, y, y + 64 -1);
//注意循环变量取值范围
uint16_t j;
for (j = 0; j < 64*8; j++)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
if ((font[j] & (1 << i)) != 0)
{
//填充前景色
lcd_sendpixel(fc);
}
else
{
//填充背景色
lcd_sendpixel(bc);
}
}
}
}
void lcd_drawfu(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
lcd_draw64x64(x, y, fc, bc, (uint8_t*)fu);
}
uint8_t wen[][32] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x00,0x01,0x60,0xF0,0xFF,0x03,0xC0,0x30,0x00,0x01,0xC0,0x30,0x00,0x01,0x00,0x34,0x00,0x01},
{0x00,0x32,0x00,0x01,0x00,0xF2,0xFF,0x01,0x00,0x32,0x00,0x01,0x0C,0x32,0x00,0x01,0x18,0x31,0x00,0x01,0x30,0x31,0x00,0x01,0x10,0xF1,0xFF,0x01,0x80,0x30,0x00,0x01},
{0x80,0x10,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x04,0x00,0x04,0x40,0xFC,0xFF,0x0F,0x40,0x8C,0x31,0x06,0x60,0x8C,0x31,0x06,0x7C,0x8C,0x31,0x06,0x70,0x8C,0x31,0x06},
{0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x06,0x30,0x8C,0x31,0x36,0xB0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"温",0*/
};
uint8_t shi[][32] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x60,0xF0,0xFF,0x07,0xE0,0x30,0x00,0x06,0xC0,0x30,0x00,0x06,0xC0,0x30,0x00,0x06},
{0x00,0x34,0x00,0x06,0x00,0xF2,0xFF,0x07,0x06,0x32,0x00,0x06,0x0C,0x32,0x00,0x06,0x38,0x31,0x00,0x06,0x30,0x31,0x00,0x06,0x30,0xF1,0xFF,0x07,0x80,0x30,0x21,0x06},
{0x80,0x10,0x63,0x00,0xC0,0x00,0x63,0x00,0x40,0x00,0x63,0x18,0x60,0x04,0x63,0x38,0x60,0x08,0x63,0x0C,0x3E,0x18,0x63,0x06,0x30,0x30,0x63,0x02,0x30,0x30,0x63,0x01},
{0x30,0x30,0xE3,0x00,0x30,0x20,0x63,0x00,0x38,0x00,0x63,0x00,0x38,0x00,0x63,0x00,0x38,0x00,0x63,0x10,0x30,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"湿",1*/
};
uint8_t du[][32] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x07,0x08,0x20,0x00,0x02,0x1C,0xE0,0xFF,0xFF,0x3F,0x60,0x20,0x20,0x00},
{0x60,0xE0,0xE0,0x00,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x0C,0xE0,0xFF,0xFF,0x1F,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x00,0x60,0x60,0x60,0x00},
{0x60,0xE0,0x7F,0x00,0x60,0x60,0x60,0x00,0x20,0x00,0x80,0x00,0x20,0xFC,0xFF,0x01,0x30,0x20,0xC0,0x01,0x30,0x40,0xE0,0x00,0x30,0xC0,0x60,0x00,0x10,0x80,0x30,0x00},
{0x10,0x00,0x1B,0x00,0x18,0x00,0x0E,0x00,0x08,0x00,0x1F,0x00,0x08,0xC0,0x79,0x00,0x04,0x70,0xE0,0x1F,0x04,0x0E,0x00,0x1F,0xE2,0x01,0x00,0x08,0x00,0x00,0x00,0x00},/*"度",2*/
};
void lcd_drawni(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
lcd_drawtext16x16(x, y, fc, bc, wen[0]);
}
//显示字符
//x: 起始列
//y: 起始行
//w: 字符宽度
//h: 字符高度
//fc: 前景色
//bc: 背景色
//font: 字模数组
void lcd_drawtext(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint16_t fc, uint16_t bc, uint8_t* font)
{
lcd_region(x, x + w - 1, y, y + h -1);
//注意循环变量取值范围
uint16_t j;
for (j = 0; j < w*h/8; j++)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
if ((font[j] & (1 << i)) != 0)
{
//填充前景色
lcd_sendpixel(fc);
}
else
{
//填充背景色
lcd_sendpixel(bc);
}
}
}
}
uint8_t mid[] = {0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00};/*"中",0*/
/*"温",0*/
void lcd_drawmid(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
lcd_drawtext(50, 50, 32, 32,fc, bc, mid);
}
void lcd_drawup(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}
void lcd_drawdown(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}
void lcd_drawleft(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}
void lcd_drawright(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
}
uint8_t wen1[][32] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0E,0x06,0x00,0x00,0x06,0x07,0x00,0x00,0x07,0x03,0x00,0x00,0x03,0x03,0x00,0x00,0x83,0x01,0x00},
{0x80,0x81,0x01,0x18,0x80,0xC0,0xFF,0x3F,0xC0,0xC0,0x00,0x18,0xC0,0x61,0x08,0x0C,0xE0,0x21,0x30,0x04,0xB0,0x31,0x10,0x02,0x90,0x11,0x10,0x00,0x88,0x09,0x10,0x00},
{0x88,0x81,0x11,0x00,0x84,0xC1,0x11,0x01,0x80,0xC1,0x10,0x02,0x80,0xC1,0x10,0x04,0x80,0x61,0x10,0x0C,0x80,0x61,0x10,0x18,0x80,0x31,0x10,0x38,0x80,0x11,0x10,0x30},
{0x80,0x09,0x10,0x30,0x80,0x09,0x10,0x30,0x80,0x05,0x10,0x00,0x80,0x01,0x10,0x00,0x80,0x01,0x1F,0x00,0x80,0x01,0x1C,0x00,0x80,0x00,0x08,0x00,0x00,0x00,0x00,0x00}};/*"你",0*/
void lcd_drawwendu(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc)
{
lcd_drawtext(x, y, 32, 32, fc, bc, (uint8_t*)wen1);
//lcd_drawtext(x + 32, y, 32, 32, fc, bc, (uint8_t*)du);
}
uint8_t num16x32[][64] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x60,0x04,0x30,0x0C,0x18,0x18,0x18,0x18,0x18,0x10,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x10,0x18,0x18,0x18,0x18,0x30,0x0C,0x60,0x04,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xC0,0x03,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x10,0x1C,0x08,0x18,0x04,0x30,0x04,0x30,0x0C,0x30,0x0C,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x80,0x01,0xC0,0x00,0x40,0x00,0x20,0x20,0x10,0x20,0x08,0x20,0x04,0x30,0xFC,0x1F,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",2*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x18,0x06,0x0C,0x0C,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x06,0xC0,0x03,0x00,0x0E,0x00,0x18,0x00,0x10,0x00,0x30,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x10,0x0C,0x18,0x18,0x0C,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",3*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x07,0x00,0x07,0x80,0x06,0x80,0x06,0x40,0x06,0x20,0x06,0x20,0x06,0x10,0x06,0x10,0x06,0x08,0x06,0x0C,0x06,0x04,0x06,0x02,0x06,0xFE,0x3F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"4",4*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0xF0,0x3F,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xC8,0x07,0x28,0x0C,0x18,0x18,0x08,0x10,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x0C,0x30,0x0C,0x30,0x04,0x18,0x04,0x18,0x18,0x0C,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",5*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x60,0x18,0x30,0x18,0x10,0x18,0x18,0x00,0x08,0x00,0x08,0x00,0x0C,0x00,0xCC,0x07,0x6C,0x0C,0x1C,0x18,0x1C,0x10,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x30,0x18,0x10,0x30,0x18,0x70,0x0C,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"6",6*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xF8,0x3F,0x08,0x10,0x0C,0x08,0x04,0x08,0x04,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",7*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x30,0x0C,0x18,0x18,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x30,0x1C,0x10,0x78,0x18,0xF0,0x04,0xE0,0x03,0x18,0x0F,0x0C,0x1E,0x0C,0x1C,0x06,0x38,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x0C,0x18,0x18,0x0C,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",8*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x18,0x04,0x0C,0x08,0x0C,0x18,0x06,0x10,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x0E,0x38,0x0C,0x34,0x18,0x36,0xF0,0x31,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x08,0x0C,0x0C,0x0C,0x06,0x0C,0x03,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",9*/
};
void lcd_drawnum(uint8_t x, uint8_t y, uint16_t fc, uint16_t bc, uint8_t num)
{
if (num > 9)
{
return;
}
lcd_drawtext(x, y, 16, 32, fc, bc, num16x32[num]);
}
//画点
void lcd_drawpoint(uint8_t x, uint8_t y, uint16_t color)
{
lcd_region(x, x + 1, y, y + 1);
lcd_sendpixel(color);
}