查看: 1836|回复: 4

[原创] 基于NUCLEO_F767ZI的生肖图案型万年历

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2016-11-16 17:20:36 | 显示全部楼层 |阅读模式
    分享到:
    NUCLEO_F767ZI实现RTC实时时钟的帖子中,介绍了一种以OLED屏来实现实时时钟的方法,本贴再介绍一种以串行接口TFT屏来实现带生肖图案的万年历实现方法。
    以前受程序存储空间的限制,在不加挂大容量存储器件的情况下要想显示一幅高质量的图片是件困难的事。对于NUCLEO_F767ZI来说这件事容易了许多,因为它的程序存储空间已达2M,显示的图片数据完全可以存放到程序中,这完全有种土豪的有钱就可以这么任性的味道。
    在该生肖图案型万年历中,每幅生肖图片的规格为200*200像素,以16位色彩的格式来存储,共12幅。
    万年历的计时环节则是使用NUCLEO_F767ZI内部的RTC,其运行效果如图1所示。

    图片1.png
    图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.png
    2 整体构成

    生肖图片的显示函数如下:
    1. void show_image(unsigned int x,unsigned int y,unsigned int n)  //200*200
    2. {  
    3.         unsigned int i,j,k;
    4.         unsigned int da;
    5.         k=0;
    6.         for(i=0;i<200;i++)
    7.         {       
    8.                 LCD_SetCursor(x,y+i);
    9.                 LCD_WriteRAM_Prepare();                                    
    10.                 for(j=0;j<200;j++)
    11.                 {
    12.                         if (n==9)  da=gImage_sh[k*2];
    13.                         da<<=8;
    14.                         if (n==9) da|=gImage_sh[k*2+1];
    15.                         LCD_WR_DATA(da);                                       
    16.                         k++;  
    17.                 }
    18.         }
    19. }
    复制代码
    实现生肖图案型万年历的主函数如下:
    1. int main(void)
    2. {
    3.     HAL_Init();                                    //初始化HAL库
    4.     Stm32_Clock_Init(432,25,2,9);   //设置时钟,216Mhz
    5.     delay_init(216);                //延时初始化
    6.     GPIO_Configuration();
    7.         Lcd_Init();                    // 初始化TFT
    8.     LCD_Clear(WHITE);
    9.         BACK_COLOR=WHITE;
    10.     POINT_COLOR=RED;
    11. show_image(20,0,9);            // 显示生肖图片
    12. while(1)
    13. {
    14. //  显示RTC 计时值
    15. }
    16. }
    复制代码

    评分

    参与人数 1 +20 收起 理由
    loveeeboard + 20 赞一个!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-6-17 16:18
  • 签到天数: 700 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-11-16 17:23:41 | 显示全部楼层
    板子不错哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

     楼主| 发表于 2016-11-16 17:25:29 | 显示全部楼层
    freeelectron 发表于 2016-11-16 17:23
    板子不错哈

    是呀,好不容易得到的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-7-30 11:40
  • 签到天数: 1792 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2016-11-17 09:09:28 | 显示全部楼层
    顶一下板子,,,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-3-13 10:11
  • 签到天数: 1088 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2016-11-17 09:32:18 | 显示全部楼层
    兑换的板子不错。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 01:11 , Processed in 0.177135 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.