LCD的写模式操作
对LCD1602,具有四种基本的操作,读命令,写命令,读数据,写数据。由于主要是让LCD1602显示数据,我们只需要用到写命令与写数据即可。
写数据和写命令为称之为写模式
在LCD1602中,
RS引脚的高低电平 控制是数据或者命令,高电平为数据,低电平为命令。
R/W引脚的高低电平控制是读模式或者写模式,高电平为读,低电平为写;
E引脚控制数据与命令使能,使操作生效,高电平写入数据,低电平生效。
下面时序图为写模式的时序图
由于单片机运行的机器周期最快速度为1us,超过400ns,因此执行指令时可以不需要额外的延时。
写命令可以这样操作。
RS = 0;
R/W =0;
EN =1;
Pn = Data;
EN =0;
注:
(1)Pn指的 Data0~7连接的单片机接口,如果连接到P0则,Pn=P0;
(2)实际在测试中,由于写数据与EN =0时间太短,导致数据显示不出来,最好在添加5ms的延时;
RS = 0;
R/W =0;
EN =1;
Pn = Data;
delay(5);
EN =0;
写数据操作为
LCD_CD = 1;
LCD_WR = 0;
LCD_EN = 1;
Pn = ldata;
delay(5);
LCD_EN = 0;
LCD的初始化指令
在对LCD可以进行写命令之后,就可以对LCD进行初始化了。初始化目的是为了LC处于某种工作状态。LCD初始化只需要对LCD写入某些命令即可。
初始化一般有以下几条指令
(1)开启显示模式设置0x38;
(2)清屏指令设置0x01;
(3)设置光标移动0x06;
(4)设置光标设置0x0c;
LCD显示数据
初始化完毕后,则可以将数据写进入LCD,由于LCD1602有两行,每行长度为32位,前16位可以直接显示,后16位用于做移动显示用;第一行开始地址为0x80;第二行开始地址为0xc0;
注:左移指令为0x18,右移指令为0x1c
链接地址为LCD显示实现例子
链接:https://pan.baidu.com/s/1yDEWG6XzMCim0EdBXb_QfQ
提取码:afe0
关键字:C51 编程 LCD1602显示
引用地址:
C51编程21-应用篇(LCD1602显示-2)
推荐阅读最新更新时间:2024-11-09 23:14
如何在C51文件和汇编语言文件中相互调用?
如何在C51文件和汇编语言文件中相互调用对方文件中的函数? 答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如: LCALL DISPLAY 在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下: extern 返回值类型 函数名(参数表); 例如: extern unsigned char right_shift ( char, char );
[单片机]
#C51按键处理(外部中断的应用)
前言 了解外部中断触发方式及响应处理 样例:外部中断INT0 && INT1处理按键事件 提示:以下是本篇文章正文内容,下面案例可供参考 一、场景 样例功能:INT0按下计数+1,INT1按下计数-1,显示范围0~9999 二、编程实现 1.主函数: 开机界面显示默认初值1234,3s后进入按键检测,默认0000 变量PowerOnTimeCnt 在T0定时中断服务函数中执行++ void main() { INIT(); EA = 1; while(PowerOnTimeCnt 3000) //开机画面1234后开始显示0000,按键处理 { P1 = 0Xfe; //t
[单片机]
C51脉冲宽度检测程序
/********************************************** 315无线模块 PT2262 1.5M 270KHz 可以测出脉冲宽度 起始时间 5000us 高电平时间 490us 低 电平 时间 160us HH=1 LL=0 LH=F ***********************************************/ #include reg51.h typedef unsigned int uint; long plu; void delay(uint); main() { TMOD=0x09; //0x0000 1001b ET0=1;
[单片机]
单片机编程如何快速入门?
单片机是一门实践性很强的课程(是半软半硬的东西),所以必须是理论联系实践。 一、什么是单片机呢? 单片机 1、和我们的计算机(电脑)差不多,大家都知道,我们的计算机(电脑)里面有 (1)CPU (2)硬盘 (3)内存 (4)主板 (5)等等。 这些东西是装在一个叫主机的里面的。好大!一个CPU大概要400块,硬盘也要500左右,内存200左右,主板500左右,这些东西加在一起大概要1600块左右。如果配上其他的,一台电脑要3000到4000左右吧。 视图2、但是把这些东西(CPU,硬盘,内存,主板等等)用集成块做好后,如下图所视: 就成了我们要学习的“单片机”
[单片机]
关于DSP编程的几个关键问题
1 McBSP(Multichannel Buffered Serial Port)串口利用DMA中的多帧(Multi-Frame)方式通信的中断处理 在实际通信应用中,一个突发之后,程序必须为下一个突发作准备。因此一般采用串口的DMA多帧方式进行发送,在中断处理程序中或停止发送或加载数据。但在串口以DMA方式传输数据时却有一些问题要讨论。首先DMA的传输同步事件应设为McBSP的传输事件即XEVT,这样一字节传输后会自动准备另一字节(McBSP的READY上升沿触发DMA传输)。中断发生时意味着一个块已传完,这时DMA 的使能自动关闭,McBSP的READY将一直保持高状态。但是在下一次突发传输直接使能DMA时却启动不了传输(
[嵌入式]
2440裸机编程之三 通用I/O口
S3C2440A 具有130 个多功能输入/输出脚,分别包含在如下9 组端口中。 ●1 个25 位输出端口(端口A)。 ●1 个11 位输出端口(端口B)。 ●4 个16 位输入/输出端口(端口C、D、E、G)。 ●1 个8 位输入/输出端口(端口F)。 ●1 个9 位输入/输出端口(端口H)。 ●1 个13 位输入/输出端口(端口J)。 基本上,每个端口有三个寄存器: GPnCON:端口配置寄存器,多数端口有多种功能,所以需要这个寄存器来使某个端口确定某一功能。 GPnDAT:端口数据寄存器,当端口为输出功能时:写这个寄存器就是使端口引脚输出相应电平;当端口为输入功能时:读这个寄存器就是读端口引脚上的相应电平; GPnUP:端
[单片机]
#pragma vector语句在IAR for MSP430中断程序编程过程中的使用
在使用keil对STC89C52单片机程序开发过程中使用 void Name_Function interrupt n 来作为中断服务函数程序的入口,但是在IAR for MSP430程序开发过程中则使用#pragma vector提供中断函数入口地址,并使用 _interrupt void _Name_Function来定义中断函数名称,示例如下: #pragma vector = 0xFFF4; //WDT_VECTOR = 0xFFF4 是看门狗定时器中断地址 __interrupt void Watchdog_Timer(void) { /****/ } 1、上面的入口地址也可写成#pragma vector
[单片机]