sflfw 发表于 2006-9-9 18:39:23

跪求 Truly MCG12864 液晶资料!!!!!

昨晚找了3小时,还是没找到,

具体型号 Truly MCG12864A8-3。

主要是接口是18PIN的(包括背光),一般的都是20PIN,其它资料无法用。

有Truly MCG12864资料的麻烦发份到miniatm@163.com,谢谢先。

panxiaoyi 发表于 2006-9-9 18:49:42

为什么动不动就要“跪”?



“求”?只要有诚意就可以了

sflfw 发表于 2006-9-9 18:58:59

表明已经没办法想了啊!

panxiaoyi 发表于 2006-9-9 19:19:00

下面是摘录:



http://file.21ic.com/offline/2003/11/508073.htm



TRULY 12864A8-3 LCD读写程序,已经测试过。



#define LCDDATA XBYTE /* 液晶显示器数据端口 */ #define BPORT1 XBYTE /*控制端口;D0=LCM_RS, D1=LCM_EN, D2=LCM_CS1, D3=LCM_CS2, D4=LCM_RW*/ unsigned char bdata Mport1; /*BPORT1内存映射*/ sbit LCD_RS=Mport1^0; sbit LCD_E =Mport1^1; sbit LCD_C1=Mport1^2; sbit LCD_C2=Mport1^3; sbit LCD_RW=Mport1^4; #define DCS1_ON 0 /* 选择CS1 */ #define DCS1_OFF 1 /* 释放CS1 */ #define DCS2_ON 0 #define DCS2_OFF 1 #define CONTRAST_DISP 1 /* 显示属性-反白显示 */ #define NORMAL_DISP 0 /* 显示属性-正常显示 */ #define FILL_LINE 1 /* 行填充*/ #define CLEAR_LINE 0 /* 行填充*/ /* 向TRULY MCG12864A8-3写命令 */ void SendCommand(unsigned char b) { unsigned char i; LCD_RS = 0; BPORT1=Mport1; LCD_RW = 0; BPORT1=Mport1; LCDDATA = b; LCD_E = 0; BPORT1=Mport1; for(i=0;i<2;i++); LCD_E = 1; BPORT1=Mport1; for(i=0;i<2;i++); LCD_E = 0; BPORT1=Mport1; for(i=0;i<2;i++); } /* 向TRULY MCG12864A8-3写显示数据 */ void SendData(unsigned char b) { unsigned char i; LCD_RS = 1; BPORT1=Mport1; LCD_RW = 0; BPORT1=Mport1; LCDDATA = b; LCD_E = 0; BPORT1=Mport1; for(i=0;i<2;i++); LCD_E = 1; BPORT1=Mport1; for(i=0;i<2;i++); LCD_E = 0; BPORT1=Mport1; for(i=0;i<2;i++); } /* TRULY MCG12864A8-3片选 */ void lcdcs(bit cs1, bit cs2) { LCD_C1=cs1; LCD_C2=cs2; BPORT1=Mport1; } /*TRULY MCG12864A8-3锁定*/ void lcdlock(void) { lcdcs( DCS1_OFF , DCS2_OFF ); } /* TRULY MCG12864A8-3清屏初始化 */ void lcdscreenclear(void) { unsigned char i,m,n; lcdcs( DCS1_ON , DCS2_OFF ); SendCommand(0x3f); /*打开液晶*/ SendCommand(0xc0); /*从0行开始*/ m = 0xb8; for( n=0 ; n<8 ; n++ ){ SendCommand(m); /*X坐标(对应屏幕位置为第X行)*/ SendCommand(0x40); /*Y坐标*/ for( i=0 ; i<64 ; i++ ) SendData(0x00); m++; } lcdcs( DCS1_OFF , DCS2_ON ); SendCommand(0x3f); SendCommand(0xc0); m=0xb8; for( n=0 ; n<8 ; n++ ){ SendCommand(m); SendCommand(0x40); for( i=0 ; i<64 ; i++ ) SendData(0x00); m++; } lcdlock(); } /* TRULY MCG12864A8-3行处理 */ /*x=字符行坐标;FILL=1 行填充;FILL=0行清除*/ void lcdline(unsigned char x , bit fill) { unsigned char i; lcdcs( DCS1_ON , DCS2_OFF ); SendCommand(0x3f); SendCommand(0xc0); SendCommand( 0xb8|x ); for( i=0 ; i<64 ; i++ ) if(fill) SendData(0xff); else SendData(0x00); lcdcs( DCS1_OFF , DCS2_ON ); SendCommand(0x3f); SendCommand(0xc0); SendCommand( 0xb8|x ); for( i=0 ; i<64 ; i++ ) if(fill) SendData(0xff); else SendData(0x00); lcdlock(); } /*字节倒序*/ unsigned char inva(unsigned char b) { char i; /* 有符合数 */ unsigned char v1 = 0; unsigned char v2 = 0; unsigned char j1 = 0x80; unsigned char j2 = 0x01; for(i = 7; i >= 1 ;i = i-2){ v1 = ((b <>i)&j2)|v2; j1 = j1 >> 1; j2 = j2 << 1; } return(v1|v2); } /******************************************************* ** TRULY MCG12864A8-3同行显示汉字和ASCII码 ** 入口:x--显示起始行坐标,以8×8点阵的字符为度量单位 ** y--显示起始列坐标,以8×8点阵的字符为度量单位 ** p--显示字符串的指针 ** contrast--显示字符串的属性,=1反白显示 *******************************************************/ void dispbuf(unsigned char x, unsigned char y, unsigned char *p, bit contrast) { unsigned char i,b; unsigned char t; if( y>7 ){ lcdcs( DCS1_OFF , DCS2_ON ); y = y-8; b = 2; } else{ lcdcs( DCS1_ON , DCS2_OFF ); b = 1; } SendCommand(0x3f); SendCommand(0xc0); while( *p ) { t=(*(p++)-1); if(t > 127){ /*汉字*/ t -=128; SendCommand( 0x40 | (y*8) ); SendCommand( 0xb8 | x ); for( i=0 ; i<8 ; i++ ) if(contrast) SendData( ~inva(chinese) ); else SendData( inva(chinese) ); SendCommand( 0x40 | (y*8) ); SendCommand( 0xb8 |(x+1) ); for( i=0 ; i<8 ; i++ ) if(contrast) SendData( ~inva(chinese) ); else SendData( inva(chinese) ); y++; if(y==8){ y=0; if( b==1 ){ lcdcs( DCS1_OFF , DCS2_ON ); b = 2; } else{ /*已到行尾,自动换到下一行*/ lcdcs( DCS1_ON , DCS2_OFF ); b = 1; x+= 2; } } SendCommand( 0x40 | (y*8) ); SendCommand( 0xb8 | x ); for( i=0 ; i<8 ; i++ ) if(contrast) SendData( ~inva(chinese) ); else SendData( inva(chinese) ); SendCommand( 0x40 |(y*8) ); SendCommand( 0xb8 |(x+1) ); for(i = 0;i < 8;i++) if(contrast) SendData( ~inva(chinese) ); else SendData( inva(chinese) ); y++; if( y==8 ){ y=0; if( b==1 ){ lcdcs( DCS1_OFF , DCS2_ON ); b = 2; } else{ lcdcs( DCS1_ON , DCS2_OFF ); b = 1; x += 2; } } } else{ /*ASCII*/ SendCommand( 0x40 | y*8 ); SendCommand( 0xb8 | x ); for( i=0 ; i<8 ; i++ ) if(contrast) SendData( ~inva(ascii) ); else SendData( inva(ascii) ); SendCommand( 0x40 | y*8 ); SendCommand( 0xb8 | (x+1) ); for( i=0 ; i<8 ; i++ ) if(contrast) SendData( ~inva(ascii) ); else SendData( inva(ascii) ); y++; if(y==8){ y = 0; if( b==1 ){ lcdcs( DCS1_OFF , DCS2_ON ); b=2; } else{ lcdcs( DCS1_ON , DCS2_OFF ); b=1; x+=2; } } } } lcdlock(); }

whoami 发表于 2006-9-9 19:29:45

晕忽忽,你买液晶的后,老板不提供你手册吗???

那买过来怎么用呀?

谁也不知道!

sflfw 发表于 2006-9-9 19:41:05

谢谢 panxiaoyi 啊艺





还不知是公司那位前辈留下来的,我是拿它废物利用。



准备拿它加个M8转为串口通讯,再加个键盘,做调试用。

sflfw 发表于 2006-9-9 19:46:26

找到啦!





http://cache.amobbs.com/bbs_upload782111/files_6/armok01128506.JPG

sflfw 发表于 2006-9-9 19:47:49

VO 应该是调节LCD的吧?

panxiaoyi 发表于 2006-9-9 21:24:18

VO是负压驱动输入,调节对比度,看来你的LCD没有负压产生电路,需要外接负压

sflfw 发表于 2006-9-9 21:30:05

是啊!也许这就是 公司前辈没把它遗弃的原因。不知负压要提供多大电流,max232够了不?

看到液晶模块上都是用的sci7661,没找到资料,原理应该和max232差不多,si7661是500mW的。

panxiaoyi 发表于 2006-9-9 22:44:26

LCD只要负压,电流几乎不用考虑,小于1mA

sflfw 发表于 2006-9-9 23:07:57

不知负压 是什么功能?

估计1mA不够,这是带负压输出液晶的电路图:

http://cache.amobbs.com/bbs_upload782111/files_6/armok01128515.JPG





http://cache.amobbs.com/bbs_upload782111/files_6/armok01128516.JPG

sflfw 发表于 2006-9-9 23:10:16

我的那个屏应该是外部直接供负压。而带负压的是提供 比较电压,电路中的Q1应该是个电压跟随器。

kelp 发表于 2008-3-15 18:05:06

直接查找st7920的数据手册

guangan854214 发表于 2010-5-8 10:27:22

刚好要用。。

zbjshower 发表于 2010-12-10 20:01:43

弱弱地问,MCG12864A8-3自带字库么?

thermoking 发表于 2013-4-9 20:24:36

请问信利现在还在供货12864吗?
页: [1]
查看完整版本: 跪求 Truly MCG12864 液晶资料!!!!!