这个u为同事调走了,丢弃的,随手捡来,感觉是个有用的东西,插USB供电显示“金某某家”,OLED显示不错,有驱动的愿望,如果不能驱动,则是真正的垃圾了。此U称为第二代。 前段时间搞T12焊台,拆装OLED,去年买过一个12832长条的OLED,当时9元觉得便宜,但现在想还是贵了,找到芯片型号,试了一下驱动,OK。 此U是OLED12864,显示内容比12832多一倍,有一定价值,再说如果焊台OLED坏,是否可以换此屏呢。 12864想要驱动,最关键的是知道COG芯片是什么?才知道接线、指令、数据。别人能有接线方式更好。 搜了全网,有第一代U LCD12864的驱动案例,芯片是ST7920。LCD是交流电压驱动,OLED是电流驱动,有点类似LED,不用多想,OLED绝对不是这种了。再也搜不到一点信息了,没shortcut可走。 按照T12焊台oLED及原来买过的12832oLED等信息,OLED的驱动芯片大多为SSD1301、1306、1317等,猜想、假设它是SSD1306吧,开拓的路只有这样试探。 找SSD1306的手册分析对比,见附件《SSD1306 接口图.xls》
看来很有共同点,有希望成功。 PCB背面,这个SC(32)-A0160是8位的MCU,资料不多,没有多少价值 ------------------------我是分隔线--------------------
正面是线31,与其它oLED有相同处 ------------------------我是分隔线--------------------
准备手术 ------------------------我是分隔线-------------------- 切除心脏SC(32)-A0160,好起死回生 ------------------------我是分隔线--------------------
决定用IIC方式,虽然知道此款是4线SPI,但一手搞定IIC,以免多线,拆oLED,好断铜 ------------------------我是分隔线--------------------
排线下藏着接GND的铜,为什么要断铜,见xls表或芯片手册 ------------------------我是分隔线--------------------
断了 ------------------------我是分隔线--------------------
中间一度点不亮,黑黑的屏心情不好,浪费时间。加Reset线,用IO口复位,驱动成功 ------------------------我是分隔线--------------------
写字试试,加了几个字库程序,中央是51Hei DZ ------------------------我是分隔线-------------------- 完工后剪线,拆线,当宝贝收藏好,总有使用它的时候,第2天再试RST线接VCC,不需要复位!成功。 望admin多奖点黑币! 程序在家了,晚上补上,是MSP430F415的,IAR6环境。手上也有C51、STM32、arduino等其它的,估计版权问题不上传了。
程序已上传。
单片机源程序如下:
- //////////////////////////////////////////////////////////////////////////////////
- //本程序只供学习使用,未经作者许可,不得用于其它任何用途
- //#include <io430.h>
- #include "msp430x41x.h"
- #include "intrinsics.h"
- #define CPU_F ((double)8388608)
- #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
- #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
- #include "oled.c"
- void main(void)
- {
- unsigned char t;
- WDTCTL = WDTPW + WDTHOLD;
- FLL_CTL0 |= XCAP10PF;
- IFG1 &=~OFIFG;
- while(IFG1 & OFIFG) IFG1 &=~OFIFG;
-
- /*-----------------DCO精准 20191208,-----------------*/
- SCFQCTL = SCFQ_4M; // =SCFQ_M + SCFQ_4M; 1禁调制 + 频
- FLL_CTL0 |= DCOPLUS; //2倍频
-
-
- P1DIR |= 0xff; //方向设为输出
- P1OUT |= 0;
-
- Initial_M096128x64_ssd1306();
- delay_ms(5);
- while(1)
- {
- // fill_picture(0x05);//全屏显示
- // delay_ms(1000);
- // fill_picture(0xaa);//半屏熄灭;出现一条一条的亮线
- // delay_ms(1000);
- // Picture();//显示一张图片
- // delay_ms(1000);
-
- OLED_Clear();
- OLED_ShowCHinese(0,0,0);
- OLED_ShowCHinese(18,0,1);
- OLED_ShowCHinese(36,0,2);
- OLED_ShowCHinese(54,0,3);
- OLED_ShowCHinese(72,0,4);
- OLED_ShowCHinese(90,0,5);
- OLED_ShowString(0,2,"0.96' OLED TEST");
- OLED_ShowString(20,4,"51Hei DZ");
- OLED_ShowString(0,6,"ASCII:");
- OLED_ShowString(63,6,"CODE:");
- OLED_ShowChar(48,6,t);//显示ASCII字符
- t++;
- if(t>'~')t=' ';
- OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值
-
-
- delay_ms(100);
-
- delay_ms(50);
- // OLED_DrawBMP(0,0,128,8,BMP1); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
- OLED_DrawBMP(BMP1); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
- // delay_ms(50);
- // OLED_DrawBMP(BMP2); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
- delay_ms(500);
- }
- }
复制代码
所有资料51hei提供下载:
|