完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先就简单的晒一张图:
没负压芯片,FFC连接,长得还可以。跟圣和泰的王先生沟通好久,确定:lcd驱动需要约9V,***n0064需要3-5V的工作电压{当然一般芯片是输入的vdd是多少输出的vdd就是多少),led驱动在3V左右。 最终接法如下:芯片接51单片机开发板上的5V电压,led驱动接3V电压,V0不接(我发现我的V0接到5v上跟不接效果一样,估计电压还是不够)。这样的结果就是对比度很差,以下照片都是斜着拍的。另外,为了产生负电压来足够驱动液晶,方法是:充电宝接另一块借的开发板,并把开发板上的VDD接到我自己开发板的GND,这样借来的开发板上的GND就是-5V了。注意,两块开发板的电源一定要是不同的电源否则有可能短路。 整个芯片的连接图如下:
自己买了一个转接板和连接器,转接板没啥说的,这个连接器可一定要选好,我的连接器只有歪着放才能接触良好。 **********************************************正经的来了*********************** 简单说一下lcd。这款lcd是无字库负显示,就是说施加电压的点显示白色,那么正常的显示结果就是蓝黑底白字了。 配置了3块芯片,两个SBN0064是主控芯片,每块对应64*64点阵,所以这个lcd实际上是把64*64的控制域分开两半,合起来就是25632了。 时序上没有什么可说的,在高频显示的时候,有可能lcd跟不上mcu时钟的变化,所以时序控制与读忙等等都是要考虑的。但是51的12MHZ晶振就很随意了,不读忙,不暂停。另外,SBN6400是用来辅助SBN0064控制的,比如时钟的产生。 看完SBN0064手册,总的说来,分为以下几步,程序中也有体现: 1、复位rst信号升高。 2、初始化,初始化实际上是要给lcd控制器发命令,把RS置零,通过CS1CS2先后选中两块芯片,发送3FH字节,这个字节的末位将开启lcd显示。 3、设置行列地址,***n0064的控制区域分为8个page,64个column,地址都是可以设定的,其中column地址会自动在一次显示后加1; 4、送上显示字节,一个字节刚好对应一个page中的某一列的8个像素点。 5、时序问题。E这个引脚是用来“使能lcd控制器接收mcu的信号”,和2有区别。E应该是一个周期性的信号。每次发命令和数据结束后置零。 实在是惭愧,本来想着做一个汉字显示或者滚动显示,但是实在是找不到好用的字模软件,手绘的太麻烦也没有成功:
,所以就做了一个交错条纹显示的例子,见下: #include #include #include #define uchar unsigned char #define uint unsigned int #define nop() _nop_() ***it CSA=P3^5; ***it CSB=P3^6; ***it RS=P3^2; ***it RW=P3^3; ***it E=P3^4; ***it RST=P3^7; void delay(uint xms); void write_command (uchar command); void write_data(uchar data_buffer); void write_command(uchar command) { RS=0 ;//0 present instruction。 RW=0; P1=command; E=1; nop(); E=0; } void write_data(uchar data_buffer) { RW=0; RS=1; P1=data_buffer; E=1; nop(); E=0; } void init(void) { CSA=0; CSB=0; // P3=0X0C; CSA=1; CSB=0; write_command(0X00); // left screen write CSA=0; CSB=1; write_command(0X00); // right screen write //on display CSA=1; CSB=0; write_command(0x3f); // 3F对应一个打开显示的命令,注意只打开E代表使能“从mcu接收数据”。 CSA=0; CSB=1; write_command(0X3f); main() {//原程序的思想是先分别选中两块,分别发送其地址,我改动为要写哪就选中后发地址+发数据 uchar page_address,i,j;//黑白对应关系:设置输出1的话,该点实际上是白点。 RST=1; init(); while(1) { for(j=0; j<8; j++) { page_address=j|0xB8; CSA=1; CSB=0; write_command(page_address); // left screen write for (i=0; i<64; i++) { write_data(0xF); } } for(j=0; j<8; j++) { page_address=j|0xB8; CSA=0; CSB=1; write_command(page_address); // left screen write for (i=0; i<64; i++) { write_data(0xF0); } } while(1); } } 附:不同的单片机晶振可能需要一点延时,另外,由于控制芯片的存在,发送要显示的数据后,不需要反复刷新,芯片能自动保持驱动lcd的电压值。 上面的程序对于SBN0064 1号,显示F,也就是低4位变白,高4位还是蓝黑色;SBN0064 2号,输出F0,高4位变白,低4位保持蓝黑。加个循环交替显示,效果能稍微好一点。。结果如下: |
|
相关推荐
7 个讨论
|
|
3.3V电压,楼主的能坚持多久哦
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请问OLED显示屏可以让整帧画面同一时间显示出来吗,而不是行扫?
10183 浏览 1 评论
8221 浏览 3 评论
动手做:使用 LED 灯带第 1 部分 – 制作住宅柜下照明
7042 浏览 3 评论
11189 浏览 13 评论
9061 浏览 2 评论
662浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 11:20 , Processed in 0.669263 second(s), Total 59, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号