图形点阵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], 张忠凯
因版权原因,仅展示原文概要,查看原文内容请购买。

图形点阵液晶(12864M)实验

图形点阵液晶(12864M)实验
delay(16);
}
/*------------------显示字符串--------------------------*/
void hzkdis(unsigned char code *s)
{ while(*s>0)
{ write_data(*s);
s++;
}
}
/*------------------首屏显示--------------------------*/
}
}
原理图:
缺少芯片无。
流程图:
开始液晶初始化子程序
初始化液晶设置基本指令集
设置光标延时10ms,点设定,游标右移
写字符串延时10ms,关游标
原地踏步延时10ms,清屏
返回
C语言源程序:
/*12684.c使用并行接口方式,在12684M液晶上显示“单片机实验室欢迎你”、“Welcome to MCU”
使用条件:PSB = 1(即并行)
void lcdreset()
{
write_com(0x30);
delay(16); //选择基本指令集(30H)
write_com(0x04); //点设定,游标右移
delay(16);
write_com(0x0f); //开显示控制(无游标、不反白)
delay(16);
write_com(0x01); //清除显示,并且设定地址指针为00H(同时地址归为)
/*只写入一次,本实验不使用读忙标志
void chk_busy()
{
RS = 0;
RW = 1;
Lcd_Bus = 0xff;
while((Lcd_Bus&0x80) == 0x80);

点阵式液晶显示屏的显示程序设计单片机原理及应用课程设计

点阵式液晶显示屏的显示程序设计单片机原理及应用课程设计

单片机原理及应用课程设计学院名称:运算机学院专业班级:运算机1001学生姓名:秦佳学生学号:07指导教师姓名:赵念强完成时刻:2021年7月5日点阵式液晶显示屏的显示程序设计一、设计目的1.熟练把握C51系统仿真开发系统的应用。

2.增强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和开发工作打下良好基础。

3.把握的液晶的工作原理和应用设计。

4.把握小系统开发设计的流程和设计思路。

二、设计方案一、实验要求:1)字符方式:从下到上转动显示:“江苏大学运算机学院”然后交替显示:“2021年单片机课程设计”“液晶点阵显示屏程序设计”“作者姓名、班级、学号”2)图片方式:显示相应图片(有左、右移,上下卷等多种动态方式)3) 模拟量采样值显示(温度、压力、电位)4) 其它功能不限,可自由发挥(时钟、秒表、计算器、菜单等),拓展要求二、设计思路:将程序分成四个模块:1.主函数模块2.模数转换模块3.液晶显示模块4.测试模块其中,在中概念一个功能选择菜单图片,包括课设的简介,图片的变换,模拟量的搜集和计算器的实现,该菜单功能的切换由按键功能来实现。

在中概念了两张图片别离来简单介绍一下该课程设计,包括“江苏大学运算机学院、2021年单片机课程设计”和“秦佳、运算机100一、07”;还概念了字符方式下的“液晶点阵显示屏程序设计”;概念了在ADC中要用到的0-9的数字和计算器中要用到的各类运算符。

在其中还概念了上移、下移、左移和右移函数和计算器实现的函数。

在中概念了字符形式的“温度压力电位”和将模拟量转换成数字量的showadc函数。

三、程序流程图:a、系统主流程图b、主函数流程图c、显示模块流程图d、模数转换模块流程图abd四、要紧的源程序及注释一、#include ""#include <>void Delay1us(unsigned char us){while (us){_nop_(); _nop_(); _nop_(); _nop_(); _nop_();--us;}}void SYSCLK_Init (void){int i; to start upwhile (!(OSCXCN & 0x80)) ; to settleOSCICN = 0x88;}unsigned char Count1ms;void Timer0_Init (void){CKCON|=0x8;TMOD|=0x1; 取模插入程序后,常显现乱码,而并非是我想要的字样。

图形点阵LCD显示控制研究

图形点阵LCD显示控制研究

图形点阵LCD显示控制研究字体大小:大 | 中 | 小 2010-03-09 09:16 - 阅读:5 - 评论:01 点阵式LCD的接口技术单片机可以通过数据总线与控制信号直接采用存储器访问形式、I/O设备访问形式控制该液晶显示模块。

本文以AT89C51为例,他与YEJHD19264接口电路如图1所示。

单片机通过P2.6,P2.7来控制CSA,CSB列选择驱动器,同时AT89C51用P2.1作为R/W信号控制数据总线的数据流向,用P2.0作为D/I信号控制寄存器的选择,E信号由AT89C51的P2.4控制。

电路中LCD电源控制端VO是用来调节显示屏灰度的,调节该端的电压,可改变显示屏字符、图形的颜色深浅。

可以通过查阅显示屏产品手册查到基本显示时序电路和显示驱动程序。

2 点阵LCD的显示控制技术根据点阵式LCD的功能和特点,笔者研究了两种应用广泛的控制算法,左(右)循环位移算法和翻页算法。

2.1 左(右)循环位移算法此算法应用于广告或车载报站系统中。

如图2所示,以左循环为例,假如一串8个汉字(16*16字模)的广告,要在192*64点阵LCD上的第二行(192*64型的点阵显示16*16字模时为4行12列)实行左循环显示功能,具体算法如图3所示。

说明:把8个字看作为一个整体,即汉字串,并以第一个汉字的显示坐标作为整个汉字串的显示坐标,将其初始化为最右边的坐标值(假设广告是从右向左移动)。

接着依次向左延伸显示8个汉字(一条广告),如果在显示过程中,有一些汉字的坐标会超过液晶屏的显示界限,这时控制程序不显示这些汉字,如图2虚线小方框所示。

汉字串显示坐标向左移一位(减1)都要判断坐标值是否等于-7(等于-7,则一次左移结束,重新初始化为最右边的坐标值,准备第二轮左移;不等于-7,则本轮左移尚未结束)。

在实际应用中,左(右)循环位移算法还可根据系统需求进行改进和拓展,以使他的应用更加灵活。

比如要求广告语是可实时更改的,即当用户通过串口或其他外部接口输入新的广告时,原来的旧广告要被新广告替换,这样,算法就会更加复杂,因为除了广告的内容本身的变化(字改变),字数也可能改变。

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

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

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

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

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

实现可视化编程的图形点阵液晶模块应用技术

实现可视化编程的图形点阵液晶模块应用技术
其 控 制 方 法 的 特 殊 性 和 复 杂 性 严 重 阻 碍 液 晶显 示 器
( ) 内含 高速 MC 及 6 B用 户 显 示资 料现场 2 U 4K
可编 程 F AS L H;
( )标 准 R 2 2串 行通 信 控 制 , 只 占用 户 两根 3 S3
口线 ;
( 4) 配 备 仿 真 调 试 软 件 , 在 电脑 上 独 立 完 成 显 示 界面 的编辑 、 资料下 载 、 仿真 调试 ; ( 5) 简 单 又 丰 富 的控 制 命 令 使 模 块 显 示 的控 制
围 1 模块 与电脑的连接
4 丰 ^ l iI ■ _ _ 2 ●_ | ‘ _ ■ 鼻囊 扼 j 誊湛 蝈! i 尊
维普资讯
技 术 纵 横
上 ( 行 附带 软 盘 中 I TALL BAT 安装 前 注 意 , 运 NS ) 要 先 将 电 脑 里 正 在 运 行 且 占用 串 口 的 程 序 关 闭 , 安 装 完 毕 , 屏 幕 上 即 出现 图 2所 示 软 件 主 界 面 。
维普资讯

实现可视化编程的图形点阵液晶模块应用技术
■ 深圳联合 电子 有限公司 张 忠 凯
将L D所有底层操作 集成 于模块 内的 Mc c u中, 占用户资源少,控制容 易,并且所有 显示界 面 的编辑及调试全部在 电脑上独立完成。 文 中介绍 了 L D模块 的技术特性 ;在 电脑上 完成 L c D c 显示界面的编辑 、 资料 下栽及仿真调试 工作 ;LcD显 示界 面完成 的 6种命令 。 关键词 L D显示模块 可视化蝙程 单 片机 R 2 2串行通信 C S3
加值 。
( 7) 模 块 提 供 忙 信 号 输 出 . 阻 检 测 模 块 状 态 。

lcd点阵

lcd点阵

点阵液晶汉字显示实验马敬松2008132217黄歆2008132218陈伟2008132203一、实验任务和要求用LCD128x64点阵液晶显示器显示指定汉字,最多可以显示4行、8个/行汉字,通过键盘可以随时改变显示的内容。

准备汉字字库不少于50个汉字。

二、实验方案论证及系统硬件电路设计12864点阵液晶显示模块由128*64个液晶显示点组成的一个128列*64行的阵列。

每个显示点对应一位二进制数,1表示亮,0表示灭。

要显示某个图形或汉字将相应的点阵信息写入到相应的存储单元中,并处理好显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。

我们使用的液晶显示模块由两片列驱动器构成,也就是说12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。

每一屏又分为八页,每页64列。

基于周立功实验开发板,实验电路如下:电路中,时为便于程序设计连线方式如下:A0(D\I)口连P3.0、A1口连P3.1(R\W)、A2口连P3.3(片选信号,P3.3为0时选CS1,否则选CS2)、RD 口连VCC、CS口连GND、WR(E)口连P3.2、RST口连VCC。

三、实验程序设计依据12864点阵液晶显示模块显示基本原理,对液晶屏操作前要判忙状态,对数据线DB0—DB7操作时分为下命令和写数据两个步骤(详细数据命令表和读写时序可查询器件使用手册),程序清屏及写数据显示均分屏、分页、按列处理。

其中读写时序如下:写操作时序读操作时序依据上述基本原理,部分程序框图如下:写左半屏一行程序框图字模提取采用软件提取方式纵向读取。

准备的字库和实验程序见附录。

四、实验结论通过调试,最终可实现每屏4行,每行8个汉字字符显示。

并可通过键盘切换显示的内容。

五、实验心得通过这次综合实验,我们小组有很多的心得体会,有关于单片机的,更多的是有关于人与人之间关系方面的。

在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。

点阵式液晶显示器图形程序设计

点阵式液晶显示器图形程序设计

对应点 进 行显示 次循 环 线

依次循环
直 到 行 数等于第 二 点行
,
但它 用 汇 编 语言编程 的 工 作量较大
, ,
,
特 别对于 显
则 将 第一点下 一 行 的 对应 点进 行 显 示
, ,

示 图形 的 编程 功能 现

由于 没 有 类 似高级 语言中 画 线 语 句 的
,
直 到 等于 第二 点行 数
G R人1
R
I
A
,
点子程 序
M
OV A 人
, ,
M OV

62 H
.
A
73H
本 点 所 在行 数
1
MO V B 63H
L C
A
IN C
L L
.
ME BI G P S
调 显示 一 点 子 程 序
M O V 6 OH 人
本 点 所在 行 数 存 在 6 o H
D D R BN
:
]N Z R S

显示方式为两层 逻辑 或

形层每一象素 ( 点 ) 与 位为
:
v R A M 图 形 区 一个 二 进 制 位 一
,
2

l
开显示
位为
0
关显示

本文采 用 如

图形 方式
,
由 于篇幅限 制
J
S E D 133。
初 始 化 程序从 略
L CA L L LC A L L
点阵 式
C L SC CO OR
I
DOI : 10. 16157 /j . i ssn. 0258 -7998. 1993. 02. 010

实验七 图形点阵显示实验

实验七  图形点阵显示实验

(0F000H)CS1A1A0A210KW2D0D1D2D3D4D5D6D7 RSRW231U3A564U3B123U5AWRRD12JP9CSVSS1VDD2V03RS4RW5E6DB07DB18DB29DB310DB411DB512DB613DB714CS115CS216RST17VOUT18LED+19LED-2012864JJP6VCCCS1/210KR31470R4DS1.MODEL TINYWR_COM_AD_L EQU 0F004H ;写左半屏指令地址WR_COM_AD_R EQU 0F000H ;写右半屏指令地址WR_DATA_AD_L EQU 0F006H ;写左半屏数据地址WR_DATA_AD_R EQU 0F002H ;写右半屏数据地址RD_BUSY_AD EQU 0F001H ;查忙地址RD_DATA_AD EQU 0F003H ;读数据地址X EQU 0B8H ;起始显示行基址Y EQU 040H ;起始显示列基址FirstLine EQU 0C0H ;起始显示行.STACK 100.DATA;-- 文字: 星 --Line1_1 DB 00H,00H,0FCH,82H,82H,0AAH,2AH,0AAH,0AAH,0AAH,02AH, 02H,02H,0FCH,00H,00H DB 00H,0EEH,9BH,90H,98H,94H,95H,80H,80H,80H,95H,95H,95H,95H,0FFH,00H;-- 文字: 研 --Line1_2 DB 9EH,62H,02H,02H,02H,32H,0FEH,62H,02H,02H,32H,02H,02H,02H,62H,0DCH DB 03H,3CH,40H,40H,46H,40H,0F1H,8EH,80H,40H,7CH,80H,80H,80H,0FEH,03H;-- 文字: 电 --Line1_3 DB 00H,0F8H,04H,04H,44H,44H,06H,02H,02H,46H,44H,04H,04H,0F8H,00H,00H DB 00H,0FH,10H,10H,11H,11H,0F0H,80H,90H,91H,91H,8CH,84H,87H,0C8H,78H;-- 文字: 子 --Line1_4 DB 80H,40H,5EH,52H,52H,52H,32H,72H,82H,82H,42H,62H,52H,4CH,0C0H,00H DB 07H,04H,04H,04H,0FCH,8CH,8CH,80H,80H,7CH,04H,04H,04H,04H,07H,00H;”STARES51PRO”Line2_1 DB 00H,70H,88H,08H, 08H,08H,38H,00H,00H,38H,20H,21H,21H,22H,1CH,00H Line2_2 DB 18H,08H,08H,0F8H,08H,08H,18H,00H,00H,00H,20H,3FH,20H,00H,00H,00H Line2_3 DB 00H,00H,0C0H,38H,0E0H,00H,00H,00H,20H,3CH,23H,02H,02H,27H,38H,20H Line2_4 DB 08H,0F8H,88H,88H,88H,88H,70H,00H,20H,3FH,20H,00H,03H,0CH,30H,20H Line2_5 DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H Line2_6 DB 08H,0F8H,88H,88H,0E8H,08H,10H,00H,20H,3FH,20H,20H,23H,20H,18H,00H Line2_7 DB 00H,70H,88H,08H,08H,08H,38H,00H,00H,38H,20H,21H,21H, 22H,1CH,00H Line2_8 DB 00H,0F8H,08H, 88H,88H,08H,08H,00H,00H,19H,21H,20H,20H,11H,0EH,00H Line2_9 DB 00H,10H,10H,0F8H,00H,00H,00H,00H,00H,20H,20H,3FH,20H,20H,00H,00H Line2_10 DB 08H,0F8H,08H,08H,08H,08H,0F0H,00H,20H,3FH,21H,01H,01H,01H,00H,00H Line2_11 DB 08H,0F8H,88H,88H,88H,88H,70H,00H,20H,3FH,20H,00H,03H,0CH,30H,20H Line2_12 DB 0E0H,10H,08H,08H,08H,10H,0E0H,00H,0FH,10H,20H,20H,20H,10H,0FH,00H ;-- 文字: 欢 --Line3_1 DB 14H,24H,44H,84H,64H,1CH,20H,18H,0FH,0E8H,08H,08H,28H,18H,08H,00H DB 20H,10H,4CH,43H,43H,2CH,20H,10H,0CH,03H,06H,18H,30H,60H,20H,00H;-- 文字: 迎 --Line3_2 DB 40H,41H,0CEH,04H,00H,0FCH,04H,02H,02H,0FCH,04H,04H,04H,0FCH,00H,00H DB 40H,20H,1FH,20H,40H,47H,42H,41H,40H,5FH,40H,42H,44H,43H,40H,00H;-- 文字: 使 --Line3_3 DB 40H,20H,0F0H,1CH,07H,0F2H,94H,94H,94H,0FFH,94H,94H,94H,0F4H,04H,00H DB 00H,00H,7FH,00H,40H,41H,22H,14H,0CH,13H,10H,30H,20H,61H,20H,00H;-- 文字: 用 --Line3_4 DB 00H,00H,00H,0FEH,22H,22H,22H,22H,0FEH,22H,22H,22H,22H,0FEH,00H,00H DB 80H,40H,30H,0FH,02H,02H,02H,02H,0FFH,02H,02H,42H,82H,7FH,00H,00H .CODESTART: MOV AX,@DATAMOV DS,AXNOPSTART1: CALL LCD_INIT ;液晶初始化CALL DelayTimeCALL DisLine1 ;第2行显示”星研电子”CALL DelayTimeCALL DisLine2 ;第3行显示”STAR ES51PRO”CALL DelayTimeCALL DisLine3 ;第4行显示”欢迎使用”CALL DelayTimeJMP START1;延时程序DelayTime PROC NEARMOV CX,0LOOP $LOOP $RETDelayTime ENDP;第2行显示”星研电子”DisLine1 PROC NEARLEA SI,Line1_1MOV AL,2 ;A-起始显示行地址,第2行MOV AH,32 ;B-起始显示列地址,第32列,以下同CALL WordDISL ;左半屏,显示一个字子程序LEA SI,Line1_2MOV AL,2MOV AH,48CALL WordDISLLEA SI,Line1_3MOV AL,2MOV AH,0CALL WordDISR ;右半屏,显示一个字子程序LEA SI,Line1_4MOV AL,2MOV AH,16CALL WordDISRRETDisLine1 ENDP;第3行显示”STAR ES51PRO”DisLine2 PROC NEARLEA SI,Line2_1MOV AL,4 ;A-起始显示行地址,第4行MOV AH,16 ;B-起始显示列地址,第16列,以下同CALL ByteDISL ;左半屏,显示一个字节子程序LEA SI,Line2_2MOV AL,4MOV AH,24CALL ByteDISLLEA SI,Line2_3MOV AL,4MOV AH,32CALL ByteDISLLEA SI,Line2_4MOV AL,4MOV AH,40CALL ByteDISLLEA SI,Line2_5MOV AL,4MOV AH,48CALL ByteDISLLEA SI,Line2_6MOV AL,4MOV AH,56CALL ByteDISLLEA SI,Line2_7MOV AL,4MOV AH,0CALL ByteDISR ;右半屏字节显示数据LEA SI,Line2_8MOV AL,4MOV AH,8CALL ByteDISRLEA SI,Line2_9MOV AL,4MOV AH,16CALL ByteDISRLEA SI,Line2_10MOV AL,4MOV AH,24CALL ByteDISRLEA SI,Line2_11MOV AL,4MOV AH,32CALL ByteDISRLEA SI,Line2_12MOV AL,4MOV AH,40CALL ByteDISRRETDisLine2 ENDP;第4行显示”欢迎使用”DisLine3 PROC NEARLEA SI,Line3_1MOV AL,6 ;A-起始显示行地址,第6行MOV AH,32 ;B-起始显示列地址,第32列,以下同CALL WordDISL ;左半屏,显示一个字子程序LEA SI,Line3_2MOV AL,6MOV AH,48CALL WordDISLLEA SI,Line3_3MOV AL,6MOV AH,0CALL WordDISR ;右半屏,显示一个字子程序LEA SI,Line3_4MOV AL,6MOV AH,16CALL WordDISRRETDisLine3 ENDP;液晶初始化LCD_INIT PROC NEARMOV AL,3EH ;初始化左半屏,关显示CALL WRComL ;写指令子程序MOV AL,FirstLine ;设置起始显示行,第0行CALL WRComLMOV AL,3EH ;初始化右半屏,关显示CALL WRComR ;写指令子程序MOV AL,FirstLine ;设置起始显示行,第0行CALL WRComRCALL LCDClear ;清屏MOV AL,3FH ;开显示CALL WRComLMOV AL,3FH ;开显示CALL WRComRRETLCD_INIT ENDP;清屏LCDClear PROC NEAR;清左半屏MOV AL,0 ;起始行,第0行MOV AH,0 ;起始列,第0列LCDClearL1: PUSH AXMOV CX,64CALL SETXYL ;设置起始显示行列地址LCDClearL2: MOV AL,0CALL WRDATALLOOP LCDClearL2POP AXINC AXCMP AL,8 ;共8行JNZ LCDClearL1;清右半屏MOV AL,0 ;起始行,第0行MOV AH,0 ;起始列,第0列LCDClearR1: PUSH AXMOV CX,64CALL SETXYR ;设置起始显示行列地址LCDClearR2: XOR AL,ALCALL WRDATARLOOP LCDClearR2POP AXINC ALCMP AL,8 ;共8行JNZ LCDClearR1RETLCDClear ENDP;显示字体,显示一个数据要占用X行两行位置;左半屏显示一个字节/字:AL-起始显示行序数X(0-7);AH-起始显示列序数Y(0-63);SI-显示字数据首地址ByteDisL PROC NEARMOV CX,8 ;显示8个字节数据,用于显示一个英文/符号CALL DispLRETByteDisL ENDPWordDisL PROC NEARMOV CX,16 ;显示16字节数据,用于显示一个汉字CALL DispLRETWordDisL ENDPDispL PROC NEARPUSH AXPUSH CXCALL SETXYL ;设置起始显示行列地址CALL DisplayL ;显示上半行数据POP CXPOP AXINC ALCALL SETXYL ;设置起始显示行列地址CALL DisplayL ;显示下半行数据RETDispL ENDP;右半屏显示一个字节/字:AL-起始显示行序数X(0-7);AH-起始显示列序数Y(0-63);SI-显示字数据首地址ByteDisR PROC ENARMOV CX,8 ;显示8个字节数据,用于显示一个英文/符号CALL DispRRETByteDisR ENDPWordDisR PROC NEARMOV CX,16 ;显示16字节数据,用于显示一个汉字CALL DispRRETWordDisR ENDPDispR PROC NEARPUSH AXPUSH CXCALL SETXYR ;设置起始显示行列地址CALL DisplayR ;显示上半行数据POP CXPOP AXINC ALCALL SETXYR ;设置起始显示行列地址CALL DisplayR ;显示下半行数据RETDispR ENDP;显示图形;显示左半屏一行图形,AL-X起始行序数(0-7),AH-Y起始列地址序数(0-63)LineDisL PROC NEARMOV CX,64CALL SETXYL ;设置起始显示行列CALL DisplayL ;显示数据RETLineDisL ENDP;显示右半屏一行图形,AL-X起始行地址序数(0-7),AH-Y起始列地址序数(0-63) LineDisR PROC NEARMOV CX,64CALL SETXYR ;设置起始显示行列CALL DisplayR ;显示数据RETLineDisR ENDP;基本控制;显示左半屏数据,R7-显示数据个数DisplayL PROC NEARLODSBCALL WRDataL ;写左半屏数据LOOP DisplayLRETDisplayL ENDP;显示右半屏数据,R7-显示数据个数DisplayR PROC NEARLODSBCALL WRDataR ;写左半屏数据LOOP DisplayRRETDisplayR ENDP;设置左半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63) SETXYL PROC NEAROR AL,X ;行地址=行序数+行基址CALL WRComLMOV AL,AHOR AL,Y ;列地址=列序数+列基址CALL WRComLRETSETXYL ENDP;设置右半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63) SETXYR PROC NEAROR AL,X ;行地址=行序数+行基址CALL WRComRMOV AL,AHOR AL,Y ;列地址=列序数+列基址CALL WRComRRETSETXYR ENDP;写左半屏控制指令,A-写入指令WRComL PROC NEARMOV DX,WR_COM_AD_LOUT DX,ALWRComL1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRComL1RETWRComL ENDP;写右半屏控制指令,A-写入指令WRComR PROC NEARMOV DX,WR_COM_AD_ROUT DX,ALWRComR1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRComR1RETWRComR ENDP;写左半屏数据,A-写入数据WRDataL PROC NEARMOV DX,WR_DATA_AD_LOUT DX,ALWRDataL1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRDataL1RETWRDataL ENDP;写右半屏数据,A-写入数据WRDataR PROC NEARMOV DX,WR_DATA_AD_ROUT DX,ALWRDataR1: MOV DX,RD_BUSY_ADIN AL,DXTEST AL,80H ;检查液晶显示是否处于忙状态JNZ WRDataR1RETWRDataR ENDPEND START七、实验扩展及思考实验内容:显示一幅图画,进一步熟练液晶显示的操作。

点阵显示实验报告

点阵显示实验报告

点阵显示实验报告点阵显示实验报告引言:点阵显示是一种常见的显示技术,它通过将像素点排列成网格的形式来呈现图像和文字。

在本次实验中,我们将学习如何使用点阵显示器,并探索其原理和应用。

一、点阵显示器的原理点阵显示器由许多小的发光二极管(LED)或液晶单元组成,每个单元代表一个像素点。

通过控制每个像素点的亮灭状态,我们可以呈现出各种图像和文字。

点阵显示器的原理主要包括两个方面:电路控制和像素点排列。

1. 电路控制点阵显示器内部包含复杂的电路控制系统,用于接收和解析外部的信号。

这些信号可以来自计算机、微控制器或其他设备。

通过电路控制,我们可以实现对每个像素点的亮度和颜色进行精确控制。

2. 像素点排列像素点在点阵显示器上的排列方式决定了显示的分辨率和图像质量。

常见的排列方式有直线排列、斜线排列和矩阵排列等。

其中,矩阵排列是最常见的方式,它将像素点排列成网格状,每个像素点都有一个唯一的坐标位置。

二、点阵显示器的应用点阵显示器广泛应用于各种电子设备中,包括电子表、手机屏幕、电视显示器等。

它具有以下几个优点:1. 高分辨率由于像素点的密集排列,点阵显示器具有较高的分辨率,可以呈现出清晰细腻的图像和文字。

这使得它在信息显示领域有着广泛的应用。

2. 易于控制点阵显示器的控制方式相对简单,只需通过电路控制系统发送相应的信号即可实现图像和文字的显示。

这使得它在嵌入式系统和电子产品中被广泛采用。

3. 节能环保与传统的显示技术相比,点阵显示器具有较低的功耗,能够更好地满足能源节约和环保的需求。

这使得它在可穿戴设备和智能家居等领域得到了广泛应用。

三、点阵显示实验为了更好地理解点阵显示器的原理和应用,我们进行了一次简单的实验。

实验中,我们使用了一块8x8的点阵显示器,并通过Arduino控制器进行信号发送。

1. 实验步骤(1)将点阵显示器与Arduino控制器连接,确保接线正确无误。

(2)编写Arduino代码,控制点阵显示器上的像素点亮灭。

点阵图形液晶显示屏程序设计

点阵图形液晶显示屏程序设计

128*64点阵图形液晶显示屏程序设计教程ﻩ笔者使用PROTEUS仿真软件中的液晶显示屏(型号AMPIRE12864)探索点阵液晶的编程方式;该型号液晶屏内部无字库,只能自建字模进行字符显示(使用方法与图形显示方式一致);字模可通过“字模提取”软件提取,省去手工建模的麻烦.闲话少说,先把电路图附上:整体电路图功能说明:该电路使用AT89C52作控制器,电路左下方为时钟芯片DS1302;笔者打算用液晶屏显示当前时间、若干汉字、一幅小图等内容;电路连线:(1)液晶模块: E=P2^0;RW=P2^1;RS=P2^2;CS2=P2^3;CS1=P2^4;RST=5V;数据口D0~D7接单片机P0口;(2)时钟芯片DS1302:RST = P3^6; CLK= P1^6;SDA =P1^7;电路仿真结果如下:ﻩ看完结果了,该学习下如何对该类液晶进行程序设计、显示自己喜欢的东东了。

首先分析下该液晶模块内部控制器的工作原理:管脚功能:管脚名称LEVER管脚功能描述VSS0电源地VDD+5。

0V电源电压V0-液晶显示器驱动电压(在PROTUES仿真软件中可不接) RSH/LRS=“H”,表示DB7∽DB0为显示数据RS=“L”,表示DB7∽DB0为显示指令数据R/WH/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DREH/LR/W=“L",E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H"DDRAM数据读到DB7∽DB0DB0~DB7H/L数据线CS1H/L H:选择芯片(右半屏)信号CS2H/LH:选择芯片(左半屏)信号RET H/L复位信号,低电平复位VOUT-10V LCD驱动负电压(在PROTUES仿真软件中可不接)12864内部功能器件及相关功能:1.指令寄存器(IR)IR是用于寄存指令码,与数据寄存器数据相对应.当D/I=0时,在E信号下降沿的作用下,指令码写入IR.2.数据寄存器(DR)DR是用于寄存数据的,与指令寄存器寄存指令相对应.当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。

  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。

相关文档
最新文档