图形点阵LCD液晶模块显示界面的可视化编程方案与实践

合集下载

点阵显示器设计实训报告

点阵显示器设计实训报告

一、实训背景随着科技的发展,点阵显示器在电子显示领域得到了广泛的应用。

为了提高学生的实践能力,培养创新精神,我们开展了点阵显示器设计实训。

本次实训旨在让学生掌握点阵显示器的原理、设计方法和实现过程,提高学生的动手能力和综合素质。

二、实训目标1. 了解点阵显示器的原理和特点;2. 掌握点阵显示器的驱动电路设计;3. 熟悉点阵显示器的编程技巧;4. 培养学生的团队合作精神和创新意识。

三、实训内容1. 点阵显示器原理及特点点阵显示器是一种利用LED点阵技术制作的新型显示器件,具有以下特点:(1)显示内容丰富:可以显示文字、图形、动画等多种信息;(2)亮度高、功耗低:LED作为发光元件,具有亮度高、功耗低的特点;(3)寿命长:LED具有较长的使用寿命,适用于长时间工作;(4)体积小、重量轻:便于携带和安装。

2. 点阵显示器的驱动电路设计点阵显示器的驱动电路主要包括以下几部分:(1)单片机:作为控制核心,负责接收指令、处理数据和驱动显示;(2)驱动芯片:用于驱动LED点阵,实现显示效果;(3)电源电路:为点阵显示器提供稳定的电源;(4)控制电路:用于控制显示器的开关、亮度调节等功能。

3. 点阵显示器的编程技巧点阵显示器的编程主要包括以下几方面:(1)初始化:设置单片机的工作状态,初始化相关参数;(2)显示字符:通过编程控制LED点阵显示特定的字符;(3)显示图形:通过编程控制LED点阵显示特定的图形;(4)动画效果:通过编程实现LED点阵的动态效果。

四、实训过程1. 硬件设计(1)选择合适的单片机:本次实训选择AT89C51单片机作为控制核心;(2)设计驱动电路:根据AT89C51单片机的引脚,设计驱动电路,包括驱动芯片、电源电路和控制电路;(3)搭建电路:按照设计好的电路图,焊接电路板,连接各元器件。

2. 软件设计(1)编写程序:使用C语言编写点阵显示器的控制程序,实现显示字符、图形和动画效果;(2)仿真调试:使用Proteus软件对程序进行仿真,检查程序的正确性;(3)烧录程序:将程序烧录到单片机中,进行实际测试。

128x64图形点阵型LCD-4X8C显示

128x64图形点阵型LCD-4X8C显示

* 时间:2008年1月5日调试成功* ** 硬件电路:MSP430F135核心实验板-I型* 硬件连接:** AVR与LCD连接信息* LCD4X8C(128X64)点阵液晶屏,采用串行控制方式,只需占用2个I/O口* PIN1 --> VSS --> GND* PIN2 --> VDD --> VCC* PIN3 --> V0不接* PIN4 --> CS --> VCC(直接选通)* PIN5 --> STD --> P5.0* PIN6 --> SCLK--> P5.2* PIN7 --> DB0不接* PIN8 --> DB1不接* PIN9 --> DB2不接* PIN10 --> DB3不接* PIN11 --> DB4不接* PIN12 --> DB5不接* PIN13 --> DB6不接* PIN14 --> DB7不接* PIN15 --> PSB --> GND(设为串行方式)* PIN16 --> NC* PIN17 --> /RST -->VCC(不复位)* PIN18 --> NC* PIN19 --> LED+ -->VCC* PIN20 --> LED- -->GND** 调试器:MSP430FET全系列JTAG仿真器* 调试软件: IAR Embedded Workbench Version: 3.41A 编译**************************************************/#include <msp430x13x.h>#include <intrinsics.h>#define LCD_PORT P5OUT#define LCD_DDR P5DIR#define LCD_STD 0 //P5.0#define LCD_SCLK 2 //P5.2#define std_set LCD_PORT|=(1<<LCD_STD)#define std_clr LCD_PORT&=~(1<<LCD_STD)#define sclk_set LCD_PORT|=(1<<LCD_SCLK)#define sclk_clr LCD_PORT&=~(1<<LCD_SCLK)#define uint unsigned int#define uchar unsigned char#define x1 0x80#define x2 0x88#define y 0x80#define comm 0#define dat 1////预定义函数//////////////////////////////////////////////////////////////////void ndelay (uint us); //---微秒级的延时void udelay(unsigned int t); //延时------微妙级的延时void mdelay (uint ms);void wr_lcd (uchar dat_comm,uchar content); //向LCD发数据或命令void init_lcd (void); //LCD初始化void clrram (void); //清DDRAMvoid lat_disp (uchar data1,uchar data2); //全屏显示相同的数据点阵void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl); //反白显示void chn_disp_RY (char *chn,uchar HANG1,uchar MOUNT1); //任意位置显示汉字;或显示字符(只能在双数列)void sz2_disp(uchar FH,uchar WZ,uchar SZ); //任意位置显示2位数字(16进制转2位BCD)void bcd2_disp(uchar FH,uchar WZ,uchar SZ); //任意位置显示2位数字(压缩BCD 转2位BCD)void fh2_disp(uchar WZ,uchar SZ0,uchar SZ1); //任意位置显示2位数字、符号或1个汉字////初始字幕////////////////////////////////////////////////////////////////////char tab1[]={"一一一一一一一一""三三三三三三三三""二二二二二二二二""四四四四四四四四"};char totalS1[]={"七星科技"};char totalS2[]={"荣誉出品"};char totalS3[]={"V1.01"};char totalS4[]={""};int main( void ){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗LCD_DDR=(1<<LCD_STD)|(1<<LCD_SCLK);std_set;std_clr;sclk_set;sclk_clr;init_lcd ();clrram();lat_disp (0x0,0x0);//显示初始画面chn_disp_RY (tab1,0x80,64);mdelay (5000);clrram();chn_disp_RY (totalS1,0x92,0x08);mdelay (5000);clrram();mdelay (4000);chn_disp_RY (totalS2,0x92,0x08);mdelay (5000);clrram();mdelay (4000);chn_disp_RY (totalS4,0x80,0x0e);mdelay (4000);chn_disp_RY (totalS4,0x90,0x0e);mdelay (4000);chn_disp_RY (totalS4,0x88,0x0e);mdelay (4000);chn_disp_RY (totalS4,0x98,0x0e);while(1){}}////LCD显示程序///////////////////////////////////////////////////////////////// //--向LCD发数据或命令void wr_lcd (uchar dat_comm,uchar content){uchar a,i,j;ndelay (50);a=content;sclk_clr;//sclk=0;std_set;//std=1;for(i=0;i<5;i++){sclk_set;//sclk=1;sclk_clr;//sclk=0;}std_clr;//std=0;sclk_set;//sclk=1;sclk_clr;//sclk=0;if(dat_comm)std_set;//std=1; //dataelsestd_clr;//std=0; //commandsclk_set;//sclk=1;sclk_clr;//sclk=0;std_clr;//std=0;sclk_set;//sclk=1;sclk_clr;//sclk=0;for(j=0;j<2;j++){for(i=0;i<4;i++){if (a&0x80) std_set; else std_clr; a=a<<1;sclk_set;//sclk=1;sclk_clr;//sclk=0;}std_clr;//std=0;for(i=0;i<4;i++){sclk_set;//sclk=1;sclk_clr;//sclk=0;}}}//--LCD初始化void init_lcd (void){wr_lcd (comm,0x30); /*30---基本指令动作*/wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/ ndelay (100);wr_lcd (comm,0x06); /*光标的移动方向*/wr_lcd (comm,0x0c); /*开显示,关游标*/}//--清DDRAMvoid clrram (void){wr_lcd (comm,0x30);wr_lcd (comm,0x01);ndelay (180);}//--全屏显示相同的数据点阵void lat_disp (uchar data1,uchar data2){uchar i,j,k,x;x=x1;for(k=0;k<2;k++)//for1{for(j=0;j<16;j++)//for2{for(i=0;i<8;i++)//for3{wr_lcd (comm,0x34);wr_lcd (comm,y+j*2);wr_lcd (comm,x+i);wr_lcd (comm,0x30);wr_lcd (dat,data1);wr_lcd (dat,data1);}//for3_endfor(i=0;i<8;i++)//for4{wr_lcd (comm,0x34);wr_lcd (comm,y+j*2+1);wr_lcd (comm,x+i);wr_lcd (comm,0x30);wr_lcd (dat,data2);wr_lcd (dat,data2);}//for4_end}//for2_endx=x2;}//for1_endwr_lcd (comm,0x36);}//--反白显示//当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl) {uchar i,j;for(j=0;j<yl;j++){for(i=0;i<xl;i++){wr_lcd (comm,0x34);wr_lcd (comm,y0+j);wr_lcd (comm,x0+i);wr_lcd (comm,0x30);wr_lcd (dat,data1);wr_lcd (dat,data2);}}wr_lcd (comm,0x36);}//--任意位置显示汉字;或显示字符(只能在双数列)// 说明:显示汉字或字符// 入口参数:*chn——带显示字符数组// HANG1——显示的位置// MOUNT1——显示字符的个数void chn_disp_RY (char *chn,uchar HANG1,uchar MOUNT1){uchar i,j;wr_lcd (comm,0x30);wr_lcd (comm,HANG1);j=0;for (i=0;i<MOUNT1;i++)wr_lcd (dat,chn[j*16+i]);}//--任意位置显示2位数字(16进制转2位BCD)// 说明:显示2位的数据// 入口参数:FH——如果FH=0,则说明显示的位置是16的整数倍// 如果FH不等于0,则说明显示的位置不是16的整数倍,需要在前加入半位的符号,FH代表将要加入符号的编码// WZ——待显示数据位置// SZ——待显示的数据void sz2_disp(uchar FH,uchar WZ,uchar SZ){uchar BCD0,BCD1; //分解后BCD码的高位、低位//分解成2个BCD码BCD0=SZ/10+0x30;BCD1=SZ%10+0x30;//写入显示数据地址wr_lcd (comm,0x30);wr_lcd (comm,WZ);//如果FH不等于0,先显示前导符号if(FH!=0){wr_lcd (dat,FH);}//显示数据wr_lcd (dat,BCD0);wr_lcd (dat,BCD1);}//--任意位置显示2位数字(压缩BCD转2位BCD)// 说明:显示2位的数据// 入口参数:FH——如果FH=0,则说明显示的位置是16的整数倍// 如果FH不等于0,则说明显示的位置不是16的整数倍,需要在前加入半位的符号,FH代表将要加入符号的编码// WZ——待显示数据位置// SZ——待显示的数据void bcd2_disp(uchar FH,uchar WZ,uchar SZ){uchar BCD0,BCD1; //分解后BCD码的高位、低位BCD0=SZ;BCD1=SZ;//分解成2个BCD码BCD0&=0xf0;BCD0>>=4;BCD0=BCD0+0x30;BCD1&=0x0f;BCD1=BCD1+0x30;//写入显示数据地址wr_lcd (comm,0x30);wr_lcd (comm,WZ);//如果FH不等于0,先显示前导符号if(FH!=0){wr_lcd (dat,FH);}//显示数据wr_lcd (dat,BCD0);wr_lcd (dat,BCD1);}//--任意位置显示2位数字、符号或1个汉字// 说明:显示2位的数据// 入口参数:FH——如果FH=0,则说明显示的位置是16的整数倍// 如果FH不等于0,则说明显示的位置不是16的整数倍,需要在前加入半位的符号,FH代表将要加入符号的编码// WZ——待显示数据位置// SZ——待显示的数据void fh2_disp(uchar WZ,uchar SZ0,uchar SZ1){//写入显示数据地址wr_lcd (comm,0x30);wr_lcd (comm,WZ);//显示数据wr_lcd (dat,SZ0);wr_lcd (dat,SZ1);}////延时程序//////////////////////////////////////////////////////////////////////---微秒级的延时void ndelay (uint us) //delay time{while(us--);}//延时------微妙级的延时void udelay(unsigned int t){unsigned int i;for(i=0;i<t;i++){}}void mdelay (uint ms){。

单片机控制LCD液晶显示器(含程序)

单片机控制LCD液晶显示器(含程序)

液晶显示器一.实验目的:1.了解全点阵图形LCD的结构和原理掌握在MSP430上如何使用外设。

2.了解LCD显示器的工作原理、种类(笔段型、点阵字符型、点阵图形)及主要性能指标。

3.掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。

4.了解LCD字符生成软件的使用方法(见附录)。

二.实验内容:1.在LCD上显示Hello和中文字“南京工业大学”。

2.通过键盘控制Hello或者中文字符在LCD上左右、上下移动。

3.学会使用字符生成软件来实现任意字符代码的生成和显示。

4.其他另外可以实现的目标:使字符在按键没有松动的情况下连续移动;实现字符的循环移动,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。

三.实验原理:1.图形点阵式液晶原理液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。

液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。

常用的液晶显示器可分成3类,分别是扭曲向列型(Twisted Nematic)、超扭曲向列型(Super TN)和彩色薄膜型。

字符点阵式属于扭曲向列型LCD。

典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM、字符发生器RAM和液晶屏组成,字符由5*7 点阵或5*10点阵组成。

一般结果如图一所示:图一 128x64 点阵图形液晶模块方框示意图此次实验所用的LCD型号是RT12864CT。

12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。

可完成图形显示,也可以显示8*4个(16*16)汉字。

管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS) H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR6 E H/ R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明128x64 点阵图形液晶模块的内部结构可分为三个部分:LCD 控制器,LCD 驱动器,LCD 显示装置。

图形点阵液晶显示器

图形点阵液晶显示器

;*******************************************************; 图形点阵液晶显示器实验说明;实验目的: 1.掌握使用图形点阵液晶显示字体和图形。

;实验内容: 1.显示一个图形; 2.显示一段字,包括汉字和英文;连线说明:;液晶12864J: A1区-->A3区; CS-->CS1(0F000H),片选; RW-->A0,读/写控制端; RS-->A1,数据/指令控制端; CS1/2-->A2,左右半屏使能端;*******************************************************NAME MAIN ;演示主程序EXTRN CODE(LCD_INIT,LCDClear,ByteDisL,ByteDisR,WordDisL,WordDisR,LineDisL,LineDisR)MAIN_CODE SEGMENT CODESTACK SEGMENT IDATARSEG STACKDS 20H ;32 Bytes StackCSEG AT 0000H ;定位0LJMP STARTRSEG MAIN_CODE ;开始程序段START: MOV SP,#STACK-1MAIN: LCALL LCD_INIT ;液晶初始化LCALL DelayTime ;延时LCALL DisLine1 ;第2行显示"星研电子"LCALL DelayTimeLCALL DisLine2 ;第3行显示"STAR ES51PRO"LCALL DelayTimeLCALL DisLine3 ;第4行显示"欢迎使用"LCALL DelayTimeSJMP MAIN;第2行显示"星研电子"DisLine1: MOV DPTR,#Line1_1MOV A,#2 ;A-起始显示行地址,第2行MOV B,#32 ;B-起始显示列地址,第32列,以下同LCALL WordDISL ;左半屏,显示一个字子程序MOV DPTR,#Line1_2MOV A,#2MOV B,#48LCALL WordDISLMOV DPTR,#Line1_3MOV B,#0LCALL WordDISR ;右半屏,显示一个字子程序MOV DPTR,#Line1_4MOV A,#2MOV B,#16LCALL WordDISRRETLine1_1:;-- 文字: 星--DB000H,000H,0FCH,082H,082H,0AAH,02AH,0AAH,0AAH,0AAH,02AH,002H,002H,0FCH,000H,000H DB000H,0EEH,09BH,090H,098H,094H,095H,080H,080H,080H,095H,095H,095H,095H,0FFH,000H Line1_2:;-- 文字: 研--DB09EH,062H,002H,002H,002H,032H,0FEH,062H,002H,002H,032H,002H,002H,002H,062H,0DCH DB003H,03CH,040H,040H,046H,040H,0F1H,08EH,080H,040H,07CH,080H,080H,080H,0FEH,003H Line1_3:;-- 文字: 电--DB000H,0F8H,004H,004H,044H,044H,006H,002H,002H,046H,044H,004H,004H,0F8H,000H,000H DB000H,00FH,010H,010H,011H,011H,0F0H,080H,090H,091H,091H,08CH,084H,087H,0C8H,078H Line1_4:;-- 文字: 子--DB080H,040H,05EH,052H,052H,052H,032H,072H,082H,082H,042H,062H,052H,04CH,0C0H,000H DB007H,004H,004H,004H,0FCH,08CH,08CH,080H,080H,07CH,004H,004H,004H,004H,007H,000H;第3行显示"STAR ES51PRO"DisLine2: MOV DPTR,#Line2_1MOV A,#4 ;A-起始显示行地址,第4行MOV B,#16 ;B-起始显示列地址,第16列,以下同LCALL ByteDISL ;左半屏,显示一个字节子程序MOV DPTR,#Line2_2MOV A,#4MOV B,#24LCALL ByteDISLMOV DPTR,#Line2_3MOV A,#4LCALL ByteDISLMOV DPTR,#Line2_4MOV A,#4MOV B,#40LCALL ByteDISLMOV DPTR,#Line2_5MOV A,#4MOV B,#48LCALL ByteDISLMOV DPTR,#Line2_6MOV A,#4MOV B,#56LCALL ByteDISLMOV DPTR,#Line2_7MOV A,#4MOV B,#0LCALL ByteDISR ;右半屏字节显示数据MOV DPTR,#Line2_8MOV A,#4MOV B,#8LCALL ByteDISRMOV DPTR,#Line2_9MOV A,#4MOV B,#16LCALL ByteDISRMOV DPTR,#Line2_10MOV A,#4MOV B,#24LCALL ByteDISRMOV DPTR,#Line2_11MOV A,#4MOV B,#32LCALL ByteDISRMOV DPTR,#Line2_12MOV A,#4MOV B,#40LCALL ByteDISRRET;"STAR ES51PRO"Line2_1:DB000H,070H,088H,008H,008H,008H,038H,000H,000H,038H,020H,021H,021H,022H,01CH,000HLine2_2:DB018H,008H,008H,0F8H,008H,008H,018H,000H,000H,000H,020H,03FH,020H,000H,000H,000H Line2_3:DB000H,000H,0C0H,038H,0E0H,000H,000H,000H,020H,03CH,023H,002H,002H,027H,038H,020H Line2_4:DB008H,0F8H,088H,088H,088H,088H,070H,000H,020H,03FH,020H,000H,003H,00CH,030H,020H Line2_5:DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H Line2_6:DB008H,0F8H,088H,088H,0E8H,008H,010H,000H,020H,03FH,020H,020H,023H,020H,018H,000H Line2_7:DB000H,070H,088H,008H,008H,008H,038H,000H,000H,038H,020H,021H,021H,022H,01CH,000H Line2_8:DB000H,0F8H,008H,088H,088H,008H,008H,000H,000H,019H,021H,020H,020H,011H,00EH,000H Line2_9:DB000H,010H,010H,0F8H,000H,000H,000H,000H,000H,020H,020H,03FH,020H,020H,000H,000H Line2_10:DB008H,0F8H,008H,008H,008H,008H,0F0H,000H,020H,03FH,021H,001H,001H,001H,000H,000H Line2_11:DB008H,0F8H,088H,088H,088H,088H,070H,000H,020H,03FH,020H,000H,003H,00CH,030H,020H Line2_12:DB0E0H,010H,008H,008H,008H,010H,0E0H,000H,00FH,010H,020H,020H,020H,010H,00FH,000H;第4行显示"欢迎使用"DisLine3: MOV DPTR,#Line3_1MOV A,#6 ;A-起始显示行地址,第6行MOV B,#32 ;B-起始显示列地址,第32列,以下同LCALL WordDISL ;左半屏,显示一个字子程序MOV DPTR,#Line3_2MOV A,#6MOV B,#48LCALL WordDISLMOV DPTR,#Line3_3MOV A,#6MOV B,#0LCALL WordDISR ;右半屏,显示一个字子程序MOV DPTR,#Line3_4MOV A,#6MOV B,#16LCALL WordDISRRETLine3_1:;-- 文字: 欢--DB014H,024H,044H,084H,064H,01CH,020H,018H,00FH,0E8H,008H,008H,028H,018H,008H,000H DB020H,010H,04CH,043H,043H,02CH,020H,010H,00CH,003H,006H,018H,030H,060H,020H,000H Line3_2:;-- 文字: 迎--DB040H,041H,0CEH,004H,000H,0FCH,004H,002H,002H,0FCH,004H,004H,004H,0FCH,000H,000H DB040H,020H,01FH,020H,040H,047H,042H,041H,040H,05FH,040H,042H,044H,043H,040H,000H Line3_3:;-- 文字: 使--DB040H,020H,0F0H,01CH,007H,0F2H,094H,094H,094H,0FFH,094H,094H,094H,0F4H,004H,000H DB000H,000H,07FH,000H,040H,041H,022H,014H,00CH,013H,010H,030H,020H,061H,020H,000H Line3_4:;-- 文字: 用--DB000H,000H,000H,0FEH,022H,022H,022H,022H,0FEH,022H,022H,022H,022H,0FEH,000H,000H DB080H,040H,030H,00FH,002H,002H,002H,002H,0FFH,002H,002H,042H,082H,07FH,000H,000H;延时程序DelayTime: PUSH 05HPUSH 06HPUSH 07HMOV R5,#48DelayTime_1: MOV R6,#100DelayTime_2: MOV R7,#100DJNZ R7,$DJNZ R6,DelayTime_2DJNZ R5,DelayTime_1POP 07HPOP 06H POP 05H RETEND。

实践课04 LCD液晶显示原理和点阵图实验

实践课04 LCD液晶显示原理和点阵图实验

LCD液晶显示原理和点阵图实验1、LCD液晶显示LCD,是英文Liquid Crystal Display的缩写,中文名称翻译为液晶显示器。

目前常用的是薄膜晶体管液晶显示器,其英文名称为Thin-film transistor liquid crystal display,简称为TFT LCD。

TFT-LCD液晶显示器的显像原理是采用“背透式”照射方式。

当光源照射时,先通过下偏光板向上透出,借助液晶分子来传导光线。

由于上下夹层的电极改成FET电极和共通电极,在FET电极导通时,液晶分子的排列状态同样会发生改变,也通过遮光和透光来达到显示的目的。

但不同的是,由于FET晶体管具有电容效应,能够保持电位状态,先前透光的液晶分子会一直保持这种状态,直到FET电极下一次再加电改变其排列方式为止。

2、TFT LCD的切面结构图3、放大器下的液晶4、液晶显示器的技术参数①可视面积液晶显示器所标示的尺寸就是实际可以使用的屏幕范围一致。

例如,一个15.1英寸的液晶显示器约等于17英吋CRT屏幕的可视范围。

②可视角度液晶显示器的可视角度左右对称,而上下则不一定对称。

举个例子,当背光源的入射光通过偏光板、液晶及取向膜后,输出光便具备了特定的方向特性,也就是说,大多数从屏幕射出的光具备了垂直方向。

假如从一个非常斜的角度观看一个全白的画面,我们可能会看到黑色或是色彩失真。

一般来说,上下角度要小于或等于左右角度。

如果可视角度为左右80度,表示在始于屏幕法线80度的位置时可以清晰地看见屏幕图像。

③点距举例来说一般14英寸LCD的可视面积为285.7mm×214.3mm,它的最大分辨率为1024×768,那么点距就等于:可视宽度/水平像素(或者可视高度/垂直像素),即285.7mm/1024=0.279mm(或者是214.3mm/768=0.279mm)。

④色彩度LCD重要的当然是的色彩表现度。

我们知道自然界的任何一种色彩都是由红、绿、蓝三种基本色组成的。

图形点阵液晶显示模块使用手册.

图形点阵液晶显示模块使用手册.

图形点阵液晶显示模块使用手册JCM12864A图形点阵液晶显示模块使用手册深圳市锦昌第 1 页目录(一) 概述(二) 外形尺寸(三) 模块主要硬件构成说明(四) 模块的外部(五) 指令说明(六) 读写操作时序一,概述JCM12864A是一种图形点阵液晶显示器,它主要由行第 2 页二,外形尺寸图图 12. 外形尺寸图表 1ITEM NOMINAL DIMEN UNIT模块体积113×65×11 mm视域73.4×38.8 mm行列点阵数128×64 DOTS点距离0.508×0.508 mm点大小0.458×0.458 mmReturn三,模块主要硬件构成说明结构框图:注:IC2控制模块的左半屏,IC1控制模块的右半屏.IC3为行驱动器.IC1,IC为列驱动器.IC1,IC2,IC3含有如下主要功能器件.了解如下器件有利于对第 3 页LCD模块之编程.1.指令寄存器(IR)IR是用来寄存指令码,与数据寄存器寄存数据相对应.当D/I=1 时,在E信号下降沿的作用下,指令码写入IR.2.数据寄存器(DR)DR是用来寄存数据的,与指令寄存器寄存指令相对应.当D/I=1时,在E信号的下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7~DB0 数据总线.DR 和DDRAM之间的数据传输是模块内部自动执行的.3.忙标志:BFBF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUS READ 指令,可以将BF读到DB7总线,从而检验模块之工作状态.4.显示控制触发器DFF此触发器是用于模块屏幕显示开和关的控制.DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DDF=0为关显示(DISPLAY OFF).DDF 的状态是指令DISPLAY ON/OFF和RST信号控制的.5.XY地址计数器XY地址计数器是一个9位计数器.高三位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针.X地址计数器是没有记数功能的,只能用指令设置.Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63.6.显示数据RAM(DDRAM)DDRAM是存贮图形显示数据的.数据为1表示显示选择,数据为0表示显示非选择.DDRAM与地址和显示位置的关系见DDRAM地址表(见第6页).7.Z地址计数器Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步.当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0.Z地址计数器可以用指令DISPLAY START LINE 预置.因此,四,模块的外部接口部接口信号如下表2所示:表 2管脚号管脚名称 LEVER 管脚功能描述1 VSS 0V 电源地2 VDD 5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I H/L D/I="H",表示DB7~DB0为显示数据D/I="L",表示DB7~DB0为显示指令数据5 R/W H/L R/W="H",E="H",数据被读到DB7~DB0R/W="L",E="H→L", DB7~DB0的数据被写到IR或DR6 E H/L 使能信号:R/W="L",E信号下降沿锁存DB7~DB0R/W="H",E="H" DRAM数据读到DB7~DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线第 4 页12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VEE -10V LCD驱动负电压19 IED+ DC+5V 背光板电源20 IED- DC0V 背光板电源Return五,指令说明指令表:表 3指指令码功能令 RW DI D7 D6 D5 D4 D3 D2 D1 D0显示ON/OFF0 0 0 0 1 1 1 1 1 1/0 控制显示器的1.显示开关控制(DISPLAY ON/OFF)代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 0 0 0 0 1 1 1 1 1 DD=1:开显示(DISPLAY ON) 意即显示器可以进行各种显示操作D=0:关显示(DISPLAY OFF) 意即不能对显示器进行各种显示操作2.设置显示起始行(DISPLAY START LINE)代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 0 0 1 1 A5 A4 A3 A2 A1 A0前面在Z地址计数器一节已经描述了显示起始行是由Z地址计数器控制的.A5~A0 6位地址自动送入Z地址计数器,起始行的地址可以是0~63的任意一行.例如:选择A5~A0是62,则起始行与DDRAM行的对应关系如下:第 5 页DDRAM 行:62 63 0 1 2 3 ·················28 29屏幕显示行: 1 2 3 4 5 6················· 31 323.设置页地址(SET PAGE "X ADDRESS")代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 0 0 1 0 1 1 1 A2 A1 A0所谓页地址就是DDRAM的行地址,8行为一页,模块共64行即8页,A2~A0表示0~7页.读写数据对地址没有影响,页地址由本指令或RST信号改变复位后页地址为0.页地址与DDRAM的对应关系见DDRAM地址表.4.设置Y地址(SET Y ADDRESS)代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 0 0 0 1 A5 A4 A3 A2 A1 A0此指令的作用是将A5~A0送入Y地址计数器,作为DDRAM的Y地址指针.在对DDRA M进行读写操作后,Y地址指针自动加1,指向下一个DDRAM单元.DDRAM地址表:表 4CS2=1CS1=1Y= 0 1 62630 1 62 63 行号X= 0DB0 ↓DB7DB0 ↓DB7DB0 ↓DB7DB0↓DB7DB0↓DB7DB7DB0↓DB7DB0 ↓ DB7DB0 ↓ DB7DB0 ↓ DB70 ↓ 7 ↓DB0 ↓ DB7DB0 ↓ DB7DB0 ↓ DB7DB0↓DB7DB0↓DB7DB0↓DB7DB0↓DB7DB0 ↓ DB7DB0 ↓ DB7DB0 ↓ DB78 ↓55X=7 DB0 ↓DB7DB0 ↓ DB7DB0 ↓ DB7DB0↓DB7DB0↓DB0↓DB7DB0↓DB7DB0 ↓DB7DB0 ↓DB7DB0 ↓DB756 ↓635.读状态(STATUS READ)代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 0 1 BUSY 0 ON/OFFRET 0 0 0 0当R/W=1 D/I=0时,在E信号为"H"的作用下,状态分别输出到数据总线(DB7~DB0)的相应位.BF: 前面已叙述过(见BF标志位一节).ON/OFF: 表示DFF触发器的状态(见DFF触发器一节).RST: RST=1表示内部正在初始化,此时组件不接受任何指令和数据.6.写显示数据(WRITE DISPLAY DATE)代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 0 1 D7 D6 D5 D4 D3 D2 D1 D0D7~D0为显示数据,此指令把D7~D0写入相应的DDRAM单元,Y地址指针自动加1.7.读显示数据(READ DISPLAY DATE)代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0形式 1 1 D7 D6 D5 D4 D3 D2 D1 D0此指令把DDRAM的内容D7~D0读到数据总线DB7~DB0,Y地址指针自动加1. Return六,读写操作时序1.写操作时序图 3第 6 页2.读操作时序图 43.读写时序参数表表 5名称符号最小值典型值最大值单位E 周期时间 Tcyc 1000 --- --- nsE高电平宽度 Pweh 450 --- --- nsE低电平宽度 Pwel 450 --- --- nsE上升时间 Tr --- --- 25 nsE下降时间 Tf --- --- 25 ns地址建立时间 Tas 140 --- --- ns地址保持时间 Tah 10 --- --- ns数据建立时间 Tdsw 200 --- --- ns数据延迟时间 Tddr --- --- 320 ns写数据保持时间 Tdhw 10 --- --- ns 读数据保持时间 Tdhw 20 --- --- ns Return第 7 页。

课程设计说明书基于arm的图形点阵lcd菜单设计 _大学论文

课程设计说明书基于arm的图形点阵lcd菜单设计 _大学论文

编号:课程设计说明书(信息系统综合实训课程设计)题目:图形点阵LCD菜单设计院(系):信息与通信学院专业:电子信息工程学生姓名:学号:指导教师:2016年 1月2日摘要目前图形点阵液晶显示模块广泛用于各式各样的电子设备,人机界面越来越直观形象,对于大多数用户来说,显示界面的友好与否,将直接影响到其产品的使用。

人机交互界面设计的目标是实现菜单窗口界面,用户可以在菜单方式下进行人机交互。

菜单响应用户的选择,根据用户的选择运行程序,实现相应的功能。

同时友好的人机界面使得电子设备更加易于维护。

本文在新唐Cortex-M0开发板设计了一种能实现四级深度的菜单,硬件部分由Cortex-M0主控芯片、12864LCD和3*3的矩阵键盘组成,通过软件部分循环扫描按键,并统计按下的按键,根据不同的需求在LCD上显示各种图片和文字。

图片和文字通过用取模软件进行取模可以转换成在LCD上显示所要求的格式。

通过将12864LCD看成一个平面坐标的形式,可以把大小合适的图片及文字放置到液晶屏合适的位置上。

基于此,我们实现了具有菜单查找、菜单返回、屏蔽错按等基本功能的四级深度的菜单设计。

关键词:菜单,Cortex-M0,LCDAbstractThe graphic dot matrix LCD module are widely used in all kinds of electronic equipment, man-machine interface is more and more intuitive image, for most users, display of friendly interface or not, will directly affect the use of its products. The human-computer interaction interface design goal is to achieve the menu window interface, users can be human-computer interaction in the menu mode. In response to user menu choice, according to the user's choice to run the program, realize the corresponding function. At the same time, friendly man-machine interface makes the device more easy to maintain.In this paper, Nuvoton Cortex-M0 development board is designed to achieve a depth of four menu, the hardware part by the Cortex-M0 main chip, 12864LCD and 3 * 3 matrix keyboard composition, part of the cycle by the software to scan button, and statistics press the button, depending on the needs of a variety of images and text displayed on the LCD. Pictures and text can be converted into modulo displayed on the LCD by performing the required format using modulo software. By plane coordinates 12864LCD as a form, you can put the right size of pictures and text is placed to the appropriate location on the LCD screen. Based on this, we have realized the find menu, the menu returns, shielding the wrong press and other basic functions of four depth of menu design. Keywords: menu,Cortex-M0,LCD目录引言 (1)1 系统硬件设计总体框图 (1)2 各部分电路分析 (1)2.1 液晶显示部分 (1)2.1.1 LCD12864简介 (1)2.2 矩阵键盘模块 (4)2.3 NUC140控制器简介 (4)2.3.1 ARM Cortex-M0内核 (5)3软件设计 (6)3.1程序设计思路 (6)3.2 NUC140主程序流程图 (7)3.3键盘扫描程序流程图 (7)4.总结 (8)谢辞 (10)参考文献 (11)附录 (12)引言自20世纪80年代后期开始,随着LCD12864液晶显示屏制造技术的不断完善,在国外得到了广泛的应用。

图形点阵LCD模块显示界面的可视化设计

图形点阵LCD模块显示界面的可视化设计

图形点阵LCD模块显示界面的可视化设计
张忠凯
【期刊名称】《电子产品世界》
【年(卷),期】2001(000)019
【摘要】本文介绍一种图形点阵LCD液晶模块显示界面快速生成方法的原理,及以软硬件资源有限的单片机AT89C2051为控制器的电路中的应用.
【总页数】2页(P70,74)
【作者】张忠凯
【作者单位】深圳研安佳电子有限公司
【正文语种】中文
【中图分类】TP3
【相关文献】
1.手把手教你学PIC单片机C语言设计(十)驱动128×64点阵图形液晶模块的实验 [J], 周兴华
2.手把手教你学PIC单片机C语言设计(十一)驱动128×64点阵图形液晶模块的实验(续一) [J], 周兴华
3.手把手教你学PIC单片机C语言设计(十一)驱动128x64点阵图形液晶模块的实验(续二) [J], 周兴华
4.实现可视化编程的图形点阵液晶模块应用技术 [J], 张忠凯
5.图形点阵LCD模块显示界面的可视化设计 [J], 张忠凯
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图形点阵LCD液晶模块显示界面的可视化编程方案与实践随着图形点阵LCD液晶显示模块在各行各业的逐步使用,使得人机界面变得越来越直观,尤其对于国内大多数需要有汉字和图形显示的用户来说,显示界面的友好与否,将直接影响到其产品的形象和市场竞争力,但一般涉及有关图形点阵液晶模块显示界面开发的技术人员由于缺乏经验而往往感到力不从心,尤其当用户的控制电路资源非常缺乏的条件下(如家用电器),图形点阵液晶模块则更是望尘莫及,而市面上所能见到的仍是那些"不顾客户死活而又自认清高"的传统型液晶显示模块,虽然其成本已经降到普遍能接受的地步,但还是因其控制方法的特殊性和复杂性严重阻碍液晶显示器的推广应用。

针对目前的这种状况,深圳联合电子有限公司开发出一种图形点阵液晶模块,将LCD所有的底层操作集成于模块内的MCU中,这样其控制就变得极为容易,占用户资源最少,并且所有显示界面的编辑及调试全部在电脑上独立完程,整个过程一目了然,极大地方便用户编写显示界面的控制软件,从而也提高了LCD液晶显示模块在产品中的附加值。

可视化编程LCD模组技术特性:1.模块显示点阵数(分辨率)128X64,192X64,256X64三种可选;2.内含高速MCU及64KB用户显示资料现场可编程FLASH;3.标准RS232串行通讯控制,只占用户两根口线,小马拉大车成为可能;4.配备仿真调试软件,在电脑上独立完成显示界面的编辑,资料下载,仿真调试;5.简单又丰富的控制命令使模块显示的控制易如控制一只LED;6.用户可随时改写显示资料,现场编程易如反掌,显示界面无限升级;7.模块提供忙信号输出,以检测模块状态;用户首先在电脑上完成LCD显示界面的编辑,资料下载及仿真调试工作,所配仿真调试软件可使用户方便的进行上述工作,在硬件上除可视化编程LCD模组之外还配有一块电脑RS232电平转换转接板,此板负责模块与电脑联接和对模块的供电,模块与电脑联接图示如下。

图1 模块与电脑的联接将所配仿真调试软件Visual LCM1.0安装在电脑上(运行附带软盘中INSTALL.BAT),安装前注意要先将电脑里正在运行且占用串口的程序关闭,安装完毕屏幕上即出现如下软件主界面:图2 仿真调试软件主画面当鼠标移动到某可操作对象上停留一会儿,就会有相应的操作提示,建议操作前请先将各功能浏览一遍,以便先对操作有个感性认识。

在模块与电脑联接之前,用"图文编辑"将LCD预显示位图画好存档,注意所作位图必需是黑白的单色位图且需旋转270度,将画好的位图通过"添加"一一列入"下载位图排序"中,把模块设为编程模式(JP1选择)与电脑由RS232转换板相接并通电,在"串口选择"中选好模块所接串口,用"状态测试"检查连线和串口号及电源是否正常,若联机成功,模块资料下载界面则显示"联机测试OK!",同时主画面中"下载资料"激活,点击后电脑将排序列表中的位图按序号由小到大一一下载到模块内FLASH中,下载时间与列表中位图总和大小成正比,结束时模块显示"下载资料OK!",此时将模块断电,设其为正常模式再加电,用"状态测试"告电脑模块此时已为正常模式,通过点击"浏览资料"可在LCD屏上以点(00,00)为顶点一一观察刚刚下载的所有位图,且顺序与排序列表中的相同,也可直接点击排序列表中的位图进行浏览,所有位图无误后,可进行LCD 显示界面的仿真调试。

LCD显示界面的生成用六种命令来实现,在主画面的"发送命令"下边的命令列表框中罗列出这六种命令的含义及语法规则,若输入错误的命令将会提示错误信息,命令及各参数说明如下:以下是针对图三以及相应程序的参数定义和说明:命令格式功能说明:1 BMPnxy 在以点(x,y)为顶点处显示位图n2 CLR 清除屏上所有显示3 CLSxywh 清除以点(x,y)为顶点,宽w高h的距形4 INVxywh 反色以点(x,y)为顶点,宽w高h的距形5 SDTxy (CDTxy)在点(x,y)处画点(在点(x,y)处灭点)n 0=x 0=y 0=w 0h 0各参数在128X64LCD显示屏上图示如下:图3 命令参数在128X64模块显示屏上示意在主画面的"发送命令"左边的命令输入框中输入正确的命令后点击"发送命令",此时LCD屏上会有相应的显示动作,若在调试过程中发现要修改某位图时可以用"图文编辑"重新修改后按前述步骤再一次下载位图,直到对显示界面满意为止。

最终要将模块脱离电脑通过模块上的SIO接入用户控制电路中运行,SIO定义如下:PIN1:模块背光电极1(LED背光时为负极,EL背光时为交流驱动电极1);PIN2:模块背光电极2(LED背光时为直流正5伏,EL背光时为交流驱动电极2);PIN3,PIN5:模块逻辑电源地;PIN4:模块逻辑电源直流正5伏;PIN6:模块内MCU外部复位,高有效,防死机时用;PIN7:模块忙信号,低为忙,高为闲;PIN8:模块显示控制命令串行输入,通讯协议为(9600,n,8,1),即9600波特率,无校验位,8个数据位,1个停止位。

现举例说明模块如何与单片机AT89C2051接口,为保证波特率的准确,建议AT89C2051用11.0592MHz的晶体,联接图示如下:图4 单片机AT89C2051与模块128X64的联接在编写单片机AT89C2051的控制软件时需注意以下事项:1.串行口模式设为模式1(1个起始位,8个数据位,1个停止位);2.波特率设为9600(TH1=TL1=0FDH,SMOD=0;TH1=TL1=0FAH,SMOD=1);3.在发送命令之前需检测模块为闲态(PIN7=1),否则所发的命令可能失效;4.串口发送的必须是完整命令的ASCII码,如命令"BMP0B0C0D",实际由串口发送的内容是"424D50304230433044",顺序为"B->M->P->0->B->0->C->0->D";5.在每条命令末尾还要加上命令结束码"0D",以表明命令结束。

6.若单片机AT89C2051的串口已被占为他用,那么用一根口线来摸拟生成一个软串口即可。

7.模块SIO接口中PIN6的作用是当模块内MCU由于干扰死机时,用户控制电路可强行外部复位,使模块脱离死机状态,判断模块是否死机可通过向其发送正确的显示命令后,PIN7电平是否有变化来得知,实际上模块在完成每条命令内部操作后即进入睡眠状态,死机的机率是极低的。

在下面的软件中未考虑死机的情况。

用MCS-51汇编语言编写简单的显示控制源程序如下(实际运行已通过):BUSY BIT P3.0 ;定义忙信号口线,当然也可定义为其他口线X_V EQU 30H ;定义各参数单元Y_V EQU 31HNUBER EQU 32HWIDTH EQU 33HHIGHT EQU 34HREG_ASC_XH EQU 35H ;定义参数x高位ASCII码单元REG_ASC_XL EQU 36H ;定义参数x低位ASCII码单元REG_ASC_YH EQU 37H ;定义参数y高位ASCII码单元REG_ASC_YL EQU 38H ;定义参数y低位ASCII码单元REG_ASC_NH EQU 39H ;定义参数n高位ASCII码单元REG_ASC_NL EQU 3AH ;定义参数n低位ASCII码单元REG_ASC_WH EQU 3BH ;定义参数w高位ASCII码单元REG_ASC_WL EQU 3CH ;定义参数w低位ASCII码单元REG_ASC_HH EQU 3DH ;定义参数h高位ASCII码单元REG_ASC_HL EQU 3EH ;定义参数h低位ASCII码单元ORG 00H ;程序开始AJMP MAINORG 30HMAIN:MOV SP,#60H ;设堆栈指针LCALL INIT_SIO ;初始化串口MOV X_V, #0CH ;在x=12,y=13为顶点处显示位图11 MOV Y_V, #0DHMOV NUBER, #0BHLCALL ORDER_BMP ;发送位图显示子程,其它命令类似AJMP $ ;观察LCD显示屏INIT_SIO:MOV SCON,#50H ;串行口:方式1MOV TMOD,#21H ;定时器T1为波特率发生器,方式2 MOV TH1,#0FDH ;波特率=9600, Fosc=11.0592MHz MOV TL1,#0FDH ;SMOD=0SETB TR1 ;启动T1RETORDER_BMP: MOV A,X_VMOV R0, #REG_ASC_XHLCALL H_ASC ;将参数x转换为两个字节的ASCII码MOV A,Y_VMOV R0, #REG_ASC_YHLCALL H_ASC ;将参数y转换为两个字节的ASCII码MOV A,NUBERMOV R0, #REG_ASC_NHLCALL H_ASC ;将参数n转换为两个字节的ASCII码LCALL BUSY_CK ;检测模块状态MOV A, #"B" ;先发送命令码BMP的ASCII码MOV SBUF, AJNB TI, $CLR TIMOV A,#"M"MOV SBUF, ACLR TIMOV A, #"P"MOV SBUF, AJNB TI, $CLR TIMOV R0, #REG_ASC_NHLCALL SEND_CS ;发参数n的ASCII码MOV R0, #REG_ASC_XHLCALL SEND_CS ;发参数x的ASCII码MOV R0, #REG_ASC_YHLCALL SEND_CS ;发参数y的ASCII码MOV A,#0DHMOV SBUF, A ;发送命令结束标志"0DH" JNB TI, $CLR TIRETBUSY_CK: JNB BUSY, $ ;等待模块为闲状态RETSEND_CS: MOV A,@R0MOV SBUF, AJNB TI, $CLR TIINC R0JNB TI, $CLR TIRETH_ASC: MOV B, A ;将一字节的十六进制数转换为两字节的ASCII码ANL A, #0F0HSWAP ACJNE A, #9, PD_GXY9: ADD A, #30HTURN_LOW: MOV @R0, AAJMP LOW_BITPD_G: JC XY9ADD A, #37HAJMP TURN_LOWLOW_BIT: MOV A, BANL A, #0FHCJNE A, #9, PD_G1XY_9: ADD A, #30HTURN_LOW1: MOV @R0, ARETPD_G1: JC XY_9ADD A, #37HAJMP TURN_LOW1END。

相关文档
最新文档