OpenEdv-开源电子网

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

emwin无法显示英文字符串和绘制圆

[复制链接]

20

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-5-27
在线时间
6 小时
发表于 2014-7-27 11:32:28 | 显示全部楼层 |阅读模式
5金钱
原子哥求助 , 我在stm32f103RCT6上移植了emwin_518_keil4_m3,初始化是可以的,显示一个矩形也可以,但是现实字符串和画圆的时候总是啥都没有,还有就是我的TFT控制器是R61509V,是2.8寸240*400
下面是我得部分代码:
这是主函数初始化,可以显示后面的蓝色矩形,但是没有字符串显示
[mw_shl_code=c,true]RCC->APB2ENR |= 0x00000001;/*?????????±??*/ GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);/*??±?JTAG,±???SW????*/ IIC_Init(); Delay_Init(); // LCD_Setup(); // LCD_Clear_Area(20 , 40 , 239 , 400 , 0xf800); // if(LCD_GetPoint(30 , 50)==0xf800) // { // GPIOA->BRR=GPIO_Pin_8; // } GUI_Init(); GUI_SetBkColor(GUI_LIGHTGRAY); GUI_Clear(); GUI_SetBkColor(GUI_BLUE); GUI_ClearRect(10 , 40 , 100 , 70); GUI_SetColor(GUI_RED); GUI_DispStringAt("Hello" , 100 , 100); while(1);[/mw_shl_code] [mw_shl_code=c,true]下面是初始化的图片,有那个蓝色的矩形,但是没字符串[/mw_shl_code]


下面的是我的TFT驱动,卖家给的是排针对下,从左到右的竖屏显示驱动,我在软件中把他切为了横屏从左到右
[mw_shl_code=c,true]void LCD_Setup(void) { LCD_ConfigOutput(); LCD_WriteReg(0x0000, 0x0000); LCD_WriteReg(0x0000, 0x0000); LCD_WriteReg(0x0000, 0x0000); LCD_WriteReg(0x0000, 0x0000); Delay_Ms(15); LCD_WriteReg(0x0400, 0x6200); LCD_WriteReg(0x0008, 0x0808); //gamma LCD_WriteReg(0x0300, 0x0C00); LCD_WriteReg(0x0301, 0x5A0B); LCD_WriteReg(0x0302, 0x0906); LCD_WriteReg(0x0303, 0x1017); LCD_WriteReg(0x0304, 0x2300); LCD_WriteReg(0x0305, 0x1700); LCD_WriteReg(0x0306, 0x6309); LCD_WriteReg(0x0307, 0x0C09); LCD_WriteReg(0x0308, 0x100C); LCD_WriteReg(0x0309, 0x2232); LCD_WriteReg(0x0010, 0x0016); //69.5Hz 0016 LCD_WriteReg(0x0011, 0x0101); LCD_WriteReg(0x0012, 0x0000); LCD_WriteReg(0x0013, 0x0001); LCD_WriteReg(0x0100, 0x0330); //BT,AP LCD_WriteReg(0x0101, 0x0237); //DC0,DC1,VC LCD_WriteReg(0x0103, 0x0D00); //VDV LCD_WriteReg(0x0280, 0x6100); //VCM LCD_WriteReg(0x0102, 0xC1B0); //VRH,VCMR,PSON,PON Delay_Ms(50); LCD_WriteReg(0x0001, 0x0100); LCD_WriteReg(0x0002, 0x0100); LCD_WriteReg(0x0003, 0x1030); //1030 LCD_WriteReg(0x0009, 0x0001); LCD_WriteReg(0x000C, 0x0000); LCD_WriteReg(0x0090, 0x8000); LCD_WriteReg(0x000F, 0x0000); LCD_WriteReg(0x0210, 0x0000); LCD_WriteReg(0x0211, 0x00EF); LCD_WriteReg(0x0212, 0x0000); LCD_WriteReg(0x0213, 0x018f); //432=01AF,400=018F LCD_WriteReg(0x0500, 0x0000); LCD_WriteReg(0x0501, 0x0000); LCD_WriteReg(0x0502, 0x005F); LCD_WriteReg(0x0401, 0x0001); LCD_WriteReg(0x0404, 0x0000); Delay_Ms(50); LCD_WriteReg(0x0007, 0x0100); //BASEE Delay_Ms(50); LCD_WriteReg(0x0200, 0x0000); LCD_WriteReg(0x0201, 0x0000); LCD_WriteCmd(0x0202); Delay_Ms(50); GPIOA->BSRR=GPIO_Pin_8; Delay_Ms(50); } //////下面是官方文档中需要的函数部分 /*获取一个点,EMWIN官方需要的一个函数*/ uint16_t LCD_GetPoint(u8 Xpos , u16 Ypos) { uint16_t color=0; Ypos=400-Ypos; LCD_WriteReg(0x0200 , Xpos); LCD_WriteReg(0x0201 , Ypos); LCD_WriteCmd(0x0202); SetWr; /* Read 16-bit Reg */ SetRs; ClrRd; SetRd; color = GPIOB->IDR; color = GPIOB->IDR; SetCs; return color; } /*设置一个点*/ void LCD_SetPoint(u8 Xpos, u16 Ypos, uint16_t Color) { Ypos=400-Ypos; LCD_WriteReg(0x0200 , Xpos); LCD_WriteReg(0x0201 , Ypos); LCD_WriteCmd(0x0202); ClrCs; SetRs; SetRd; GPIOB->ODR=Color; ClrWr; SetWr; SetCs; } /*清空一片颜色区域*/ void LCD_Clear_Area(u8 xspos , u16 yspos , u8 xepos , u16 yepos , uint16_t Color) { u16 i=0 , j=0; LCD_WriteReg(0x0210 , xspos); LCD_WriteReg(0x0211 , xepos); LCD_WriteReg(0x0212 , 400-yepos); LCD_WriteReg(0x0213 , 400-yspos); LCD_WriteReg(0x0200 , xspos); LCD_WriteReg(0x0201 , 400-yepos); LCD_WriteCmd(0x0202); ClrCs; SetRs; SetRd; GPIOB->ODR=Color; for(i=0;i<xepos-xspos;i++) { for(j=0;j<yepos-yspos;j++) { ClrWr; SetWr; } } SetCs; }[/mw_shl_code]
下面是lcdConfig.c里面的东西
[mw_shl_code=c,true]#define XSIZE_PHYS 240 #define YSIZE_PHYS 400 #define VXSIZE_PHYS 240 #define VYSIZE_PHYS 400 #define COLOR_CONVERSION GUICC_M565 #define DISPLAY_DRIVER GUIDRV_COMPACT_COLOR_16 #define LCD_SWAP_XY 1 /********************************************************************* * Configuration checking *********************************************************************/ #ifndef XSIZE_PHYS #error Physical X size of display is not defined! #endif #ifndef YSIZE_PHYS #error Physical Y size of display is not defined! #endif #ifndef VXSIZE_PHYS #define VXSIZE_PHYS XSIZE_PHYS #endif #ifndef VYSIZE_PHYS #define VYSIZE_PHYS YSIZE_PHYS #endif #ifndef COLOR_CONVERSION #error Color conversion not defined! #endif #ifndef DISPLAY_DRIVER #error No display driver defined! #endif #ifndef LCD_SWAP_XY #define LCD_SWAP_XY 0 #endif #if LCD_SWAP_XY #define LCD_XSIZE YSIZE_PHYS #define LCD_YSIZE XSIZE_PHYS #else #define LCD_XSIZE XSIZE_PHYS #define LCD_YSIZE YSIZE_PHYS #endif #define LCD_VXSIZE LCD_XSIZE #define LCD_VYSIZE LCD_YSIZE static void _InitController(void) { // LCD_SSD1289_SSD1298_Init(); LCD_Setup(); } void LCD_X_Config(void) { /* Set display driver and color conversion */ GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); LCD_SetSizeEx (0, LCD_XSIZE, LCD_YSIZE); LCD_SetVSizeEx(0, LCD_VXSIZE, LCD_VYSIZE); #if(GUI_SUPPORT_TOUCH) GUI_TOUCH_SetOrientation(0); //GUI_TOUCH_Calibrate(GUI_COORD_X, 0, XSIZE_PHYS-1, 120, 4750); // GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, YSIZE_PHYS-1, 160, 4870); GUI_TOUCH_Calibrate(0, 0xf, 0x131, 0x240, 0xdf4); GUI_TOUCH_Calibrate(1, 0xf, 0xe1, 0x257, 0xde4); #endif }[/mw_shl_code]
这是GUIconfig的东西
[mw_shl_code=c,true]define GUI_NUMBYTES 1024*10 // // Define the average block size // #define GUI_BLOCKSIZE 0x80 /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * GUI_X_Config * * Purpose: * Called during the initialization process in order to set up the * available memory for the GUI. */ void GUI_X_Config(void) { // // 32 bit aligned memory area // static U32 aMemory[GUI_NUMBYTES / 4]; // // Assign memory to emWin // GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES); GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); } [/mw_shl_code]

原子哥在哪儿我就在哪儿
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-7-27 14:40:06 | 显示全部楼层
楼主用的是自定义驱动移植,5.22版直接支持R61509,楼主可以试试。把内存调大试一下,GUI_NUMBYTES  1024*10调到30试试。
回复

使用道具 举报

20

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-5-27
在线时间
6 小时
 楼主| 发表于 2014-7-27 14:48:04 | 显示全部楼层
回复【2楼】rgzdb:
---------------------------------
可以给个实例代码吗?我得QQ1069900834
原子哥在哪儿我就在哪儿
回复

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-7-27 15:44:25 | 显示全部楼层
你看一下这个帖子,写的很详细。  http://www.openedv.com/posts/list/27697.htm
需要修改的地方:pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_COMPACT_COLOR_16, GUICC_565, 0, 0);
网上有emWin中文版说明书,5.12版的,里面有详细说明你试试。刚看了一下,5.12版也支持R61509。

28.7.11 GUIDRV_CompactColor_16
支持的硬件
控制器
该驱动支持以下显示控制器:
? 晶采FSA506
? 爱普生S1D13742、S1D13743、S1D19122
? 奇景HX8301、HX8312A、HX8325A、HX8340、HX8347、HX8352、HX8352B、HX8353
? 日立HD66766、HD66772、HD66789
?Ilitek ILI9161、ILI9220、ILI9221、ILI9320、ILI9325、ILI9326、ILI9328
?LG电子LGDP4531、LGDP4551
? 美格纳D54E4PA7551
? 联咏NT39122、NT7573
? OriseTech SPFD5408、SPFD54124C、SPFD5414D、SPFD5420A
? 瑞萨R61505、R61509、R61516、R61580、R63401
回复

使用道具 举报

20

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-5-27
在线时间
6 小时
 楼主| 发表于 2014-7-27 15:54:15 | 显示全部楼层
回复【4楼】rgzdb:
---------------------------------
这个帖子我昨晚上看过了,使用以后emwin可以初始化,但是无法刷背景,只是花屏了,不知道出什么问题了?请问你能帮我调试一下吗?我纠结这个2天了,可以加一下QQ吗?我得1069900834
原子哥在哪儿我就在哪儿
回复

使用道具 举报

20

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-5-27
在线时间
6 小时
 楼主| 发表于 2014-7-27 23:45:39 | 显示全部楼层
跪求用过R1509的2.8寸的TFT emwin的大神来指点
原子哥在哪儿我就在哪儿
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-28 08:21:04 | 显示全部楼层
回复【6楼】笨鸟先飞吧:
---------------------------------
根据论坛里面的帖子移植笔记不行么?支持驱动的的很好移植的

首先你在板子上将你的液晶驱动的代码调试通过,带驱动的emWin移植需要几个东西就可以了,液晶的初始化代码,如果用FSMC操作的话就将你的操作地址赋给他就行了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

20

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-5-27
在线时间
6 小时
 楼主| 发表于 2014-7-28 09:18:44 | 显示全部楼层
回复【7楼】Badu_Space:
---------------------------------
1.我得驱动是验证通过的,我可以单独打点,读颜色和刷指定区域的屏幕
2.用论团的没有我的支持型号,那里面支持的液晶GUIDRV_FLEXCOLOR_F66709----GUIDRV_FLEXCOLOR_F66702,而我的官方解释是GUIDRV_FLEXCOLOR_F66701,没有这个型号的驱动,用他的屏初始化啥都没有,我自定义的驱动还能刷背景和绘制填充矩形,但就是无法绘制其他图形,甚至点都打不了
原子哥在哪儿我就在哪儿
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-28 11:14:56 | 显示全部楼层
回复【8楼】笨鸟先飞吧:
---------------------------------
试下这个看下行不行GUIDRV_FLEXCOLOR_F66708


不行的话可以参考这个http://www.openedv.com/posts/list/11666.htm
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

14

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-4-19
在线时间
137 小时
发表于 2015-9-20 18:23:29 | 显示全部楼层
我有这方面的程序,也是r61509的,我研究快一个月了,就是不能读,横屏什么还不太完美,显示汉子  ascll  图片都可以
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 16:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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