OpenEdv-开源电子网

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

关于N5110驱动的问题

[复制链接]

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
发表于 2014-7-10 16:10:34 | 显示全部楼层 |阅读模式
5金钱
最近在玩5110,想写一个画点函数,但好像没有能够对应到某一具体的点的指令,有哪位高手能指点分享下么?小弟在这谢过了

最佳答案

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

具体的看手册吧!!! 0x21  初始化Lcd,功能设定使用扩充指令 0xd0  设定液晶偏置电压 0x20  使用基本指令 0x0C  设定显示模式,正常显示 这上面的是初始化时需要用到的。 0x40  列的地址 0x80  行的地址 这两个是配合设置坐标需要用到到了。因为每个行地址对应的是8个像素点。所以要设置8个其中一个的话需要一些处理。 比如说:地址为列地址为0x40,行地址为0x80, ...
绝望的下一秒就是机遇和希望!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-10
在线时间
0 小时
发表于 2014-7-10 16:10:35 | 显示全部楼层
具体的看手册吧!!!
0x21  初始化Lcd,功能设定使用扩充指令
0xd0  设定液晶偏置电压
0x20  使用基本指令
0x0C  设定显示模式,正常显示
这上面的是初始化时需要用到的。
0x40  列的地址
0x80  行的地址
这两个是配合设置坐标需要用到到了。因为每个行地址对应的是8个像素点。所以要设置8个其中一个的话需要一些处理。
比如说:地址为列地址为0x40,行地址为0x80,某种意义上可以理解成也起始坐标(0, 0),但是它对应的是第一行第一列前8个点。要设试着这8个其中一个的话只要(这里用LCD_write_byte(uchar data, uchar cmd),cmd=1写数据,cmd=0写指令,这个函数来给5110写数据或命令):
LCD_write_byte(0x40, 0);  //设置坐标:列
LCD_write_byte(0x80, 0);  //设置坐标:行
LCD_write_byte(0x01, 1);  //描第一个点
LCD_write_byte(0x02, 1);  //描第二个点
...
LCD_write_byte(0x80, 1);  //描第八个点

也可以定义一些宏定义与一个变量:
#define D0 (1<<0)
#define D1 (1<<1)
...
#define D0 (1<<7)
temp = D0 | D1 | D2;
LCD_write_byte(temp, 1);  //点亮第1、2、3点
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-7-10 16:55:28 | 显示全部楼层
帮顶。。。。。。。
回复

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
 楼主| 发表于 2014-7-10 17:03:43 | 显示全部楼层
回复【2楼】西门吹雪:
---------------------------------
多谢!
绝望的下一秒就是机遇和希望!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-10 23:16:27 | 显示全部楼层
参考下别人的代码吧。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
 楼主| 发表于 2014-7-11 14:51:45 | 显示全部楼层
回复【5楼】ziye334:
---------------------------------
懂了,谢谢了!!!
绝望的下一秒就是机遇和希望!
回复

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
 楼主| 发表于 2014-7-11 15:43:45 | 显示全部楼层
回复【5楼】ziye334:
---------------------------------
如果是这样的话,那必须用buf来存储每个点的数据了,可是如果用MSP430单片机的数据RAM只有512B,不够用啊,这种问题该怎么解决呢?
绝望的下一秒就是机遇和希望!
回复

使用道具 举报

0

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-10
在线时间
0 小时
发表于 2014-7-11 18:24:58 | 显示全部楼层
像诺基亚5110这种低端点阵屏操作时都是全部刷新或局部刷新的,它不会管你原先的点是亮的还是灭的,所以无需将每个地址对应的点都定义一个变量来记录状态,至于要多少变量来存储需要根据功能看情况,描点只是为了一些2D图形服务(画线、画圆等),比如说:当你画一条直线后,还想在画一条直线与之交叉,而得到的结果是第二条线是完整的线,而第一条交叉点附近断掉了,原因是第二条线在交叉地方把第一条线的给覆盖掉了,为了避免这种情况,只需要在交叉点周边两条线有共用的地址用一个或几个变量保存原先的状态,再在这种状态下描点。
对于诺基亚5110,一般不建议用来做那些需要叠加效果的操作,所以基本上不会用变量存储原先的状态。
回复

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
 楼主| 发表于 2014-7-12 15:21:14 | 显示全部楼层
回复【8楼】ziye334:
---------------------------------
我测试了下 画不同列的时候是可以随便画的 但是如果画同一列多个点那么只会显示一个点 得把它们或起来才行 所以说得知道之前各个点的状态啊、
顺便贴上代码。
uchar Nokia5110_DrawPoint(uchar x_pos, uchar y_pos)
{
uchar y1 = 0,y2 = 0;
if (x_pos > 83 || y_pos > 47)
{
return 0;
}
y1 = y_pos / 8;
y2 = y_pos % 8;
N5110_add_xy(x_pos,y1);
N5110_sent_data(0x01 << y2);
return 1;
}
绝望的下一秒就是机遇和希望!
回复

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
 楼主| 发表于 2014-7-12 15:27:55 | 显示全部楼层
回复【8楼】ziye334:
---------------------------------
还有,如果需要用到叠加效果的操作,OLED可以么?
绝望的下一秒就是机遇和希望!
回复

使用道具 举报

0

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-10
在线时间
0 小时
发表于 2014-7-12 20:25:43 | 显示全部楼层
一般不拿5110做这些什么画线之类的操作,5110一般用来显示一些字符或汉字,或者显示一张图片,而这些操作都是覆盖式的操作。你要用它画线,那没办法只能将每个地址状态都保存起来,至于空间问题只能另想办法了,我也没有很好的办法,可以考虑使用外存(像用EEPROM存储,不过这样代码就会很复杂,显示速度也会下降)。
OLED什么的我不清楚!
回复

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
 楼主| 发表于 2014-7-12 21:04:38 | 显示全部楼层
回复【11楼】ziye334:
---------------------------------
谢谢了!
绝望的下一秒就是机遇和希望!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 05:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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