图1生肖图案型万年历
由于在前帖中对RTC的用法已做过介绍,这里就不再重复,参见该网址即可: http://www.stmcu.org/module/forum/thread-608523-1-1.html 本贴主要介绍以串口TFT屏来实现图片的显示,其整体构成如图2所示。 串口TFT屏与开发板的引脚连接关系为: REST-PB1 DC-PB2 CS-PB3 SCK-PC6 SDI-PC7 相应的高低电平输出语句定义如下: #define LCD_SCK_High() { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);} #define LCD_SCK_Low() { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);} #define LCD_SDI_High() { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_SET);} #define LCD_SDI_Low() { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET);} #define LCD_CS_High() { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);} #define LCD_CS_Low() { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);} #define LCD_DC_High() { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);} #define LCD_DC_Low() { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);} #define LCD_REST_High() { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);} #define LCD_REST_Low() { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);} 图2 整体构成
生肖图片的显示函数如下: void show_image(unsigned int x,unsigned int y,unsigned int n) //200*200
{
unsigned int i,j,k;
unsigned int da;
k=0;
for(i=0;i<200;i++)
{
LCD_SetCursor(x,y+i);
LCD_WriteRAM_Prepare();
for(j=0;j<200;j++)
{
if (n==9) da=gImage_sh[k*2];
da<<=8;
if (n==9) da|=gImage_sh[k*2+1];
LCD_WR_DATA(da);
k++;
}
}
}
实现生肖图案型万年历的主函数如下: int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
delay_init(216); //延时初始化
GPIO_Configuration();
Lcd_Init(); // 初始化TFT
LCD_Clear(WHITE);
BACK_COLOR=WHITE;
POINT_COLOR=RED;
show_image(20,0,9); // 显示生肖图片
while(1)
{
// 显示RTC 计时值
}
}
|