This commit is contained in:
2025-03-26 12:47:09 +08:00
parent 3f4efa0554
commit 181658015b
50 changed files with 4191 additions and 2849 deletions
+295 -110
View File
@@ -65,49 +65,7 @@ enum {
*******************************/
unsigned char GDRAM[] = { //横向取模,无字节倒序 16 * 64
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,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,0x80,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,0xC0,0x30,0x10,0x18,0x08,0x08,0x08,0x08,
0x18,0x10,0x30,0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x80,0x80,
0x40,0x20,0x00,0x20,0x10,0x10,0x10,0x10,0x08,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x02,0x01,0x00,0x00,0x00,
0x80,0x80,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,0x03,0x0E,0x70,0xC0,0x80,0x80,0x80,0x80,0xC0,
0x40,0x40,0x20,0x20,0x10,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x06,0x08,0x10,0x20,0x40,0x80,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,0x01,0x03,0x00,0x00,0x00,0x00,
unsigned char GDRAM[64][16] = { //横向取模,无字节倒序 64行,16列
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,
@@ -130,6 +88,48 @@ unsigned char GDRAM[] = { //
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,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,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,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,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,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,/*"未命名文件",0*/
};
@@ -154,23 +154,18 @@ void lcd_gra_clr(void);
void LCD_CheckBusy(void)
{
//可能是模块有问题,这个函数没办法检测繁忙
GPIO_InitTypeDef GPIO_InitStruct = {0};
//修改为输入
GPIO_InitStruct.Pin = LCD_DB0_Pin|LCD_DB1_Pin|LCD_DB2_Pin|LCD_DB3_Pin
GPIO_InitStruct.Pin = LCD_DB0_Pin|LCD_DB1_Pin|LCD_DB2_Pin|LCD_DB3_Pin
|LCD_DB4_Pin|LCD_DB5_Pin|LCD_DB6_Pin|LCD_DB7_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_PinState status;
RS(0);
RW(1); //读出数据,RW=1
HAL_Delay(1);
GPIOA->BSRR = 0x00ff;
GPIOA->BRR = 0x0000;
@@ -202,7 +197,6 @@ void LCD_Write(unsigned char type,unsigned char data)
RS(type);
RW(0); //write
EN(1);
//HAL_Delay(1);//延迟是必须的
//整个端口赋值
GPIOA->BSRR = data & 0x00ff;
GPIOA->BRR = ~data & 0x00ff;
@@ -210,13 +204,49 @@ void LCD_Write(unsigned char type,unsigned char data)
EN(0);
}
void LCD_Read(unsigned char type,unsigned char data)
unsigned char LCD_Read(void)
{
unsigned char data = 0x00;
LCD_CheckBusy();
GPIO_InitTypeDef GPIO_InitStruct = {0};
//修改为输入
GPIO_InitStruct.Pin = LCD_DB0_Pin|LCD_DB1_Pin|LCD_DB2_Pin|LCD_DB3_Pin
|LCD_DB4_Pin|LCD_DB5_Pin|LCD_DB6_Pin|LCD_DB7_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
RS(1);
RW(1); //write
EN(0);
EN(1);
data = GPIOA->IDR & 0xff;
EN(0);
//修改为输出
GPIO_InitStruct.Pin = LCD_DB0_Pin|LCD_DB1_Pin|LCD_DB2_Pin|LCD_DB3_Pin
|LCD_DB4_Pin|LCD_DB5_Pin|LCD_DB6_Pin|LCD_DB7_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
return data;
}
void LCD_init (void)
void LCD_Init (void)
{
PS(0x01);//选择并口模式
@@ -230,87 +260,242 @@ void LCD_init (void)
void LCD_flush(void)
{
//LCD全局刷新,每秒刷新20次。
static int count = 0;
count ++;
if(count % 50)
{
}
}
//LCD 横着排列,
//横着刷新,一行一行刷
void LCD_Clear(void)
{
LCD_Write(LCD_CMD,0x01); //写清屏指令0x01
{
unsigned char i,j;
LCD_Write(LCD_CMD,0x34);
}
void LCD_DDRAM(unsigned char x,unsigned char y,unsigned char *s)
{
switch(y)
//上半部分
for(i=0;i<32;i++) //一共32行
{
case 0:
LCD_Write(LCD_CMD,0x80+x); //第一行
break;
case 1:
LCD_Write(LCD_CMD,0x90+x); //第二行
break;
case 2:
LCD_Write(LCD_CMD,0x88+x); //第三行
break;
case 3:
LCD_Write(LCD_CMD,0x98+x); //第四行
break;
LCD_Write(LCD_CMD,0x80+i); //先写入纵坐标Y的值
LCD_Write(LCD_CMD,0x80); //再写入横坐标X的值
for(j=0;j<32;j++) //一共128/8 = 16 + 16= 32列,前面16列是上半部分,后面16列是下半部分
{ //
if(j < 16)
{
LCD_Write(LCD_DAT,0x00);//0-15列
}
else
{
LCD_Write(LCD_DAT,0x00);//从16列开始,读取RAM中的32行数据
}
}
}
while(*s>0)
LCD_Write(LCD_CMD,0x36);
LCD_Write(LCD_CMD,0x30);
}
void LCD_Update(void)
{
unsigned char i,j;
LCD_Write(LCD_CMD,0x34);
//上半部分
for(i=0;i<32;i++) //一共32行
{
LCD_Write(LCD_DAT,*s++);
LCD_Write(LCD_CMD,0x80+i); //先写入纵坐标Y的值
LCD_Write(LCD_CMD,0x80); //再写入横坐标X的值
for(j=0;j<32;j++) //一共128/8 = 16 + 16= 32列,前面16列是上半部分,后面16列是下半部分
{ //
if(j < 16)
{
LCD_Write(LCD_DAT,GDRAM[i][j]);//0-15列
}
else
{
LCD_Write(LCD_DAT,GDRAM[i + 32][j - 16]);//从16列开始,读取RAM中的32行数据
}
}
}
LCD_Write(LCD_CMD,0x36);
LCD_Write(LCD_CMD,0x30);
}
uint8_t LCD_DrawDot(uint8_t x,uint8_t y,uint8_t color)//打点函数 //x,y为128*64 点阵的坐标(这个费操作,如果写到ram中,更快)
{
uint8_t row,xlabel,xlabel_bit;
uint8_t Read_H=0,Read_L=0;
LCD_Write(LCD_CMD,0x34); //扩充指令
LCD_Write(LCD_CMD,0x36); //绘图指令
xlabel=x>>4; //确定水平坐标地址
xlabel_bit=x & 0x0F; // 细分水平坐标中的第几位
if(y<32) row=y;
else { row=y-32; xlabel+=8; }
LCD_Write(LCD_CMD,row+0x80);
LCD_Write(LCD_CMD,xlabel+0x80);
LCD_Read();
Read_H=LCD_Read();
Read_L=LCD_Read();
LCD_Write(LCD_CMD,row+0x80);
LCD_Write(LCD_CMD,xlabel+0x80); //水平坐标地址+基址=显示的水平地址
if(xlabel_bit<8)
{
switch(color)
{
case 0:Read_H &=(~(0x01<<(7-xlabel_bit))); break; //变暗 ,看不见
case 1:Read_H |=(0x01<<(7-xlabel_bit)); break; //变亮 ,看得见
case 2:Read_H ^=(0x01<<(7-xlabel_bit)); break; //反转
default:break;
}
LCD_Write(LCD_DAT,Read_H);
LCD_Write(LCD_DAT,Read_L);
}
else
{
switch(color)
{
case 0:Read_L &=(~(0x01<<(15-xlabel_bit))); break; //变暗 ,看不见
case 1:Read_L |=(0x01<<(15-xlabel_bit)); break; //变亮 ,看得见
case 2:Read_L ^=(0x01<<(15-xlabel_bit)); break; //反转
default:break;
}
LCD_Write(LCD_DAT,Read_H);
LCD_Write(LCD_DAT,Read_L);
}
LCD_Write(LCD_CMD,0x30);//恢复正常模式
}
/*************** 绘制的API *******************/
void LCD_DrawText(unsigned char *str,unsigned char adr)
{
unsigned char i,j;
LCD_Write(LCD_CMD,0x30);
LCD_Write(LCD_CMD,adr); //第一到四行地址分别是0x80,0x90,0x88,0x98
j=0;
for(i=0;i<16;i++)
LCD_Write(LCD_DAT,str[j*16+i]);
}
void LCD_DrawPix(unsigned char *str,unsigned char adr)
void LCD_DrawNumber(unsigned char row,unsigned char column,int number)
{
static int last_index_flag = 0;//要判断上一次是多少位,如果这一次少一个,那么就要清除前面一个位的区域,否则显示会错误
int number_byte = 0;
uint8_t minus_flag = 0;
uint8_t index_flag = 1;//至少是1位
int number_abs = 0;
if(number >= 0)
{
number_abs = number;
}
else
{
minus_flag = 1;
number_abs = -number;
}
do{
number_byte = number_abs % 10;
number_abs = number_abs / 10;
for(int i =0;i<16;i++)
{
for(int j = 0;j < 8;j++)
{
LCD_DrawDot(column + j -index_flag * 8,row + i,(font_num[number_byte][i] & (0x80 >> j))?(0x01):(0x00));
}
}
index_flag ++;
}while(number_abs);
if(minus_flag)
{
for(int i =0;i<16;i++)
{
for(int j = 0;j < 8;j++)
{
LCD_DrawDot(column + j -index_flag * 8,row + i,(font_num[10][i] & (0x80 >> j))?(0x01):(0x00));
}
}
index_flag ++;
}
if(index_flag < last_index_flag)
{
for(int i =0;i<16;i++)
{
for(int j = 0;j < 8;j++)
{
LCD_DrawDot(column + j -(index_flag) * 8,row + i,(0x00 & (0x80 >> j))?(0x01):(0x00));
}
}
}
last_index_flag = index_flag;
}
void LCD_DrawButton(unsigned char row,unsigned char column,unsigned char width,unsigned char height,unsigned char *img)
{
int index = 0;
for(int h =0;h<height;h++)
{
int count = 0;
for(int w = 0;w < width;w++)
{
LCD_DrawDot(column + w,row + h,(img[index] & (0x80 >> count))?(0x01):(0x00));
count ++;
if(count >=8)
{
index ++;
count = 0;
}
}
index ++;
}
}
void LCD_DEMO(void)
{
unsigned char str[50];
LCD_init();
LCD_Init();
LCD_Clear();
memcpy(GDRAM,Main_UI,sizeof(Main_UI));
LCD_Update();
while(1)
{
HAL_Delay(50);
LCD_Clear();
sprintf(str, "编码器数值: %d ", ec11_count);
LCD_DrawText(str,0x80);
HAL_Delay(10);
LCD_DrawNumber(10,80,ec11_count);
if(ec11_count % 2)
{
LCD_DrawButton(37,68,50,20,stop_button);
}
else
{
LCD_DrawButton(37,68,50,20,run_button);
}
//clear_lcd();
}
}