历史上的今天
今天是:2025年08月13日(星期三)
2019年08月13日 | 壹拾陆:LCD1602的显示
2019-08-13 来源:eefocus






#操作方法


![]() |


**原理图**


代码
******************************************************************
* 【课程17】 ****LCD1602的实验***********
* 【说 明】 ****
* 【描 述】 ****在LCD1602上显示字符
******************************************************************
---------------------------------------------------------
基本操作:
读状态: RS=0,RW=1,EN=1
输出:D0~D7=状态字;
写指令: RS=0,RW=0,EN=下降沿脉冲
D0~D7=指令码;
读数据: RS=1,RW=1,EN=1
输出: D0~D7=数据;
写数据: RS=1,RW=1,EN=下降沿脉冲
D0~D7=数据;
*********************************************************/
#include //---------常用的两个宏定义-------------- #define uint8 unsigned char #define uint16 unsigned int //--------1602的控制引脚定义------------- sbit RS = P2^5; sbit RW = P2^6; sbit EN = P2^7; //----------显示的数据------------ uint8 Data1[7]="welcom!"; uint8 Data2[13]="www.yxarm.net"; //-----------函数的声明------------------ void DelayMS(uint16 dly); //----------液晶模块的声明--------------- bit BUSY(void); void Write_cmd(uint8 cmd); void Write_dat(uint8 dat); void LCD_Init(void); //---------Main Task--------------------- void main(void) { uint8 i; LCD_Init(); while(1) { Write_cmd(0x85); //第一行 for(i=0;i<7;i++) Write_dat(Data1[i]); Write_cmd(0xc2); //第二行 for(i=0;i<13;i++) Write_dat(Data2[i]); } } /******************************************************** ** 名称 :void DelayMS(uint16 dly) ** 功能 :毫秒级延时(12M的晶振) ** 入口参数 :dly 用户的延时参数 ** 出口参数 :无 *********************************************************/ void DelayMS(uint16 dly) { uint16 x,y; for(x=dly;x>0;x--) for(y=124;y>0;y--); } /******************************************************** ** 名称 :bit BUSY(void) ** 功能 :检测LCD1602是否处于忙状态; ** 入口参数 :无 ** 出口参数 :bit Bit 返回1,则BUSY 返回0,则OK *********************************************************/ bit BUSY(void) { bit Bit; RS = 0; RW = 1; EN = 1; DelayMS(1); Bit = (bit)(P0 & 0x80); //最高位为忙信号位 EN = 0; return Bit; } /******************************************************** ** 名称 :void Write_cmd(uint8 cmd) ** 功能 :写命令 ** 入口参数 :cmd 控制命令 ** 出口参数 :无 *********************************************************/ void Write_cmd(uint8 cmd) { while(BUSY()); //测忙 RS = 0; RW = 0; EN = 0; P0 = cmd; EN = 1; DelayMS(1); EN = 0; } /******************************************************** ** 名称 :void Write_dat(uint8 dat) ** 功能 :写数据 ** 入口参数 :dat 要显示的数据 ** 出口参数 :无 *********************************************************/ void Write_dat(uint8 dat) { while(BUSY()); //测忙 RS = 1; RW = 0; EN = 0; P0 = dat; EN = 1; DelayMS(1); EN = 0; } /******************************************************** ** 名称 :void LCD_Init(void) ** 功能 :液晶的初始化 ** 入口参数 :无 ** 出口参数 :无 *********************************************************/ void LCD_Init(void) { Write_cmd(0x38); //功能设置 DelayMS(1); Write_cmd(0x0c); //显示开关控制 DelayMS(1); Write_cmd(0x06); //输入方式设置 DelayMS(1); Write_cmd(0x01); //清除LCD的显示内容 DelayMS(1); }
上一篇:壹拾伍:LED点阵的点亮
下一篇:壹拾柒:DS1302的操作
史海拾趣
|
当初填报志愿,不知道为什么就报考了这个专业,到了大学班里只有不到1/6的女孩!面临毕业找工作,大部分的单位都会毅然的打出只招男生的要求,看来这确实是一个比较辛苦奔波的行业!我现在还没找到工控专业的工作,有好几次都想放弃。照这样下去我 ...… 查看全部问答> |
|
我这是个xxx.dll,win32平台下已经做好了,想在wince上用 所有的设置都复制过去了,包括预处理器定义 编译能成功,链接的时候却出现一个问题: 无法打开xxx.lib… 查看全部问答> |
|
使用无线数据卡通过电脑拨号上网时,如果正在打开一个网页且在没有完全打开的情况下发现收不到短信,但是当网页打开完毕后就是正常的,有没有人熟悉这种情况,是正常的还是不正常的,PS域是怎样处理这样的情况的,有没有相关协议明确的说明了这种现 ...… 查看全部问答> |
|
自定义控件的背景图片闪烁现象可以用如下办法解决: case WM_ERASEBKGND: return TRUE; 如果是系统按钮, 我只是换掉系统按钮的背景图, 这种情况下产生的闪烁又该如何处理呢?… 查看全部问答> |
|
TI电源产品系列极多,型号更是名目繁多,对于新手想上手却是不容易。所以希望有经验的前辈师傅们多多发表你们的见解和认识,希望能够帮助到后辈。在此,我代表广大青年电子设计爱好者表示感谢!… 查看全部问答> |
|
Xilinx官网提供了许多低功耗设计的参考资料及其软件,分享到这里方便大家使用!! Xilinx 7 系列 FPGA 功耗评估软件 Xilinx Virtex5_Virtex6系列FPGA功耗评估软件 Xilinx Spartan3A_Spartan6系列FPGA功耗评估软件 Xilinx XPower 估计器用 ...… 查看全部问答> |





