液晶显示实验

液晶显示实验
液晶显示实验

4.6 液晶显示实验

4.6.1 实验目的

1. 学习复杂数字系统的设计方法;

2. 学习16*2字符型液晶显示器的基本原理;

3. 掌握液晶显示控制器的设计方法。

4.6.2 实验设备

PC微机一台,TD-EDA实验箱一台,SOPC开发板一块。

4.6.3 实验内容

液晶显示器(LED)由于体积小、质量轻、功耗小等优点,已成为各种便携式电子产品的理想显示器。液晶显示器从其显示的内容可分为字段型、点阵字符型和点阵图形式三种。点阵字符型液晶显示器式专门用于显示数字、字母、图形符号及少量自定义符号的显示器。这类显示器把LED控制器、点阵驱动器全部坐在一块印刷电路板上,构成便于应用的液晶显示器模块。

字符型液晶显示模块在国际上已经规范化,控制器主要有KS0066(三星公司产品)、HD44780(日立公司产品)、SED1278(EPSON公司产品)。EDA实验系统使用的液晶模块使用的是HD44780控制器。HD44780控制器的指令如表4-6-1所示。

1. 清屏(ClearDisplay)指令

格式

代码:01H

功能:将空码(20H)写入DDRAM的全部80个单元。将地址指针计数器闪烁归HOME位,设置输入方式参数I/D=1。该指令多用于商店是或更新全部显示内容是。

在使用该指令前腰确认DDROM的当前内容是否有用。

2.归HOME位(ReturnHome)

格式

代码:02H

功能:该指令将地址指针计数器AC清零。执行该指令的效果有:将光标或闪烁位返回到显示屏的座上第一字符位上,即DDRAM地址00H单元位置,这是因为光标和闪烁位都是以地址指针计数器AC当前值定位的。如果画面一滚动,则撤销滚动效果,将画面拉回到HOME位。

3.输入方式设置(EnterModeSet)

格式:

代码:04H~07H

功能:该指令设置了显示字符的输入方式,即在计算机读/写DDRAM或CGRAM后,地址的计数器AC的修改方式,反映在显示效果上,当写入一个字符后画面或光标的移动,该指令的两个参数位I/D和S确定了字符的输入方式。

I/D表示计算机读/写DDRAM或CGRAM的数据后,地址指针计算器AC的修改方式。由于光标位置也是由AC值确定,所以也是光标移动的方式。

I/D=0AC为减一计数器,光标左移一个字符位。

I/D=1AC为加一计数器,光标右移一个字符位。

S表示在写入字符好似,是否允许显示画面的滚动

S=0禁止滚动

S=1允许滚动

S=1且I/D=0显示画面向右滚动一个字符

S=1且I/D=1显示画面向左滚动一个字符

综合而论,该指令可以实现四种字符的输入方式,如表4-6-2所示。

4.显示状态设置(Displayon/offControl)

模式:

代码:0SH~0FH

功能:该指令控制着画面,光标即闪烁的开与关,该指令有伞个状态D,C,B,这三个状态为分别为控制着画面,光标和闪烁的显示状态。

D画面显示状态位。

当D=1时位开显示,当C=0时位光标消失,光标位底线形式(5×1点阵),出现在第八行或第十一行上,光标的位置由地址指针计数器AC确定,并随其变动而移动。当AC值超出了画面的显示范围,光标将随之消失。

B闪烁显示状态位

当B=1时为闪烁启动,当B=0时为闪烁禁止,闪烁是指一个字符位交替进行正常显示态和全亮显示态。闪烁频率在控制器工作频率为250KHz时为2.4Hz。闪烁位置通光标一样瘦地址指针计数器AC的控制。

闪烁出现在有字符或光标显示的字符段位时,正常显示态为当前字符或光标的显示;全亮显示态为该字符位所有点显示。这种闪烁方式可以设计成光标,如同计算机CRT上块状光标闪烁显示付的效果。该指令代码的功能如表4-6-3所示。

5光标或画面滚动(CursororDisplayShift)格式:

功能:该指令将产生画面或光标向左或向右滚动一个字符位。如果定时间地执行该指令将产生画面或光标地平滑滚动。画面的滚动式在一行内连续循环进行的,也就是说一行的第一单元与最后一个单元连接起来,形成了闭环式的滚动。当未开光标显示时,执行画面滚动指令时不修改地址指针计数器AC值;当有光标显示时,由于执行任意一条滚动指令时都将使光标产生位移,所以地址指针计数器AC都需要被修改。光标的滚动式在DDRAM内全程进行的。它不是一行显示还是两行显示。

S/C滚动对象的选择

S/C=1画面滚动

S/C=0光标移动

R/L滚动方向的选择

R/L=1向右滚动

R/L=0向左滚动

该指令代码的功能如表4-6-4所示。

该指令输入方式设置指令都可以产生光标或画面的滚动,区别在于该指令专用于滚动功能,执行一次,显示呈现一个滚动效果;而输入方式设置指令仅是完成了一种字符输入方式的设置,仅在计算机对DDRAM等进行操作室在能产生滚动的效果。

6.工作方式设置(FunctionSet)

格式:

功能:该指令赊着了控制器的工作方式,包括有控制器与计算机的接口形式和控制器显示驱动的占空比系数等。该指令由三个参数DL,N和F。他们的作用是:DL=0设置数据总线为8位长度,即DB7~DB0有效

DL=0设置数据总线为4位长度,即DB7~DB4有效。该方式下8位指令代码和数据将按先高4位后低4位的顺序分两次传送

N设置显示的字符行数

N=0位一行字符行

N=1位两行字符行

F设置显示的字符行数

F=0为5×7点阵字符体

F=1为5×10点阵字符体

N和F的组合设置了控制器的确定占空比系数。如表4-6-5所示。

该指令是字符型液晶显示控制器的初始化设置指令,也是唯一的软件复位指令。HD44780虽然具有复位电路,但为了可靠地工作,HD44780要求计算机在操作时首先对其进行软件复位。也就是说在控制字符型液晶显示模块工作是首先腰进行的软件复位。

7.CGRAM地址设置(SetCGRAMAddress)

格式:

功能:该指令将6位的CGRAM地址写入地址指针计数器AC内,随后计算机对数据的操作是对CGRAM的读/写操作。

8.DDRAM地址设置(SetDDRAMAddress)

格式:

功能:该指令将7位的DDRAM地址写入地址指针计数器AC内,随后计算机对数据的操作是对DDRAM的读/写操作。

9.读“忙”标志和地址指针值(ReadBusyFlagandAddress)

格式:

功能:计算机对指令寄存器通道读操作(RS=0,R/W=1)时,将读出此格式的“忙”标志BF值和7位地址指针计数器AC的当前值。计算机随时都可以对HD44780读“忙”操作。BF值反映HD44780的接口状态。计算机在对HD44780每次操作时首先都要读BF值判断HD44780的当前接口状态,仅有在BF=0时计算机才可以向HD44780写指令代码或显示数据和从HD44780读出显示数据,计算机读出的地址指针及诉求AC当前值可能是DDRAM地址也可能是CGRAM的地址,着取决与最近一次计算机向AC写入的是哪类地址。

10.写数据(WriteDatatoCGorCGRAM)计算机向数据寄存器通道写入数据,HD44780根据当前地址指针计数器AC值得属性及数值将该数据送入相应的存储器内的AC所指的单元里。如果AC只为DDRAM地址指针,则认为写入的数据位字符代码并送入DDRAM内AC所指的单元里;如果AC值为CGRAM的地址指针,则认为写入的数据时自定义字符的字模数据并送入CGRAM内AC所指的单元里。所以计算机在写数据操作之前要先设置地址指针或人为的确认地址指针的属性及数值。在写入数据后地址指针计数器AC将根据最近设置的输入方式自动修改。由此可知,计算机在写数据操作之前要做两项工作,其一是设置或确认地址计数器AC值的属性及数值,以保证所写数据能够正确性;其二是设置或确认输入方式,以保证连续写入数据时AC值的修改方式符号要求。

11.读数据(ReadDatatoCGorCGRAM)

在HD44780的内部运行时序的操作下,地址指针技术区AC的每一次修改,包括新的AC值得写入,光标滚动以为所引起的AC值的修改或由计算机读写数据操作后所产生的AC值得修改,HD44780都会把当前AC所指党员的内容送到接口部数据输出寄存器内,供计算机读取。如果AC值为DDRAM地址指针,则认为接口部数据输出寄存器的数据为DDRAM内AC所指单元的字符代码;如果AC值为CGRAM的地址指针,则认为数据输出寄存器的数据是CGRAM内AC随之单元的自定义字符的字模数据。

计算机的读数据是从数据寄存器通道中数据输出寄存器读取当前所存放的数据。所以计算机在首次读数据操作之前需要重新设置一次地址指针AC值,或用光标滚动指令将地址指

针计数器AC值修改到所需的地址上,然后进行的读数据操作将能获得所需的数据。在读取数据后地址指针计数器的AC将根据最近设置的输入方式自动修改。由此可知,计算机在读数据操作之前要有两项工作,其一是设置或确认地址计数器AC值的属性及数值,以保证所写数据能够正确性;其二是设置或确认输入方式,以保证连续读取数据时AC值的修改方式符号要求。

HD44780控制器的接口时序位M6800时序,其特点是读/写操作时序是由使能信号E完成。E信号时正脉冲信号,部操作室位低电平状态,操作时产生一个正脉冲。在读操作时E信号在高电平时,控制器将所需数据送入数据总线上,供据算计读取;在写操作时,E信号的下降沿处将数据总线上的数据写入控制器接口部的寄存器内。

HD44780控制器对读/写操作的识别是判断R/W信号端上的电平状态,R/W=1为读操作选择,R/W=0为写操作选择。R/W信号的宽度要大于E信号的宽度才能保证计算机的操作正确。

RS信号时HD44780控制器识别数据总线上的数据上属于质量代码还是属于显示数据。RS=0选通质量寄存器通道,数据总线传输的事质量代码或标志位;RS=1选通数据寄存器通道,数据总线传输的是显示数据或自定义字符的字模数据。

本实验使用TD-EDA实验系统的液晶单元,设计一个液晶接口模块,控制LCD动态左循环显示字符窜“welcometouseTD-EDA”。液晶接口模块由三个单元组成:时钟控制模块CLK_CON主要为系统提供时钟源和产生使能信号EN,考虑到动态左移显示时人眼能够方便的观察,时钟控制模块的输入时钟频率宜采用50~100Hz;字符数据模块CHAR_RAM位系统提供显示字符,限于篇幅,书中省略了部分字符,读者可参照ASCLL字符表;逻辑控制模块CON_LOGIC实现LCD的控制命令,采用状态机的描述方式实现LCD的控制功能。其顶层原理图如图4-6-1所示、

4.6.4实验步骤

1运行Quartus2软件,分别建立新工程,选择File-New菜单,创建VHDL描述语言设计文件,分别编写CLK_CON.VHD、LOGIC_CON.VHD、CHAR_RAM.VHD.

2时钟控制模块CLK_CON的VHDL源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTUTY CLK_CON IS

PORT(CLOCK:IN STD_LOGIC;

ENABLE:OUT STD_LOGIC;_CLOCK信号下降沿的二分频信号

OUT_CLK:OUT STD_LOGIC);_CLOCK信号上升沿的二分频信号

END ENTITY CLK_CON;

ARCHITECTURN BEHV OF CLK_CON IS

COMPONENT DFF

PORT(D:IN STD—LOGIC;

CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC);

END COMPONENT;

SIGNAL SIG1,SIG2,SIG3:STD_LOGIC;

BEGIN

SIG1<=NOT SIG2;

SIG3<=NOT CLOCK;

OUT_CLK<=SIG2;

MYDFF1:

DFF PORT MAP(D=>SIG1,CLK=>CLOCK,Q=>SIG2);

MYDFF2:

DFF PORT MAP(D=>SIG2,CLK=>SIG3,Q=>ENABLE);

END ARCHITECTURN BEHV;

3.字符数据模块CHAR_RAM的VHDL源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY CHAR_RAM IS

PORT(ADDRESS:IN STD_LOGIC_VECTOR(5 DOWNTO 0);

DATA :OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ENTITY CHAR_RAM;

ARCHITECTURE BEHV OF CHAR_RAM IS

FUNCTION CHAR_TO_INTEGER(INDATA:CHARACTER)RETURN INTEGER IS

VARIABLE RESULT:INTEGER RANGE 0 TO16#7F#;--数据的范围为0~7FH

BEGIN

CASE INDATA IS

WHEN' '=>RESULT:=16#20#;

WHEN'!'=>RESULT:=16#21#;

WHEN'#'=>RESULT:=16#23#;

WHEN'$'=>RESULT:=16#24#;

WHEN'%'=>RESULT:=16#25#;

WHEN'&'=>RESULT:=16#26#;

WHEN'''=>RESULT:=16#27#;

WHEN'('=>RESULT:=16#28#;

WHEN')'=>RESULT:=16#29#;

WHEN'.'=>RESULT:=16#2E#;

WHEN'A'=>RESULT:=16#41#;

WHEN'B'=>RESULT:=16#42#;

WHEN'C'=>RESULT:=16#43#;

WHEN'D'=>RESULT:=16#44#;

WHEN'E'=>RESULT:=16#45#;

WHEN'T'=>RESULT:=16#54#;

WHEN'U'=>RESULT:=16#55#;

WHEN'V'=>RESULT:=16#56#;

WHEN'W'=>RESULT:=16#57#;

WHEN'X'=>RESULT:=16#58#;

WHEN'Y'=>RESULT:=16#59#;

WHEN'Z'=>RESULT:=16#5A#;

WHEN'a'=>RESULT:=16#61#;

WHEN'b'=>RESULT:=16#62#;

WHEN'c'=>RESULT:=16#63#;

WHEN'd'=>RESULT:=16#64#;

WHEN'e'=>RESULT:=16#65#;

WHEN'i'=>RESULT:=16#6C#;

WHEN'm'=>RESULT:=16#6D#;

WHEN'n'=>RESULT:=16#6E#;

WHEN'o'=>RESULT:=16#6F#;

WHEN'p'=>RESULT:=16#70#;

WHEN'q'=>RESULT:=16#71#;

WHEN'r'=>RESULT:=16#72#;

WHEN's'=>RESULT:=16#73#;

WHEN OTHRES=>RESULT:=16#20#;

END CASE;

RETURN RESULT;

END FUNCTION;

BEGIN

PROCESS(ADDRESS)

BEGIN

CASE ADDRESS IS

WHEN"000000"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('W'),8);

WHEN"000001"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('e'),8);

WHEN"000010"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('l'),8);

WHEN"000011"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('c'),8);

WHEN"000100"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('o'),8);

WHEN"000101"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('m'),8);

WHEN"000110"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('e'),8);

WHEN"000111"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER(' '),8);

WHEN"001000"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('T'),8);

WHEN"001001"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('o'),8);

WHEN"001010"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER(' '),8);

WHEN"001011"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('U'),8);

WHEN"001100"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('s'),8);

WHEN"001101"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('e'),8);

WHEN"001110"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER(' '),8);

WHEN"001111"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('T'),8);

WHEN"010000"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('D'),8);

WHEN"010001"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('-'),8);

WHEN"010010"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('E'),8);

WHEN"010011"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('D'),8);

WHEN"010100"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('A'),8);

WHEN"010101"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER('.'),8);

WHEN"010110"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER(' '),8);

WHEN"010111"=>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER(' '),8);

WHEN OTHRES =>DATA<=CONV_STD_LOGIC_VECTOR(CHAR_TO_INTEGER(' '),8);

END CASE;

ENDPROCESS;

END ARCHITECTURN BEHV;

4.逻辑控制模块LOGIC_CON的VHDL源程序如下:

LIBRARY IEEE;

USE IEEE STD_LOGIC_1164.ALL;

PACKGE CONTROL IS

CONSTANT IDLE :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000000000"; CONSTANT CLEAR :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000000001"; CONSTANT RETURNCURSOR :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000000010"; CONSTANT SETMODE :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000000100"; CONSTANT SWITCHMODE :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000001000"; CONSTANT SHIFT :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000010000"; CONSTANT SETFUNCTION :STD_LOGIC_VECTOR(10 DOWNTO 0):="00000100000"; CONSTANT SETCGRAM :STD_LOGIC_VECTOR(10 DOWNTO 0):="00001000000";

CONSTANT SETDDRAM :STD_LOGIC_VECTOR(10 DOWNTO 0):="00010000000"; CONSTANT READFLAG :STD_LOGIC_VECTOR(10 DOWNTO 0):="00100000000"; CONSTANT WRITERAM :STD_LOGIC_VECTOR(10 DOWNTO 0):="010********"; CONSTANT READRAM :STD_LOGIC_VECTOR(10 DOWNTO 0):="11000000000";

CONSTANT CUR_INC :STD_LOGIC:='1';

CONSTANT CUR_DEC :STD_LOGIC:='0';

CONSTANT CUR_SHIFT :STD_LOGIC:='1';

CONSTANT CUR_NOSHIFT :STD_LOGIC:='0';

CONSTANT OPEN_DISPLAY :STD_LOGIC:='1';

CONSTANT CLOSE_DISPLAY :STD_LOGIC:='0';

CONSTANT OPEN_CUR :STD_LOGIC:='1';

CONSTANT CLOSE_CUR :STD_LOGIC:='0';

CONSTANT RAY_CUR :STD_LOGIC:='1';

CONSTANT BLANK_CUR :STD_LOGIC:='0';

CONSTANT SHIFT_DISPLAY :STD_LOGIC:='1';

CONSTANT SHIFT_CUR :STD_LOGIC:='0';

CONSTANT RIGHT_SHIFT :STD_LOGIC:='1';

CONSTANT LEFT_SHIFT :STD_LOGIC:='0';

CONSTANT DATAWIDTH8 :STD_LOGIC:='1';

CONSTANT DATAWIDTH4 :STD_LOGIC:='0';

CONSTANT TWOLINE :STD_LOGIC:='1';

CONSTANT ONELINE :STD_LOGIC:='0';

CONSTANT FONT5_10 :STD_LOGIC:='1';

CONSTANT FONT5_7 :STD_LOGIC:='0';

END CONTROL;

LIBRARY IEEE;

USE IEEE STD_LOGIC_1164.ALL;

USE IEEE STD_LOGIC_ARITH.ALL;

LIBRARY WORK;

USE WORK CONTROL.ALL;

ENTITY LOGIC_CONS IS

PORT(CLOCK:IN STD_LOGIC;

RESET:IN STD_LOGIC;

DATA_IN: IN STD_LOGIC_VECTOR(7 DOWNTO 0));

RS: OUT STD_LOGIC;

RW: OUT STD_LOGIC;

DATA:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);

CHAR_ADDRESS:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));

CONSTANT DIVSS: INTEGER:=15;

END ENTITY LOGIC_CON;

ARCHITECTURE BEHV OF LOGIC_CON IS

SIGNAL STATE:STD_LOGIC_VECTOR(10 DOWNTO 0);

SIGNAL COUNTER:INTEGER RANGE 0 TO 127;

SIGNAL DIV_COUNTER:INTEGER RANGE 0 TO 15;

SIGNAL FLAG:STD_LOGIC;

BEGIN

RS<='1'WHEN STATE=WRITERAM OR STATE=READRAM ELSE

'0'; --RS 信号在读,写数据时为1,其他时间为0.

RW<='0' WHEN STATE=SHIFT OR STATE=SETFUNCTION OR STATE=SETMODE OR STATE=SWITCHMODE OR STATE=SHIFT OR STATE=SETFUNCTION OR

STATE =SETCGTAM OR STATE=SETDDRAM OR STATE=WRITERAM ELSE

'1';--R/W信号在读BF值和数据时为1,其他时间为0

DATA<="00000001"WHEN STATE=CLEAR ELSE

"00000010"WHEN STATE=RETUANCRSOR ELSE

"000001"&CUR_INC&_CUR_NOSHIFT WHEN STATE=SETMODE SESE

"00001"&OPEN_DISPLAY&CLOSE_CUR&BLANK_CUR

WHEN STATE=SWITCHMODE ELSE

"0001"&SHIFT_SHIFT_DISPLAY&LEFT_SHIFT&"00"WHEN STATE=SHIFT ELSE "001"&DATAWIDTH8 & TWOLINE & FONT5_7 & "00" WHEN STATE=SETFUNCTION ELSE "01000000"WHEN STATE=SETCGRAM ELSE

"10000000"WHEN STATE=SETDDRAM AND COUNTER=0 ELSE "11000000"WHEN STATE=SETDDRAM AND COUNTER/=ELSE

DATA_IN WHEN STATE=WRITERAM ELSE

"ZZZZZZZZ";

CHAR_ADDRESS<=CONV_STD_LOGIC_VECTOR(COUNTER,6)

WHEN STATE=WRITERAM AND COUNTER<35 ELSE

CONV_STD_LOGIC_VECTOR(COUNTER-35,6)

WHEN STATE=WRITERAM AND COUNTER<35 AND COUNTER<70 ELSE

CONV_STD_LOGIC_VECTOR(COUNTER-70,6)

WHEN STATE=WRITERAM AND COUNTER<70 AND COUNTER<81 ELSE

"000000";

PROCESS(CLOCK,RESET)

BEGIN

IF RESET='0' THEN

STATE<=IDLE;

COUNTER<=0;

FLAG<='0';

DIV_COUNTER<=0;

ELSIF CLOCK EVENT AND CLOCK='1' THEN

CASE STATE IS

WHEN IDLE=>

IF FLAG='0' THEN

STATE<=SETFUNCTION;

FLAG<='1';

COUNTER<=0;

DIV_COUNTER<=0;

ELSE

IF DIV_COUNTER

DIV_COUNTER<=DIV_COUNTER+1;

STATE<=IDLE;

ELSE

DIV_COUNTER<=0;

STATE<=SHIFT;

END IF;

END IF;

WHEN CLEAR=>

STATE<=SETMODE;

WHEN RETURNCURSOR=>

STATE<=WRITERAM;

WHEN SETMODE=>

STATE<=WRITERAM;

WHEN SWITCHMODE=>

STATE<=CLEAR;

WHEN SHIFT=>

STATE<=IDLE;

WHEN SETFUNCTION=>

STATE<=SWITCHMODE;

WHEN SETCGRAM=>

STATE<=IDLE;

WHEN SETDDRAM=>

STATE<=WRITERAM;

WHEN WRITERAM=>

IF COUNTER=34 THEN

STATE<=SETDDRAM;

COUNTER<=COUNTER+1;

ELSIF

COUNTER/=34 AND COUNTER<69 THEN

STATE <=WRITERAM;

COUNTER<=COUNTER+1;

ELSE

STATE<=SHIFT;

END IF;

WHEN READRAM=>

STATE<=IDLE;

WHEN OTHERS=>

STATE<=IDLE;

END CASE;

END IF;

END PROCESS;

END ARCHITECTURE BEHV;

5.编译源文件,编译无误后选择File-Creat/Update Symbol File for Current File 菜单,分别生成符号文件.BSF。

6.建立新工程,工程名称及顶层文件名称为LCD,选择File-New菜单,创建图形设计文件,如图4-6-1所示,完成液晶显示实验的设计。将创建的凸显设计文件保存为LCD.BDF作为整个设计的顶层文件。

7.选择Tools-Compiler Tool菜单,编译文件。

8.选择Assignments-Assignment Editor菜单,对工程进行引脚分配,分配结果如表4-6-6,所示。

9.选择Tools-Compiler Tool 菜单,点击“Start”按钮对此工程进行编译,生成可以配置到FPGA 的LCD.SOF文件。

10.使用TD-EDA实验实验系统及SOPC开发板,如图4-6-2所示进行实验接线,将ByteBlaster2下载接口。仔细检查确保接线无误后打开电源。

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

基于单片机的液晶显示

滨江学院 学年论文 题目基于单片机的液晶显示 院系自动控制系 专业电气工程与自动化学生姓名 学号 指导教师 二零一三年十二月二十五号

目录 1.引言 (1) 2.现状 (1) 3.主要目的 (2) 4.实现方案和步骤 (2) 4.1 KS0108 (2) 4.1.1 KS0108特点 (2) 4.1.2 KS0108的引脚功能 (3) 4.1.3 KS0108的指令系统 (4) 4.2 图形点阵式液晶显示控制 (5) 4.3汉字编码原则 (8) 4.4程序实现流程 (9) 5.实验结果及结果讨论 (10) 6.结论 (11) 7.参考文献 (11) 8.附件 (12)

南京信息工程大学滨江学院学年论文 基于单片机的液晶显示 南京信息工程大学滨江学院自动控制系,南京 210044 摘要:本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机8051,采用的液晶显示控制器的芯片是SED1520,主要实现中文显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。 关键字:单片机、液晶显示、8051、SED1520 1、引言 单片机液晶显示系统主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组成的一个显示系统[1]。我们在许多地方可以看到LCD显示屏的应用,例如空调,车内广告,冰箱和显示仪表盘等等,它们都是一个小型的单片机控制液晶显示系统。在日常生活中,我们也可以看到一些类似的由单片机控制的显示系统,如火车站售票大厅的候车信息显示屏,在这些屏幕上,可以显示各种不同的图形、汉字等,并且可以实现上下滚屏与左右移动等。这就是在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,需要能够显示更丰富信息和通用性较强的显示器,便于开发和应用,并要求其体积小、重量轻、功耗小。图形点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕画面滚动等功能,是信息处理、信息输出的重要手段之一,具有广泛的应用前景[2]。我选择的单片机液晶显示系统的开发,是基于KS0108液晶显示控制器,在C8051F020单片机实验系统上实现KS0108是点阵型液晶显示控制器,利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计。 2、现状 液晶显示器具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品当中。液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。字符型LCD是一种用5×7点阵图形来显示字符的

LED点阵显示屏实验报告解析

16?16点阵LED电子显示屏的设计 摘要:文章介绍了基于单片机AT89C51的16?16点阵LED电子显示屏的设计。分别阐述了显示屏显示的基本原理,硬件设计、控制方法及其程序的实现。经过调试和分析,设计的结果能够实现对汉字的静态和动态显示,动态显示的内容有多种方式,同时又可通过上位机更新显示的内容。 关键字:AT89C51;16?16点阵;LED;显示屏 一绪论 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 1 LED点阵显示屏概述 LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。 目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。 2 LED显示屏控制技术状况 显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。

LCD1602液晶显示实验实验报告及程序.doc

实验三 LCD1602 液晶显示实验 姓名专业学号成绩 一、实验目的 1.掌握 Keil C51 软件与 proteus 软件联合仿真调试的方法; 2.掌握 LCD1602液晶模块显示西文的原理及使用方法; 3.掌握用 8 位数据模式驱动 LCM1602液晶的 C 语言编程方法; 4.掌握用 LCM1602液晶模块显示数字的 C 语言编程方法。 二、实验仪器与设备 1.微机一台 C51 集成开发环境仿真软件三、 实验内容 1.用 Proteus 设计一 LCD1602液晶显示接口电路。要求利用 P0口接 LCD1602 液晶的数据端, ~做 LCD1602液晶的控制信号输入端。 ~口扩展 3 个功能 键 K1~K3。参考电路见后面。 2.编写程序,实现字符的静态和动态显示。显示字符为 第一行:“ 1. 姓名全拼”,第二行:“ 2. 专业全拼 +学号”。 3.编写程序,利用功能键实现字符的垂直滚动和水平滚动等效果显示。显 示字符为: “1. 姓名全拼 2.专业全拼+学号EXP8DISPLAY ” 主程序静态显示“ My information!” 四、实验原理

液晶显示的原理:采用的 LCD显示屏都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背光层,背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。当 LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。 1.LCD1602采用标准的 14 引脚(无背光)或 16 引脚(带背光)接口,各 引脚接口说明如表: 编号符号引脚说明编号符号引脚说明 1VSS电源地9D2数据 2VDD电源正极10D3数据 3VL液晶显示偏压11D4数据 4RS数据/命令选择12D5数据 5R/W读/写选择13D6数据 6E使能信号14D7数据 7D0数据15BLA背光源正极 8D1数据16BLK背光源负极2. 1602 液晶模块内部的控制器共有11 条控制指令,如表所示:

1602液晶字符显示

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方

便地应用于市面上大部分的字符型液晶。 2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调

根据C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示 一、实验目的 1.掌握矩阵式键盘的数字键和功能键的编程方法。 2.掌握LCD的接口技术和编程方法。 3.掌握仪器监控程序设计和调试方法。 二、预习与参考 1. 结合ST7920 控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。 2. 参考资料 1)实验板说明书 2)ST7920 控制器系列中文图形液晶模块资料手册 三、设计指标 利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: 1.LCD上显示“重庆科技学院” 2.按键至少包括0-9的数字键 3.LCD显示按键值 4.电子钟显示:时,分,秒(选作) 四、实验要求 1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。 2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。

五、实验仪器设备和材料清单 单片机实验板、连接导线、ST7920图形液晶模块、PC机; Keil c51软件 六、实验设计及实施的指导 1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。 2.经指导教师检查,预习达到要求者进入实验室实验。 3.按照设计的电路连线,构建键盘及显示系统,经检查无误方可进入下一步。 4.在指导教师指导下调试LCD显示程序。 5.在指导教师指导下调试按键程序。 6.综合调试直到满足设计要求。 七、实验成绩评定方法 实验成绩包括预习、实验完成质量、实验报告质量4部分组成,各部分所占比例分别为30%、30%、40%。 八、实验报告要求 1.实验报告格式: 一.实验名称 二.实验目的 三.实验内容 四.设计思想 五.硬件设计 六.程序代码

LCD1602液晶显示实验(DOC)

实验报告 实验名称: [LCD1602液晶显示实验]姓名: 学号: 指导教师: 实验时间: [2013年6月15日] 信息与通信工程学院

LCD1602液晶显示实验 1.实验原理 1.1 基本原理 1.1.1 1602字符型LCD简介 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。 1.1.2 1602LCD的基本参数及引脚功能 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图1-2所示: 图1-2 1602LCD尺寸图 1.1602LCD主要技术参数: 显示容量: 16×2个字符 芯片工作电压: 4.5~5.5V 工作电流: 2.0mA(5.0V) 模块最佳工作电压: 5.0V 字符尺寸: 2.95×4.35(W×H)mm 2.引脚功能说明: 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表: 表1-3引脚接口说明表 编 符号引脚说明编号符号引脚说明 号 1 VSS 电源地9 D 2 数据 2 VDD 电源正极10 D 3 数据 3 VL 液晶显示偏压11 D 4 数据 4 RS 数据/命令选择12 D 5 数据 5 R/W 读/写选择13 D 6 数据 6 E 使能信号14 D 7 数据 7 D0 数据15 BLA 背光源正极 8 D1 数据16 BLK 背光源负极

1.1.3 1602LCD的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令,如表1-4所示: 表1-4 控制命令表 序号指令RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示0 0 0 0 0 0 0 0 0 1 2 光标返回0 0 0 0 0 0 0 0 1 * 3 置输入模式0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制0 0 0 0 0 0 1 D C B 5 光标或字符移位0 0 0 0 0 1 S/C R/L * * 6 置功能0 0 0 0 1 DL N F * * 7 置字符发生存贮器 地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到CGRAM或 DDRAM) 1 0 要写的数据内容 11 从CGRAM或 DDRAM读数 1 1 读出的数据内容 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)读写操作时序如图1-5和1-6所示: 图1-5 读操作时序

LED灯实验报告

mcs-51单片机接口技术实验 适用:电气类专业本科学生 实验报告 实验一熟悉proteus仿真模拟器,led花样表演 一、实验目的 掌握以下方法: 1.在proteus的环境下,设计硬件原理图; 2.在keilc集成环境下设计c51语言程序; 2.在proteus的环境下,将硬件原理图与软件联接仿真运行。 二、实验环境 1.个人微机,windows操作系统 2.proteus仿真模拟器 3.keilc编程 三、实验题目 基本题:使用8051的并口带动8个led发光二极管显示一种花样表演。提高题:使用一个键切换实现3种以上花样表演。 四、实验类型: 学习、模仿与简单设计型。 五、实验步骤: 0、进入isis,先选择需要的元件,然后设计电原理图,保存文件; 1、在keilc软件集成环境下编写源程序,编译工程文件; 2、将所设计的硬件原理图与目标代码程序相联接; 4、按play键,仿真运行程序。 附,可能用到的元件名称: cpu:at89c51或任一种mcs-51家族cpu; 晶振:crystal; 电容器:capacitors,选22pf 电解电容:cap-elec或genelect10u16v 复位电阻:minres10k 限流电阻:minres330r 按键:button led:led-blue/red/yellow或diode-led (一)接线图如下: (二).基础花样 (四)程序流程图 (五)c程序 #include <> #define uint unsigned int #define uchar unsigned char const tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /*正向流水灯*/ 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,};/*反向流水灯*/ const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,}; void delay() { uint i,j; for(i=0;i<256;i++) for(j=0;j<256;j++)

16乘16点阵显示实验报告剖析

实验报告 实验名称: [16×16点阵显示实验] 姓名: [] 学号: [201] 指导教师: [解*] 实验时间: [2013年4月25日] 信息与通信工程学院

16×16点阵显示实验 1实验要求 任务1:将所给程序改正使结果为正显示; 任务2:使显示四个字、八个字。 2实验原理 2.1 LED显示器结构和原理 1>8*8LED点阵的结构 图1 8*8LED点阵结构图 从图1中可以看出,8*8LED点阵共由64个发光二极管组成,每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1高电平,且某一列置0低电平,则相应的发光二极管就亮;因此要用8*8LED点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。但要显示信息量大的图形,则需要n个多个8*8LED点阵,拼装成一个大屏幕才行。

LED点阵显示器最大的特点是亮度高、功耗较低、寿命长、容易控制等,因此它的应用很广,常用在广场、车站、商业广告等室外的显示。 2>8*8LED点阵的封装和引脚规律 64个发光二极管按照行共阳、列共阴4个一组的方式封装成一个模块,这样8*8LED 点阵模块就有8行、8列共16个引脚。其实物图如图2,电路模块符号图如图3。 图2 8*8LED点阵实物图图3 8*8LED点阵符号图但8*8LED点阵的16个引脚并不是很有规律,千万不要想象成1~8个引脚是行,9~16个引脚是列。而且不同产品的点阵外部引脚排列规律还可能不一样。以下是NLB1388SRA 和LDM1388SRA两个型号点阵引脚对应行、列的关系表: 行号H0 H1 H2 H3 H4 H5 H6 H7 引脚号9 14 8 12 1 7 2 5 列号L0 L1 L2 L3 L4 L5 L6 L7 引脚号13 3 4 10 6 11 15 16 假如你买到一块新的8*8LED点阵,又没有关于它的相关资料,那你只有自己用万用表或通过VCC电源串接一个510欧姆的电阻来检测了。 2.2 LPM_ROM的应用 该模块为逻辑宏模块存储器。其应用过程如下。 1选择模块

1602字符型液晶显示器

1602字符型液晶显示器 在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。 1602字符型LCD简介: 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图10-53: 图10-53 1602字符型液晶显示器实物图 1602LCD的基本参数及引脚功能: 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:

图10-55 读操作时序 图10-56 写操作时序 1602LCD的RAM地址映射及标准字库表: 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。

图10-57 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 图10-58 字符代码与图形对应图

单片机实验lcd显示实验

实验19 LCD显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 CPU挂箱、8031CPU模块 三、实验内容 编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技有限公司”。四、实验原理说明 五、实验步骤 1、实验连线 8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接CS0。 2、运行实验程序,观察液晶的显示状态。 六、程序框图 七、程序清单

八、附:点阵式LCD模块 点阵式LCD模块由一大一小两块液晶模块组成。两模块均由并行的数据接口和应答信号接口两部分组成,电源由接口总线提供。 (1)OCMJ2×8液晶模块介绍及使用说明 OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器之用。提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。 本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。 1)表—1:OCMJ2X8(128X32)引脚说明 硬件接口 接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内

LED数码管显示实验

信息工程学院实验报告 课程名称:单片机原理及接口 实验项目名称:LED 数码管显示实验 实验时间:2016年3月11日 班级:通信141 姓名: 学号: 一、实 验 目 的: 熟悉keil 仿真软件、proteus 仿真软件、软件仿真板的使用。了解并熟悉一位数码管与 多位LED 数码管的电路结构、与单片机的连接方法及其应用原理。学习proteus 构建LED 数 码管显示电路的方法,掌握C51中单片机控制LED 数码管动态显示的原理与编程方法。 二、实 验 设 备 与 器 件 硬件:微机、单片机仿真器、单片机实验板、连线若干 软件:KEIL C51单片机仿真调试软件,proteus 系列仿真调试软件 三、实 验 原 理 LED 显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七 段LED ,这种显示器有共阴极与共阳极两种。 共阴极LED 显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发 光二极管则点亮;共阳极LED 显示器的发光二极管阳极并接。 七段LED 数码管与单片机连接时,只要将一个8位并行输出口与显示器的发光二极管引 脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制 成 绩: 指导老师(签名): a f b e g c d dp 1 2 3 4 5 10 9 8 7 6 g f a b e d c dp (a) 共阴极 (b) 共阳极 (c) 管脚配置

发光二极管的8位字节数据称为段选码。 多位七段LED数码管与单片机连接时将所有LED的段选线并联在一起,由一个八位I/O 口控制,而位选线分别由相应的I/O口线控制。如:8位LED动态显示电路只需要两个八位I/O口。其中一个控制段选码,另一个控制位选。 由于所有位的段选码皆由一个I/O控制,因此,在每个瞬间,多位LED只可能显示相同的字符。要想每位显示不同的字符,必须采用动态扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,位选控制I/O口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符,段选控制I/O口输出相应字符段选码。如此轮流,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。 不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。由人眼的视觉特性,每一位LED在一秒钟内点亮不少于30次,其效果和一直点亮相差不多。 四、实验内容与步骤 1、电路图的设计。 (1)打开proteus软件,单击P,打开搜索元器件窗口,如图 1-1 所示: 图1-1 搜索元器件 (2)添加元器件AT89C51、CAP、BUTTON、LED-BLUE、RES、CRYSTAL、7SEG-MPXI1CC,修改元器件的参数,绘制电路图,如图1-2 所示:

实验七 点阵LED屏汉字显示实验

教案(首页)

实验七点阵LED屏汉字显示 一、实验目的 掌握LED点阵显示的方法,深入了解显示的思路。 二、实验说明 LED点阵显示与LED数码显示原理基本相同,要用LED点阵显示组成图形或者字体需要不断的刷新点阵。 三、实验电路原理图 四、实验设备与器件 DLDP-MCU30单片机最小系统模块;DLDP-MCU27 1、在“DLDP-MCU30单片机最小系统模块”上,将“EA”接“+5V”端。 2、使用排线将DLDP-MCU30单片机模块的P0、P1、P2、P3连接到DLDP-MCU27模块的L1、L9,H1,H9,编写实验程序并编译代码生成.HEX文件。 3、将.HEX文件下载至AT89S52单片机中。 4、观察实验现象,分析实验程序的正确性。 六、参考程序

#include #include #define uchar unsigned char #define uint unsigned int uchar code tab1[]={ 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x84,0x20,0x84,0x20,0x84,0x20, 0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0xFE,0x3F,0x04,0x20,0x00,0x00, };//山 uchar code tab2[]={ 0x40,0x00,0x40,0x00,0xFE,0x3F,0x20,0x00,0x10,0x01,0x10,0x01,0x08,0x01,0xF8,0x1F, 0x00,0x01,0x10,0x05,0x30,0x09,0x18,0x11,0x08,0x31,0x44,0x21,0x80,0x01,0x00,0x01, };//东 uchar code tab3[]={ 0x18,0x06,0x18,0x06,0xD8,0xFF,0x7F,0x06,0x18,0x03,0x1C,0x0F,0xBC,0x0D,0xFE,0x7F, 0x1E,0x0C,0x9B,0x0D,0x98,0x3D,0xD8,0x6C,0x78,0xEC,0x18,0xCC,0x18,0x0F,0x18,0x06, };//栋 uchar code tab4[]={ 0xCC,0x3F,0x18,0x36,0x03,0x36,0xF6,0x73,0xD8,0xF3,0x8F,0xF1,0xCC,0x3C,0xFC,0x19, 0x80,0x01,0xFF,0xFF,0xC0,0x03,0xE0,0x07,0xB0,0x1D,0x9C,0xF1,0x87,0x61,0x80,0x01, };//梁 uchar code tab5[]={ 0xE0,0x30,0x3E,0x33,0x30,0x36,0x30,0x36,0xFF,0x30,0x38,0x33,0x78,0x36,0xFC,0x36, 0x3C,0xF0,0x36,0x3E,0xF3,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, };//科

实验八单片机液晶显示实验

实验八单片机液晶显示实验 一、实验目的 1、了解液晶显示屏的控制原理及方法。 2、了解点阵汉字的显示原理。 二、实验说明 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 三、实验仪器 计算机 伟福实验箱(lab2000P ) 四、实验内容 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 3、直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。计算机通过地址译码控制E1和E2的选通;读/写操作信号R/W由地址线A1控制;命令/数据寄存器选择信号AO由地址线A0控制。实际电路如上图所示。地址映射 如下(地址中的X由LCD CS决定,可参见地址译码部分说明) 五、思考题 1、显示自己的班级和姓名; 2、可以动态显示,上下或者左右移动; 六、源程序修改原理及其仿真结果 CWADD1 EQU 08000H ;写指令代码地址(E1) DWADD1 EQU 08001H ;写显示数据地址(E1) CRADD1 EQU 08002H ;读状态字地址(E1) DRADD1 EQU 08003H ;读显示数据地址(E1) CWADD2 EQU 08004H ;写指令代码地址(E2) DWADD2 EQU 08005H ;写显示数进地址(E2) CRADD2 EQU 08006H ;读状态字地址(E2) DRADD2 EQU 08007H ;读显示数据地址(E2) PD1 EQU 3DH ;122/2 分成左右两半屏122x32 COLUMN EQU 30H PAGE_ EQU 31H ;页地址寄存器D1,DO:页地址 CODE_ EQU 32H ;字符代码寄存器 COUNT EQU 33H ;计数器 DIR equ 34h dtp1 equ 35h

液晶的电光特性实验报告含思考题

西安交通大学实验报告 第1页(共9页)课程:_______近代物理实验_______ 实验日期:年月日 专业班号______组别_______交报告日期:年月日 姓名__Bigger__学号__报告退发:(订正、重做) 同组者__________教师审批签字: 实验名称:液晶的电光特性 一、 二、实验目的 1) 2)了解液晶的特性和基本工作原理; 3) 4)掌握一些特性的常用测试方法; 5) 6)了解液晶的应用和局限。 三、 四、实验仪器 激光器,偏振片,液晶屏,光电转换器,光具座等。 五、 六、实验原理 液晶分子的形状如同火柴一样,为棍状,长度在十几埃,直径为4~6埃,液晶层厚度一般为 5-8微米。排列方式和天然胆甾相液晶的主要区别是:扭曲向列的扭曲角是人为可控的,且“螺距” 与两个基片的间距和扭曲角有关。而天然胆甾相液晶的螺距一般不足1um,不能人为控制。扭曲向

列排列的液晶对入射光会有一个重要的作用,他会使入射的线偏振光的偏振方向顺着分子的扭曲方向旋转,类似于物质的旋光效应。在一般条件下旋转的角度(扭曲角)等于两基片之间的取向夹角。 对于介电各向异性的液晶当垂直于螺旋轴的方向对胆甾相液晶施加一电场时,会发现随着电场的增大,螺距也同时增大,当电场达到某一阈值时,螺距趋于无穷大,胆甾相在电场的作用下转变成了向列相。这也称为退螺旋效应。由于液晶分子的结构特性,其极化率和电导率等都具有各向异性的特点,当大量液晶分子有规律的排列时,其总体的电学和光学特性,如介电常数、折射率也将呈现出各向异性的特点。如果我们对液晶物质施加电场,就可能改变分子排列的规律。从而使液晶材料的光学特性发生改变,1963年有人发现了这种现象。这就是液晶的的电光效应。 为了对液晶施加电场,我们在两个玻璃基片的内侧镀了一层透明电极。将这个由基片电极、取向膜、液晶和密封结构组成的结构叫做液晶盒。根据液晶分子的结构特点,假定液晶分子没有固定的电极,但可被外电场极化形成一种感生电极矩。这个感生电极矩也会有一个自己的方向,当这个方向以外电场的方向不同时,外电场就会使液晶分子发生转动,直到各种互相作用力达到平衡。液晶分子在外电场作用下的变化,也将引起液晶合中液晶分子的总体排列规律发生变化。当外电场足够强时,两电极之间的液晶分子将会变成如图1中的排列形式。这时,液晶分子对偏振光的旋光作用将会减弱或消失。通过检偏器,我们可以清晰地观察到偏振态的变化。大多数液晶器件都是这样工作的。 图1液晶分子的扭曲排列变化 若将液晶盒放在两片平行偏振片之间,其偏振方向与上表面液晶分子取向相同。不加电压时,入射光通过起偏器形成的线偏振光,经过液晶盒后偏振方向随液晶分子轴旋转90°,不能通过检偏器;施加电压后,透过检偏器的光强与施加在液晶盒上电压大小的关系见图2;其中纵坐标为透光强度,横坐标为外加电压。最大透光强度的10%所对应的外加电压值称为阈值电压(U th),标志了液晶电光效应有可观察反应的开始(或称起辉),阈值电压小,是电光效应好的一个重要指标。最大透光强度的90%对应的外加电压值称为饱和电压(U r),标志了获得最大对比度所需的外加电压数值,U 小则易获得良好的显示效果,且降低显示功耗,对显示寿命有利。对比度D r=I max/I min,其中I max r 为最大观察(接收)亮度(照度),I min为最小亮度。陡度β=U r/U th即饱和电压与阈值电压之比。 图2液晶电光效应关系图

LCD12864显示屏 带中文字库

蓝屏LCD12864显示屏带中文字库带背光12864-5V ST7920 需要用串口,请把 R9上的0欧电阻改到R10 带中文字库的,兰屏,白字 以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序: ORG 0000H RS EQU P3.7;确定具体硬件的连接方式 RW EQU P3.6 ;确定具体硬件的连接方式 E EQU P3.5 ;确定具体硬件的连接方式 MOV P1,#00000001B ;清屏并光标复位 ACALL ENABLE;调用写入命令子程序 MOV P1,#00111000B ;设置显示模式:8位2行5x7点阵 ACALL ENABLE ;调用写入命令子程序 MOV P1,#00001111B ;显示器开、光标开、光标允许闪烁 ACALL ENABLE ;调用写入命令子程序 MOV P1,#00000110B ;文字不动,光标自动右移 ACALL ENABLE ;调用写入命令子程序 MOV P1,#0C0H ;写入显示起始地址(第二行第一个位置) ACALL ENABLE ;调用写入命令子程序 MOV P1,#01000001B ;字母A的代码 SETB RS ;RS=1 CLR RW ;RW=0 ;准备写入数据 CLR E ;E=0 ;执行显示命令

ACALL DELAY ;判断液晶模块是否忙? SETB E ;E=1 ;显示完成,程序停车 AJMP $ ENABLE: CLR RS ;写入控制命令的子程序 CLR RW CLR E ACALL DELAY SETB E RET DELAY: MOV P1,#0FFH ;判断液晶显示器是否忙的子程序 CLR RS SETB RW CLR E NOP SETB E JB P1.7,DELAY ;如果P1.7为高电平表示忙就循环等待 RET END 程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址0C0H,最后输入要显示的字符A的代码41H。 SMC1602A(16*2)模拟口线接线方式 连接线图: --------------------------------------------------- |LCM-----51 | LCM-----51 | LCM------51 | ------------------------------------------------| |DB0-----P1.0 | DB4-----P1.4 | RW-------P2.0 | |DB1-----P1.1 | DB5-----P1.5 | RS-------P2.1 | |DB2-----P1.2 | DB6-----P1.6 | E--------P2.2 | |DB3-----P1.3 | DB7-----P1.7 | VLCD接1K电阻到GND| --------------------------------------------------- [注:AT89S52使用12M晶振] =============================================================*/

单片机实验--LCD显示实验

实验19L C D显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 CPU挂箱、8031CPU模块 三、实验内容 编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技 有限公司”。 四、实验原理说明 五、实验步骤 1、实验连线 8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255 接CS0。 2、运行实验程序,观察液晶的显示状态。 六、程序框图 八、附:点阵式LCD 模块 点阵式LCD模块 由一大一小两块液晶 模块组成。两模块均 由并行的数据接口和 应答信号接口两部分 组成,电源由接口总 线提供。 (1)OCMJ2×8液晶 模块介绍及使 用说明 OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和 ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器

之用。提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。 本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。 硬件接口 接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节

相关文档
最新文档