请教原子哥,如何让快看漫画横屏LCD横屏显示

查看: 3104|回复: 2
原子哥有没有stm32 控制 lcd 多级菜单的范例啊。。能提供下不?
主题帖子精华
初级会员, 积分 76, 距离下一级还需 124 积分
在线时间0 小时
原子哥有没有stm32 控制 lcd 多级菜单的范例啊。。能提供下不?
主题帖子精华
金钱113389
在线时间830 小时
战舰板的gui.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 23, 距离下一级还需 27 积分
在线时间0 小时
华强PCB是深圳华强集团旗下专业提供电路板样板、快板及批量生产的高科技企业。公司致力于高精密单、双面、多层电路板生产制造,为国内外高科技企业、科研单位及电子产品企业提供高品质产品服务。
我们关注客户价值,专注目标,务实做事,不断创新,以精工品质,高效快捷的交货速度及完善的五星售后服务,打造成为PCB产业最值得信赖的品牌供应商。
&
打样价格:
&
5X5cm&50元包邮(偏远地区除外)&&1-2层板
10X10cm&100元包邮(偏远地区除外)&1-2层板
15X15cm&10PCS以内&包邮&(偏远地区除外)&1-2层板
20X20cm&5PCS以内&包邮&(偏远地区除外)&1-2层板
详细说明:
&
单/双面板&5*5cm&50元/款(10pcs)绿油白字&板厚1.6mm&有铅喷锡&过孔盖油&(双面板申通包邮)
10*10cm&100元/每款(10pcs)绿油白字&板厚1.6mm&有铅喷锡&过孔盖油&(双面板申通包邮)
50pcs内(1平方以下)样品全部免费飞针测试
&
具体其他尺寸和工艺在线价格计算系统/jisuan
&
批量价格
&
单面
大于3平米&370元每平米(单面无需测试)
双面板
3-10平米&450元/平米&(不含测试费)
大于10平米&420元/每平米&(不含测试费)
测试费70元*平方数+50&&沉金是100元每平米
测试架1000元&货款达到5W可以返还测试架费用
有些特殊工艺除开工程费,板费和菲林费外,还可能会有如下其他费用
&
额外资费说明
1&拼版费:拼版指的是不同的板(如果是相同的板则另算)放在一个文件内,那样则拼版一款加收50元,拼版方式,无论你是以邮票孔,长形槽,或是直接铣开,都是要收拼版费。
2&测试费:根据你的实际情况来决定(优惠期间,样板免费测试);详见价格计算/jisuan
3&税费:普通发票税费是按发票金额的6个点收取。增票则是按照发票金额的12个点收取。金额必须大于3000元
4&沉金费:如是你选择沉金板则多加收100元
5&加急费:单/双面板24小时加急是200元每款,48小时加急是100元每款。
6&半孔板:加收100元,即板边上的孔需要做出孔内有铜的效果的工艺。
7&板厚工程费:就是线路板厚在0.6-1.6之外的板厚,需要增加100元的板厚工程费
&
下单需知:
&
登陆/4772&进行下单
强PCB是深圳华强集团旗下专业提供电路板样板、快板及批量生产的高科技企业。
公司致力于高精密单、双面、多层电路板生产制造,为国内外高科技企业、科研单位及电子产品企业提供高品质产品服务。
我们关注客户价值,专注目标,务实做事,不断创新,以精工品质,高效快捷的交货速度及完善的五星售后服务,打造成为PCB产业最值得信赖的品牌供应商。
Powered by查看: 677|回复: 6
战舰开发板横屏显示问题?(2.8寸,LCD ID:9341)
主题帖子精华
中级会员, 积分 270, 距离下一级还需 230 积分
在线时间20 小时
在学习原子哥的开发板液晶屏实验时遇到一个问题,我想把竖屏显示改成横屏显示
1.我将液晶初始化函数LCD_Init();中&LCD_Display_Dir(0);改成 LCD_Display_Dir(1);&
2.接下来重新做了触摸校准
一开始显示和触摸都没有问题,但是后来我发现一个问题,当我使用void Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode);这个函数的时候,当mode为1,既叠加方式显示时,显示字符的话有时会出现显示不出来的问题?不知道大家有没有遇到这个问题,这个该如何解决,原子哥能解答下吗。
答案在5楼。
主题帖子精华
金钱113389
在线时间830 小时
答案在5楼。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 270, 距离下一级还需 230 积分
在线时间20 小时
自己先顶下,我看了一下mode=1和0的区别,就是打点的时候:在temp&0x80==0时,mode==1时跳过,而mode==0时打背景色,这个对字符显示有影响吗?麻烦原子哥帮看下,先谢了!
主题帖子精华
在线时间137 小时
改变显示方向有两种方式
1.给液晶主控发送相关指令改变扫描方向
2.自己编程进行坐标变换
LZ应该是字符显示部分的坐标没有根据方向相应改变造成的
主题帖子精华
金钱113389
在线时间830 小时
代码太老了吧,新代码不存在这个问题才对。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 270, 距离下一级还需 230 积分
在线时间20 小时
回复【4楼】正点原子:
---------------------------------
回复【3楼】ricefat:
---------------------------------
我是直接在老代码里面改的,代码应该是当时买战舰给的链接下载的,后面我查看了新的代码,发现它主要修改部分是将显示字符函数LCD_ShowChar中的打点函数LCD_DrawPoint(x,y)换成了LCD_Fast_Point(x,y),问题肃然解决了,但是我没弄明白是为什么。。。
谢谢两位的解答,祝圣诞快乐!
主题帖子精华
金钱113389
在线时间830 小时
回复【4楼】正点原子:
---------------------------------
回复【3楼】ricefat:
------------------------- ...
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
Powered by查看: 1910|回复: 7
原子哥能否帮忙看下我的这个TFTLCD程序为什么老是显示不了?
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间3 小时
&小弟初学stm32,附件是我比着光盘里的库函数版本TFTLCD的例程写的程序,因为只能显示清屏的颜色,一直无法显示字符,我几乎把整个程序完全复制成和光盘里的例程一样了,但还是无法显示字符,我看了4天了一直没有看出来是哪里出问题了,现在基本上和光盘里的例程完全一样了,还是不行,只能循环显示清屏的颜色。貌似是LCD_ShowString,和LCD——ShowChar这两个函数有问题一样,但是我也全部替换了还是不行,现在头都大了,希望原子哥有时间时能抽几分钟帮我看下,万分感激,谢谢!
18:00 上传
点击文件名下载附件
4.44 MB, 下载次数: 113
主题帖子精华
金钱113389
在线时间830 小时
你直接用我们的代码呢?
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
在线时间0 小时
直接在代码上修改就可以了
努力,前进。
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间3 小时
我是刚刚开始试着写呢!但是死活字符显示不出来,知道几乎和你们的一样了还是不行,不知道哪里出问题了,目前还在查,希望原子哥有时间了能帮忙看下,谢了。
主题帖子精华
金钱113389
在线时间830 小时
回复【4楼】oaixuw:
---------------------------------
慢慢查,你试试我们的代码可否显示?
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间3 小时
光盘里带的可以,我明天再查查。
主题帖子精华
新手上路, 积分 29, 距离下一级还需 21 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------
原子哥,我直接下的MINI的例程但是不能显示,怎么回事呢?
主题帖子精华
金钱113389
在线时间830 小时
回复【7楼】远方征途的学习者:
---------------------------------
是不是下的老版本代码啊?
你看LCD_Init,里面有没有ILI9341的初始化代码(CTRL+F查找即可),如果没有,就是老代码了。不能用了。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
Powered by查看: 1124|回复: 6
原子哥,请教一个问题,急!!!!!!
主题帖子精华
新手上路, 积分 44, 距离下一级还需 6 积分
在线时间0 小时
ILI9341驱动初始化的时候可以不执行复位动作吗??
必须硬件复位.
否则容易出问题.
主题帖子精华
金钱113389
在线时间830 小时
必须硬件复位.
否则容易出问题.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
在线时间546 小时
不复位,tft初始化可能通不过的
主题帖子精华
新手上路, 积分 44, 距离下一级还需 6 积分
在线时间0 小时
原子哥,我主控用的STM8S207,一直是白屏,电
06e7e78126dcd59b2f1e9ed182b3fb00_141.png (0 Bytes, 下载次数: 0)
22:54 上传
路是这样的,麻烦你看下有什么问题么?
主题帖子精华
金钱113389
在线时间830 小时
回复【4楼】:
---------------------------------
电路没问题.
检查代码,先读ID试试.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 44, 距离下一级还需 6 积分
在线时间0 小时
回复【5楼】正点原子:
--------------------------------读ID,一直读的D3
LCD_WR_REG(0x00d3);
id&=&LCD_RD_DATA();
//UART_send_byte(id);
id&=&LCD_RD_DATA();
//UART_send_byte(id);
//UART_send_byte(id&&8);
id&=&LCD_RD_DATA();
UART_send_byte(id);
id&=&LCD_RD_DATA();
UART_send_byte(id);
主题帖子精华
新手上路, 积分 44, 距离下一级还需 6 积分
在线时间0 小时
回复【5楼】正点原子:
---------------------------------
整个初始化代码是这样的
void&LCD_init(void)
{
uint16_t&id=0;
&GPIO_Init(&GPIOG,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|\
&&&&&&&&&&&&&&&&GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_MODE_OUT_PP_HIGH_FAST)&;
/*16位数据高8位*/
&&&&GPIO_Init(&GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|\
&&&&&&&&&&&&GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_MODE_OUT_PP_HIGH_FAST)&;
/*控制脚*/
&&&&GPIO_Init(&GPIOD,GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_MODE_OUT_PP_HIGH_FAST)&;
&&&//&设置PB口低8位引脚为输出,用作LCD16位并行数据和控制引脚
GPIOB-&DDR|=0xFF;&&
&&&&GPIOB-&ODR&&=0x00; &&&&&&&&&&&//&nbspB口低8位引脚置低
&&&//&设置PC口低8位引脚为输出,用作LCD16位并行数据和控制引脚
GPIOG-&DDR|=0xFF;&
GPIOG-&ODR&&=0x00;&//&nbspC口低8位引脚置低
&&
&&&&GPIOD-&DDR&=0xc8;
&&&&GPIOD-&DDR|=0x37;
&&&&GPIOD-&ODR&=0xc8;
&&&
&&&&GPIO_RST();
//LCD_WR_REG_DATA(0x1);
Delay(100);&//&delay&50&ms&
&&&&//id&=&LCD_RD_REG_DATA(0x0000);
//Delay(100);&//&delay&50&ms&
LCD_WR_REG(0x00d3);
id&=&LCD_RD_DATA();
//UART_send_byte(id);
id&=&LCD_RD_DATA();
//UART_send_byte(id);
//UART_send_byte(id&&8);
id&=&LCD_RD_DATA();
UART_send_byte(id);
id&=&LCD_RD_DATA();
UART_send_byte(id);
//ILI9327,BOE3.0
//*************&Start&Initial&Sequence&**********//&
LCD_WR_REG(0x00CF);&&
LCD_WR_DATA(0x0000);&
LCD_WR_DATA(0x00C1);&
LCD_WR_DATA(0X0030);&
LCD_WR_REG(0x00ED);&&
LCD_WR_DATA(0x0064);&
LCD_WR_DATA(0x0003);&
LCD_WR_DATA(0X0012);&
LCD_WR_DATA(0X0081);&
LCD_WR_REG(0x00E8);&&
LCD_WR_DATA(0x0085);&
LCD_WR_DATA(0x0010);&
LCD_WR_DATA(0x007A);&
LCD_WR_REG(0x00CB);&&
LCD_WR_DATA(0x0039);&
LCD_WR_DATA(0x002C);&
LCD_WR_DATA(0x0000);&
LCD_WR_DATA(0x0034);&
LCD_WR_DATA(0x0002);&
LCD_WR_REG(0x00F7);&&
LCD_WR_DATA(0x0020);&
LCD_WR_REG(0x00EA);&&
LCD_WR_DATA(0x0000);&
LCD_WR_DATA(0x0000);&
LCD_WR_REG(0x00C0); //Power&control&
LCD_WR_DATA(0x0021); //VRH[5:0]&
//LCD_WR_DATA(0x1B); //VRH[5:0]&
LCD_WR_REG(0x00C1); //Power&control&
LCD_WR_DATA(0x0013); //SAP[2:0];BT[3:0]&
//LCD_WR_DATA(0x01); //SAP[2:0];BT[3:0]&
LCD_WR_REG(0x00C5); //VCM&control&
LCD_WR_DATA(0x003F);&
LCD_WR_DATA(0x003C);&
//LCD_WR_DATA(0x30);&
//LCD_WR_DATA(0x30);&
LCD_WR_REG(0x00C7); //VCM&control2&
LCD_WR_DATA(0X00AE);&
//LCD_WR_DATA(0xB7);&
LCD_WR_REG(0x0036); //&Memory&Access&Control&
LCD_WR_DATA(0x0008);&
//LCD_WR_DATA(0x48);&//C8 &&&//48&68竖屏//28&E8&横屏
LCD_WR_REG(0x003A);&&&
LCD_WR_DATA(0x0055);&
LCD_WR_REG(0x00B1);&&&
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0016);&
//LCD_WR_DATA(0x1A);
LCD_WR_REG(0x00B6); //&Display&Function&Control&
LCD_WR_DATA(0x000A);&
LCD_WR_DATA(0x00A2);&
LCD_WR_REG(0x00F6);
LCD_WR_DATA(0x0001);&
LCD_WR_DATA(0x0030);&
LCD_WR_REG(0x00F2); //&3Gamma&Function&Disable&
LCD_WR_DATA(0x0000);&
LCD_WR_REG(0x0026); //Gamma&curve&selected&
LCD_WR_DATA(0x0001);&
LCD_WR_REG(0x002B);&
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x003f);
LCD_WR_REG(0x002A);&
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x00ef);&
LCD_WR_REG(0x0011); //Exit&Sleep&
Delay(240);&
LCD_WR_REG(0x0029); //Display&on&
Powered by查看: 8514|回复: 14
原子老大还有论坛里其他兄弟,3.5液晶屏继续求助
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间21 小时
原子老大,上次买了你的几块3.5液晶屏(RM68042),现在正在调试。因为我的需求是横屏显示,上次问了你,说是通过该坐标的方式,现在问题如下:
2b3f9e687eb164a503bc70d6ae025c07_982.jpg (0 Bytes, 下载次数: 0)
22:54 上传
通过改变void LCD_DrawPoint(u16 x,u16 y)
&LCD_SetCursor(y,x);&&//设置光标位置
}&&&& 把 LCD_SetCursor(y,x);& x,y互换,LCD_SetCursor(u16 Xpos, u16 Ypos)函数里加上Xpos=lcddev.width-1-X 实现了上面的效果,但是问题是:看到图片下面的201,我本
想显示的是"",现在的情况是横坐标超过320(横屏)就不能显示了,函数void LCD_Display_Dir(u8 dir)里&lcddev.width=480;&&&&&& lcddev.height=320; 或者 lcddev.width=320;
lcddev.height=480; 都是出着这样的问题,原子哥,这个坐标到底要不要改成lcddev.width=480;
lcddev.height=320;
是不是还有其他地方没有改到?????
if(lcddev.id==0X9341||lcddev.id==0X6804)
&&&lcddev.wramcmd=0X2C;
& &&lcddev.setxcmd=0X2A;
&&&lcddev.setycmd=0X2B;& &
&&&if(lcddev.id==0X6804)
&&&&lcddev.width=480;&&&&&&
&&&&lcddev.height=320;
__inline void LCD_SetCursor(u16 Xpos, u16 Ypos)
&&if(lcddev.id==0X9341||lcddev.id==0X6804)
&&LCD_WR_REG(lcddev.setxcmd);
&&Xpos=lcddev.width-1-X&&&&&&&&&&//加上这一句,不然是“镜像”
&&LCD_WR_DATA(Xpos&&8);
&&LCD_WR_DATA(Xpos&0XFF);&
&&LCD_WR_REG(lcddev.setycmd);
&&LCD_WR_DATA(Ypos&&8);
&&LCD_WR_DATA(Ypos&0XFF);
&问题2:背景清屏,我是通过改void LCD_Clear(u16 color)这个函数,结果是能够达到效果,但不知道有没有问题????
void LCD_Clear(u16 color)
&u32 index=0;&&&&&
&u32 totalpoint=lcddev.
&totalpoint*=lcddev. &//得到总点数
&LCD_Scan_Dir(U2D_R2L);&& //& 先改变扫描方向,
&LCD_SetCursor2(0x00,0x0000);&//设置光标位置
&LCD_WriteRAM_Prepare();&&&& //开始写入GRAM& &&
&for(index=0;index&index++)LCD_WR_DATA(color);&
&LCD_Scan_Dir(DFT_SCAN_DIR); //清屏之后再改回默认扫描方向
问题3:把 LCD_SetCursor(y,x);
x,y互换,就能换方向显示,这个是什么原理呢,我一直没想明白????
各位大神,小弟急,在线等,先谢谢大家
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间21 小时
补充一个问题:
//显示字符串
//x,y:起点坐标
//width,height:区域大小&&
//size:字体大小
width
//*p:字符串起始地址
&&
void&LCD_ShowString(u16&x,u16&y,u16&width,u16&height,u8&size,u8&*p)
{&&&&&&&&&
height+=y;
&&&&while((*p&='~')&&(*p&='&'))//判断是不是非法字符!
&&&&{&&&&&&&
&&&&&&&&if(x&=width){x=x0;y+=}
&&&&&&&&if(y&=height)//退出
&&&&&&&&LCD_ShowChar(x,y,*p,size,0);
&&&&&&&&x+=size/2;
&&&&&&&&p++;
&&&&}&&
}
原子哥://width,height:区域大小&width+=x;height+=y;这个是什么意思呢?&有了这一句width+=x;
&if(x&=width){x=x0;y+=}这个怎么也不会执行呀?&&其它几句我看明白了的
主题帖子精华
金钱113389
在线时间830 小时
改横屏,lcd尺寸必须改为:lcddev.width=480;&lcddev.height=320;
你的超过320就没法显示,怀疑是你设置坐标范围的问题,你的LCD_ShowString,是怎么样的?
通过仿真跟踪,比较容易解决你这个超过320不能显示的问题。
至于LCD&清屏,这个横竖都没关系,关键是在lcd部分清屏的时候,这就麻烦了,因为RM68042,不是很好处理,除非用最蠢的办法:单个点慢慢清除。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间21 小时
回复【3楼】正点原子:
------------------------
我的LCD_ShowString&是这样的,
LCD_ShowString(300,290,200,16,16,&&); &&函数体没有变动,传的参数应该没有超范围
void&LCD_ShowString(u16&x,u16&y,u16&width,u16&height,u8&size,u8&*p)
{&&&&&&&&&
height+=y;
&&&&while((*p&='~')&&(*p&='&'))//判断是不是非法字符!
&&&&{&&&&&&&
&&&&&&&&if(x&=width){x=x0;y+=}
&&&&&&&&if(y&=height)//退出
&&&&&&&&LCD_ShowChar(x,y,*p,size,0);
&&&&&&&&x+=size/2;
&&&&&&&&p++;
&&&&}&&
}
主题帖子精华
新手上路, 积分 29, 距离下一级还需 21 积分
在线时间0 小时
之前改程序也遇到类似问题,你的液晶屏驱动需要改一下...你将驱动发上来看一下呗
主题帖子精华
金钱113389
在线时间830 小时
LCD_ShowString没问题,你有jtag么?
跟踪进去,看看是哪里的问题导致的不显示320以后的内容。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间21 小时
原子哥与tonly0212:
&&&&& 现在问题好像基本解决了,驱动程序就是原子哥提供的,现在更改的有下面几个地方:
&& 1:void LCD_Display_Dir(u8 dir) 函数里, lcddev.width=480;& lcddev.height=320;
&if(lcddev.id==0X6804)
&&&&lcddev.width=480;
&&&&lcddev.height=320;
&2:我认为这里是关键地方:函数 void LCD_Scan_Dir(u8 dir),& 原子哥原始的是 if(lcddev.id==0X6804) regval|=0x02;现在改成 if(lcddev.id==0X6804) regval|=0x32;
&&dirreg=0X36;
&&&regval|=0X08;//BGR&& && //这个设置是重点!!!!!
&&if(lcddev.id==0X6804) regval|=0x32;//6804 需要设置&&&
&&LCD_WriteReg(dirreg,regval);
3:CD_SetCursor(x,y);&函数,现在我并没有把x,y互换。 但任然加了一句Ypos=lcddev.height-1-Y& ,(这样也可以// Xpos=lcddev.width-1-X
//当 regval|=0x31;
用这一句)
__inline void LCD_SetCursor(u16 Xpos, u16 Ypos)
&&if(lcddev.id==0X9341||lcddev.id==0X6804)
&&LCD_WR_REG(lcddev.setxcmd);
&&Ypos=lcddev.height-1-Y& //????
&//&Xpos=lcddev.width-1-X& //当 regval|=0x31;& 用这一句
&&LCD_WR_DATA(Xpos&&8);
&&LCD_WR_DATA(Xpos&0XFF);&
&&LCD_WR_REG(lcddev.setycmd);
&&LCD_WR_DATA(Ypos&&8);
&&LCD_WR_DATA(Ypos&0XFF);
4:经测试,寄存器36H的B1,B0位影响很大,应该是屏幕显示翻转的意思。
请原子哥再测试下,最后总结下是不是这样的。
6f0cb6cfe573ea9fbb7c75e4.jpg (0 Bytes, 下载次数: 0)
22:54 上传
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间21 小时
现在把有改动的地方贴出来,其他的与原子哥的一样,没改动
//设置LCD显示方向(6804不支持横屏显示)
//dir:0,竖屏;1,横屏
void&LCD_Display_Dir(u8&dir)
{
if(dir==0)//竖屏
lcddev.dir=0;//竖屏
lcddev.width=240;
lcddev.height=320;
if(lcddev.id==0X9341||lcddev.id==0X6804)
lcddev.wramcmd=0X2C;
lcddev.setxcmd=0X2A;
lcddev.setycmd=0X2B;&& &
if(lcddev.id==0X6804)
lcddev.width=480;
lcddev.height=320;
}else&if(lcddev.id==0X8989)
lcddev.wramcmd=R34;
lcddev.setxcmd=0X4E;
lcddev.setycmd=0X4F;&&
lcddev.wramcmd=R34;
lcddev.setxcmd=R32;
lcddev.setycmd=R33;&&
}else&if(lcddev.id!=0X6804)//6804不支持横屏显示
lcddev.dir=1;//横屏
lcddev.width=320;
lcddev.height=240;
if(lcddev.id==0X9341)
lcddev.wramcmd=0X2C;
lcddev.setxcmd=0X2A;
lcddev.setycmd=0X2B;&& &
}else&if(lcddev.id==0X8989)
lcddev.wramcmd=R34;
lcddev.setxcmd=0X4F;
lcddev.setycmd=0X4E;&&
lcddev.wramcmd=R34;
lcddev.setxcmd=R33;
lcddev.setycmd=R32;&&
LCD_Scan_Dir(DFT_SCAN_DIR); //默认扫描方向
}
void&LCD_Scan_Dir(u8&dir)
{
u16&regval=0;
u8&dirreg=0;
if(lcddev.dir==1&&lcddev.id!=0X6804)//横屏时,对6804不改变扫描方向!
switch(dir)//方向转换
case&0:dir=6;
case&1:dir=7;
case&2:dir=4;
case&3:dir=5;
case&4:dir=1;
case&5:dir=0;
case&6:dir=3;
case&7:dir=2; &&&&&
if(lcddev.id==0x9341||lcddev.id==0X6804)//,很特殊
switch(dir)
case&L2R_U2D://从左到右,从上到下
regval|=(0&&7)|(0&&6)|(0&&5);&
case&L2R_D2U://从左到右,从下到上
regval|=(1&&7)|(0&&6)|(0&&5);&
case&R2L_U2D://从右到左,从上到下
regval|=(0&&7)|(1&&6)|(0&&5);&
case&R2L_D2U://从右到左,从下到上
regval|=(1&&7)|(1&&6)|(0&&5);&
case&U2D_L2R://从上到下,从左到右
regval|=(0&&7)|(0&&6)|(1&&5);&
case&U2D_R2L://从上到下,从右到左
regval|=(0&&7)|(1&&6)|(1&&5);&
case&D2U_L2R://从下到上,从左到右
regval|=(1&&7)|(0&&6)|(1&&5);&
case&D2U_R2L://从下到上,从右到左
regval|=(1&&7)|(1&&6)|(1&&5);&
dirreg=0X36;
&
regval|=0X08;//BGR&&& &&//这个设置是重点!!!!!
if(lcddev.id==0X6804)&regval|=0x32;//6804&需要设置 &&&
LCD_WriteReg(dirreg,regval);
&
if(regval&0X20) &&//B5位,&page/column
if(lcddev.width&lcddev.height)//交换X,Y
temp=lcddev.
lcddev.width=lcddev.
lcddev.height=
&
if(lcddev.width&lcddev.height)//交换X,Y
temp=lcddev.
lcddev.width=lcddev.
lcddev.height=
&
LCD_WR_REG(lcddev.setxcmd);&
LCD_WR_DATA(0);LCD_WR_DATA(0);
LCD_WR_DATA((lcddev.width-1)&&8);LCD_WR_DATA((lcddev.width-1)&0XFF);
LCD_WR_REG(lcddev.setycmd);&
LCD_WR_DATA(0);LCD_WR_DATA(0);
LCD_WR_DATA((lcddev.height-1)&&8);LCD_WR_DATA((lcddev.height-1)&0XFF);&&
&& }else&
switch(dir)
case&L2R_U2D://从左到右,从上到下
regval|=(1&&5)|(1&&4)|(0&&3);&
case&L2R_D2U://从左到右,从下到上
regval|=(0&&5)|(1&&4)|(0&&3);&
case&R2L_U2D://从右到左,从上到下
regval|=(1&&5)|(0&&4)|(0&&3);
case&R2L_D2U://从右到左,从下到上
regval|=(0&&5)|(0&&4)|(0&&3);&
case&U2D_L2R://从上到下,从左到右
regval|=(1&&5)|(1&&4)|(1&&3);&
case&U2D_R2L://从上到下,从右到左
regval|=(1&&5)|(0&&4)|(1&&3);&
case&D2U_L2R://从下到上,从左到右
regval|=(0&&5)|(1&&4)|(1&&3);&
case&D2U_R2L://从下到上,从右到左
regval|=(0&&5)|(0&&4)|(1&&3);&
if(lcddev.id==0x8989)//8989&IC
dirreg=0X11;
regval|=0X6040; //65K&&&
& }else//其他驱动IC
dirreg=0X03;
regval|=1&&12;&&
LCD_WriteReg(dirreg,regval);
__inline&void&LCD_SetCursor(u16&Xpos,&u16&Ypos)
{
& if(lcddev.id==0X9341||lcddev.id==0X6804)
LCD_WR_REG(lcddev.setxcmd);&
Ypos=lcddev.height-1-Y &//????这里没有互换x,y
// Xpos=lcddev.width-1-X &//当&regval|=0x31; &用这一句
LCD_WR_DATA(Xpos&&8);&
LCD_WR_DATA(Xpos&0XFF); &
LCD_WR_REG(lcddev.setycmd);&
LCD_WR_DATA(Ypos&&8);&
LCD_WR_DATA(Ypos&0XFF);
if(lcddev.dir==1)Xpos=lcddev.width-1-X//横屏其实就是调转x,y坐标
LCD_WriteReg(lcddev.setxcmd,&Xpos);
LCD_WriteReg(lcddev.setycmd,&Ypos);
主题帖子精华
金钱113389
在线时间830 小时
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间21 小时
原子哥,你自己写的GUI有没有相应的教程呀,在论坛上的资料里还没有找到GUI的教程??
主题帖子精华
金钱113389
在线时间830 小时
暂时还没哦
主题帖子精华
金牌会员, 积分 1069, 距离下一级还需 1931 积分
在线时间121 小时
我在原有基础上修改出来了,不过只针对6804的,
只需要把lcd.c中的LCD_Display_Dir(0);修改LCD_Display_Dir(1);就可以实现横向了
目前只测试了显示文字,图片显示未测试
还没测试图片是否可行,等看到显示图片章节再说
以下是lcd.c文件,只需要替换即可
13:46 上传
点击文件名下载附件
49.39 KB, 下载次数: 186
主题帖子精华
新手上路, 积分 37, 距离下一级还需 13 积分
在线时间1 小时
mark&这个要顶
主题帖子精华
初级会员, 积分 117, 距离下一级还需 83 积分
在线时间0 小时
回复【12楼】hexboot:
---------------------------------
只该这个地方,我的就不行。。
主题帖子精华
金牌会员, 积分 1069, 距离下一级还需 1931 积分
在线时间121 小时
回复【14楼】chenyuedv:
---------------------------------
好久啦,差点想不起来了.
那个C文件,你替换下,然后修改LCD_Display_Dir(1)
文件里具体哪里修改的,我就忘了.很久了.
Powered by}

我要回帖

更多关于 js让微信页面强制横屏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信