VHDL_LCD1602
LCD1602显示控制器设计

LCD1602显示控制器设计一、LCD1602显示控制器的基本原理1. LCD1602显示屏通过16个引脚与Arduino开发板相连接,其中8个引脚用于数据通信,另外8个引脚包括RS、RW和E等信号引脚,用于控制显示模式和数据写入。
2.通过设置每个引脚的高低电平状态,可以实现对LCD1602显示屏的各种操作,例如清屏、光标位置设置、字符显示和图标显示等。
二、LCD1602显示控制器的硬件设计1. Arduino开发板的选择在设计LCD1602显示控制器时,首先需要选择一个合适的Arduino开发板,常用的有Arduino Uno、Arduino Nano等。
这些开发板一般都提供了多个IO口,可以满足与LCD1602显示屏的连接需求。
2.连接电路设计根据LCD1602显示屏和Arduino开发板的引脚对应关系,设计连接电路。
一般情况下,将LCD1602显示屏的VSS引脚与Arduino开发板的GND引脚相连接,将VDD引脚与5V电源引脚相连接。
将LCD1602显示屏的RS、RW和E等信号引脚与Arduino开发板的相应IO口相连接。
将LCD1602显示屏的D0-D7引脚与Arduino开发板的相应IO口相连接。
三、LCD1602显示控制器的软件设计1. 引入LiquidCrystal库在Arduino的开发环境中,打开“Sketch”菜单,选择“包含库”,再选择“添加库”,“LiquidCrystal”,将其添加到项目中。
然后在代码中引入LiquidCrystal库,以便使用其提供的函数和方法。
2. 初始化LiquidCrystal对象初始化一个LiquidCrystal对象,指定其构造函数的参数为相应的引脚号,表示与LCD1602显示屏的连接关系。
3.设置显示模式和光标位置使用LiquidCrystal对象的setCursor(函数设置光标的位置,使用display(函数打开显示,并使用noDisplay(函数关闭显示。
LCD1602液晶显示实验报告

LCD1602液晶显示实验报告一、实验目的(1)了解LCD1602的基本原理,掌握其基本的工作流程。
(2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏上显示出正确的符号。
(3)能够自行改写程序,并实现符号的动态显示。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可以实现在LCD1602液晶屏第一行左侧第一位的位置循环显示0~9,并且可以用一个拨码开关BM8实现显示的复位功能。
2.LCD1602基本知识LCD1602液晶能够同时显示16x02即32个字符,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如“A”。
1602通过D0~D7的8位数据端传输数据和指令。
3.系统工作原理系统的状态转换流程图如图3.1.1所示。
通过状态流程图可以看到,LCD1602液晶屏的状态是不断更新的,依次完成液晶的初始化和0~9的动态显示过程,并且过程可由开关控制。
if (!rst_n)cnt <= 0;elsecnt <= cnt + 1'b1;wire lcd_clk = cnt[23]; // (2^23 / 50M)=0.168s always@(posedge lcd_clk)if(cnt1>=24'd2)beginreg lcd_clk1;lcd_clk1=1;cnt1=0;endelsebegincnt1=cnt1+1; //cnt1对lcd_clk二分频lcd_clk1=0;endalways@(posedge lcd_clk1)beginrow1_val<=8'h30;//设初值case(row1_val) //数字0~9循环显示8'h30: row1_val<=8'h31;8'h31: row1_val<=8'h32;8'h32: row1_val<=8'h33;8'h33: row1_val<=8'h34;8'h34: row1_val<=8'h35;8'h35: row1_val<=8'h36;8'h36: row1_val<=8'h37;8'h37: row1_val<=8'h38;8'h38: row1_val<=8'h39;8'h39: row1_val<=8'h30;default: row1_val<=8'h30;endcaseendparameter IDLE = 8'h00;parameter DISP_SET = 8'h01; // 显示模式设置parameter DISP_OFF = 8'h03; // 显示关闭parameter CLR_SCR = 8'h02; // 显示清屏parameter CURSOR_SET1 = 8'h06; // 显示光标移动设置parameter CURSOR_SET2 = 8'h07; // 显示开及光标设置parameter ROW1_ADDR = 8'h05; // 写第1行起始地址parameter ROW1_0 = 8'h04;reg [5:0] current_state, next_state; // 现态、次态always @ (posedge lcd_clk, negedge rst_n)if(!rst_n) current_state <= IDLE;else current_state <= next_state;//在时钟信号作用期间,次态重复的赋给现态alwaysbegincase(current_state)IDLE : next_state = DISP_SET;DISP_SET : next_state = DISP_OFF;DISP_OFF : next_state = CLR_SCR;CLR_SCR : next_state = CURSOR_SET1;CURSOR_SET1 : next_state = CURSOR_SET2;CURSOR_SET2 : next_state = ROW1_ADDR;ROW1_ADDR : next_state = ROW1_0;ROW1_0 : next_state = ROW1_ADDR;default : next_state = IDLE ;endcaseendalways @ (posedge lcd_clk, negedge rst_n)beginif(!rst_n)beginlcd_rs <= 0;lcd_data <= 8'hxx;endelsebegincase(next_state)IDLE : lcd_rs <= 0;DISP_SET : lcd_rs <= 0;DISP_OFF : lcd_rs <= 0;CLR_SCR : lcd_rs <= 0;CURSOR_SET1 : lcd_rs <= 0;CURSOR_SET2 : lcd_rs <= 0;ROW1_ADDR : lcd_rs <= 0;ROW1_0 : lcd_rs <= 1;endcasecase(next_state)IDLE : lcd_data <= 8'hxx;DISP_SET : lcd_data <= 8'h38;DISP_OFF : lcd_data <= 8'h08;CLR_SCR : lcd_data <= 8'h01;CURSOR_SET1 : lcd_data <= 8'h04;CURSOR_SET2 : lcd_data <= 8'h0C;ROW1_ADDR : lcd_data <= 8'h80;ROW1_0 : lcd_data <= row1_val[127:120];endcaseendendassign lcd_e = lcd_clk; // 数据在时钟高电平被锁存assign lcd_rw = 1'b0; // 只写endmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2三个使能端选通LCD1602液晶屏,EP2C8Q208C8就会工作在给液晶下命令的状态,使得点阵正常工作,如图3.5.1所示。
LCD1602学习总结(可编辑修改word版)

LCD1602 液晶屏知识点总结LCD1602 的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~DB7,电源引脚VDD,VSS,背光正负极A、K,背光调节引脚V0。
1602 可以显示2 行每行16 个共32 个5*8 或者5*11 个字符,这就是1602 名字的由来。
1602 内部有CGROM、CGRAM、DDRAM。
CGROM 是字符发生器ROM,是固化在内部的,共192 个字符,包括160 个5*7 点阵字符,32 个5*10 点阵字符。
(为什么上面是5*8 和5*11,这里不是,因为内部CGROM 中的字符没有完全占满可以用的字模)其中部分与ASCII 完全一样,所以对于大小写英文字母和数字及部分符号,在编程时可以直接双引号括起来用。
CGRAM 是64 字节用户可自定义的存储区,可自定义8 个5*8 或者4 个5*11 的字符。
DDRAM 是控制显示的RAM,想显示什么,就把显示内容的地址放进DDRAM,不过还要设置好显示方式。
DDRAM 共80 字节,第一行和第二行各40 字节。
这40 个字节在一次显示时当然不会全部显示,因为屏幕只能显示16 个,但在滚动显示时就可以全部显示出来。
LCD1602 设定某种地址,接下去读取数据就放在改类地址中,比如设定了CGRAM 的地址,那么接下去读取的数据就放在CGRAM 中。
R=1 时,是数据寄存器,RS=0 时,是指令寄存器。
R/W=1 时,是读操作,R/W=0 时,是写操作。
读操作时,使能端E 要保持1,写操作时,下降沿使能。
当RS=0,R/W=0 时,是写入命令:1、01H:清除DDRAM 的所有单元,光标被移动到屏幕左上角。
<1> 清除液晶显示器,即将DDRAM 的内容全部填入"空白"的ASCII 码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
用Verilog写LCD1602

最近用FPGA写了个LCD1602的程序,小有成就啊,分享一下。
在网上,很难找到关于FPGA用1602显示的程序,因为大家都认为,FPGA 来做液晶显示,是一件很麻烦的事,不过对我这个初学者来说,用数码管不能显示字符,用VGA太高档,咱不会用,也没东西。
呵呵,就考虑用LCD了。
在网上,你可以找到LCD1602的程序,但是我只看到直接把字符写进液晶的,这个根本不实用,平时要用的都是把获得的数据在液晶上显示,而我们FPGA得到的数据只是二进制数,那么我们就得想办法,把二进制数转化为字我们要的字符才行。
为此用到了单片机里转换的算法,即除以10的n次方,求余或取整。
废话不多说见程序。
说明:我这是一个用于频率计显示的程序,频率值有32位,小数1位,也就是精度是0.1HZ ,最后一个块里,有两个写状态,一个是显示频率的,另一个是显示幅度的,我的本意是做一个FFT的显示,幅度的显示,先就放在那了,没有作用,不过这也是个双行的显示了,不要的可以删掉,要的,只要修改一下就好了。
频率显示已经做好的,没有问题。
修改的时候一定要注意状态的调整。
module LCD1602(clk,rst_n ,rs,rw,en,dat);input clk;input rst_n ;output rs,rw,en;output [7:0] dat;reg rs,rw;wire en;wire [31:0] fre_data ; //频率值wire [9:0] fre[3:0] ;wire [7:0] fre_unit ; //频率的单位reg [7:0] dat;reg [3:0] counter;reg [1:0] state;reg [15:0] count;reg clkr;parameter init=2'd0,write_data_1=2'd1 ,write_data_2=2'd2 ;assign en = clkr;assign fre_data = 32'd123_9 ;reg [9:0] data_flag ;reg [1:0] flag ;reg [7:0] chara[3:0] ;//----------分解频率值,MHz,KHz,Hz----------------assign fre[3] = fre_data / 10000000 ; //MHz的位数assign fre[2] = (fre_data % 10000000) / 10000 ; //KHz的位数assign fre[1] = (fre_data % 10000) /10 ; //Hz的位数assign fre[0] = fre_data % 10 ; //0.1Hz的位数assign fre_unit = (fre[3] > 0) ? "M" : ((fre[2] > 0) ? "K" : " ") ; //上面一句是判断频率级别,给定单位//---------获取字符串,在液晶上显示-----------------always @(posedge clk , negedge rst_n)if(!rst_n)begindata_flag <= 4'b0 ;flag <= 2'b0 ;endelsebeginif( fre[3] > 0 ) //MHz分解beginflag = flag + 2'd1 ;if( flag == 2'd1 )data_flag = fre[3] / 100 ;if( flag == 2'd2 )data_flag =( fre[3] % 100 )/10 ;if( flag == 2'd3 )data_flag = fre[3] % 10 ;if( flag == 2'd0 )data_flag = fre[2] / 100 ;endelse if( fre[2] > 0 ) //KHz分解beginflag = flag + 2'd1 ;if( flag == 2'd1 )data_flag = fre[2] / 100 ;if( flag == 2'd2 )data_flag =( fre[2] % 100 )/10 ; if( flag == 2'd3 )data_flag = fre[2] % 10 ;if( flag == 2'd0 )data_flag = fre[1] / 100 ;endelse //Hz分解beginflag = flag + 2'd1 ;if( flag == 2'd1 )data_flag = fre[1] / 100 ;if( flag == 2'd2 )data_flag =( fre[1] % 100 )/10 ; if( flag == 2'd3 )data_flag = fre[1] % 10 ;if( flag == 2'd0 )data_flag = fre[0] ;endendalways @(posedge clk ) //获取字符begincase(data_flag)4'd0 : chara[flag] = "0" ;4'd1 : chara[flag] = "1" ;4'd2 : chara[flag] = "2" ;4'd3 : chara[flag] = "3" ;4'd4 : chara[flag] = "4" ;4'd5 : chara[flag] = "5" ;4'd6 : chara[flag] = "6" ;4'd7 : chara[flag] = "7" ;4'd8 : chara[flag] = "8" ;4'd9 : chara[flag] = "9" ; endcaseend//--------------液晶读写时钟-----------------always @(posedge clk)begincount=count+16'd1;if(count==16'h000f)clkr=~clkr;end//------------液晶初始化及写数据------------------- always @(posedge clkr)begincase(state)init: //LCD1602初始化beginrs=0;rw=0;counter=counter+4'd1;case(counter)1:dat=8'h38; //显示模式设置2:dat=8'h08; //光标设计,08代表关闭光标3:dat=8'h01; //显示清屏4:dat=8'h06; //显示光标移动设置5:dat=8'h0c; //显示开及光标设置6:begindat=8'h80; //写光标地址state=write_data_1;counter=4'd0;enddefault: counter=4'd0;endcaseendwrite_data_1: //写数据beginrs=1;case(counter)0:dat="f";1:dat="r";2:dat="e";3:dat=":";4:dat=" ";5:dat=chara[1];6:dat=chara[2];7:dat=chara[3];8:dat=".";9:dat=chara[0];10:dat=fre_unit;11:dat="H";12:dat="z";13:dat=" ";14:beginrs=0; dat=8'hc0;enddefault: counter=0;endcaseif(counter==14)begincounter=0;state=write_data_2;endelse counter=counter+4'd1;endwrite_data_2: //写数据beginrs=1;case(counter)0:dat="a";1:dat="m";2:dat="p";3:dat=":";4:dat=" ";5:dat=chara[1];6:dat=chara[2];7:dat=chara[3];8:dat="m";9:dat="V";10:dat=" ";11:dat=" ";12:beginrs=0; dat=8'h80;enddefault: counter=0;endcaseif(counter==12)begincounter=0;state=write_data_1;endelse counter=counter+4'd1; enddefault: state=init;endcaseendendmodule。
LCD1602中文资料程序和使用说明

LCD1602中文资料程序和使用说明一、硬件连接和初始化步骤:1.将LCD1602的16个引脚连接到MCU(单片机)的相应引脚上。
其中,VCC和GND分别接到电源正负极,VO接到可调电位器的中间引脚(用于调节背光亮度),RS、RW和E分别接到MCU的IO口上,D0-D7分别接到MCU的8个IO口上。
2.初始化LCD1602的操作包括设置显示模式、显示光标、输入模式等,具体步骤如下:a.将8位数据接口设置为并行输入模式,即设置D0-D3为输入模式。
b.设置显示模式为2行显示,5x8点阵字符,显示器不移动。
c.将显示光标设置为闪烁显示。
d.设置数据输入方式为向右移动,同时字符显示不移动。
e.清除显示内容,将光标位置设置为第一行第一列。
f.打开显示器和光标显示功能。
二、常用函数和操作方法:1. void lcd1602_init( 初始化LCD1602,包括上述硬件连接和初始化步骤。
2. void lcd1602_clear( 清除显示内容。
3. void lcd1602_setCursor(int row, int column) 设置光标位置,row表示行数(从0开始),column表示列数(从0开始)。
4. void lcd1602_print(String str) 在当前光标位置打印字符串str。
5. void lcd1602_shiftDisplayLeft( 将显示内容向左移动一位。
6. void lcd1602_shiftDisplayRight( 将显示内容向右移动一位。
7. void lcd1602_scrollDisplayLeft( 将整个显示内容向左滚动一格。
8. void lcd1602_scrollDisplayRight( 将整个显示内容向右滚动一格。
9. void lcd1602_noCursor( 关闭光标显示。
10. void lcd1602_cursor( 打开光标显示。
(完整版)LCD1602学习总结

LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DBO〜DB7,电源引脚VDD, VSS,背光正负极A、K,背光调节引脚V0。
1602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来。
1602内部有CGROM、CGRAM、DDRAM。
CGROM是字符发生器ROM,是固化在内部的,共192个字符,包括160个5*7点阵字符,32个5*10点阵字符。
(为什么上面是5*8和5*11,这里不是,因为内部CGROM中的字符没有完全占满可以用的字模)其中部分与ASCII完全一样,所以对于大小写英文字母和数字及部分符号,在编程时可以直接双引号括起来用。
CGRAM是64字节用户可自定义的存储区,可自定义8个5*8或者4个5*11的字符。
DDRAM是控制显示的RAM,想显示什么,就把显示内容的地址放进DDRAM,不过还要设置好显示方式。
DDRAM共80字节,第一行和第二行各40字节。
这40个字节在一次显示时当然不会全部显示,因为屏幕只能显示16个,但在滚动显示时就可以全部显示出来。
LCD1602设定某种地址,接下去读取数据就放在改类地址中,比如设定了CGRAM的地址,那么接下去读取的数据就放在CGRAM中。
由于写数据时最高位必须为1所以实际地址是:R=1时,是数据寄存器,RS=0时,是指令寄存器。
R/W=1时,是读操作,R/W=0时,是写操作。
读操作时,使能端E要保持1,写操作时,下降沿使能。
当RS=0,R/W=0 时,是写入命令:1、01H :清除DDRAM的所有单元,光标被移动到屏幕左上角<1>清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2>光标归位,即将光标撤回液晶显示屏的左上方;<3>将地址计数器(AC)的值设为02、02H或这03H : DDRAM 所有单元的内容不变,光标移至左上角0<1>把光标撤回到显示器的左上方;<2>把地址计数器(AC)的值设置为0;<3>保持DDRAM的内容不变3、输入方式设置(EnterModeSet ),这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加一还是减一);二是屏幕上的内容是否滚动。
基于VHDL的1602LCD液晶显示

Any Question?
欢迎批评指导!!
THANK YOU FOR WATCHING!
放映结束
感谢聆听!
演示结束!!
欢迎提出宝贵意见!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
VSS VCC V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BLA BLK
1602LCD显示原理——5x7点阵
1602LCD显示原理——5x10点阵
1602LCD字符代码与图形对应图
地址: 01000000 01000001 01000010 01000011 01000100 01000101 01000110 01000111
数据: 00010000 00000110 00001001 00001000 00001000 00001001 00000110 00000000
设定CGRAM
指令功能 设定CGRAM地址 指令编码 RS 0 R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 CGRAM的地址(6位) 执行 时间/us 40
从这个指令可以看出来指令数据的高2位已固定是01,只有后面的6位是地址 数据,而这6位中的高3位就表示这八个自定义字符,最后的3位就是字模数据的 八个地址了。例如第一个 自定义字符的字模地址为01000000~01000111八个地址。 我们向这8个字节写入字模数据,让它显示 “℃”。
1602LCD引脚说明
引脚 1 符号 VSS 功能说明 一般接地
2 3
4 5 6
VDD V0
RS R/W E
接电源(+5V) 液晶显示器对比度调整端
LCD1602中文资料

LCD1602中文资料1.接线说明:VSS:接地连接VDD:电源正极连接,通常为+5VVO:用于设置液晶对比度,通过接一个可变电位器或一个固定电阻和电位器的连接来实现RS:命令/数据选择引脚,高电平用于数据输入,低电平用于指令输入RW:读/写选择引脚,高电平为读模式,低电平为写模式E:使能引脚,通过控制其高低电平实现数据的写入或读取D0-D7:数据引脚,用于传输数据2.初始化:在使用LCD1602之前,需要对其进行初始化设置。
初始化的步骤如下:第一步:确保电源正常,并将VSS、VDD、RS、RW、E连接到正确的电源脚上第二步:发送一些初始化命令给LCD1602,如设置显示模式、清除显示等第三步:设置光标位置,并发送要显示的字符或字符串3.命令与指令:在LCD1602中,使用命令来控制其各种功能。
命令通过RS引脚输入,RW引脚为低电平(写模式)。
以下是一些常用的LCD1602命令:清除显示:发送命令0x01,清除屏幕上的所有字符,并将光标返回到起始位置设置光标位置:发送命令0x80+地址,地址范围为0x00-0x27(第一行)和0x40-0x67(第二行)设置显示模式:发送命令0x08+模式,模式为二进制数-模式0:光标不显示-模式1:光标显示,不闪烁-模式2:光标显示,闪烁-模式3:光标不显示,但开启自动右移-模式4:光标不显示,但开启自动左移4.数据输入:在LCD1602中,数据可以通过RS引脚为高电平(数据输入),RW引脚为低电平(写模式),以及E引脚的控制来进行输入。
以下是一些数据输入的示例:发送字符:将字符的ASCII码通过D0-D7引脚发送给LCD1602发送字符串:将字符串中的字符依次发送给LCD1602,必要时使用设置光标位置的命令来控制显示位置5.其他功能:除了上述基本功能外,LCD1602还提供其他一些有用的功能:显示开关:通过发送命令0x08+显示开关的模式来控制显示的开关光标和光标位置设置:通过发送命令0x08+光标和位置的模式来控制光标的显示和位置显示滚动:通过发送命令0x18+滚动模式来实现显示的滚动效果总结:通过上述的使用说明,可以看出,LCD1602是一款方便易用的液晶显示屏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lcd1602 is
port(clk, reset: in std_logic;
LCD_Data: out std_logic_vector(8 downto 0);
en: out std_logic;
rw: out std_logic);
end lcd1602;
architecture gongneng of lcd1602 is
signal LCD_Clk: std_logic;
signal s : integer range 0 to 10000000;
begin
--50MHz to 5Hz
process(clk, reset)
begin
if reset = '0' then
LCD_Clk <= '0';
s <= 0;
elsif clk'event and clk = '1' then
if s = 10000000 then
s <= 0;
LCD_Clk <= not LCD_Clk;
else
s <= s + 1;
end if;
end if;
end process;
rw <='0';
en <= LCD_Clk;
process(LCD_Clk)
variable cnt: std_logic_vector(4 downto 0):="00000";
begin
if Reset='0'then
LCD_Data<="000000001"; -- Reset清屏
--LCD_Data[8..0], 其中LCD_Data[8]对应1602的RS,--LCD_Data[7..0]对应1602的八根数据线cnt:="00000"; --计数器清零
elsif rising_edge(LCD_Clk) then
if cnt<"01111" then cnt:=cnt+1;
else cnt:="00000";
--设计计数器,每次计数间隔LCD_CLK定义的一个周期
case cnt is
when "00000"=>LCD_Data<="000111000";--/*设置8位格式,2行,5*7*/ ,顺序2,3的要求when "00001"=>LCD_Data<="000001100"; --/*整体显示,关光标,光标闪烁/ ,顺序4的要求
when "00010"=>LCD_Data<="000000001";--清屏,顺序5的要求
when "00011"=>LCD_Data<="000000110"; --/*显示移动格式,看最后两位,10表示光标右移,顺序6的要求
when "00100"=>LCD_Data<="010000000";--设定显示的位置在00H+80H,即显示屏第一行第一个位置,顺序7的要求
when "00101"=>LCD_Data<="101000011"; --顺序8的要求,上一步指定位置处显示字符C when "00110"=>LCD_Data<="101101000";--上一步基础上地址加一,显示字符h
when "00111"=>LCD_Data<="101100101";--e
when "01000"=>LCD_Data<="101101110";--n
when "01001"=>LCD_Data<="101011010";--Z
when "01010"=>LCD_Data<="101101000";--h
when "01011"=>LCD_Data<="101100101";--e
when "01100"=>LCD_Data<="011000000";--设定显示的位置在10H+80H,即显示屏第2行第一个位置
when "01101"=>LCD_Data<="100110010";--上一步指定位置处显示字符2
when "01110"=>LCD_Data<="100110000";---上一步基础上地址加一,显示字符0
when "01111"=>LCD_Data<="100110000";---0
when "10000"=>LCD_Data<="100111001";---9
when "10001"=>LCD_Data<="100110001";---1
when "10010"=>LCD_Data<="100110001";---1
when "10011"=>LCD_Data<="100110001";---1
when "10100"=>LCD_Data<="100110001";---1
when "10101"=>LCD_Data<="100110000";---0
when "10110"=>LCD_Data<="100111001";---9
when others =>LCD_Data<="101000100";
end case;
end if;
end process;
end gongneng;。