DDR200T TFT - LCD 显示屏 显示图片 NucleiStudio 蜂鸟E203 详细教程 RISC-V

news/2024/10/18 16:56:05/

DDR200T TFT - LCD 显示屏 显示图片 NucleiStudio 蜂鸟E203 详细教程 RISC-V

  • 前言
  • IMG2LCD软件生成RGB565格式图片 使用取模软件对图片取模
  • 实验结果
  • 生成彩色图片
  • 生成黑白图片
  • 后记
  • 源码分享

前言

官方所给的LCD实验《nuclei-board-labs-master\e203_hbirdv2\ddr200t\spi_lcd》只有显示字符的函数,并未提供显示图片的函数,在本人查找资料的过程中,发现了STM32的一些函数正好能用上。这里给出代码。

IMG2LCD软件生成RGB565格式图片 使用取模软件对图片取模

这个软件很简单。要记得每次换完参数要点下==“重新载入”==,再保存。

在这里插入图片描述

实验结果

彩图
这里值得注意的是,MCU-FLASH装不下很大的图像,所以需要引入DDR3等外部存储器。详见本文“后记”
在这里插入图片描述

黑白图
在这里插入图片描述

生成彩色图片

lcd.c加上这个函数


void Draw_Color(uint16_t S_x,uint16_t S_y,const unsigned char *pic)
{uint32_t i=8,len;uint16_t temp,x,y,D_x=0,D_y=0;x=(uint16_t)((pic[2]<<8)+pic[3])-1;       //获取图片的宽度y=(uint16_t)((pic[4]<<8)+pic[5])-1;       //获取图片的高度len=2*x*y;        //获取图片像素点数while(i<(len+8))      //显示所有像素点{temp=(uint16_t) ( (pic[i]<<8) + pic[i+1] );     //image2lcd生成的是8位数组,十六位真彩色图像生成为高8位和低8位,这儿将其转换成16位数据,if(D_x>x) {D_x=0;D_y++;}         //逐行显示LCD_Fast_DrawPoint(S_x+D_x,S_y+D_y,temp);    //画点,拼凑图像,调用正点原子快速画点函数D_x++;i=i+2;}}

生成黑白图片

lcd.c加上这个函数

void Draw_Black(uint16_t xstr,uint16_t ystr,uint16_t xend,uint16_t yend,uint8_t *pic)	    //画图
{uint8_t temp,t1;uint16_t x_t=xstr,y_t=ystr;//,x=xstr,y=ystr;uint8_t *pusMsk = pic;//480000 65536for(y_t=ystr;y_t<yend;){temp = *pusMsk;for(t1=0;t1<8;t1++){if(temp&0x80)LCD_Fast_DrawPoint(x_t,y_t, BLACK);//画实心点else LCD_Fast_DrawPoint(x_t,y_t,BACK_COLOR);   //画空白点(使用背景色)temp<<=1;x_t++;if(x_t>=xend){x_t=xstr;y_t++;break;}}pusMsk++;}
}

后记

做这个实验后,发现NucleiStudio往板载输入图片实际上是通过ilm或flash模式,其中:

  • ilm模式是断电后不保留下次开机就没了,烧录到mcu_
  • flash模式是断电后保留,烧录到mcu_flash里
    这里有一个问题,NucleiStudio把编译好的c程序还有图片数据,存储到mcu_flash里面,图片的大小往往会超出mcu_flash的容量,会限制读写。这时需要利用板载的RAM资源,这也是为什么需要扩展内存DDR3 SDRAM的原因。MCU_FLASH的型号是GD25Q32CSIG,存储容量 32 Mbit。

源码分享

实验所用所有函数-直接复制即可用

链接:https://pan.baidu.com/s/1CObnOgNIziWXHDPiw0F-Ig?pwd=glri 
提取码:glri 
--来自百度网盘超级会员V3的分享

在这里插入图片描述


http://www.ppmy.cn/news/420616.html

相关文章

4.3寸TFTLCD显示JPG图片

说明 在JZ2440上显示自己的图片&#xff0c;全屏显示。已知分辨率是480*272&#xff0c;为了适应lcd的大小&#xff0c;又不使图片变形&#xff0c;需要对图片进行分辨率调整并裁剪&#xff0c;这里用到windows的自带画图工具。需要获得图片的像素数据&#xff0c;用python的P…

显示图片

// 显示图片.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include "opencv2/opencv.hpp"int _tmain(int argc, _TCHAR* argv[]) {//创建窗口cvNamedWindow("picture");//加载图片IplImage* img cvLoadImage("F:\\Opencv_pi…

如何在JZ2440 4.3寸LCD显示屏显示jpg图片

内核版本&#xff1a;Linux version 4.4.0-130-generic 交叉编译工具&#xff1a;gcc-3.4.5-glibc-2.3.6 libjpeg库版本&#xff1a;jpegsrc.v9c 材料准备&#xff1a;4.3(480*272)寸jpg图像&#xff0c;编译好的生成文件&#xff0c;上传到开发板&#xff08;可以参考我之前…

20180720——OLED显示屏-文字、图片、刷新

汉字&#xff1a;1.在模式中选择字符模式 2.在选项进行如下配置 汉字字模选项 图片&#xff1a;1.在模式中选择图形模式 2.在选项进行如下配置 图形字模选项 另&#xff0c;不接GND也可以显示&#xff0c;只不过屏幕较暗 实现实时刷新数据&#xff0c;只需把需要刷新的数值写进…

ST7920 12864液晶图片取模,显示你想显示的图片。

本文不讨论显示驱动&#xff0c;只讨论怎样通过软件对图片进行取模然后让12864显示。 1、将需要显示的图片进行处理 首先12864只能显示黑白图像而且不能显示灰度&#xff0c;因此可以确定图片的要求&#xff1a; 图像大小&#xff1a;128像素*64像素 图像格式&#xff1a;b…

[完美解决]如何在JZ2440 4.3寸LCD显示屏显示jpg图片

操作系统&#xff1a;Ubuntu14.04 内核版本&#xff1a;Linux version 4.4.0-130-generic 交叉编译工具&#xff1a;gcc-3.4.5-glibc-2.3.6 libjpeg库版本&#xff1a;jpegsrc.v9c 材料准备&#xff1a;4.3(480*272)寸jpg图像&#xff0c;编译好的生成文件&#xff0c;上传…

在屏幕上显示jpg图片

CCSprite *pSprit CCSprite::create("Star.jpg"); // 检测 CC_BREAK_IF(!pSprit); //设置坐标点 pSprit->setPosition(ccp(size.width / 2, size.height / 2 50)); this->addChild(pSprit, 2);

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

背景&#xff1a; 之前用过芝麻IP&#xff0c;写过这几篇文章 《【Python】芝麻HTTP代理系列保姆级全套攻略(对接教程自动领取每日IPIP最优算法)》 《【Python】记录抓包分析自动领取芝麻HTTP每日免费IP&#xff08;成品教程&#xff09;》 《爬虫增加代理池&#xff1a;使用稳…