240128液晶单片机驱动
液晶显示模块 JRD240128-5D系列 说明书

液晶显示模块使用手册版本: 1.0型号:JRD240128-5D 系列选配件说明□常温(0~50℃) □宽温(-20~+70℃)液晶片□超宽温(-30~+80℃)□黄绿模 □蓝模 □灰模 □黑白模背 光 □LED白光 □LED翡翠绿光 □LED蓝光 □EL白光□EL蓝光 □CCFL负压电路 □板载负压 □不带负压EL逆变器 □配备 □板载 □不配备CCF逆变□配备 □不配备一.概述JRD240128-5D是一种图形点阵液晶显示器。
它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了320(列)×240(行)的全点阵液晶显示。
此显示器内含了硬件字库,编程模式简洁方便,为项目开发节约了宝贵的成本和时间。
此显示器采用了COB的软封装方式,通过导电橡胶和压框连接LCD,使其寿命长,连接可靠。
二.特性1.工作电压为+3V-5V,自带驱动LCD所需的负电压;♦ 内建7602个常用简体字库,国家标准GB码字库;♦ 内建对比度调节电路,可软件设置对比度;♦ 内建多组半宽字符(ASCII码),方便编程;♦ 内建粗体字型和行距设定;♦ 提供显示屏幕水平卷动和垂直拖动功能;♦ 提供单个字符反白显示和N行反白显示;♦ 提供简单4级灰度显示功能;♦ 提供中英文对齐/不对齐功能;♦ 提供触摸屏控制功能;2.全屏幕点阵,点阵数为320(列)×240(行),可显示20(列)×15(行)个(16×16点阵)汉字,也可完成图形,字符的显示。
3.与CPU接口采用5条位控制总线和8位并行数据总线输入输出,可适配Intel8080时序或者M6800时序;4.内部有显示数据锁存器;5.简单的操作指令,每个指令为一个寄存器,写入数值即相当于指令输入。
三.外形尺寸1. 外形尺寸图2.主要外形尺寸Viewing Area(W X H)Module Size (W X H X T)View Angle Dot Pitch(W X H)Dot Size(W X H)Item0.40 X 0.40114.0 X 64.0Max.144.0 X 104.0 X 14.0Unit mm mm mm mmMECHANICAL DATA0.45 X 0.456 or 12 O'Clock四.硬件说明1. 引脚特性3 接口定义J 1接口定义2345678910111213141517161820VSSVC C V0W R R D CS RS BUS RSTD B 0D B 1D B 2D B 3D B 4D B 5D B 6DB7V O U T Power GroundPower positive Negative Volt Adjust Write Signal Read Signal Chip SelectH:Data L:Instruction Code Busy signal Data bus [0-7]There state I/O common terminalNegative Volt Output 2122BLA BLKBacklight Anode(5v)Backlight Cathode(0v)BLAB L K Backlight Anode(5v)Backlight Cathode(0v)2325Reset Signal1FGFrame ground注意:1、BLA(背光控制脚):在使用LED 型背光时,作为LED 背光电源正,板载降压电阻,可直接供给5V,LED 背光的负极被接到GND(地)。
LCM240128液晶模块及其应用

LCM240128液晶模块及其应用发表时间:2009-11-12T14:19:53.950Z 来源:《赤子》第14期供稿作者:孙刚[导读] 随着液晶显示技术的发展,LCD(液晶显示器)模块已成为家电、显示仪器仪表和其他电子产品的重要组成部分孙刚(空军航空大学基础部电工电子教研室,吉林长春 130022)摘要:介绍了北京新华龙公司生产的LCM240128液晶显示模块,从应用角度介绍了其特点及功能,在此基础上设计了其与C8051F020单片机的接口,最后对汉字显示方法进行了介绍并举出实例。
关键词:LCM240128;T6963C;汉字显示引言随着液晶显示技术的发展,LCD(液晶显示器)模块已成为家电、显示仪器仪表和其他电子产品的重要组成部分。
LCD模块具有低工作电压、微功耗、信息量大、寿命长等诸多特点,在科研、生产与产品设计等领域正发挥着越来越重要的作用。
首先对北京新华龙公司生产的具有240×128分辨率的LCM240128大屏幕液晶显示模块进行介绍,然后设计了该模块与C8051F020单片机的接口电路,最后提出一种用该模块实现汉字显示的一种方案并给出实例。
1 LCM2401281液晶显示器简介LCM2401281是北京新华龙公司生产液晶显示模块,它具有240×128分辨率,即显示屏幕具有240×128点阵,整个液晶模块包括LCD 显示屏、LCD驱动电路、连接件、LCD控制模块、PCB线路板、背光源和结构件等。
其驱动电压可调8至26V,逻辑电压5V。
其控制模块采用的是东芝公司T6963C。
T6963C控制模块具有21个I/O接口引脚T6963C与单片机硬件接口的缓冲区由5个缓冲器组成,它们分别是用于接收单片机信息的指令锁存器和数据锁存器,用于向单片机发送信息的状态缓冲器和2个数据缓冲器。
其中状态缓冲器中给出的是T6963C当前工作状态的状态字,T6963C的状态字多达7位,分别是S7、S6、S5、S4、S3、S2、S1和S0。
LM4229(lcd240128)

【北京奥运】LM4229(lcd240128)显示“北京欢迎你”2008-08-08 19:182008年8月8日。
同一个世界,同一个梦想;祝福北京,祝福奥运。
整个电路图(8952+DS1302+LM4229)程序设计部分主程序部分 lm4229_ds1302.c//=====================================// /niejinbo// 祝福北京,祝福奥运// 北京欢迎你// 时钟暂未加设置时间功能//=====================================#include<reg52.h>#include<math.h>#include<absacc.h>#include<ds1302.h>#include<lm4229.h>// 0123 67 1011 1516 1819 2122 uchar tab_time[]="2008年08月08日 00:00:00 星期"; /*年月日时分秒星期 */sbit k1=P3^3;sbit k2=P3^4;//--------------------------//------- 函数声明 --------void trans();void key_scan();void week();void delay(uint);//============================================// 主函数//============================================void main(){lcd_init();write_lcd(10,0,"------------------------------");write_lcd(102,0,"------------------------------");// write_lcd(0,0,"2008年08月08日 00:00:00 星期五"); write_lcd(22,1,"同");write_lcd(38,1,"一");write_lcd(54,1,"个");write_lcd(72,1,"世");write_lcd(90,1,"界");write_lcd(22,27,"同");write_lcd(38,27,"一");write_lcd(54,27,"个");write_lcd(72,27,"梦");write_lcd(90,27,"想");write_lcd(112,0," 四川师大电子工程学院聂金波");write_pic(30,5); //北京欢迎你大字write_lcd(70,8,"2008 北京奥运");while(1){ds1302();trans();write_lcd(0,0,tab_time);week();}}//----------------------------------// 按键函数//----------------------------------void key_scan(){if(k1==0){delay(5);if(k1==0){tab_time[2]++;}}}void delay(uint k){uint i,j;for(i=k;i>0;i--)for(j=110;j>0;j--);}//------------------------------------------ // 数据转换//------------------------------------------ void trans(){tab_time[2]=tab_1302[6]/10+'0'; //年十位tab_time[3]=tab_1302[6]%10+'0'; //年个位tab_time[6]=tab_1302[4]/10+'0'; //月十位tab_time[7]=tab_1302[4]%10+'0'; //月个位tab_time[10]=tab_1302[3]/10+'0'; //日十位tab_time[11]=tab_1302[3]%10+'0'; //日个位tab_time[15]=tab_1302[2]/10+'0'; //小时十位tab_time[16]=tab_1302[2]%10+'0'; //小时个位tab_time[18]=tab_1302[1]/10+'0'; //分十位tab_time[19]=tab_1302[1]%10+'0'; //分个位tab_time[21]=tab_1302[0]/10+'0'; //秒十位tab_time[22]=tab_1302[0]%10+'0'; //秒个位}//------------------------------------------ // 星期显示//------------------------------------------ void week(){uchar i;i=tab_1302[5]-1; /*实时时钟里的值是6,但是2008/08/08是星期五,所以减1, Proteus的问题?? */switch(i){case 1: write_lcd(0,28,"一"); break;case 2: write_lcd(0,28,"二"); break;case 3: write_lcd(0,28,"三"); break;case 4: write_lcd(0,28,"四"); break;case 5: write_lcd(0,28,"五"); break;case 6: write_lcd(0,28,"六"); break;case 7: write_lcd(0,28,"日"); break;default: ; break; //其它情况}}//==============================================//=========================================//----- /niejinbo//----- DS1302驱动程序 ---------------//----- 作者:聂金波 niejinbo999@//----- 完成日期:2008-07-28 ------//=========================================//----- 星期一 monday 星期二 tuesday 星期三 wednesday//----- 星期四 thursday 星期五 friday 星期六 saturday//----- 星期日 sunday//-----//-----//==========================================//--------------------------#define uchar unsigned char#define uint unsigned int//--------------------------//------ 定义端口 ---------sbit rst=P3^0;sbit sclk=P3^1;sbit io=P3^2;//---------------------------uchar tab_1302[7]={0,10,19,30,7,3,8}; //初始化时时间日期设置//秒分时日月星期年uchar tab1_1302[7]={0,10,19,30,7,3,8};//--------------------------//----- 函数声明 ------//--------------------------void ds1302(); //获取DS1302时间void writeds_byte(uchar); //向DS1302写一字节uchar readds_byte(); //从DS1302读一字节void ds1302_init(); //DS1302初始化void writeds_add(uchar,uchar); //指定地址向1302写一数据uchar readds_add(uchar); //指定地址从1302读一数据//=========================================//------ 函数 ------//=========================================//-------------------------------//---- 向DS1302写一字节 (上升沿有效) -------//---- 数据输入从低位到高位 ------------//-------------------------------void writeds_byte(uchar dat){uchar i,dat_w;dat_w=dat; //数据送给变量dat_wfor(i=0;i<8;i++){io=0; //数据线先拉低if(dat_w&0x01) //如果是1{io=1;}else //如果是0{io=0;}dat_w=dat_w>>1; //右移一位sclk=0; //先拉低时钟信号sclk=1; //拉高时钟信号}sclk=0; //写一字节完毕,拉低时钟信号}//-------------------------------//---- 从DS1302读一字节(下降沿有效) --------//---- 读出数据时从低位0位到高位7 -----------//-------------------------------uchar readds_byte(){uchar i,k;k=0;for(i=0;i<8;i++){k=k>>1; //k右移一位,确保先读来的数据在低位if(io){k=k|0x80;} //读取的值先送K最高位sclk=1; //先拉低时钟信号sclk=0;}sclk=0;return (k);}//-------------------------------//---- 指定地址写一数据 --------//-------------------------------void writeds_add(uchar add,uchar dat) //dat为十进制数{rst=0;sclk=0;rst=1; //拉高RSTwriteds_byte(add); // 写地址writeds_byte((dat/10<<4)|(dat%10)); // DS1302中的时间数据是BCD码形式sclk=0;rst=0;}//-------------------------------//---- 指定地址读出一数据 ------//-------------------------------uchar readds_add(uchar add){uchar temp,dat1,dat2;rst=0;sclk=0;rst=1;writeds_byte(add);temp=readds_byte(); //读取的数据为16进制sclk=0; //读取完毕,拉低SCLKrst=0; //拉低SCLKdat1=temp/16; //16进制转成BCDdat2=temp%16;temp=dat1*10+dat2; //转换成10进制数字return (temp);}//-------------------------------//---- DS1302初始化 --------//---- 设置初始时间 --------//-------------------------------void ds1302_init(){uchar i,add;add=0x80;writeds_add(0x8e,0x00); //允许写入for(i=0;i<7;i++){writeds_add(add,tab1_1302[i]);add+=2;}writeds_add(0x90,0xa6); //写充电控制寄存器.writeds_add(0x8e,0x80); //禁止写入}//-------------------------------//---- 获取DS1302时间 --------//---- 在主函数中调用 --------//-------------------------------void ds1302(){uchar i,add=0x81;// writeds_add(0x8e,0x00); //允许向DS1302写入数据for(i=0;i<7;i++){tab_1302[i]=readds_add(add); //获得的数据已转换为十进制add+=2;}//writeds_add(0x8e,0x80); //获取完一次时间,禁止向DS1302写入数据,提高可靠}//========================================//========================================//--------- 小波电子工作室 -----------// LM4229 液晶显示驱动程序// 作者:聂金波完成日期:2008/0/05// /niejinbo// 四川师范大学电子工程学院 2005级5级//----------------------------------------// 本程序参考仿真社区()一个网友// 写的LCD240*128显示程序,在此表示感谢!//=========================================#include<en_code.h>#include<cn_code.h>#include<picture.h>#define uchar unsigned char#define uint unsigned int#define DATA_PORT P0//-------------------------------------------// 管脚定义//------------------------------------------sbit HALT=P2^0; //暂不清楚sbit FS1=P2^1; //字体模式选择sbit MD2=P2^2; //方式选择sbit RST=P2^3; //复位sbit CD=P2^4; //数据(L)/命令(H)选择sbit READ=P2^5; //读,低电平有效+sbit WRIT=P2^6; //写,低电平有效sbit CE=P2^7; //使能,低电平有效//===========================================// 函数声明//-------------------------------------------void delay_lcd(uchar);void write_data(uchar);void write_com(uchar);void clr_lcd(uchar,uchar,uint);//--------------------------------------------// 延时函数//-------------------------------------------- void delay_lcd(uchar t){for(;t!=0; t--);}//-------------------------------------------- // 写数据函数//-------------------------------------------- void write_data(uchar dat){CD=0; //数据CE=0; //LCD使能WRIT=0; //写DATA_PORT=dat; //把数据送到P口delay_lcd(1); //当晶振较高时加延时WRIT=1; //关写CE=1; //关使能}//-------------------------------------------- // 写命令函数//-------------------------------------------- void write_com(uchar com){CD=1; //命令CE=0;WRIT=0;DATA_PORT=com;delay_lcd(1); //当晶振较高时加延时WRIT=1;CE=1;}//-------------------------------------------- // 指定位置、长度清屏//-------------------------------------------- void clr_lcd(uchar x,uchar y,uint length){uint i,place;place=x*30+y;write_data(place&0xff);write_data(place/256);write_com(0x24); //设置for(i=0;i<length;i++)write_data(0xff); //写入空格,清屏write_com(0xb2); //关闭自动写}//--------------------------------------------// 指定位置向LCD写入指定字符//////--------------------------------------------void write_lcd(uchar x,uchar y,char *cha){uint place,i=0;uchar length,c1,c2,j,k;for(length=0;cha[length]!=0;length++);do{c1=cha[i]; //取字符串的ASCII码c2=cha[i+1];place=x*30+y;if(c1<=128) //#####小于128为字符,大于128为汉字{for(k=0;k<16;++k) //字符设置为16*8{write_data(place&0xff); //写入地址高位write_data(place/256); //写入地址低位write_com(0x24); //地址设置write_com(0xb0); //设置数据自动写write_data(ASC_MSK[(c1-0x20)*16+k]); /*---例如:0的ASCII码为0x30, 在ASC_MSK中的位置为0x10*16 ---16字节字码依次写入LCD---*/write_com(0xb2); //自动复位place=place+30;}if(y>28) //y>28时候需要换行{x=x+16;y=0;}else //否则,不换行,继续写下一个字符{y++;}i++;}else //#####c1大于128为汉字{for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++) //找到汉字{if(c1==GB_16[j].Index[0]&&c2==GB_16[j].Index[1])break; //汉字找到则跳出}if(j<sizeof(GB_16)/sizeof(GB_16[0])) //------如果汉字在子码表内 {for(k=0;k<16;k++) //字符设置为16*8{write_data(place&0xff); //写入地址高位write_data(place/256); //写入地址低位write_com(0x24); //地址设置write_com(0xb0); //设置数据自动写write_data(GB_16[j].Msk[k*2]);write_data(GB_16[j].Msk[k*2+1]); //16*16,每行2字节write_com(0xb2); //自动复位place=place+30; //下一行}}else //-----没找到对应汉字则涂黑{for(k=0;k<16;k++) //字符设置为16*8{write_data(place&0xff); //写入地址高位write_data(place/256); //写入地址低位write_com(0x24); //地址设置write_com(0xb0); //设置数据自动写write_data(0xff);write_data(0xff);write_com(0xb2); //自动复位place=place+30; //下一行}}if(y>27) //-------换行{x+=16;y=0;}else //--------不用换行,则下一个字{y+=2;}i+=2;}}while(i<length);}//--------------------------------------------// LM4229初始化函数//--------------------------------------------void lcd_init()FS1 = 0;//fs1管脚高电平时表示字体为8*6;//低电平时为8*8MD2 = 0;HALT = 0;write_data(0);write_data(0); //图形首地址write_com(0x42); //图形首地址设置write_data(30);write_data(0);write_com(0x43); //图形区域设置write_com(0x80); //设置为OR模式write_com(0x9a); //关闭文本显示,开图形显示}//======================================================== //--------------------------------------------// LM4229在指定位置显示汉字32*32//--------------------------------------------void write_pic(uchar x,uchar y){uint i,n,place;place=x*30+y;for(n=0;n<5;n++){for(i=0;i<32;i++) //32*32{write_data(place&0xff);write_data(place/256);write_com(0x24); //设置地址write_com(0xb0); //设置数据自动写write_data(tab_pic[4*i+0+128*n]);write_data(tab_pic[4*i+1+128*n]);write_data(tab_pic[4*i+2+128*n]);write_data(tab_pic[4*i+3+128*n]);write_com(0xb2); //自动复位place=place+30;}place=x*30+y+4*(n+1);}//===============================================。
240128LCD驱动程序(c8051f020)

240128的程序#include <c8051f020.h>#include <tab.c>#include <dis240128.c>////sfr16 DP = 0x82; // data pointersfr16 TMR3RL = 0x92; // Timer3 reload valuesfr16 TMR3 = 0x94; // Timer3 countersfr16 ADC0 = 0xbe; // ADC0 datasfr16 ADC0GT = 0xc4; // ADC0 greater than windowsfr16 ADC0LT = 0xc6; // ADC0 less than windowsfr16 RCAP2 = 0xca; // Timer2 capture/reloadsfr16 T2 = 0xcc; // Timer2sfr16 RCAP4 = 0xe4; // Timer4 capture/reloadsfr16 T4 = 0xf4; // Timer4sfr16 DAC0 = 0xd2; // DAC0 datasfr16 DAC1 = 0xd5; // DAC1 data//unsigned int ad_temp,dis_y=0;unsigned char ad_i=0;char tabc;unsigned char dis_i,dis_k=0;//unsigned char t_count,t_i;unsigned int t_timecount;bit t_flag;unsigned long t_y=0;//void SYSCLK_Init (void){unsigned int i; // delay counterOSCXCN = 0x67; // start external oscillator withfor (i=0; i < 3000; i++) ; // Wait for osc. to start upwhile (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settleOSCICN = 0x88;}//----------------------------------------------------------------------------- //函数名称: PORT_Init ()//函数功能: 通用I/O口及交叉开关初始化//入口参数: 无//出口参数: 无//全局变量引用: 无//调用模块: 无//-----------------------------------------------------------------------------void PORT_Init (void){XBR1 = 0x02;XBR2 = 0x40;P74OUT = 0x0f; // P2口设为推挽方式P4=0x07;}//void T_Init(void){CKCON=0X18;TMOD=0x15;IP=0x0a;TH0=0;TL0=0;TH1=(65536-44237)/256;TL1=(65536-44237)%256;TR1=1;TR0=1;ET0=1;ET1=1;}// ADC0配置,T3定时启动ADC//----------------------------------------------------------------------------- void ADC0_Init (void){ADC0CN = 0x00; // ADC0 向AD0BUSY写1时采样,左对齐REF0CN = 0x03; // 启用内部基准源ADC0CF =0X40;AMX0SL = 0x01;AD0EN =1; // 选择采样输入源EIE2 |= 0x02; // 启用 ADC 中断}//void t0(void) interrupt 1{t_count++;}void t1(void) interrupt 3{TH1=(65536-44237)/256;TL1=(65536-44237)%256;t_timecount++;if(t_timecount==250){TR0=0;t_timecount=0;t_flag=1;}}// ADC0采样中断//----------------------------------------------------------------------------- void ADC0_ISR (void) interrupt 15{AD0INT = 0; // 清 ADC 中断标志位ad_temp=((ADC0H*256+ADC0L)*13)>>10;tab_wave[ad_i]=(unsigned char)(ad_temp&0xff);ad_i++;if(ad_i>=216){ad_i=0;AD0EN=0;}AD0BUSY=1;}////----------------------------------------------------------------------------- // 主程序//----------------------------------------------------------------------------- void main (void){WDTCN = 0xde;WDTCN = 0xad; //禁止看门狗定时器SYSCLK_Init (); // 系统时钟初始化PORT_Init ();ADC0_Init ();T_Init();lcd_int1();wtcd2(0x24,0x0000);show_coor(X_length,Y_length,origin_X,origin_Y,0,0);showxy();displayword(0,112,tab_word,2);displayword(13,112,tab_word+64,2);displaychar(6,112,tab_char+48,1);displaychar(10,112,tab_char+64,1);displaychar(23,112,tab_char+80,2);AD0BUSY=1;EA = 1;while(1){//幅度显示if(AD0EN==0){show_wave(1);for(dis_i=0,dis_k=0;dis_i<216;dis_i++)if(tab_wave[dis_i]>dis_k)dis_k=tab_wave[dis_i];dis_y=(unsigned int)dis_k;dis_y=(dis_y*755)>>4;//dis_y=dis_y>>8;displaychar(5,112,tab_number+(dis_y/1000%10)*16,1); displaychar(7,112,tab_number+(dis_y/100%10)*16,1); displaychar(8,112,tab_number+(dis_y/10%10)*16,1); displaychar(9,112,tab_number+(dis_y%10)*16,1);////计数显示for(t_i=0;t_i<6;t_i++){if(t_flag==1){t_flag=0;t_y=(t_count*65536+TH0*256+TL0)*2;t_timecount=0;t_count=0;TH0=0;TL0=0;TR0=1;}displaychar(18,112,tab_number+(t_y/10000%10)*16,1); displaychar(19,112,tab_number+(t_y/1000%10)*16,1); displaychar(20,112,tab_number+(t_y/100%10)*16,1); displaychar(21,112,tab_number+(t_y/10%10)*16,1);displaychar(22,112,tab_number+(t_y%10)*16,1);}//show_wave(0);show_coor(X_length,Y_length,origin_X,origin_Y,0,0);showxy();AD0EN=1;AD0BUSY=1;}}}---------------------------------------------------------------------------------------------------------------dis240128.c文件--------------------------------------------------------------------------------------------------------------#define X_length 216 //x way#define Y_length 106 //y way#define origin_X 0 //原点x(绝对坐标)#define origin_Y 53 //原点y(绝对坐标)y为53//unsigned char cklcdst(void){unsigned char temp;P5 = 0xFF;P4 = 0x03;temp=P5;P4=0x07;return temp;}//void check01(void) // 状态位STA1,STA0 判断(读写指令和读写数据){while(cklcdst()&0x03!=0x03);}///*void check3(void) // 状态位ST3 判断(数据自动写状态){while(cklcdst()&0x08!=0x08);//void check2(void) // 状态位ST2 判断(数据自动读状态){while(cklcdst()&0x04!=0x04);}//void check6(void) // 状态位ST6 判断(屏读/屏拷贝状态){while(cklcdst()&0x40!=0x40);}//void delay1000(unsigned char delayvalue){unsigned char i;unsigned int j;i = delayvalue;while(i--){j = 1000;while(j--);}}//void awtdt0(unsigned char uData) // 自动写数据{check3();wtdt(uData);}*///void delay50(unsigned char delayvalue){unsigned char i,j;i = delayvalue;while(i--){j = 50;while(j--);}void wtcd(unsigned char cmd){P4=0x05;P5=cmd;P4=0x07;delay50(1);}//------------------------------------------------------------------------------ // IO口方式写数据//------------------------------------------------------------------------------ // status: O.K.void wtdt(unsigned char lcddata){P4=0x04;P5=lcddata;P4=0x06;delay50(1);}//void wtcd2(unsigned char uCmd,unsigned int uPar) // 写双参数的指令{check01();wtdt(uPar& 0xFF);//先写低字节,再写高字节check01();wtdt((unsigned char)(uPar>>8));check01();wtcd(uCmd);}/********************//= 函数原型: uchar wr_cmd_1(uchar uCmd,uchar uPar1)//= 功能: 给T6963C写带单参数的指令//= 参数://= 返回值: 返回0 成功,否则忙//= 函数性质:私有函数********************/void wtcd1(unsigned char uCmd,unsigned char uPar) // 写单参数的指令{check01();wtdt(uPar);check01();wtcd(uCmd);}void wtcd0(unsigned char uCmd) // 写无参数的指令{check01();wtcd(uCmd);}//void wtdt0(unsigned char uData) // 写一次数据{check01();wtdt(uData);}//void lcdclr( ){ unsigned char i,j;wtcd2(0x24,0x0000);wtcd0(0xb0);for(j=0;j<=0x80;j++)for(i=0;i<=0x1E;i++)wtdt0(0x00);wtcd0(0xb2);}//---------------------------------------------------------------------------------- //---------------------------------------------------------------------------------- //初始化函数void lcd_int1( ){ lcdclr(); //清屏wtcd2(0x42,0x0000);wtcd2(0x43,0x001e); //图形显示宽度30wtcd2(0x24,0x0000);wtcd0(0x80); //显示方式 OR功能wtcd0(0x98); //启用图形显示方式,光标闪烁}//void printpoint(unsigned char PointX,unsigned char PointY,bit flag){unsigned int k=0;unsigned char ldata=0xf0;//bit operation : flag=0 bit reset and flag=1 bit set;(7-PointY%8)is select bit.k=PointY*30 + PointX/8; //k save the addressldata=ldata+7-PointX%8;if(flag)ldata=ldata|0x08;wtcd2(0x24,k);wtcd0(ldata); //output the bit operation}//--------------------------------------------------------------------------void show_coor(unsigned char x_length,unsigned char y_length,unsigned char origin_x, unsigned char origin_y,bit offset,bit offset1){unsigned char i,j,k,l,m;//show coordinate start pointif((offset==0)&&(offset1==0)){ j=origin_x;k=x_length+origin_x+6;l=origin_y-y_length/2;m=y_length+origin_y-y_length/2+3; //y way length}else if((offset==0)&&(offset1==1)){j=origin_x;k=x_length+origin_x+6;l=origin_y;m=y_length+origin_y+3;}else if((offset==1)&&(offset1==0)){j=origin_x;k=x_length+origin_x+6;l=origin_y-y_length;m=y_length+origin_y-y_length+3;}//show the coordinatefor(i=j;i<k;i++)//x wayprintpoint(i,origin_y,1);for(i=l;i<m;i++)//Y_wayprintpoint(origin_x,i,1);for(i=l;i<m;i=i+y_length/8) //y_way average dividing{printpoint(origin_x+1,i,1);}for(i=j;i<k;i=i+x_length/8)//x way average dividing{ printpoint(i,origin_y-1,1);}printpoint(i-1,origin_y-1,1);//x way the next point}//----------------------------------------------------------------------------------void show_wave(bit mod)// y 0 1{ unsigned char i,k;for(i=1;i<X_length;i++){k=origin_Y-tab_wave[i];if(k!=origin_Y)printpoint(origin_X+i,k,mod);}}//汉化显示程序,y为行,x为列,注意一个汉字占两列,而西文字符占一列void displayword(unsigned char x,unsigned char y,unsigned char *word,unsigned char c){unsigned int xy;unsigned char i,j,k=0;xy=y*30+x;for(i=0;i<c;i++)for(j=0;j<16;j++){wtcd2(0x24,xy+j*30+i*2);//置地址指针 low addresswtcd1(0xc0,word[k]);wtcd1(0xc0,word[k+1]);k+=2;}}//字符显示程序,y为行,x为列,注意一个汉字占两列,而西文字符占一列void displaychar(unsigned char x,unsigned char y,unsigned char *word,unsigned char c){unsigned int xy;unsigned char i,j,k=0;xy=y*30+x;for(i=0;i<c;i++)for(j=0;j<16;j++){wtcd2(0x24,xy+j*30+i);//置地址指针 low addresswtcd1(0xc0,word[k]);k++;}}void showxy(void){displaychar(1,0,tab_char,1);displaychar(27,54,tab_char+16,1);displaychar(1,54,tab_char+32,1);}--------------------------------------------------------------------------------------------------------------tab.c文件--------------------------------------------------------------------------------------------------------------unsigned char code tab_number[]={/*-- 文字: 0 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*-- 文字: 1 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*-- 文字: 2 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*-- 文字: 3 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*-- 文字: 4 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,/*-- 文字: 5 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*-- 文字: 6 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*-- 文字: 7 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,/*-- 文字: 8 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*-- 文字: 9 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,};unsigned char code tab_char[]={/*-- 文字: y --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x18,0x10,0x10,0xE0,0x00,0x00,0x00,0x00, /*-- 文字: x --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: 0 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00, /*-- 文字: . --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00, /*-- 文字: V --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00, /*-- 文字: H --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,/*-- 文字: z --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00, };//unsigned char code tab_word[]={/*-- 文字: 幅 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x00,0x23,0xFE,0x20,0x00,0xF9,0xFC,0xA9,0x04,0xA9,0x04,0xA9,0xFC,0xA8,0x00, 0xAB,0xFE,0xAA,0x22,0xAB,0xFE,0xBA,0x22,0x22,0x22,0x23,0xFE,0x22,0x02,0x20,0x00,/*-- 文字: 度 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0, 0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,/*-- 文字: 频 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x08,0x00,0x08,0xFE,0x4E,0x20,0x48,0x40,0x48,0xFC,0xFE,0x84,0x00,0xA4,0x08,0xA4, 0x4A,0xA4,0x4A,0xA4,0x84,0xA4,0x08,0x50,0x10,0x48,0x20,0x86,0xC3,0x02,0x00,0x00,/*-- 文字: 率 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x00,0x22,0x28,0x17,0xD0,0x04,0x80,0x11,0x10, 0x22,0x48,0x47,0xC4,0x01,0x20,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,};//unsigned char tab_wave[216];。
240x128液晶驱动程序

240x128液晶驱动程序(T6963控制器)/*------------------------------------------------------------------------------------------====================================================================== =====================*/#include "absacc.h"#include "math.h"#include "ASCII816.h" //字符点阵库0x20--0x7F#include "HZTable.h" //汉字点阵库(自做)#include "menu.h" //汉字点阵库(自做)//set following data by user according to LCD#define ComPort 0xB101#define DataPort 0xB000#define GraphAddr 0x0000 //head of graph//以8*8字符计算,显示屏横向、纵向可以显示的字符个数//以240*128为例:#define LineChar 30 //一行16个字符(8*8)#define ColumnChar 16 //总共16列//指令,数据读写状态检查#define RWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x03; } while(sta!=0x03); }//数据自动读状态检查#define AutoRCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x04; } while(sta!=0x04); }//数据自动写状态检查#define AutoWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x08; } while(sta!=0x08); }/*------输入/出函数,与T6963通讯------------------------------------------------*//*------------------------------------------------------------------------*/// 向数据口发Data#define OutPortData(dat ) { RWCheck(); XBYTE[DataPort]=dat; }//写有 1 个参数命令#define OutPortCom1(command) { RWCheck(); XBYTE[ComPort]= command; }//写有 2 个参数命令#define OutPortCom2(dat, command) { OutPortData(dat); OutPortCom1(command); }//写有 3 个参数命令#define OutPortCom3(data1, data2, command) { OutPortData(data1); OutPortData (data2); OutPortCom1(command);}unsigned char InPortData() { RWCheck(); return(XBYTE[DataPort]); }/*-----------------------------------------------------------------------------------*///显示8*16字符//lin:行(0-7), column: 列(0-15)//ch:字符代码(标准ASCII码)void ShowChar(unsigned char lin,unsigned char column,unsigned char ch){unsigned char i;unsigned char dat;unsigned int StartAddr;StartAddr=lin*LineChar +column; //定位起始行for(i=0;i<16;i++){dat=ASCII816[ ch-0x20 ][i];OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),0x24); //set addressOutPortCom2( dat, 0xc4);StartAddr=StartAddr + LineChar;}}/*----------------------------------------------------------------------------------------------*///显示一个汉字(16*16点阵)//lin:行(0-7), column: 列(0-7)//hzcode: 汉字代码(自定义的)void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode){unsigned char i;unsigned int StartAddr;StartAddr=lin*LineChar + column; //定位起始行for(i=0;i<16;i++){OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); OutPortCom2( HZTable[hzcode][i*2], 0xc0); //左半部地址加一OutPortCom2( HZTable[hzcode][i*2+1], 0xc4); //右半部字模地址加一StartAddr=StartAddr + LineChar;}}///////////////////////////////////////////////////////////////////////////////////////////////显示一个汉字(16*16点阵)//lin:行(0-7), column: 列(0-7)//hzcode: 汉字代码(自定义的)void ShowHZD(unsigned char lin,unsigned char column,unsigned int hzcode) {unsigned char i,j;unsigned int StartAddr;StartAddr=lin*LineChar*16 +column; //定位起始行for(i=0;i<35;i++){OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),0x24); //定位当前操作位置for(j=0;j<5;j++) OutPortCom2( HZTable[hzcode][i*5+j], 0xc0); //显示当前一行StartAddr=StartAddr + LineChar;}}/////////////////////////////////////////////////////////////////////////////////////////////*-----------------------------------------------------------------------------------*///显示一行字符串(汉字,字母混排,一行16字节)//lin:行//lineheadaddr: 此行汉字代码区首地址void ShowLine(unsigned char lin,unsigned char column,unsigned char linehead[]) {unsigned char i,j;unsigned char byte;unsigned int hzcode;for( i= column,j=0; i< column+14 ; ){ byte=linehead[j];if(byte < 0x80) //字母{ShowChar(lin, i , byte);i=i+1;j=j+1;}else // byte >= 0x80(汉字){byte=byte & 0x7f; //最高位置0,即:减去0x8000hzcode=byte*256 + linehead[j+1]; //加低8位,组合成整型数地址ShowHZ( lin,i,hzcode);i=i+2;j=j+2;}}}/*-----------------------------------------------------------------------------------*///显示一屏汉字//pageheadaddr:此屏汉字代码地址区首地址void ShowPage(unsigned char lin,unsigned char column1,unsigned char pagehead[] [14]){unsigned char i;for(i=0;i< 4 ;i++)ShowLine((lin+i*20),column1,pagehead[i]); //1行8个汉字,16字节}/*----------------------------------------------------------------------------------------------------*///反显一个字符//lin:行(0-7), column: 列(0-15)void ReverseShowChar(unsigned char lin,unsigned char column){unsigned char i;unsigned char dat;unsigned int StartAddr;StartAddr=lin*LineChar +column; //定位起始行for(i=0;i<16;i++){OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),0x24); //set addressOutPortCom1( 0xc5 ); //数据一次读,地址不变dat=InPortData(); //读入数据dat=~dat; //取反OutPortCom2( dat, 0xc4); //送回StartAddr=StartAddr+ LineChar;}}/*----------------------------------------------------------------------------------------------------*///反显一个汉字//lin:行(0-7), column: 列(0-15)void ReverseShowHZ(unsigned char lin,unsigned char column){ReverseShowChar(lin,column);ReverseShowChar(lin,column+1);}/*----------------------------------------------------------------------------------------------------*///反显一行汉字//lin:行(0-7)void ReverseShowLine(unsigned char lin){unsigned char column;for(column=0; column< ColumnChar; column++) ReverseShowChar(lin,column); }//////////////////////////////////////////////////////////////////////////////////////void ShowPicture(unsigned char Startline,unsigned char Startcolumn,unsigned char LineWidth,unsigned char ColumnWidth,unsigned int address){unsigned char i,j;unsigned int StartAddr;StartAddr=Startline*LineChar + Startcolumn; //定位起始位置for(i=0;i<ColumnWidth;i++){OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8),0x24); //set addressfor(j=0;j<LineWidth;j++){OutPortCom2( CBYTE[address + i*LineWidth+ j ], 0xc0);}StartAddr=StartAddr + LineChar;}}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////图形函数,用于描点画图//---------------------------------------------------------------------------//在指定位置显示一个点//如果显示屏超过了256*256,请修改这个函数PointX,PointY的类型//Mode 1:显示0:清除该点Pixel(unsigned char PointX,unsigned char PointY, bit Mode){unsigned int StartAddr=0;unsigned char dat;StartAddr=PointX*LineChar + PointY/8;dat=0xf0+7-PointY%8;if(Mode) dat=dat|0x08;OutPortCom3( (unsigned char)(StartAddr),(unsigned char)(StartAddr>>8),0x24 ); // 设置该点所在单元地址OutPortCom1(dat);}//-------------------------------------------------------------------------------//划线函数void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode){unsigned char x,y;double k,b;if( abs(y1-y2) <= abs(x1-x2) ) // |k|<=1{k=(float)(y2-y1) / (float)(x2-x1) ;b=y1-k*x1;if( x1 <= x2 ){for(x=x1;x<=x2;x++){y=k*x+b;Pixel(x, y, Mode);}}else{for(x=x2;x<=x1;x++){ y=k*x+b;Pixel(x, y, Mode);}}}else // abs(y1-y2) > abs(x1-x2) |K|>1{k=(float)(x2-x1) / (float)(y2-y1) ;b=x1-k*y1;if( y1 <= y2 ){for(y=y1;y<=y2;y++){ x=k*y+b;Pixel( x , y,Mode );}}else{for(y=y2;y<=y1;y++){ x=k*y+b;Pixel( x , y,Mode );}}}}/*---------------------------------------------------------------------------------------------------*/void ClearScreen(){unsigned int i;///////// 清显示RAM 区0000h--2000h (8k)OutPortCom3(0x00,0x00,0x24); //设置指针地址0000HOutPortCom1(0xb0); //设置自动写状态for(i=0x00;i<0x2000;i++) OutPortData(0x00); // data=0;OutPortCom1(0xb2); // 自动写结束}//初始化LCD//需要手动设置void InitLCD(){OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr OutPortCom3( 30,0x00,0x43 ); //设置图形显示区域宽度: LineChar// OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr // OutPortCom3( 0x10,0x00,0x43); //设置图形显示区域宽度:10HOutPortCom1(0xa7); //设置光标形状cursor size 8x8OutPortCom1(0x80); //设置显示方式: CGROM方式文本\图形"或" OutPortCom1(0x98); //设置显示开关: 1001 1100 图形ClearScreen();}。
Proteus240128液晶屏驱动

0x80,0x80,0x80,0xFC,0x04,0x48,0x40,0x40,0x40,0x40 ,0xA0,0xA0,0x10,0x08,0x0E,0x04, "迎", 0x00,0x41,0x26,0x14,0x04,0x04,0xF4,0x14,0x15,0x16
,0x14,0x100x0C,0xC6,0x7C,0x00,0x00,0x00,0x00, 'u',0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC, // -u0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, 'w',0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6, // -w0xD6,0xD6,0xFE,0x6C,0x00,0x00,0x00,0x00, }; struct { unsigned char Hz_Code[2]; unsigned char Hz_Data[32]; }code zimow[]= { "欢", 0x00,0x00,0xFC,0x04,0x45,0x46,0x28,0x28,0x10,0x28 ,0x24,0x44,0x81,0x01,0x02,0x0C,
for(i=0;i; #include"io.h" #include"zimo.h" unsigned char LCD_lin,LCD_column; //=========================================== // 函数声明 //------------------------------------------void delay_lcd(unsigned char); void write_data(unsigned char); void write_com(unsigned char); //-------------------------------------------// 延时函数 //-------------------------------------------void delay_lcd(unsigned char t)
液晶显示模块MGLS240128在图形显示中的应用

液晶显示模块MGLS240128在图形显示中的应用液晶显示模块MGLS240128在图形显示中的应用摘要:MGLS240128是香港精电公司生产的内藏T6963C控制器液晶显示模块。
文中介绍了MGLS240128的原理及功能,给出了该显示模块与单片机的接口方法。
同时给出了用C51语言编制的图形显示应用程序。
关键词:液晶模块;单片机;图形显示;C511引言在目前诸多的显示器件中,液晶显示器以其具有工作电压低、功耗低、显示信息量大、寿命长、不产生电磁辐射污染、可以显示复杂的文字及图形等优点,而在各种仪器仪表、电子设备、移动通讯及家用电器中得到了广泛的应用。
本文介绍MGLS240128T图形液晶显示模块就是香港精电公司生产的、内藏T6963C控制器的液晶显示模块。
2模块工作原理2.1基本功能MGLS240128T图形液晶显示模块由控制器T6963C、列驱动器T6A39、行驱动器T6A40以及与外部设备的接口等几部分组成,它既能显示字符(包括中文和西文字符),又能显示图形,还能够将字符与图形混合显示。
其主要参数如下:●点阵数:240×128;●点尺寸:0.4×0.4mm;●视屏尺寸:114×64mm;●汉字字体:8×8,8×6;●背光:LED或EL;●电源:+5V;●工作温度范围:-20~+70℃。
2.2引脚功能MGLS240128T图形液晶显示模块的引脚说明如表1所示。
该模块对液晶显示的控制和驱动都由模块内部的芯片及电路来完成,因此它与外部的连接只有数据线和控制线。
主控CPU通过这些数据线和控制线来设置所需要的显示方式,其它功能均由模块自动完成。
表1MGLS240128T模块的引脚功能管脚号管脚名称功能描述1FG框架地2GND电源地3VCC电源电压4NC未用5WR写控制信号,低电平有效6RD读控制信号,低电平有效7CS片选信号,低电平有效8C/D通道选通信号,C/D1为表示指令,C/D为0表示数据通道9RST复位信号,低电平有效10~17DB0~7数据总线,三态18FS 字体选择,FS为0选择8×8字体,FS为1选择8×6字体2.3指令系统MGLS240128T图形液晶显示模块本身内藏控制器T6963C,它最大的特点是具有独特的硬件初始设置功能,由于显示驱动所需的参数(如占空比系数、驱动传输的字节数/行以及字符的字体选择等)均由引脚电平来设置,因此T6963C的初始化在上电时就已基本设置完成。
RT240128A说明书

表2
COMMAND
Register Set
Control Word set
Mode set
Display Mode
Cursor Pattern Select
Data auto Read/write
Data read Write
Screen peek Screen copy
CODE
00100001 00100010 00100100 01000000 01000001 01000010 01000011 1000x000 1000x001 1000x011 1000x100 10000xxx 10001xxx 10010000 1001xx10 1001xx11 100101xx 100110xx 100111xx 10100000 10100001 10100010 10100011 10100100 10100101 10100110 10100111 10110000 10110001 10110010 11000000 11000001 11000010 11000011 11000100 11000101 11100000 11101000 11110XX
2.5
2.54x19=48.26
4.92
4- R1.5
2. 外形尺寸一览
表1 ITEM
模块体积 视域 行列点阵数 点距离 点大小
图1
NOMINAL DIMEN
144.0×104.0×13.7 114.0×64.0 240×128 0.40×0.40 0.45×0.45
DETAIL A:
1.6
UNIT mm mm DOTS mm mm
VDD V
Input low voltage