需要做网站建设和推广的行业,网络设计方案和拓扑图,WordPress谁在用,给朋友网站做宣传怎么写文章目录一.硬件层——引脚配置的移植二.应用层——显示函数的移植1. 移植显示一个字符函数2. 移植显示数字函数3.叠加方式选择一.硬件层——引脚配置的移植
宏定义的方式#xff0c;直接修改引脚#xff0c;实测可直接更改#xff0c;非常方便移植
/*******************…
文章目录一.硬件层——引脚配置的移植二.应用层——显示函数的移植1. 移植显示一个字符函数2. 移植显示数字函数3.叠加方式选择一.硬件层——引脚配置的移植
宏定义的方式直接修改引脚实测可直接更改非常方便移植
/******************************************************************************
//本程序适用与STM32F103C8
// GND 电源地
// VCC 接5V或3.3v电源
// SCL 接PA5SCL
// SDA 接PA7SDA
// RES 接PB0 --1
// DC 接PB1 --0
// CS 接PA4 --B10
// BL 接PB10 -- A4
*******************************************************************************/
//******************************************************************************/#define LCD_CTRLA GPIOA //定义TFT数据端口
#define LCD_CTRLB GPIOB //定义TFT数据端口#define LCD_SCL GPIO_Pin_5 //PB13---TFT --SCL/SCK
#define LCD_SDA GPIO_Pin_7 //PB15 MOSI---TFT --SDA/DIN
#define LCD_CS GPIO_Pin_10 //MCU_PB11---TFT --CS/CE#define LCD_LED GPIO_Pin_4 //MCU_PB9---TFT --BL
#define LCD_RS GPIO_Pin_0 //PB11---TFT --RS/DC
#define LCD_RST GPIO_Pin_1 //PB10---TFT --RST//#define LCD_CS_SET(x) LCD_CTRL-ODR(LCD_CTRL-ODR~LCD_CS)|(x ? LCD_CS:0)//液晶控制口置1操作语句宏定义
#define LCD_SCL_SET LCD_CTRLA-BSRRLCD_SCL
#define LCD_SDA_SET LCD_CTRLA-BSRRLCD_SDA
#define LCD_CS_SET LCD_CTRLB-BSRRLCD_CS #define LCD_LED_SET LCD_CTRLA-BSRRLCD_LED
#define LCD_RS_SET LCD_CTRLB-BSRRLCD_RS
#define LCD_RST_SET LCD_CTRLB-BSRRLCD_RST
//液晶控制口置0操作语句宏定义
#define LCD_SCL_CLR LCD_CTRLA-BRRLCD_SCL
#define LCD_SDA_CLR LCD_CTRLA-BRRLCD_SDA
#define LCD_CS_CLR LCD_CTRLB-BRRLCD_CS #define LCD_LED_CLR LCD_CTRLA-BRRLCD_LED
#define LCD_RST_CLR LCD_CTRLB-BRRLCD_RST
#define LCD_RS_CLR LCD_CTRLB-BRRLCD_RS #define LCD_DATAOUT(x) LCD_DATA-ODRx; //数据输出
#define LCD_DATAIN LCD_DATA-IDR; //数据输入
取模方式
二.应用层——显示函数的移植
技术交流调试帮助技术V:anwarmaries Q:1083091092
1. 移植显示一个字符函数
//在指定位置显示一个字符
//x,y:起始坐标
//num:要显示的字符: ---~
//size:字体大小 12/16/24
//mode:叠加方式(1)还是非叠加方式(0)
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{u8 temp, t1, t;u16 y0 y;u8 csize (size / 8 ((size % 8) ? 1 : 0)) * (size / 2); //得到字体一个字符对应点阵集所占的字节数num num - ; //得到偏移后的值ASCII字库是从空格开始取模所以- 就是对应字符的字库for (t 0; t csize; t){if (size 12)temp asc2_1206[num][t]; //调用1206字体else if (size 16)temp asc2_1608[num][t]; //调用1608字体else if (size 24)temp asc2_2412[num][t]; //调用2412字体else return; //没有的字库for (t1 0; t1 8; t1){if (temp 0x80)LCD_Fast_DrawPoint(x, y, POINT_COLOR);else if (mode 0)LCD_Fast_DrawPoint(x, y, BACK_COLOR);temp 1;y;if (y lcddev.height)return; //超区域了if ((y - y0) size){y y0;x;if (x lcddev.width)return; //超区域了break;}}}
}2. 移植显示数字函数
//m^n函数
//返回值:m^n次方.
u32 LCD_Pow(u8 m,u8 n)
{u32 result1;while(n--)result*m; return result;
}//显示数字,高位为0,则不显示
//x,y :起点坐标
//len :数字的位数
//size:字体大小
//color:颜色
//num:数值(0~4294967295);
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
{u8 t, temp;u8 enshow 0;for (t 0; t len; t){temp (num / LCD_Pow(10, len - t - 1)) % 10;if (enshow 0 t (len - 1)){if (temp 0){LCD_ShowChar(x (size / 2)*t, y, , size, 0);continue;}else enshow 1;}LCD_ShowChar(x (size / 2)*t, y, temp 0, size, 0);}
} 3.叠加方式选择
mode:叠加方式(1)还是非叠加方式(0) 在显示变化数据使用 非叠加模式0