你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于NUCLEO_F767ZI的生肖图案型万年历

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

由于在前帖中对RTC的用法已做过介绍,这里就不再重复,参见该网址即可:
https://www.stmcu.org.cn/module/forum/thread-608523-1-1.html
本贴主要介绍以串口TFT屏来实现图片的显示,其整体构成如图2所示。
串口TFT屏与开发板的引脚连接关系为:
REST-PB1    DC-PB2   CS-PB3   SCK-PC6   SDI-PC7
相应的高低电平输出语句定义如下:
  1. #define LCD_SCK_High()      { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);}
  2. #define LCD_SCK_Low()           { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);}
  3. #define LCD_SDI_High()      { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_SET);}
  4. #define LCD_SDI_Low()      { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET);}
  5. #define LCD_CS_High()       { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);}
  6. #define LCD_CS_Low()            { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);}
  7. #define LCD_DC_High()       { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);}
  8. #define LCD_DC_Low()              { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);}
  9. #define LCD_REST_High()      { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);}
  10. #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 ST金币 +30 收起 理由
zero99 + 30

查看全部评分

收藏 3 评论13 发布时间:2016-11-16 17:12

举报

13个回答
zero99 回答时间:2016-11-16 17:43:30
支持一下
Ljmp 回答时间:2016-11-16 17:44:53
,还是不错!!!
wambob 回答时间:2016-11-16 18:14:01
谢谢分享         
zhongyuan186118 回答时间:2016-11-16 20:57:48
支持
weigr 回答时间:2016-11-16 21:35:21
看起来不错
andrewz 回答时间:2016-11-16 23:22:22
厉害~~~~~~~~~~~~
andypanfan 回答时间:2016-11-17 09:00:37
谢谢 分享!!!!!!
jinglixixi 回答时间:2016-11-17 09:27:15

多谢打赏!!!
jinglixixi 回答时间:2016-11-17 09:27:46
多谢支持!!!
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版