历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2019年09月16日 | S3C2440开发板上BMP图片的显示之三

2019-09-16 来源:eefocus

三、BMP图片显示功能扩展

1、图片显示的功能扩展

(1)能够调整图片的显示区域,比如我准备了一张 480x384的图片,液晶屏大小只有它的九分之一,要通过键盘控制,“看到整张图片”。

(2)能够显示单色、16色、256色、24位真彩色图片。

(3)能够对图片进行缩小显示,比如前面那个480x384的图片,能够缩小比例显示在液晶屏上。这个实现应该不难,但是放大就比较麻烦了,要用到数学上的插值,这个稍微做一下尝试。

2、图片的移动

(1)分析

首先一个要明确的概念,我们所谓“移动图片”,实质不是在移动图片,而是在移动观测图片的 “显示窗口”。

比如一张比显示屏大的图片,现在只显示了上半部分,我们要看它的下半部分,可以按下方向键“向下键”,我们在屏幕上看到图像在“向上移动”,但我们同时要能够联想到,实质此时,“我们是在拉着显示窗口往下移动,因此我们很快看到了图片的下半部分”。

 

(2)实现的思路

要实现显示窗口的移动,主要是调整“液晶屏的显示行列”与“位图文件像素行列”之间的关系。

进行一下模拟分析,一个图片文件大小为160x256,也就是我的液晶屏两倍大。初始状态显示上半部分:液晶的127行对应图片的127行,0对应0行。

现在我按下“向下”控制按钮,也就是显示窗口下移,液晶的127行应该显示图片的“127+X”行,液晶第0行显示图片的“0+X”行,这样我们观测到的图片就下移了“X”行。

如果我按下“向上”控制按钮,显示窗口上移,也就是液晶有一部分将“观测不到图片”,液晶的显示起始行就不是从第0行开始。从理论上来说,液晶第0行显示图片的第“-X”行,所以液晶显示应该是第X行显示图片文件的第0行。

我可以设置四个变量 LcdRow,LcdCol,BmpRow,BmpCol。

向下移动X行,BmpRow = LcdRow + X,向上移动为减去。

同理,向右移动,BmpCol = LcdCol + X,想左为减去。

 

同时还要考虑到液晶窗口的行列最大值、图片文件的高宽最大值。

 

(3)程序结构和流程设计

肯定需要循环,因为要从循环中接收串口命令:五个命令,上下左右,再加上退出命令。

设置一个标志位,控制显示的刷新。

而对于串口来的命令,主要是计算液晶的显示行列。然后更新显示标志位。在显示刷新后,又清除该标志。

 

(4)程序代码设计

先添加命令 mpshow,这个命令带一个参数,要显示的图片文件名。

最重要的是处理窗口移动的代码,由于代码较长,我这里只列出向左移动的代码:

if ( CtrlCode == 'a' ) { //如果是左移命令,d右移,s下移,w上移

Col_MovDist -= 32; //显示窗口左移32个像素,效果累加。

if ( Col_MovDist <= -160 ) { //向左移动距离超过液晶宽度

Col_MovDist = -160;

DispRefresh = 0;

Shell_ClearScreen( ); //窗口左移到看不见图片了。

continue;

}

else if ( Col_MovDist < 0 ) { //窗口左边有一段空白,没有像素

Lcd_StartCol = -Col_MovDist; //液晶显示起始列,从左移过去的像素数开始。对应图片的0列,这时起始列大于0.

Lcd_EndCol = ( 160 - Lcd_StartCol > PicInfo.BmpWidth )

?Lcd_StartCol + PicInfo.BmpWidth-1: 159;

} //如果图片很窄,则液晶显示结束列小于159列。

else { //窗口左边界超过了位图左边界。

Lcd_StartCol = 0;

Lcd_EndCol = ( Col_MovDist + 160 > PicInfo.BmpWidth )

? PicInfo.BmpWidth-Col_MovDist-1: 159;

}

Shell_ClearScreen( );//清屏;

DispRefresh =1;//置位刷新显示标志;

}


推荐阅读

史海拾趣

智烽维(CDA)公司的发展小趣事

经过几年的技术积累和市场探索,智烽维在2013年成功完成了叠片型超级电容器的研发。这一产品的推出,不仅极大地丰富了公司的产品线,也进一步提升了智烽维在超级电容器领域的技术实力。叠片型超级电容器以其高性能、高可靠性和长寿命等特点,受到了市场的广泛关注和好评。

Flexxon Pte Ltd公司的发展小趣事

Flextronics(虚构为Flexxon Pte Ltd)自上世纪90年代末成立以来,便致力于成为全球供应链整合的领军者。公司最初从新加坡起步,迅速在全球范围内建立了多个生产基地和研发中心,以满足客户对电子产品快速响应和高质量生产的需求。通过高效的供应链管理,Flextronics不仅缩短了产品上市时间,还大幅降低了生产成本,赢得了包括惠普、戴尔、诺基亚等国际巨头的信任与合作。

Cadeka公司的发展小趣事

随着电子行业的快速发展,Cadeka公司意识到单一市场的局限性。为了拓展业务,公司开始实施全球化战略布局。首先,Cadeka在欧洲和亚洲设立了研发中心,与当地高校和研究机构合作,共同开发新技术。同时,公司还在全球范围内建立了生产基地和销售网络,以便更好地服务全球客户。

Circuit Assembly公司的发展小趣事

在竞争激烈的电子行业中,Cadeka公司为了增强自身实力,积极寻求并购与整合的机会。公司先后收购了几家具有技术优势和市场份额的小型电子企业,通过整合资源和技术,实现了优势互补和协同效应。这些并购不仅提升了Cadeka公司的技术实力和市场地位,还为公司带来了更多的发展机遇。

Hisetec Electronic Co Ltd公司的发展小趣事

背景:随着环保意识的增强,消费者对电子产品的环保要求也越来越高。Hisetec Electronic Co Ltd公司积极响应这一趋势,将绿色环保理念融入产品设计、生产和回收的全过程。

发展:公司投入大量资金研发环保材料和生产工艺,确保产品从源头到终端都符合环保标准。同时,公司还建立了完善的电子废弃物回收体系,对废旧电子产品进行拆解、分类和再利用。这些举措不仅赢得了消费者的信任和支持,还推动了整个电子行业的绿色升级。

Cedrat Technologies公司的发展小趣事

在电子行业中,合作与共赢是企业发展的重要途径。Cedrat Technologies积极与产业链上下游企业建立紧密的合作关系,共同推动电子行业的发展。通过与合作伙伴的协同创新和技术交流,Cedrat Technologies不仅拓展了自身的业务范围,也提升了在行业内的影响力和竞争力。

问答坊 | AI 解惑

如何快速创建开关电源的PCB版图设计

如今的开关稳压器和电源越来越紧凑,性能也日益强大,而越来越高的开关频率是设计人员面临的主要问题之一,正是它使得PCB的设计越来越困难。事实上,PCB版图已经成为区分好与差的开关电源设计的分水岭。本文针对如何一次性创建优秀PCB版图提出一些 ...…

查看全部问答>

我想要份单片机方面的中英资料

我想要份单片机方面的中英资料,大家帮帮我…

查看全部问答>

看《风声》电影 谈数据传输加密

来源:http://bbs.c114.net/viewthread.php?tid=372433 国庆60周年,电影市场中涌现出大量关于抗ri、建国的影片,如***、风声、邓稼先等,其中风声让我感觉特别亲切。不是周迅一贯冷酷的演技感动了我,也不是李冰冰优美气质的身段刺激了我;而是风 ...…

查看全部问答>

BSP移植问题

我在CE6上面克隆了一个BSP,是DeviceEmulator, 我是第一次接触,现在想问个简单的问题, 在FILES目录中的platform.bib文件中,有一些像 ; @CESYSGEN IF CE_MODULES_WAVEAPI IF BSP_NOAUDIO !     s3c2410x_wavedev.dll    ...…

查看全部问答>

pxa 2360-2大家帮忙。

最近在看这个: -----i2c源代码情景分析(Beta2)---------- 但是上面提到的-----本文档中的源代码以i2c-2.9.1包及www.arm.linux.org.uk上下载的pxa的i2c适配器的补丁2360-2为准 ----------2360-2的源码一直没有找到,网站也看了,可能我水平不行 ...…

查看全部问答>

MSP430的PWM输出脉冲上下不对称是什么问题啊?新手求指导,谢谢。

MSP430的PWM输出脉冲上下不对称是什么问题啊?新手求指导,谢谢。…

查看全部问答>

关于uCOS-ii的一些其他问题,求解释啊

第一个问题: /* ********************************************************************************************************* *                         ...…

查看全部问答>

UCOS移植到MSP430过程与心得体会《3》

static void OS_InitRdyList (void){     INT16U    i;     INT8U    *prdytbl;      OSRdyGrp       = 0x00;    ready list& ...…

查看全部问答>

大家一起来赚积分啊。。。。。。

大家一起来赚积分啊。。。。。。…

查看全部问答>

炫3D 元件模型

那个贴子不能编辑了。所以在此发个新贴,目前最新模型 …

查看全部问答>