LCD1602四线编程方法程序设计实例

发布者:乘风翻浪最新更新时间:2017-12-30 来源: eefocus关键字:LCD1602  四线编程 手机看文章 扫描二维码
随时随地手机看文章

第一次调4线的LCD1602,比较困难,或者因为延迟不对,或者因为命令错误,我足足用了一天时间,搞定了4线的1602编程实现。这里提供51单片机和LPC23XX系列单片机的程序。51的程序是我上网找的,可以参考里面的实现步骤,可以直接仿真,但是不知道烧到板子里是否可以。LPC23XX系列单片机的程序可以直接烧写板子里运行,注意里面的管脚定义,因为在proteus里没找到对应的芯片,这里不知是否可以仿真。

51程序


#include

sbit LCM_RW=P2^0; //定义引脚
sbit LCM_RS=P2^1;
sbit LCM_E =P2^2;

#define LCM_Data P1

#define Busy 0x80 //用于检测 LCM 状态字中的 Busy 标识

void WritEDAtaLCM(unsigned char Data);
void WriteCommandLCM(unsigned char Command);

void LCMInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);

void Delayms(unsigned int n);
void dellay(unsigned int h);

unsigned char code blog_adr[] = {"EDNchina"};
unsigned char code email[] = {"tengjingshu@126.com"};

void main(void)

{
       //Delay400Ms();   //启动等待,等 LCM 讲入工作状态
       LCMInit();        //LCM 初始化
       DisplayListChar(3, 0, blog_adr);
  DisplayListChar(0, 1, email);
       while(1);
}

//写数据 RS=H,RW=L,D0~D7=数据,E=高脉冲
void WritEDAtaLCM(unsigned char Data) 
{     
      LCM_RS = 1;
      LCM_RW = 0;
   LCM_E = 0;
   LCM_Data =(Data & 0xF0);
   LCM_E = 1;
      dellay(100);    //短暂延时,代替检测忙状态
   LCM_E = 0;
      LCM_Data =(Data & 0x0F)<<4;
      LCM_E = 1;
   dellay(100);
   LCM_E = 0;
}

//写指令 RS=L,RW=L,D0~D7=指令码,E=高脉冲
void WriteCommandLCM(unsigned char Command)
{
dellay(100);      //短暂延时,代替检测忙状态
     LCM_RS = 0;
  LCM_RW = 0;
  LCM_E = 0;
  LCM_Data =( Command & 0xF0);
  LCM_E = 1;
     dellay(100);
  LCM_E = 0;
     LCM_Data =( Command & 0x0F )<<4;
     LCM_E = 1;
  dellay(100);
     LCM_E = 0;
}

//读数据 RS=H,RW=H,E=H
//读状态 RS=L,RW=H,E=H
//由于不要检测忙,所以读数据和读状态两个函数省略

void LCMInit(void)    //LCM 初始化
{
     LCM_Data = 0;
     Delayms(15);
     WriteCommandLCM(0x03); //三次显示模式设置,不检测忙信号
     Delayms(5);
     WriteCommandLCM(0x03);
     Delayms(5);
     WriteCommandLCM(0x03);
     Delayms(5);
     WriteCommandLCM(0x02);
  Delayms(5);
     WriteCommandLCM(0x28); //显示模式设置,开始要求每次检测忙信号
     WriteCommandLCM(0x06); // 显示光标移动设置
  WriteCommandLCM(0x0C);
     WriteCommandLCM(0x01);
   Delayms(5);
}

//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF;  //限制 X 不能大于 15,Y 不能大于 1
if (Y) X |= 0x40;  //当要显示第二行时地址码+0x40;
X |= 0x80;      //算出指令码
WriteCommandLCM(X);   //这里不检测忙信号,发送地址码
WritEDAtaLCM(DData);
}

//按指定位置显示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制 X 不能大于 15,Y 不能大于 1
while (DData[ListLength]>0x1f) //若到达字串尾则退出
 {
       if (X <= 0xF) //X 坐标应小于 0xF
          {
                DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
                ListLength++; X++;
          }
}
}

void Delayms(unsigned int n)
{
 unsigned int i,j;
 for(j=n;j>0;j--)
 for(i=112;i>0;i--);
}


void dellay(unsigned int h)
{
 while(h--);   //0.01MS
}


关键字:LCD1602  四线编程 引用地址:LCD1602四线编程方法程序设计实例

上一篇:LCD1602程序设计4线并口通信源程序
下一篇:STC单片机AD和EEPROM的程序设计C代码

推荐阅读最新更新时间:2024-03-16 15:51

【51单片机快速入门指南】6.1:LCD1602的八线、四线控制及自定义符号,完美兼容Proteus仿真
普中51-单核-A2 STC89C52 Windows 10 20H2 Proteus 8 Frofessional v8.9 SP2 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《通用1602 液晶显示模块使用手册》、《液晶LCD1602(中文资料)—— ball 2010-5-13整理》 显示特性 单5V电源电压,低功耗、长寿命、高可靠性 内置192种字符(160个5x7点阵字符和32个5x10点阵字符) 具有64个字节的自定义字符RAM,可自定义8个5x8点阵字符或四个5x11点阵字符
[单片机]
【51单片机快速入门指南】6.1:<font color='red'>LCD1602</font>的八线、<font color='red'>四线</font>控制及自定义符号,完美兼容Proteus仿真
LCD1602液晶显示(51单片机c语言)
效果图: 电路图: #include reg52.h #include intrins.h //包含_nop_()函数定义的头文件 #define uchar unsigned char #define uint unsigned int sbit RS=P2^5; //寄存器选择位 sbit RW=P2^6; //读写选择位 sbit E=P2^7; //使能信号位 //sbit BF=P0^7; //忙碌标志位 const uchar string1 ={ mazirong }; const uchar string2 ={ TEL:13297961386 }; /**************************
[单片机]
<font color='red'>LCD1602</font>液晶显示(51单片机c语言)
LCD1602液晶秒表C51程序
此程序是基于51hei单片机开发板上面写的,如需要移植到自己的电路上,修改相应的端口即可 *********************************************************************** * @file main.c * @author xr * @date 2014年5月8日22:11:33 -- 2014年5月9日12:03:49 * @version V1.2.3 * @brief LCD1602液晶跑表 单片机STC89C52RC MCU 晶振 11.0592MHZ **************************************
[单片机]
51单片机项目设计:定时宠物喂食系统
链接:https://pan.baidu.com/s/1CKrXkIHite1LWaWM26gjeQ 提取码:abcd 取走点赞哦~ 题目要求: 一、拟解决的主要问题 1、仔细分析题目要求,理解投食器工作原理,明确工作任务和设计要求,确定整体设计方案,选定单片机以及相关传感器等元器件,实现投食器设定时间,按设定时间发出响声,吸引宠物过来并自动投放食物等功能; 2、通过Proteus软件进行设计与仿真,给出系统硬件设计框图、元件选择及各部分电路原理图; 3、软件程序流程并编写程序; 4、软硬件联合调试; 5、完成实物焊接,调试实物, 二、设计方案 基于单片机的自动投食器设计,通过模块化的设计,利用ST
[单片机]
51单片机项目设计:定时宠物喂食系统
单片机电子密码锁代码+Proteus仿真(24C02+LCD1602显示)
基于51单片机的电子密码锁按键设置6位密码,输入密码若密码正确,则锁打开。显示open! 密码可以自己修改(6位密码),必须是锁打开时才能改密。为防止误操作,修改密码得输入两次。 1.按键设置6位密码,输入密码若密码正确,则锁打开。显示open! 2.密码可以自己修改(6位密码),必须是锁打开时才能改密。为防止误操作,修改密码得输入两次。 3.若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。 4.24C02有复位、掉电保存密码功能 按键排列方式: 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D ABC无定义、 *号键为取消当前操作、#号键为确认、D键为修改密码自己焊接的电路,首次使用时输入:1314
[单片机]
单片机电子密码锁代码+Proteus仿真(24C02+<font color='red'>LCD1602</font>显示)
51单片机系列——学习LCD1602液晶显示-8总线-显示一串字符
今天重温一下LCD1602液晶显示的内容,做了个8总线方式显示一串字符“ First Try ”的实验 仿真图如下: 代码如下: LCD1602.h #ifndef _LCD1602_H_ #define _LCD1602_H_ #include reg52.h //重定义关键字 #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif /********************************** PIN口定义 *************************
[单片机]
51单片机系列——学习<font color='red'>LCD1602</font>液晶显示-8总线-显示一串字符
LCD1602液晶显示屏显示时钟且能修改时间
CODE: /*************************************** 程序功能: LCD液晶显示屏显示时钟并且可以修改时间 ***************************************/ #include reg52.h #define uint unsigned int #define uchar unsigned char sbit K1=P1^0;//设置三个独立键盘 sbit K2=P1^3; sbit K3=P1^5; sbit lcdwrite=P2^5; sbit lcddatecommand=P2^6; sbit lcde=P2^7; uchar code firstlin
[单片机]
51单片机的LCD1602液晶屏密码锁汇编程
;说 明:首先显示器提示输入密码,密码在12.5S内输入有效, ; 输入次三次错误报警10S,输入正确开门,7秒后返回初态 ; 以上参数均可在主程序里设定,修改系统密码在程序的结尾 RS BIT P2.7 RW BIT P2.6 E BIT P2.5 ENTER BIT 22H.0 OPEN BIT P3.6 SPEAK BIT P3.7 PASSBUF EQU 40H KEYNUMBER EQU 41H ;存放识别后的按键号 ORG 0000H
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved