-
UID:1664634
-
- 注册时间2014-04-22
- 最后登录2024-09-13
- 在线时间265小时
-
-
访问TA的空间加好友用道具
|
某宝买的清仓货,没有资料,只有个引脚图,捣鼓了很久,试了不少程序都不对。 论坛大神多,不知道有没有用这个屏幕的呢?如果有的话,请给我一份程序参考吧,谢谢!或者给我点提示也好呀。很抱歉我没有M ,没办法奖励大家。 这是文字和引脚图,是卖家描述里面的,仅有这点资料 2.0寸 GPM1306B0 液晶屏 显示屏 17PIN接口 清仓蓝底白字外形尺寸:长*宽*厚/52*43.4*4.4MM 液晶屏尺寸:50*36MM脚距约:1.0MM 17Pin这是外观 文字部分放大 被面放大 这是说驱动是1306吗? 我的是stc的单片机,试了几个都不对 我是用的论坛里找到的代码,但是是驱动一个网银屏的,和这个不太一样。 - #include "STC15Fxxxx.H"
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- //==============引脚定义==================
- sbit SCK = P1^0; // 15
- sbit SDA = P3^7; // 14
- sbit AO = P1^2; // 1
- sbit RST = P1^3; //2
- sbit CS = P1^4; //3
- #define Page0 0xb0 //第0页地址
- #define Page_max 0xb8 //最大页地址,第8页
- #define Column_h 0x10 //列地址(高位)
- #define Column_l 0x00 //列地址(低位)
- //-----------数字8*16----------------------
- uchar code s0[29][16]={
- {
- /*-- 文字: 0 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
- },
- //uchar code s1[]={
- {
- /*-- 文字: 1 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
- },
- //uchar code s2[]={
- {
- /*-- 文字: 2 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
- },
- //uchar code s3[]={
- {
- /*-- 文字: 3 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
- },
- //uchar code s4[]={
- {
- /*-- 文字: 4 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
- },
- //uchar code s5[]={
- {
- /*-- 文字: 5 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
- },
- //uchar code s6[]={
- {
- /*-- 文字: 6 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
- },
- //uchar code s7[]={
- {
- /*-- 文字: 7 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
- },
- //uchar code s8[]={
- {
- /*-- 文字: 8 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
- },
- //uchar code s9[]={
- {
- /*-- 文字: 9 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
- },
- {
- /*-- 文字: : 10--*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
- },
- {
- /*-- 文字: 小点 11 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
- },
- {
- /*-- 调入了一幅图像:大点 12 --*/
- /*-- 宽度x高度=8x16 --*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x78,0x78,0x78,0x00,0x00,
- },
- /*-- 文字: M 13 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,
- /*-- 文字: A 14 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
- /*-- 文字: / 15 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,
- /*-- 文字: H 16 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,
- /*-- 文字: V 17 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,
- /*-- 文字: W 18 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,
- /*-- 文字: C 19 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,
- /*-- 文字: U 20 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
- /*-- 文字: S 21 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,
- /*-- 文字: T 22 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
- /*-- 文字: C 23 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,
- /*-- 文字: R 24 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
- /*-- 文字: D 25 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,
- /*-- 文字: + 26 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,
- /*-- 文字: O 27 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,
- /*-- 文字: X 28 --*/
- /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,
- };
- uchar code QQ []=
- {
- //-- 调入了一幅图像:Q公仔-1.bmp
- //-- 宽度x高度=128x64 --
- 0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0xF0,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,
- 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xF0,0xE0,0xC0,0x80,0x00,
- };
- void DelayM(uint a)
- {//延时函数 1MS/次
- uchar i;
- while( --a != 0)
- {
- for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
- } //i 从0加到125,CPU大概就耗时1毫秒
- }
- //=============写命令=================
- void LcdSt7567_WriteCmd(cmd)
- {
- uchar i,j;
- CS = 0; //片选打开
- AO = 0; //选择写命令
- SCK = 0; //时钟置零
- for(i=0;i<8;i++) //写八次
- {
- j = cmd; //把数据赋值给变量 j
- SCK = 0; //时钟置零
- SDA = cmd & 0x80; //因为数据始终是 1111 1111 这样的格式 但是一根线一次只能写一个数 故屏蔽第七位 取最高位写入
- SCK = 1; //上升沿写入数据
- cmd = j << 1; //数据左移一位 然后再次写入 直到八个二进制数字全部写入
- }
- CS = 1; //片选至高位
- _nop_(); //延时一下
- AO = 1; //释放读写端口
- SDA = 1; //释放数据端口 这样使写入完成后 没有拉电流产生 可以省那么一点点的电 或者说 也可以并联其他器件到这个端口上同时使用
- }
- //=============写数据====================
- void LcdSt7567_WriteData(dat)
- {
- uchar i,j;
- CS = 0; //片选打开
- AO = 1; //选择写数据(送显示)
- SCK = 0; //时钟置零
- for(i=0;i<8;i++)
- {
- j = dat; //变量赋值为需要的数据
- SCK = 0; //时钟置低位
- SDA = dat & 0x80; //舍弃低八位
- SCK = 1; //上升沿写数据
- dat = j << 1; //数据左移一位
- }
- CS = 1; //片选置高
- AO = 0; //读写置低
- _nop_(); //延时一下
- AO = 1; //释放读写端口
- SDA = 1; //释放数据端口
- }
- //==================液晶初始化=============
- void LCD_ST7567_INIT(void)
- {
- RST = 1; //硬复位端口置高
- DelayM(100); //延时一下等待上电稳定
- RST=0; //硬件复位
- DelayM(100); //延时一下
- RST=1; //复位完成
- /* LcdSt7567_WriteCmd(0xE2);//软件复位
- _nop_();
- LcdSt7567_WriteCmd(0xA3);//偏压设置 第11命令 ok
- LcdSt7567_WriteCmd(0xA0);//显示方向 左右 第8命令 ok
- LcdSt7567_WriteCmd(0xC8);//显示方向 上下 第15命令 ok
- LcdSt7567_WriteCmd(0x25);//电阻率设置 第17命令 ok
- LcdSt7567_WriteCmd(0x81);//对比度 ok 18命令
- LcdSt7567_WriteCmd(0x25);// ok
- LcdSt7567_WriteCmd(0xF8);//双字节命令 增压//19命令
- LcdSt7567_WriteCmd(0x01);
- _nop_();
- LcdSt7567_WriteCmd(0x2F);//电源开
- LcdSt7567_WriteCmd(0xA6); //白底黑字 a7为白字黑底
- LcdSt7567_WriteCmd(0xA4); //正常显示
- LcdSt7567_WriteCmd(0x40);//显示开始位置
- LcdSt7567_WriteCmd(0xAF); //开显示
- */
- LcdSt7567_WriteCmd(0xae);//--turn off oled panel
- LcdSt7567_WriteCmd(0x00);//---set low column address
- LcdSt7567_WriteCmd(0x10);//---set high column address
- LcdSt7567_WriteCmd(0x40);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
- LcdSt7567_WriteCmd(0x81);//--set contrast control register
- LcdSt7567_WriteCmd(0x66); // Set SEG Output Current Brightness
- LcdSt7567_WriteCmd(0xa1);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
- LcdSt7567_WriteCmd(0xc8);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
- LcdSt7567_WriteCmd(0xa6);//--set normal display
- LcdSt7567_WriteCmd(0xa8);//--set multiplex ratio(1 to 64)
- LcdSt7567_WriteCmd(0x3f);//--1/64 duty
- LcdSt7567_WriteCmd(0xd3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
- LcdSt7567_WriteCmd(0x00);//-not offset
- LcdSt7567_WriteCmd(0xd5);//--set display clock divide ratio/oscillator frequency
- LcdSt7567_WriteCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
- LcdSt7567_WriteCmd(0xd9);//--set pre-charge period
- LcdSt7567_WriteCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
- LcdSt7567_WriteCmd(0xda);//--set com pins hardware configuration
- LcdSt7567_WriteCmd(0x12);
- LcdSt7567_WriteCmd(0xdb);//--set vcomh
- LcdSt7567_WriteCmd(0x40);//Set VCOM Deselect Level
- LcdSt7567_WriteCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
- LcdSt7567_WriteCmd(0x02);//
- LcdSt7567_WriteCmd(0x8d);//--set Charge Pump enable/disable
- LcdSt7567_WriteCmd(0x14);//--set(0x10) disable
- LcdSt7567_WriteCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
- LcdSt7567_WriteCmd(0xa6);// Disable Inverse Display On (0xa6/a7)
- LcdSt7567_WriteCmd(0xaf);//--turn on oled panel
- // LCD_Fill(0x00); //初始清屏
- }
- //===========LCD_清12864屏=============
- void Lcd12864_ClearScreen(void)
- {
- uchar i, j;
- for(i=0; i<8; i++) //竖着写8次
- {
- LcdSt7567_WriteCmd(0xB0+i); //竖着写 地址
- LcdSt7567_WriteCmd(0x10); //横着写 地址 高四位
- LcdSt7567_WriteCmd(0x00); //横着写 地址 低四位
- for(j=0; j<128; j++) //横着写128次
- {
- LcdSt7567_WriteData(0x00); //写入数据
- }
- }
- }
- /****************第X行X列 数组S0内容*********************************************/
- //*plat 横向地址 范围 0-3; column 竖向地址 范围0-15; p 数组所在位置; x0[][16]数组名字; c 反白显示 0正常 1反白
- void WRITE_STRING816(uchar plat,uchar column,uchar p, uchar x0[][16], uchar c)
- {
- uchar page,page1,col,col_h,col_l;
- uchar i,a,j=0;
- page1= plat*2;
- page=page1+Page0;
- col=column*8;
- col_h=((col>>4)|0xf0)&0x1f;
- col_l=col&0x0f;
- for(a = 0; a < 2; a++)
- {
- LcdSt7567_WriteCmd(col_h);
- LcdSt7567_WriteCmd(col_l);
- LcdSt7567_WriteCmd(page+a);
- for(i = 0; i < 8; i ++ )
- {
- if(c == 0){LcdSt7567_WriteData(x0[p][j++]);}
- if(c == 1){LcdSt7567_WriteData(~(x0[p][j++]));}
- }
- }
- }
- void displayPhoto (uchar *pic)
- {
- uchar a,x;
- for(a = 0; a < 8; a++ )
- {
- LcdSt7567_WriteCmd(0xB0 + a); //设置页地址
- LcdSt7567_WriteCmd(0x10); //设置列地址“高四位”- 0000
- LcdSt7567_WriteCmd(0x00); //设置列地址“第四位”- 0000
- for( x = 0; x < 128; x ++ )
- {
- LcdSt7567_WriteData(*pic++);
- }
- }
- }
- void main (void)
- {
- DelayM(2000);
- while(1)
- {
- DelayM(2000);
- LCD_ST7567_INIT(); //液晶初始化
- Lcd12864_ClearScreen(); //液晶清屏
- WRITE_STRING816(0,0,0,s0,0); //显示s0数组内容
- WRITE_STRING816(0,1,1,s0,0);
- WRITE_STRING816(2,0,15,s0,0);
- WRITE_STRING816(2,1,17,s0,0);
- DelayM(1000); //延时
- Lcd12864_ClearScreen(); //清屏
- WRITE_STRING816(1,0,0,s0,0);
- WRITE_STRING816(1,1,1,s0,0);
- WRITE_STRING816(1,2,2,s0,0);
- WRITE_STRING816(1,3,3,s0,0);
- WRITE_STRING816(1,4,4,s0,0);
- WRITE_STRING816(1,5,5,s0,0);
- WRITE_STRING816(1,6,6,s0,0);
- WRITE_STRING816(1,7,7,s0,0);
- WRITE_STRING816(1,8,8,s0,0);
- WRITE_STRING816(1,9,9,s0,0);
- WRITE_STRING816(1,10,10,s0,0);
- WRITE_STRING816(1,11,11,s0,0);
- WRITE_STRING816(1,12,12,s0,0);
- WRITE_STRING816(1,13,13,s0,0);
- WRITE_STRING816(1,14,14,s0,0);
- WRITE_STRING816(1,15,15,s0,0);
- WRITE_STRING816(3,0,15,s0,0);
- WRITE_STRING816(3,1,17,s0,0);
- WRITE_STRING816(3,2,18,s0,0);
- WRITE_STRING816(3,3,19,s0,0);
- WRITE_STRING816(3,4,20,s0,0);
- WRITE_STRING816(3,5,21,s0,0);
- WRITE_STRING816(3,6,22,s0,0);
- WRITE_STRING816(3,7,23,s0,0);
- WRITE_STRING816(3,8,24,s0,0);
- WRITE_STRING816(3,9,25,s0,0);
- WRITE_STRING816(3,10,26,s0,0);
- WRITE_STRING816(3,11,27,s0,0);
- WRITE_STRING816(3,12,28,s0,0);
- WRITE_STRING816(3,13,1,s0,0);
- WRITE_STRING816(3,14,2,s0,0);
- WRITE_STRING816(3,15,3,s0,0);
- DelayM(1000); //延时
- Lcd12864_ClearScreen(); //清屏
- displayPhoto(QQ); //画图片
- DelayM(2000); //延时
- Lcd12864_ClearScreen(); //清屏
- }
- }
|