搜索
bottom↓
回复: 33

天啊!我们用了这么就的彩屏清屏函数竟然有BUG(高手...

[复制链接]

出0入0汤圆

发表于 2013-11-28 20:24:15 | 显示全部楼层 |阅读模式
本帖最后由 w灰太狼x 于 2013-11-28 20:28 编辑

天啊!我们用了这么就的彩屏清屏函数竟然有BUG
你买彩屏店家会给你一些彩屏资料,其中包括程序,但是我发现这些店家的技术员所写彩屏的清屏函数几乎都有一个问题(我验证了好几家都有这个问题),而这个问题又不容易发现。这几天室友发现了,然后我们研究了下,发现了问题所在,在这里和大家分享一下。问题虽小,但是也是问题啊。

先上几张图片
这个是个钟表的程序


这个是清全屏后的效果


这个屏幕并没有全部成情成红色。

彩屏有240*320的有320*480的等等,这240、320等是指像素点有这么多个,但是彩屏程序中规定坐标点是从(0,0)开始的,也就是说最大坐标为(239,319),并不是(240,320)(这里以240*320的屏为例)。

下面是这些店家给的的清屏函数
/*------------------------------------------------
                             清屏函数
------------------------------------------------*/
void ClearScreen(unsigned int bColor)
{

         unsigned int i,j;
         LCD_SetPos(0,320,0,480);  //这里的坐标依次为x1,x2,y1,y2
         for (i=0;i<480;i++)
         {
           for (j=0;j<320;j++)
               Write_Data_U16(bColor);
         }
}


//================================================================================================
//        实现功能:        TFT清屏
//        输入参数:        bColor 清屏所使用的背景色
//================================================================================================
void CLR_Screen(unsigned int bColor)
{
unsigned int i,j;
LCD_SetPos(0,240,0,320);//320x240
for (i=0;i<320;i++)
        {
           for (j=0;j<240;j++)
               Write_Data_U16(bColor);
        }
}

/*----------------------------------------------------------------
                           清屏函数
输入参数:bColor 清屏所使用的背景色
----------------------------------------------------------------*/
void CLR_Screen(unsigned int bColor)
{
unsigned int i,j;
LCD_SetPos(0,240,0,320);//320x240
for (i=0;i<320;i++)
        {
           for (j=0;j<240;j++)
               Write_Data_U16(bColor);
        }
}

这些程序都有这个共同的错误,用这个错误的程序在程序开头清屏是可以清全屏的,在一些画线、画点、写字符、刷图片的程序之后也是可以用的,但是在画圆等函数之后调用就不能全部清屏了。这才是最蛋疼的。所以在这里和大家分享一下。

这是修改正确的清屏效果


下面是正确的清屏函数

void ClearScreen(unsigned int bColor)
{

         unsigned int i,j;
         LCD_SetPos(0,319,0,479);  //只需要把这个坐标改下就ok了
         for (i=0;i<480;i++)
         {
           for (j=0;j<320;j++)
               Write_Data_U16(bColor);
         }
}


void CLR_Screen(unsigned int bColor)
{
unsigned int i,j;
LCD_SetPos(0,239,0,319);//320x240
for (i=0;i<320;i++)
        {
           for (j=0;j<240;j++)
               Write_Data_U16(bColor);
        }
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-11-28 20:28:05 | 显示全部楼层
留印,有时间慢慢看。。。。

出0入0汤圆

 楼主| 发表于 2013-11-28 20:30:38 | 显示全部楼层
lans0625 发表于 2013-11-28 20:28
留印,有时间慢慢看。。。。

回复的还真快,小问题,就是个最大坐标的问题。

出0入0汤圆

发表于 2013-11-28 21:19:18 | 显示全部楼层
我早就发现了,只是不懂这竟是个普遍现像。还以为就只是买的那家给的有错。搞不好淘宝上的大多都是你抄抄我,我抄抄你,来来回回都是那一两个人写的。

出0入0汤圆

发表于 2013-11-28 21:31:44 | 显示全部楼层
这是个简单的问题,一般看到都随手改掉错误。淘宝上都那样,他是靠卖板子又不是靠卖程序,送的例子都是互相抄,一般都是参考下,很少敢拿来直接用

出0入10汤圆

发表于 2013-11-28 21:36:18 | 显示全部楼层
LZ is much better;

and do pls pay more attention to "int i, int j"

出0入0汤圆

发表于 2013-11-28 21:57:50 | 显示全部楼层
TB很多都是相互抄袭的  见怪不怪了

出0入0汤圆

 楼主| 发表于 2013-11-28 22:22:22 | 显示全部楼层
LM1876 发表于 2013-11-28 21:19
我早就发现了,只是不懂这竟是个普遍现像。还以为就只是买的那家给的有错。搞不好淘宝上的大多都是你抄抄我 ...

估计是抄来抄去的。

出0入0汤圆

 楼主| 发表于 2013-11-28 22:23:51 | 显示全部楼层
fzkqi 发表于 2013-11-28 21:31
这是个简单的问题,一般看到都随手改掉错误。淘宝上都那样,他是靠卖板子又不是靠卖程序,送的例子都是互相 ...

确实是小问题。

出0入0汤圆

 楼主| 发表于 2013-11-28 22:35:19 | 显示全部楼层
TonyCai 发表于 2013-11-28 21:36
LZ is much better;

and do pls pay more attention to "int i, int j"

为什么要改成“int  i,int j”啊?

出0入0汤圆

 楼主| 发表于 2013-11-28 22:35:46 | 显示全部楼层
not_at_all 发表于 2013-11-28 21:57
TB很多都是相互抄袭的  见怪不怪了

看来是我见怪了。

出0入0汤圆

发表于 2013-11-28 22:41:04 | 显示全部楼层
相互抄多了

出0入0汤圆

发表于 2013-11-28 23:40:31 | 显示全部楼层
本帖最后由 shanyan 于 2013-11-28 23:41 编辑

不知道楼主买哪家垃圾屏了?我们做TFT液晶屏的全被鄙视了,真是一颗老鼠屎坏一锅粥!!
让楼主看看我家的程序:
另外我严重鄙视那些人云亦云的SB!!!!





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-11-29 09:27:08 | 显示全部楼层
喔。   好。

出0入0汤圆

发表于 2013-11-29 09:40:55 | 显示全部楼层
我倒是觉得本来就相互抄袭了,只是当中或许有些是某人故意埋下的陷阱.
真抄袭也得看懂,要不程序在哪死了都不知道,既然是320*240就表示有320*240个点,起点坐标是0,0当然最后是319,239啦

出0入0汤圆

发表于 2013-11-29 09:47:33 | 显示全部楼层
这个不一定的,自己注意下;
有的是做了处理的,//****************************************************************************//
//在LCD上开窗口,SX,SY为开始点;
//x_Length,y_Length 为X,Y方向的长度
void        LCD_Set_Windows(UINT16 sx,UINT16 sy,UINT16 x_Length,UINT16 y_Length)
{                               
        //硬件相关,
        Set_Windows(sx,sy,sx+x_Length-1,sy+y_Length-1);///这边是跟屏驱动相关的,
}

出0入0汤圆

发表于 2013-11-29 11:18:59 | 显示全部楼层
其实很多程序都是抄来抄去的,只要第一个人写的有Bug,后面的人基本都会跟着错.

出0入0汤圆

发表于 2013-11-29 11:38:08 | 显示全部楼层
shanyan 发表于 2013-11-28 23:40
不知道楼主买哪家垃圾屏了?我们做TFT液晶屏的全被鄙视了,真是一颗老鼠屎坏一锅粥!!
让楼主看看我家的程 ...

. 我撑你.....

出0入0汤圆

发表于 2013-11-29 11:44:58 | 显示全部楼层
了解一下  

出0入0汤圆

发表于 2013-11-29 12:40:14 | 显示全部楼层
这只是个小问题而已

出0入0汤圆

 楼主| 发表于 2013-11-29 17:15:57 | 显示全部楼层
shanyan 发表于 2013-11-28 23:40
不知道楼主买哪家垃圾屏了?我们做TFT液晶屏的全被鄙视了,真是一颗老鼠屎坏一锅粥!!
让楼主看看我家的程 ...

我没有否定全部的TFT屏的开发者的意思,有冒犯之处还望海涵。

出0入0汤圆

 楼主| 发表于 2013-11-29 17:19:45 | 显示全部楼层
tony_sgt 发表于 2013-11-29 09:40
我倒是觉得本来就相互抄袭了,只是当中或许有些是某人故意埋下的陷阱.
真抄袭也得看懂,要不程序在哪死了都不 ...

应该没人那么龌龊吧。

出0入0汤圆

发表于 2013-11-29 17:24:35 | 显示全部楼层
这么简单的问题在应用中很容易就会发现

出0入0汤圆

发表于 2013-11-29 19:59:16 | 显示全部楼层
这种东西自己改一下就算了。不要太纠结了。
只要初始化代码能用就行了,其他都是小事。

出0入0汤圆

 楼主| 发表于 2013-11-29 20:24:48 | 显示全部楼层
RUANJI 发表于 2013-11-29 19:59
这种东西自己改一下就算了。不要太纠结了。
只要初始化代码能用就行了,其他都是小事。 ...

是的,不用纠结了。

出0入0汤圆

发表于 2013-12-1 13:11:37 来自手机 | 显示全部楼层
多谢指点迷津

出0入0汤圆

 楼主| 发表于 2013-12-1 14:24:10 | 显示全部楼层

客气客气。

出0入0汤圆

发表于 2013-12-2 10:53:54 | 显示全部楼层
为什么会偏移那么多?

出0入0汤圆

发表于 2013-12-3 00:59:55 | 显示全部楼层
那个时钟挺漂亮的

出0入0汤圆

发表于 2013-12-3 01:54:39 | 显示全部楼层
shanyan 发表于 2013-11-28 23:40
不知道楼主买哪家垃圾屏了?我们做TFT液晶屏的全被鄙视了,真是一颗老鼠屎坏一锅粥!!
让楼主看看我家的程 ...

去逛了一下你的淘宝店,没有图例显示

我发现在卖TFT的都要附上高清美女图才行,建议老板也弄一下,销量大增

出0入0汤圆

 楼主| 发表于 2013-12-4 15:17:50 | 显示全部楼层
wxty 发表于 2013-12-2 10:53
为什么会偏移那么多?

这个我也不知道。

出0入0汤圆

 楼主| 发表于 2013-12-4 15:22:44 | 显示全部楼层

时钟没有完善了,我把程序共享下吧,在例程的驱动文件里面接着写的GUI,有点乱,没有分开了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-12-4 16:01:28 | 显示全部楼层
我也遇到过此类问题,不过当时没怎么在意~

出0入0汤圆

发表于 2013-12-9 00:33:55 | 显示全部楼层
w灰太狼x 发表于 2013-12-4 15:22
时钟没有完善了,我把程序共享下吧,在例程的驱动文件里面接着写的GUI,有点乱,没有分开了。 ...

lz,,,谢了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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