uiok
This commit is contained in:
+295
-110
@@ -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();
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user