打印

高手看看这个OLED显示怎么向左移动全部显示(源码

[复制链接]
3006|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
   看一个这个图片,手机拍的不是很清楚;不过基本上看的清,具体问题是这样的。芯片采用新华龙的C8051F347这个芯片,
OLED屏是12864 主控是SH1101A 。图片整体向右移了半个阿拉数字的宽度。请教大家有知道的帮看看。。。。谢谢!!!!

这个是源程序,,,,,希望有知道高手指点一下。。先感激一下!!!!!
void disc(unsigned char X,unsigned char Y,unsigned char * c)//显示英文//
{
unsigned char n;
Woled_Command (0xb7-(Y<<1));
if(X%2)
Woled_Command (0x08);
else
Woled_Command (0x00);
Woled_Command (0x10+(X>>1));
for(n=0;n<=15;n+=2)
Woled_Data(*(c+n));
Woled_Command (0xb7-(Y<<1)-1);
if(X%2)
Woled_Command (0x08);
else
Woled_Command (0x00);
Woled_Command (0x10+(X>>1));
for(n=1;n<=15;n+=2)
Woled_Data(*(c+n));
}
// X is 0 to 7
void dish(unsigned char X,unsigned char Y,unsigned char * h)//显示汉字//
{
unsigned char n;
Woled_Command (0xb7-(Y<<1));
if(X%2)
Woled_Command (0x08);
else
Woled_Command (0x00);
Woled_Command (0x10+(X>>1));
for(n=0;n<=31;n+=2)
Woled_Data(*(h+n));
Woled_Command (0xb7-(Y<<1)-1);
if(X%2)
Woled_Command (0x08);
else
Woled_Command (0x00);
Woled_Command (0x10+(X>>1));
for(n=1;n<=31;n+=2)
Woled_Data(*(h+n));
}
void disn(unsigned char X,unsigned char Y,unsigned char n)//显示数字//
{
unsigned char m;
Woled_Command (0xb7-(Y<<1));
if(X%2)
Woled_Command (0x08);
else
Woled_Command (0x00);
Woled_Command (0x10+(X>>1));
//for(n=0;n<=15;n+=2)
//Woled_Data(*(c+n));
for(m=0;m<=15;m+=2)
Woled_Data(*(num[n]+m));
Woled_Command (0xb7-(Y<<1)-1);
if(X%2)
Woled_Command (0x08);
else
Woled_Command (0x00);
Woled_Command (0x10+(X>>1));
for(m=1;m<=15;m+=2)
Woled_Data(*(num[n]+m));
}
void Woled_init(void)
{
Woled_RES=0;
Delay_us(30);
Woled_RES=1;
Delay_us(20);
Woled_Command(0xAE); //DOT MARTIX DISPLAY OFF
Woled_Command(0x40); //SET DISPLAY START LINE(40H-7FH)
Woled_Command(0xA1); //SET SEGMENT RE-MAP(0A0H-0A1H)  //显示左右方向调整 镜像。
Woled_Command(0xA4); //ENTIRE DISPLAY OFF(0A4H-0A5H)  //显示方式。
Woled_Command(0xA6); //SET NORMAL DISPLAY(0A6H-0A7H)  //反白和标准显示方式。
Woled_Command(0xC0); //COM SCAN COM1-COM64(0C8H,0C0H) //显示上理向调整,镜像。
Woled_Command(0xA8); //SET MULTIPLEX RATIO 64
Woled_Command(0x3F);
Woled_Command(0xD3); //SET DISPLAY OFFSET(OOH-3FH)  //
Woled_Command(0x00);
Woled_Command(0xD5); //SET FRAME FREQUENCY
Woled_Command(0x50); //100Hz
Woled_Command(0xD9); //SET DIS-/PRE-_CHARGE PERIOD
Woled_Command(0x23);
Woled_Command(0xDA); //COM PIN CONFIGURATION(02H,12H)
Woled_Command(0x12);
Woled_Command(0xDB); //SET VCOM DESELECT LEVEL(035H)//
Woled_Command(0x35);
Woled_Command(0x81); //CONTARST CONTROL(00H-0FFH)
Woled_Command(0x4F);
//Woled_Command(0xAD); //SET DC/DC BOOSTER(8AH=OFF,8BH=ON)
//Woled_Command(0x8A);
Woled_Command(0xAF); //DSPLAY ON
}
void main()
{
System_Init();
Woled_init();
Delay_us(500);
/****-------------------数字测试---------***/
//第一列显示数字测试//
disn(1,0,0);
disn(2,0,1);
disn(3,0,2);
disn(4,0,3);
disn(5,0,4);
disn(6,0,5);
disn(7,0,6);
disn(8,0,7);
disn(9,0,8);
disn(10,0,9);
disn(11,0,0);
disn(12,0,1);
disn(13,0,2);
disn(14,0,3);
disn(15,0,4);
disn(16,0,5);
//第二列汉字测试//
dish(1,1,yi);
dish(3,1,er);
dish(5,1,san);
dish(7,1,si);
dish(9,1,wu);
dish(11,1,liu);
dish(13,1,ri);
dish(15,1,qi);
//第三列显示汉字测试//
dish(1,2,year);
dish(3,2,month);
dish(5,2,day);
dish(7,2,xing);
dish(9,2,qi);
dish(11,2,wu);
dish(13,2,si);
dish(15,2,qi);
//第四列显示英文测试//
disc(1,3,h);
disc(2,3,d);
disc(3,3,w);
disc(4,3,z);
disc(5,3,dot);
disc(6,3,c);
disc(7,3,m);
disc(8,3,o);
disc(9,3,w);
disc(10,3,mao);
disc(10,3,mao);
disc(11,3,mp);
disc(12,3,c);
disc(13,3,o);
disc(14,3,m);
disc(15,3,d);
disc(16,3,w);
//-----------------数字测试-------//
while(1);
}

这个是OLED的主控芯片资料。。。。。。。。。。
SH1101A.pdf (832.31 KB)

相关帖子

沙发
dccdaa2222|  楼主 | 2010-12-24 15:21 | 只看该作者
没人知道吗?顶上去 12864的屏

使用特权

评论回复
板凳
huangqi412| | 2010-12-24 15:38 | 只看该作者
这个,自己多试一下坐标设置吧。

使用特权

评论回复
地板
lelee007| | 2010-12-24 20:23 | 只看该作者
显存没对准吧

使用特权

评论回复
5
dccdaa2222|  楼主 | 2010-12-24 22:13 | 只看该作者
谢谢楼上的两位,但是有人能指点程序上能怎么改过来吗。。。。。等高手出现。。。

使用特权

评论回复
6
huangqi412| | 2010-12-24 22:31 | 只看该作者
等个P,谁会去给你改程序。。。  自己慢慢调,肯定坐标没搞对。

使用特权

评论回复
7
dccdaa2222|  楼主 | 2010-12-25 08:14 | 只看该作者
唉!!!!

使用特权

评论回复
8
dccdaa2222|  楼主 | 2010-12-27 07:49 | 只看该作者
看来是没人知道啦!!!唉!!!!!

使用特权

评论回复
9
dccdaa2222|  楼主 | 2010-12-29 15:42 | 只看该作者
呵呵!!!这个问题我搞定了。原来是原在屏的屏的int后面要加显示初始化。。。。。谢谢大家关心。。。。。

使用特权

评论回复
10
Galway-Zhang| | 2011-1-2 13:35 | 只看该作者
9# dccdaa2222

肯定要初始化D....不初始化.Srart点就不知道在哪里了.

使用特权

评论回复
11
weiyuliang| | 2013-5-27 16:14 | 只看该作者
:),标记一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

42

帖子

1

粉丝