OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4016|回复: 6

STMF407 LIL9486 移植EMWIN后鼠标异常

[复制链接]

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-12-3
在线时间
32 小时
发表于 2017-12-4 10:04:06 | 显示全部楼层 |阅读模式
10金钱

1、左上边一直有黑色的鼠标,初始化不是白色的鼠标么?
2、读点函数已经附上、

/********************************************
函数:LCD_read_dian
功能:读出屏幕上的一个点
形参:
笔记:
*********************************************/
u16 LCD_read_dian(u16 x, u16 y)
{
    u16 r = 0, g = 0, b = 0;
    if(x >= lcddev.width || y >= lcddev.height)return 0; //超过了范围,直接返回
    LCD_send_cmd(0x2a);
    LCD_send_byte(x >> 8); //起始列号高位
    LCD_send_byte(x);      //起始列号低位
    LCD_send_byte(x >> 8); //结束列号高位
    LCD_send_byte(x);      //结束列号低位

    LCD_send_cmd(0x2b);
    LCD_send_byte(y >> 8); //起始列号高位
    LCD_send_byte(y);      //起始列号低位
    LCD_send_byte(y >> 8); //结束列号高位
    LCD_send_byte(y);      //结束列号低位

    LCD_send_cmd(0x2e);   //读点命令
    g=LCD_read_byte();      //空读一次
//    delay_us(2);
    r = LCD_read_byte();  //得到RG的值,R在前,G在后,各占8位
    r = LCD_read_byte();  //得到RG的值,R在前,G在后,各占8位
//    delay_us(2);
    b = LCD_read_byte();  //得到RG的值,R在前,G在后,各占8位
          //printf("%x\n",b);
    g = (r & 0XFF) << 8; //对于9341/9486/5510,第一次读取的是RG的值,R在前,G在后,各占8位

    return (((r >> 11) << 11) | ((g >> 10) << 5) | (b >> 11));
}



//设置光标位置
//Xpos:横坐标
//Ypos:纵坐标
void LCD_SetCursor(u16 Xpos, u16 Ypos)
{

    LCD_send_cmd(0x2a);
    LCD_send_byte(Xpos >> 8);
    LCD_send_byte(Xpos & 0XFF);
    LCD_send_cmd(0x2b);
    LCD_send_byte(Ypos >> 8);
    LCD_send_byte(Ypos & 0XFF);

}

最佳答案

查看完整内容[请看2#楼]

好像是,读点问题,你需要一个读点函数 /******************************** 函数:LCD_read_byte 功能:从LCD读取字节 *********************************/ u16 LCD_read_byte(void) { //*(vu16 *)0x6C000080=data; delay(2); return TFTLCD->RES; } /****************** 函数名:LCD_show_dian 【GUI引用】 功能:液晶屏 画笔功能 *******************/ void LCD_show_dian(u16 x, u16 y, ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-12-3
在线时间
32 小时
 楼主| 发表于 2017-12-4 10:04:07 | 显示全部楼层
yangmiao0223 发表于 2018-8-6 11:20
楼主问题解决了么?我也是同样的问题

好像是,读点问题,你需要一个读点函数
/********************************
函数:LCD_read_byte
功能:从LCD读取字节
*********************************/
u16 LCD_read_byte(void)
{
    //*(vu16 *)0x6C000080=data;

    delay(2);
    return TFTLCD->RES;
}



/******************
函数名:LCD_show_dian   【GUI引用】
功能:液晶屏 画笔功能
*******************/
void LCD_show_dian(u16 x, u16 y, u16 color)
{
    LCD_send_cmd(0x2a);
    LCD_send_byte(x >> 8); //起始列号高位
    LCD_send_byte(x);      //起始列号低位
    LCD_send_byte(x + 1 >> 8); //结束列号高位
    LCD_send_byte(x + 1);    //结束列号低位

    LCD_send_cmd(0x2b);
    LCD_send_byte(y >> 8); //起始列号高位
    LCD_send_byte(y);      //起始列号低位
    LCD_send_byte(y + 1 >> 8); //结束列号高位
    LCD_send_byte(y + 1);    //结束列号低位

    LCD_send_cmd(0x2c);
    LCD_send_byte(color);
}

/********************************************
函数:LCD_read_dian     【GUI引用】
功能:读出屏幕上的一个点
形参:
x:列坐标  y:横坐标
笔记:
*********************************************/
u16 LCD_read_dian(u16 x, u16 y)
{
    u16 r = 0;
    if(x >= lcddev.width || y >= lcddev.height)return 0; //超过了范围,直接返回

    LCD_send_cmd(0x2a);
    LCD_send_byte(x >> 8); //起始列号高位
    LCD_send_byte(x);      //起始列号低位
    LCD_send_byte((lcddev.height - 1) >> 8); //结束列号高位
    LCD_send_byte((lcddev.height - 1));   //结束列号低位

    LCD_send_cmd(0x2b);
    LCD_send_byte(y >> 8); //起始列号高位
    LCD_send_byte(y);      //起始列号低位
    LCD_send_byte((lcddev.height - 1) >> 8); //结束列号高位
    LCD_send_byte((lcddev.height - 1));   //结束列号低位

    LCD_send_cmd(0x2E);   //读点命令

    r = LCD_read_byte();    //空读一次
    delay(2);
    r = LCD_read_byte();  //得到RG的值,R在前,G在后,各占8位
    return r;
}


/********************************************
函数:LCD_SetCursor
功能:设置光标位置       【GUI引用】
形参:
x--横坐标
y--纵坐标
笔记:
*********************************************/
void LCD_SetCursor(u16 x, u16 y)
{
    LCD_send_cmd(0x2a);
    LCD_send_byte(x >> 8);
    LCD_send_byte(0xFF & x);
    LCD_send_byte((lcddev.width - 1) >> 8);
    LCD_send_byte((lcddev.width - 1));

    LCD_send_cmd(0x2b);
    LCD_send_byte(y >> 8);
    LCD_send_byte(0xFF & y);
    LCD_send_byte((lcddev.height - 1) >> 8);
    LCD_send_byte((lcddev.height - 1));
}


/*********************************************
函数:LCD_fill_color2
功能:填充区域矩形(窗口填充)  【GUI引用】
参数:x1--起始x  y1--起始y  x2--结束x  y2--结束y  color:颜色
**********************************************/
void LCD_fill_color2(u16 x1, u16 y1, u16 x2, u16 y2, u16 color)
{
    u32 i;
    LCD_send_cmd(0x2a);
    LCD_send_byte(x1 >> 8); //起始列号高位
    LCD_send_byte(x1);      //起始列号低位
    LCD_send_byte(x2 >> 8); //结束列号高位
    LCD_send_byte(x2);      //结束列号低位

    LCD_send_cmd(0x2b);
    LCD_send_byte(y1 >> 8); //起始列号高位
    LCD_send_byte(y1);      //起始列号低位
    LCD_send_byte(y2 >> 8); //结束列号高位
    LCD_send_byte(y2);      //结束列号低位

    LCD_send_cmd(0x2c);
    for(i = 0; i < (x2 - x1 + 1) * (y2 - y1 + 1); i++)
    {
        LCD_send_byte(color);
    }
}
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-12-3
在线时间
32 小时
 楼主| 发表于 2017-12-4 10:09:17 | 显示全部楼层
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-12-3
在线时间
32 小时
 楼主| 发表于 2017-12-4 10:15:31 | 显示全部楼层
求指点@正点原子
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-12-5 01:42:42 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
发表于 2018-8-6 11:20:30 | 显示全部楼层
楼主问题解决了么?我也是同样的问题
回复

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
发表于 2018-8-8 09:21:48 | 显示全部楼层
楼主 弱弱问句,为什么 设置光标位置的函数 SET——CURSOR,里有这个
    LCD_send_cmd(0x2a);
    LCD_send_byte(x >> 8);
    LCD_send_byte(0xFF & x);
    LCD_send_byte((lcddev.width - 1) >> 8);
    LCD_send_byte((lcddev.width - 1));

而有的写为:
    LCD_send_cmd(0x2a);
    LCD_send_byte( x>> 8);
    LCD_send_byte(0xFF & x);
    LCD_send_byte((x+1) >> 8);
    LCD_send_byte((x+1));
谢谢解答,非常感谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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