图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 计时值
- }
- }
|