当前位置:文档之家› LCD显示程序

LCD显示程序

LCD显示程序
LCD显示程序

本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。

/**********************************************************

程序说明:LCD12864显示主程序

程序调试员:莫剑辉

调试时间:2010-6-7

**********************************************************/

#include

#include"12864.c"

void main()

{

Ini_Lcd(); //液晶初始化子程序

Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序

while(1);

}

这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。

/**********************************************************

程序说明:LCD12864显示头文件

程序调试员:莫剑辉

调试时间:2010-6-7

**********************************************************/

//#include

#define uchar unsigned char

#define uint unsigned int

#define DATA P2 //数据输出端0~7

sbit RS=P0^0; //LCD12864 RS端

sbit RW=P0^1; //LCD12864 RW端

sbit E =P0^2; //LCD12864 E 端

sbit PSB =P0^3;

/*********************************************

延时子程序

*********************************************/

void Delay_1ms(uint x)

{

uint j,i;

for(j=0;j

{

for(i=0;i<120;i++); //延时X乘以120

}

}

/*********************************************

LCD12864液晶测忙子程序(读状态)

*********************************************/

void Busy()

{

uchar busy;

do

{

E = 0; //0为关闭使能端,1为打开使能端

RS = 0; //1为指令,0为数据

RW = 1; //1为读,0为写

Delay_1ms(20); //延时20乘以120时间

E = 1; //0为关闭使能端,1为打开使能端

busy=P1; //读取P2状态

Delay_1ms(20); //延时20乘以120时间

E = 0; //0为关闭使能端,1为打开使能端

}

while(busy&0x80); //判断BUSY位是否工作:1为内部在工作,0为正常状态}

/*********************************************

LCD12864液晶数据写入子程序

*********************************************/

void Write_Data(uchar k)

{

Busy(); //测忙

E =1; //0为关闭使能端,1为打开使能端

RS=1; //1为指令,0为数据

RW=0; //1为读,0为写

DA TA=k; //输入数据K到DA TA

Delay_1ms(20); //延时20乘以120时间

E =0; //0为关闭使能端,1为打开使能端

Delay_1ms(20); //延时20乘以120时间

}

/*********************************************

LCD12864液晶命令写入子程序

*********************************************/

void Write_Cmd(uchar cmd)

{

Busy(); //测忙

E=1; //0为关闭使能端,1为打开使能端

RS=0; //1为指令,0为数据

RW=0; //1为读,0为写

DA TA=cmd; //输入命令cmd到DATA

Delay_1ms(20); //延时20乘以120时间

E=0; //0为关闭使能端,1为打开使能端

Delay_1ms(20); //延时20乘以120时间

}

/*********************************************

LCD12864液晶数据显示子程序

*********************************************/

void Disp(uchar y,uchar x,uchar i,uchar *z)

{

uchar Address;

if(y==1){Address=0x80+x;} //Y判断第几行,X判断第几列,0x80为液晶行初始地址

if(y==2){Address=0x90+x;}

if(y==3){Address=0x88+x;}

if(y==4){Address=0x98+x;}

Write_Cmd(Address); //写入地址命令到LCD12864

while(i) //写入显示数据的大小

{

Write_Data(*(z++)); //写入显示数据到LCD12864

i--;

}

}

/*********************************************

LCD12864液晶初始化子程序

*********************************************/

void Ini_Lcd(void)

{

PSB=1;

Delay_1ms(20);

Write_Cmd(0x30); //基本指令集

Delay_1ms(20);

Write_Cmd(0x02); // 地址归位

Delay_1ms(20);

Write_Cmd(0x0c); //整体显示打开,游标关闭

Delay_1ms(20);

Write_Cmd(0x06); //游标右移

Delay_1ms(20);

Write_Cmd(0x80); //设定显示的起始地址

Delay_1ms(20);

Write_Cmd(0x01); //清除显示

}

lcd1602程序流程图

LCD1602程序代码及显示流程图LCD1602显示程序代码DB P0//--P0=DB0~DB7位LCD_RS=P2;//--P2.0=RS位LCD UrW=P2;//--P2.1=RW位LCD_Ue=P2;//-P2.2=E//--/--/----定义函数? define uchar unsigned char? define uint unsigned int///—定义子例程函数void LCD_Uiinit(void);//-初始化LCD1602函数void LCD_2;write_uchar命令(uchar命令);//-写入命令功能无效LCD到LCD1602_Char数据(uchar DAT);//-将无效的LCD数据写入LCD1602_Uxset_XY(uchar x,uchar y);//设置LCD1602 void LCD_uchar(uchar x,uchar y,uchar DAT)的显示位置x(0-16),y(1-2);//-在LCD1602中,显示包含无效字符的LCD;uchar x,uchar y,uchar*s);在LCD1602上显示一个字符串//void LCD_ucheck_uBusy(void);//检查Busy函数。我没有使用这个功能,因为通过率很低。LCD_u2;delay_10us(uint n);//-10微秒延迟子程序void LCD_udelay_50uS(uint n);/-延迟子程序50微秒初始化(无效){LCD_udelay_10us(20);LCD_uwrite_10us(0x38);//-设置8位格式,2行,5x7 LCD_2;delay_10us(5);LCD_uwrite_u命令(0x0c);//-整体显示,关闭光标,不闪烁LCD 不闪烁LCD_延时延时10us(5);LCD_写写写命令(0x06);///-设置输入模式,增量增

LCD1602液晶显示实验要点

实验报告 实验名称: [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 读操作时序

LCD1602地电路图和程序

实用标准文档 文案大全MS 基于1602字符型液晶显示器的显示系统 姓名:杨越 班级:电子11-1 学号:110400104

一、实习目的 (1)了解飞思卡尔单片机的基本原理,掌握其基本的工作流程。 (2)了解LCD1602的基本原理及用法。 (3)能够熟练使用CodeWarrior软件编写C语言程序,使用BDM仿真器下载 程序。 (4)能够熟练焊接电路板。 二、实验设备与器件 CodeWarrior软件,BDM仿真器,万用电路板,飞思卡尔单片机,LCD1602液晶显示器, 三、实验内容 内容:利用飞思卡尔单片机制作基于1602字符液晶显示器的显示系统 要求:用四个按键控制,按下第一个按键显示1,按下第二个按键显示2,以此类推。 (1)LCD1602液晶显示器的原理:1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号); 以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。 以下具体阐述这三个管脚: RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。 R/W为读写选择,高电平进行读操作,低电平进行写操作。 E端为使能端,后面和时序联系在一起。 除此外,D0~D7分别为8位双向数据线。 操作时序:

注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0. 读取状态字时,注意D7位,D7=1,禁止读写操作;D7=0,允许读写操作; 所以对控制器每次进行读写操作前,必须进行读写检测。(即后面的读忙子程序) 指令集: LCD_1602 初始化指令小结: 0x38设置16*2显示,5*7点阵,8位数据接口 0x01清屏 0x0F开显示,显示光标,光标闪烁 0x08只开显示 0x0e开显示,显示光标,光标不闪烁 0x0c开显示,不显示光标 0x06地址加1,当写入数据的时候光标右移 0x02地址计数器AC=0;(此时地址为0x80)光标归原点,但是DDRAM中断内容不变 0x18光标和显示一起向左移动 (2)飞思卡尔单片机的功能及特点:MC9S12XS128是 16 位单片机,由 16 位中央处理单元(CPU12X)、128KB 程序、Flash(P-lash)、8KB RAM、8KB 数据Flash(D-lash)组成片内存储器。主要功能模块包括:内部存储器,内部 PLL 锁相环模块,2 个异步串口通讯 SCI ,1个串行外设接口 SPI MSCAN 模块,1 个8 通道输入/输出比较定时器模块 TIM ,周期中断定时器模块 PIT ,16 通道 A/D 转换模块 ADC ,1 个 8 通道脉冲宽度调制模块 PWM ,输入/输出数字 I/O 口。

lcd1602程序流程图

LCD1602程序代码和显示流程图LCD1602显示程序代码_ DB P0 //---P0 = DB0?DB7位LCD_ RS = P2; //--p2.0 = RS 位LCD_ RW = P2; //--p2.1 = RW 位LCD_ E = P2; //-p2.2 = E / /---/--/--定义函数? 定义uchar unsigned char ? 定义uint unsigned int // //-定义子程序函数void LCD_ Init (void ); //-初始化LCD1602函数void LCD_ write_ Command (uchar command ); //-写指令功能无效LCD 到LCD1602_ write_数据(uchar DAT ); //-将无效的LCD 数据写入LCD1602_ set_ XY (uchar x ,uchar y ); //设置LCD1602的显示位置x (0-16) ,

y(1-2)void LCD_ disp_ Char(uchar x,uchar y,uchar DAT); //-在LCD1602_ disp_ String (uchar x,uchar y,uchar * s)上显示字符无效的LCD;//-在LCD1602上显示字符串// void LCD_ check_ Busy(void); //检查忙功能。我没有使用此功能,因为通过率非常低。LCD_ delay_ 10us(uint n); //-一个10微秒的延迟子程序void LCD_ delay_ 50uS(uint n); /-延迟子程序50微秒_ init(无效){LCD_ delay_ 10us(20); LCD_ write_命令(0x38); //-设置8位格式,2行,5x7 LCD_ delay_ 10us(5);LCD_ write_命令(0x0c); //-整体显示,关闭光标,不闪烁LCD_ delay_ 10us(5);LCD_ write_命令(0x06); //-设置输入模式,增量不移位LCD_ delay_ 10us(5);LCD_ write_命令(0x01); // /-清除屏幕上的LCD_ delay_ 50uS(40);} //将无效的LCD指令写入LCD1602_ write_命令(uchar dat){LCD_ delay_ 10us (5);LCD_ Rs = 0; //命令LCD_RW = 0;//写入LCD_ DB = dat; LCD_ delay_ 10us(5); LCD_ E = 1; //允许LCD_delay_10us(5);LCD_ E = 0;} /-将数据无效LCD写入LCD1602_ write_ data(uchar dat){LCD_ delay_ 10us(5);LCD_ Rs = 1; //数据LCD_RW = 0;//写入LCD_ DB = dat; LCD_ delay_ 10us(5); LCD_ E = 1; //允许LCD_delay_10us(5);LCD_ E = 0;} /-

LCD1602的电路图和程序

MS 基于1602字符型液晶显示器的显示系统 姓名:杨越 班级:电子11-1 学号:110400104

一、实习目的 (1)了解飞思卡尔单片机的基本原理,掌握其基本的工作流程。 (2)了解LCD1602的基本原理及用法。 (3)能够熟练使用CodeWarrior软件编写C语言程序,使用BDM仿真器下载 程序。 (4)能够熟练焊接电路板。 二、实验设备与器件 CodeWarrior软件,BDM仿真器,万用电路板,飞思卡尔单片机,LCD1602液晶显示器, 三、实验内容 内容:利用飞思卡尔单片机制作基于1602字符液晶显示器的显示系统 要求:用四个按键控制,按下第一个按键显示1,按下第二个按键显示2,以此类推。 (1)LCD1602液晶显示器的原理:1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号); 以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。 以下具体阐述这三个管脚: RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。 R/W为读写选择,高电平进行读操作,低电平进行写操作。 E端为使能端,后面和时序联系在一起。 除此外,D0~D7分别为8位双向数据线。 操作时序:

注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0. 读取状态字时,注意D7位,D7=1,禁止读写操作;D7=0,允许读写操作; 所以对控制器每次进行读写操作前,必须进行读写检测。(即后面的读忙子程序) 指令集: LCD_1602 初始化指令小结: 0x38 设置16*2显示,5*7点阵,8位数据接口 0x01 清屏 0x0F 开显示,显示光标,光标闪烁 0x08 只开显示 0x0e 开显示,显示光标,光标不闪烁 0x0c 开显示,不显示光标 0x06 地址加1,当写入数据的时候光标右移 0x02 地址计数器AC=0;(此时地址为0x80)光标归原点,但是DDRAM中断内容不变 0x18 光标和显示一起向左移动 (2)飞思卡尔单片机的功能及特点:MC9S12XS128是 16 位单片机,由 16 位中央处理单元(CPU12X)、128KB 程序、Flash(P-lash)、8KB RAM、8KB 数据Flash(D-lash)组成片内存储器。主要功能模块包括:内部存储器,内部 PLL 锁相环模块,2 个异步串口通讯 SCI ,1个串行外设接口 SPI MSCAN 模块,1 个8 通道输入/输出比较定时器模块 TIM ,周期中断定时器模块 PIT ,16 通道 A/D 转换模块 ADC ,1 个 8 通道脉冲宽度调制模块 PWM ,输入/输出数字 I/O 口。

LCD1602的11条指令详解

1602指令 共11条指令:1.清屏指令 功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 2.光标归位指令 功能:<1> 把光标撤回到显示器的左上方; <2> 把地址计数器(AC)的值设置为0; <3> 保持DDRAM的内容不变。 3.进入模式设置指令

功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名设置 I/D0=写入新数据后光标左移1=写入新数据后光标右移 S0=写入新数据后显示屏不移动1=写入新数据后显示屏整体右移1个字符4.显示开关控制指令 功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下: 位名设置 D0=显示功能关1=显示功能开 C0=无光标1=有光标 B0=光标闪烁1=光标不闪烁 5.设定显示屏或光标移动方向指令

功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下:S/C R/L设定情况 00光标左移1格,且AC值减1 01光标右移1格,且AC值加1 10显示器上字符全部左移一格,但光标不动11显示器上字符全部右移一格,但光标不动 6.功能设定指令 功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名设置 DL0=数据总线为4位1=数据总线为8位 N0=显示1行1=显示2行 F0=5×7点阵/每字符1=5×10点阵/每字符 7.设定CGRAM地址指令

功能:设定下一个要存入数据的CGRAM的地址。 8.设定DDRAM地址指令 功能:设定下一个要存入数据的CGRAM的地址。 9.读取忙信号或AC地址指令 功能:<1> 读取忙碌信号BF的内容, BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; <2> 读取地址计数器(AC)的内容。

基于单片机的lcd1602电子时钟设计说明

基于单片机的LCD1602电子时钟设计 一、设计任务和目的 1.1、设计任务 (1):用单片机设计基于LCD1602的电子时钟,显示时间和日期; (2):误差精度控制在1s/天; (3):具有时间和日期的校准功能; (4):能区分某年是闰年或平年,并对应显示2月份的天数; (5):根据月份的不同显示不同的最大日数; (6):搭建仿真电路图,模拟单片机要实现的功能; (7):焊接单片机开发板; (8):编写程序,下载并调试,实现要求的功能。 1.2、设计目的 (1):熟练掌握KEIL软件的使用方法; (2):熟练掌握PROTEUS软件的使用方法; (3):掌握单片机I/O接口的工作原理; (4):掌握LCD显示器的工作原理及编程方法; (5):掌握独立式键盘的工作原理及编程使用方法; (6):掌握单片机的下载使用方法。 二、设计思路和方案论证 2.1、设计思路 电路总体上分为控制和显示部分。以单片机最小系统作为核心控制电路,控制LCD显示,具体显示容及方式由软件来完成;由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加1键、减1键三个按键完成,共需四个按键;计时功能由固定频率的晶振完成(采用11.0592MHz);显示部分主要采用LCD1602作为显示。 2.2、方案论证 (1):时钟芯片的选择和论证 方案一:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,精度也较高,工作电压2.5V~5.5V围,功耗也较低,但价格比较贵。 方案二:直接采用单片机定时计数器提供秒信号,使用程序实现秒、分、时、日、月、年计数。采用此方案实现虽然有一定的时间误差,但可减少芯片的使用,节约成本,易于实现,符合现实选用,所以采用此种作为时钟信号发生器。 (2):显示模块选择方案和论证: 方案一:采用点阵式图形LCD12864液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用点阵式图形LCD12864液晶显示屏。 方案二:采用点阵式字符型LCD1602液晶显示屏,LCD1602是专门用于显示字母、数字、符号等的点阵型液晶显示模块,分4位和8位数据传输方式。提供“5×7点阵+光标”和“5×10点阵+光标”的显示模式。价格现对便宜,所以用此种作为显示。

基于51单片机的1602LCD显示

标签:单片机LCD 基于51单片机的1602LCD显示 基于51单片机的1602LCD显示 LCD(liquid crystal display)为液晶显示器,它一般不会单独使用,而是将LCD面板、驱动与控制电路组合成LCD模块(1iquid crystal display moulde,简称为LCM)来使用。LCM是一种很省电的显示设备,常被应用在数字或微处理器控制的系统,做为简易的人机接口,但人们一般还是习惯称之为LCD显示器。 1 硬件设计 采用51单片机控制1602LCD显示器的电路如下所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT 模板,保存文件名为“LCD.DSN”。在器件选择按钮 中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表51单片机AT89C51 一片晶体CRYSTAL 12MHz 一只 瓷片电容CAP 22pF 二只电解电容CAP-ELEC 10uF 一只 电阻RES 10K 一只排阻RESPAC-8 10K 一只 1602液晶显示器LM016L 一只

若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 用1602LCD显示两行字符的流程图如下所示。 用1602LCD显示“Welcom to China”和“Hi!Good morning!”的详细C51程序如下。 //用LCD循环显示"Welcome to China"和"Hi!Good morning!" #include //包含单片机的头文件 #include //包含_nop_()函数定义的头文件 sbit RS="P2"^0; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW="P2"^1; //读写选择位,将RW位定义为P2.1引脚 sbit E="P2"^2; //使能信号位,将E位定义为P2.2引脚 sbit BF="P0"^7; //忙碌标志位,,将BF位定义为P0.7引脚 unsigned char code string[ ]={"Welcome to China"}; unsigned char code string1[ ]={"Hi!Good morning!"};

lcd1602程序流程图

lcd1602程序流程图 1、引脚3(对比调整电压)接正电源时对比度最低,接地时对比度最高,通常通过一个10k的电位器相连后接地,上电后需要对电位器进行调整以显示出相应的字符(就像调节电视的对比度使图像清晰,这里是使字符清晰) 2、D0~D7为8为数据总线,用于与单片机之间的数据传送 了解了引脚功能后,我们再来看其内置芯片 关于HD44780 HD44780内部含有DDRAM,CGROM,CGRAM 下面我来简单介绍一下这三个存储器 DDRAM是用于寄存待显示字符代码的,其内部带有80字节的RAM 缓冲区,与LCD屏幕的位置一一对应。 通常我们只使用前16个地址(两行32个),这样一来,我们便可以将这32个地址当作是我们的坐标,比如要在DDRAM的02H地址(对应的是屏幕第一行第三个)显示字符“A”,我们就可以分两步走,首先用程序先找到“坐标点”,也就是将地址转到02H(具体

如何不做详细说明),然后在这个位置写入“A”,写入地址和数据都是通过D0~D7实现的,详细的程序在文章的后面举例说明。 CGROM与CGRAM是LCD内部固化的字模存储器,这相当于芯片内部划出的一块区域,CGROM里面存放着我们日常所使用的一些字符(192个),而CGRAM则允许用户自定义一些字符(8个)。具体对应关系如下,0x00~0x0F就是用户自定义的CGRAM区。 再回到之前的问题,在DDRAM的02H地址显示字符“A”,首先通过程序找到地址02H,然后在该地址写入41H,从图中也可看出该位置对应的字符就是“A”。 我们再来理一理这个过程,有关字符显示,首先便是找到DDRAM 中我们所要显示位置对应的地址,接着便是在这个地址写入一个地址(单片机中的间接寻址),LCD根据这个地址在CGROM中找到对应的字符,然后在02H这个位置显示出来,这个过程也到此结束。由于CGROM中的字符代码与PC中的字符代码基本一致,通常我们也直接在02H地址直接写入“A”,简化了程序设计。

LCD1602 LM016l程序和使用说明

LM016l 与LCD1602: LM016l 与LCD1602原理是一样的,只不过PROTEUS中016没显示调亮度的那两个端口,但并不影响。 在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。 在单片机系统中应用晶液显示器作为输出器件有以下几个优点: 显示质量高 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。 数字式接口 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。 体积小、重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。 功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。 10.8.1 液晶显示简介 ①液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。 ②液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。 ③液晶显示器各种图形的显示原理: 线段的显示 点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH 时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。 字符的显示 用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控

LCD1602的完整使用例子

1602显示 void main() //主函数 { uchar a; init(); delay(20); write_com(0x80); //第一行起始地址 delay(20); for(a=0;a<17;a++) { write_date(table1[a]);//读取字符表 delay(20); } write_com(0xc0); //第二行起始地址 delay(20); for(a=0;a<17;a++) { write_date(table2[a]);//读取字符表 delay(20); } while(1); //保持显示 }

本仿真利用的74LS373锁存器,其是单向传输数据,故不检测data_7这个忙数据位 1602 共有11条指令 编写好4个函数,写命令、写数据、读状态、读数据, 然后在函数的变量中写入指令的代码即可。即可完成对1602的操作 我认为指令的代码仅指的是D0~D7的8位上的数据,我觉得说明书给出的RW 、RS状态在写函数或者读函数中已经给出,此处只需考虑8位数据代码即 可。

2.光标归位指令 功能:<1> 把光标撤回到显示器的左上方; <2> 把地址计数器(AC)的值设置为0; <3> 保持DDRAM的内容不变。 5.设定显示屏或光标移动方向指令 功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L 设定情况 0 0 光标左移1格,且AC值减1 0 1 光标右移1格,且AC值加1 1 0 显示器上字符全部左移一格,但光标不动 1 1 显示器上字符全部右移一格,但光标不动7.设定CGRAM地址指令 功能:设定下一个要存入数据的CGRAM的地址。

LCD1602学习笔记(附带c语言例程)

LCD1602学习笔记 一、LCD1602实体结构 1.LCD1602液晶显示模块主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。 2.控制器主要由指令寄存器IR、数据寄存器DR、忙标志BF、地址计数器AC、显示数据缓冲区DDRAM、字符发生器CGROM、用户自定义字符发生器CGRAM以及时序发生电路组成。 3.忙标志位BF,当RS=0、RW=1、E=1,即进行读指令寄存器的操作时,BF输出到DB7。每次操作之前最好先检测BF,只有在BF=0之后,MCU才可以访问模块。 4.地址计数器AC:AC是DDRAM或CGRAM的地址指针,(即哪个地址要显示字符)随着IR中指令码的写入,指令码中携带的地址信息自动送入AC中。AC的内容为DB0~DB6。 5.DDRAM存储显示字符的字符码。 6.CGROM:字模存储器。 7.LCD为16字*2行。基地址为0x80,第一行地址为0x00~0x0f,第二行地址为0x40 ~0x4f。(例,第一行的第二个地址为0x80|0x01。) 8.显示过程:控制器通过数据总线DB0~DB7接收MCU发送来的指令和数据,存入指令寄存器IR和数据寄存器DR,模块自动从CGROM中找到欲显示字符的字符码,送入DDRAM,在LCD显示屏上与DDRAM存储单元对应的规定位置显示出该字符。

二、引脚及功能 1.RS=0,选择指令寄存器;RS=1,选择数据寄存器。 2.RW=0,向LCD写入指令或数据;RW=1,从LCD读出信息。 3.E为使能信号,E=1,读信息;E=1——0(下降沿)写信息。 4.VL为液晶显示对比度调节接口。 5.BLA为背光源正极,BLK为背光源负极。(有的LCD没有这两个引脚就不用接。)接法如下,

单片机时钟芯片DS1302在LCD1602上显示年月日时分秒

单片机设计实验 内容摘要: 单片机实验是通过Proteus仿真并且与Keil相结合使用控制单片机使其在仿真中完成一系列所设计的程序。我们这个小组所做的实验是仿真一个数字时钟,通过DS1302这个芯片从计算机上读取时间信息,再由51单片机对数据进行处理、分配,将其输出在LCD1602上,实现简单的数字时钟的功能。 设计内容及要求: (1)根据设计课题的技术指标和给定条件,在教师指导下,能够独立而正确地进行方案论证和设计计算,要求概念清楚、方案合理、方法正确、步骤完整; (2)要求学生掌握单片机的设计内容、方法和步骤; (3)要求会查阅有关参考资料和手册等; (4)要求学会选择有关元件和参数; (5)要求学会绘制有关电路图和设计流程图; (6)要求学会编写设计说明书。 系统框图:

硬件选择: 1、AT89C51 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89C51外形及引脚排列

相关主题
文本预览
相关文档 最新文档