天嵌 ARM开发社区

 找回密码
 注册
查看: 3291|回复: 8

裸奔4.3寸屏之简易数码相框的问题

[复制链接]
191817 发表于 2012-3-31 17:27:23 | 显示全部楼层 |阅读模式
10
本帖最后由 191817 于 2012-3-31 18:25 编辑

例程3.2   实现触摸屏实现触摸屏点小图片控制切换大图片的实验。我是4.3寸屏,可例程里都是3.5寸屏的,所以我自己把代码改成4.3寸屏。有一个问题是六张小图片在下方显示时会一闪一闪的,这个有什么好的意见解决呢?
有人用4.3寸屏做过实验的,能给我发个代码吗。还有那个KOBE投篮的4.3寸的代码。我的邮箱:474246164@qq.com谢谢了。

最佳答案

查看完整内容

/************************************************************** ÔÚLCDÆÁÄ»ÉÏÖ¸¶¨×ø±êµã»­Ò»¸öÖ¸¶¨´óСµÄͼƬ£¨¿é£© **************************************************************/ void P ...
cxjtcn 发表于 2012-3-31 17:27:24 | 显示全部楼层
/**************************************************************
ÔÚLCDÆÁÄ»ÉÏÖ¸¶¨×ø±êµã»­Ò»¸öÖ¸¶¨´óСµÄͼƬ£¨¿é£©
**************************************************************/
void Paint_Bmp1(int x0,int y0,int h0,int l0,int h,int l,unsigned char bmp[])
{
        int x,y;
        U32 c=0;
        int p = 0;
        //char buf[10]={0};
    for( y = y0 ; y < (y0+l0) ; y++ )
    {
            for( x = x0 ; x < (x0+h0) ; x++ )
            {p=(h*y+x)*2;
                    c = bmp[p+1] | (bmp[p]<<8) ;

                        if ( ( (x) < SCR_XSIZE_TFT) && ( (y) < SCR_YSIZE_TFT) )
                                LCD_BUFFER[y][x] = c ;
                        //sprintf(buf,"%d",c);
                        // Uart_SendString(buf);
                    //p = p + 2 ;
            }
           
    }
//    Uart_SendString("111\n");
}
这个函数,就是如果你图只有一小块有变化,也就是你球移动后。之前的球要刷新掉,要重画整张图。这个只是刷新之前球的位置的那小块图。所以刷新变快。你试这方法
回复

使用道具 举报

raominping 发表于 2012-4-1 18:46:17 | 显示全部楼层
刷新不过来了。你不要放到死循环里面试试,加个SWItCH
回复

使用道具 举报

 楼主| 191817 发表于 2012-4-2 22:15:15 | 显示全部楼层
raominping 发表于 2012-4-1 18:46
刷新不过来了。你不要放到死循环里面试试,加个SWItCH

:(SWITCH还是闪。是不是那个KOBE投篮的动画也有点闪呢,我看到代码包上写着不闪版。不大清楚是怎么弄的。我找不到4.3寸的那张图。
回复

使用道具 举报

 楼主| 191817 发表于 2012-4-2 22:17:22 | 显示全部楼层
191817 发表于 2012-4-2 22:15
SWITCH还是闪。是不是那个KOBE投篮的动画也有点闪呢,我看到代码包上写着不闪版。不大清楚是怎么弄的。 ...

不再循环里不行吧,放触摸中断里?
回复

使用道具 举报

raominping 发表于 2012-4-3 18:47:51 | 显示全部楼层
你再while(1)以外放最里面的图片。循环里面放球轨迹图
回复

使用道具 举报

 楼主| 191817 发表于 2012-4-3 23:18:22 | 显示全部楼层
raominping 发表于 2012-4-3 18:47
你再while(1)以外放最里面的图片。循环里面放球轨迹图

嗯,那个数码相框的代码我现在是 判断坐标值有变化了,才进入刷图的程序,坐标值没有变化就不进入,在while(1)里面再来个while(坐标值有变化){重新画图},这样就不会闪了,这里主要是每次触屏时返回的坐标值必定不同,以此判断是否又按下。
然后那个投篮动画我自己回去按你说的弄一弄。
谢谢你给我回答的问题咯。:)
回复

使用道具 举报

 楼主| 191817 发表于 2012-4-5 15:53:46 | 显示全部楼层
cxjtcn 发表于 2012-4-5 09:52
/**************************************************************
&Ocirc;&Uacute;LCD&AElig;&Aacute;&A ...

这个是好主意,不过不大理解p=(h*y+x)*2;这句是怎么得的。还有void Paint_Bmp1(int x0,int y0,int h0,int l0,int h,int l,unsigned char bmp[])中的int h,int l,是不是那块小图的宽高,好像程序中没用到int l,。不过是个好思路,我回去弄弄。

回复

使用道具 举报

cxjtcn 发表于 2012-4-27 15:41:08 | 显示全部楼层
还有,void MMU_Init(void),内存管理,这函数里面,
        //MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
        //MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);  //bank0
        MMU_SetMTT(0x00000000,0x03f00000,(int)__ENTRY,RW_CB);  //bank0
        MMU_SetMTT(0x04000000,0x07f00000,0,RW_NCNB);                          //bank0
        MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_CNB);  //bank1
        MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
        MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
        //MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CB); //bank4
        MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CNB); //bank4 for STRATA Flash
        MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5
        //30f00000->30100000, 31000000->30200000
        //MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_NCNB);          //bank6-1                MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CB);          //bank6-1要开cache,就是高速缓存,能使屏刷新加快

        MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_NCNB); //bank6-2
        //
        //MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_NCNB);   //bank6-3       

        MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_CB);   //bank6-3
        MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7
   
        MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR
        MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR
        MMU_SetMTT(0x5b000000,0x5b000000,0x5b000000,RW_NCNB); //SFR
        MMU_SetMTT(0x5b100000,0xfff00000,0x5b100000,RW_FAULT);//not used
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-11-1 07:15 , Processed in 1.078125 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表