查看: 103|回复: 4

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

[复制链接]

70

主题

2

好友

1061

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 245 天

    [LV.8]以坛为家I

    爱板会员勋章 活跃会员勋章

    发表于 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 人评分 收起 理由
    loveeeboard + 20 赞一个!

    总评分:  + 20   查看全部评分

    回复

    使用道具 举报

    0

    主题

    1

    好友

    515

    积分

    举人

    Rank: 4

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 85 天

    [LV.6]常住居民II

    爱板会员勋章

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

    使用道具 举报

    70

    主题

    2

    好友

    1061

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 245 天

    [LV.8]以坛为家I

    爱板会员勋章 活跃会员勋章

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

    是呀,好不容易得到的。
    回复

    使用道具 举报

    131

    主题

    1

    好友

    4067

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    13 小时前
  • 签到天数: 536 天

    [LV.9]以坛为家II

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

    使用道具 举报

    8

    主题

    0

    好友

    1522

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    前天 10:17
  • 签到天数: 272 天

    [LV.8]以坛为家I

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    手机版|爱板网 |网站地图  

    GMT+8, 2017-1-23 22:38 , Processed in 0.105416 second(s), 19 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部