云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > LCM1602液晶屏显示实验程序

LCM1602液晶屏显示实验程序

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 7:55:20

LCM1602液晶屏显示实验程序

文件:lcm16x2p.h

#ifndef LCM16X2_H #define LCM16X2_H

#define BUSYFLAG 0x80 #define BLINK 0x01 #define NOBLINK 0x00

unsigned char LCMReadState(void); void LCMDelay(int);

void LCMWriteCmd(unsigned char); void LCMWriteData(unsigned char); void LCMClear(void); void LCMInit(void);

void LCMGotoXY(unsigned char,unsigned char);

void LCMDisplayChar(unsigned char,unsigned char,unsigned char); void LCMDisplayString(unsigned char,unsigned char,unsigned char*); void LCMBlink(unsigned char,unsigned char,unsigned char);

#endif

文件:lcm16x2p.c

#include #include #include \

#define LCM_DB P2

sbit LCM_RS = P1^0; sbit LCM_RW = P1^1; sbit LCM_E = P1^2; sbit LCM_BLC = P1^3;

unsigned int data DelayConst = 140;

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

函数名:LCMDelay

功 能:通过循环的方式延时

参 数:int,表示要延时的毫秒数 返 回:

作 者:倪晓军 2003-5-25 15:21

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

void LCMDelay(int ms) { unsigned int i,cnt; cnt = DelayConst * ms; for(i=0;i

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

函数名:LCMReadState

功 能:查询LCM的忙标志/当前AC地址 参 数:

返 回:BYTE,最高bit为1表示忙,为0表示闲 作 者:倪晓军 2003-5-25 15:24

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

unsigned char LCMReadState(void) { unsigned char state; LCM_E = 0; LCM_RS = 0; LCM_RW = 1; LCM_E = 1; _nop_(); _nop_(); state = LCM_DB; LCM_E = 0; return state; }

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

函数名:LCMClear 功 能:清屏 参 数: 返 回:

作 者:倪晓军 2003-5-25 15:25

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

void LCMClear(void) { LCMDelay(1); LCM_E = 0; LCM_RS = 0; LCM_RW = 0; LCM_DB = 0x01; LCM_E = 1; _nop_(); _nop_(); LCM_E = 0; LCMDelay(1); }

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

函数名:LCMWriteCmd 功 能:向LCM写入控制字

参 数:BYTE,命令字节。写入前不判断忙表示(因为初始化过程中不能判断) 返 回:

作 者:倪晓军 2003-5-25 15:26

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

void LCMWriteCmd(unsigned char cmd) { LCMDelay(1); LCM_E = 0; LCM_RS = 0; LCM_RW = 0; LCM_DB = cmd; LCM_E = 1; _nop_(); _nop_(); LCM_E = 0; }

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

函数名:LCMWriteData 功 能:向LCM写入数据

参 数:BYTE,将要写入的数据 返 回:

作 者:倪晓军 2003-5-25 15:27

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

void LCMWriteData(unsigned char dc) { while(LCMReadState() & BUSYFLAG); LCM_RS = 1; LCM_RW = 0; LCM_DB = dc; LCM_E = 1; _nop_(); _nop_(); LCM_E = 0; }

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

函数名:LCMInit 功 能:初始化LCM

参 数:DWORD,晶振频率(Hz),供计算延时常数 返 回:

作 者:倪晓军 2003-5-25 15:28

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

void LCMInit(void) { LCMDelay(60); // 延时60ms,等待LCM复位 LCMWriteCmd(0x38); // 功能设置:8位接口,2行,5x7字符点阵 LCMDelay(5); // 延时 LCMWriteCmd(0x38); // 第二次 LCMDelay(1); // 延时

LCMWriteCmd(0x38); // 此后可以通过监测忙标志判断指令执行情况 while(LCMReadState() & BUSYFLAG); LCMWriteCmd(0x08); // 关闭显示 while(LCMReadState() & BUSYFLAG); LCMWriteCmd(0x01); // 清屏 while(LCMReadState() & BUSYFLAG); LCMWriteCmd(0x06); // 显示地址自动增量,整体不移位 while(LCMReadState() & BUSYFLAG); LCMWriteCmd(0x0e); // 开显示,开光标,不闪烁 while(LCMReadState() & BUSYFLAG); }

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

函数名:LCMGotoXY

功 能:移动光标到X行,Y列

参 数:BYTE,x表示行(0,1),y表示列(横向,取值0~0x0f) 返 回:

作 者:倪晓军 2003-5-25 15:29

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

void LCMGotoXY(unsigned char x,unsigned char y) // x:行(0~1) y:列(0~F) { unsigned char cmd; if(x==0) { cmd = 0x80 | y;(设置显示缓冲区DDRAM地址命令D7=1,第0行第0列从00H开始) } else { cmd = 0x80 | 0x40 | y; (第1行第0列为40H开始) } LCMWriteCmd(cmd); while(LCMReadState() & BUSYFLAG); }

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

函数名:LCMDisplayChar

功 能:在指定位置显示一个字符

参 数:x表示行(0,1),y表示列(横向,取值0~0x0f),ch表示将要显示的字符(ASCII码) 返 回:

作 者:倪晓军 2003-5-25 15:31

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

void LCMDisplayChar(unsigned char x,unsigned char y,unsigned char ch) { LCMGotoXY(x,y); LCMWriteData(ch); }

搜索更多关于: LCM1602液晶屏显示实验程序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

LCM1602液晶屏显示实验程序 文件:lcm16x2p.h #ifndef LCM16X2_H #define LCM16X2_H #define BUSYFLAG 0x80 #define BLINK 0x01 #define NOBLINK 0x00 unsigned char LCMReadState(void); void LCMDelay(int); void LCMWriteCmd(unsigned char); void LCMWriteData(unsigned char); void LCMClear(void); void LCMInit(void); void LCMGotoXY(unsigned char,unsigned char);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com