本文作者:sukai

单片机lcd编程(单片机lcdh)

sukai 05-11 102

  LCD1602 (能够同时显示16x02 ,32个字符)

  一、管脚功能介绍

  

  1.GND 地线

  2.VCC 电源正极

  3.VL 液晶显示偏压信号(对比度清晰一点)

  4.RS 数据/命令选择端

  5.R/W 读/写选择端

  6.EN 使能信号

  7.D0~D7 P0口数据传输

  8.BL+ 背光源正极

  9.BL- 背光源负极

  二、字符集

  这是LCD1602特别值得注意的一点,我开始学习的时候,以后可以使用通用的ascii码,但是实验了很久,得不到自己想要的结果,最后才发现LCD1602有自己的字符集

  (最长使用的十六进制中的A-F,可以通过 A+'7'来确定)

  

  三、LCD1602 的基本时序

  1.读状态:输入:RS = 0, RW = 1, EN = 1 , 输出:D0-D7 = 状态字 ;

  2.写指令:输入:RS = 0, RW = 1, EN = 0 , EN = 1 ,(高脉冲) 输出:D0-D7 = 指令码 ;

  3.读数据:输入:RS = 0, RW = 1, EN = 1 , 输出:D0-D7 = 数据 ;

  4.写数据:输入:RS = 0, RW = 1, EN = 0 ,EN = 1 ,(高脉冲) 输出:D0-D7 = 数据;

  四、LCD1602的状态字的说明

  D7 D6 D5 D4 D3 D2 D1 D0

  其中bit7是判断LCD忙状态的标志,每次读写LCD1602必须对其状态进行判断。

  五、LCD1602初始化设置

  1.显示模式设置

  指令码 功能

  0011 1000 16x2显示,5x7点阵,8位数据口

  2.显示开关及光标设置

  指令码 功能

  0000 1DCB D=1 开显示;D=0 关显示 ;

  C=1 显示光标;C=0 不显示光标 ;

  B=1 光标闪烁;B=0 光标不闪烁 ;

  0000 01NS N=1 读写一位,指针+1,光标+1 ;

  N=0 读写一位,指针 -1,光标 -1 ;

  S =1 读写一位,屏幕左移(N=1)或者右移(N=0);

  S =0 屏幕不移动 ;

  3.指令码 01H 1.数据指针清0 ;

  2.所有显示清0 ;

  02H 1.数据指针清0 ;

  六、实验

  实验1:通过LCD1602显示简单的字符串

  程序:

  main.h

  #ifndef _1602_H_

  #define _1602_H_

  typedef unsigned char uint8 ;

  sbit RS = P1^0 ;

  sbit RW = P1^1 ;

  sbit EN = P1^5 ;

  sbit BUSY = P0^7 ;

  unsigned char code word1[] = {"yang zhou"} ;

  unsigned char code word2[] = {"I love you"} ;

  #endif

  main.c

  #include

  #include

  #include"1602.h"

  void wait()

  {

  P0 = 0xFF ;

  while(BUSY)

  {

  RS = 0 ;

  RW = 1 ;

  EN = 0 ;

  EN = 1 ;

  }

  EN = 0 ;

  }

  void W_cmd(uint8 cmd)

单片机lcd编程(单片机lcdh)

  {

  wait() ;

  EN = 0 ;

  P0 = cmd ;

  RS = 0 ;

  RW = 0 ;

  EN = 1 ;

  EN = 0 ;

  }

  void Init_LCD1602()

  {

  W_cmd(0x38) ;

  W_cmd(0x0C) ;

  W_cmd(0x06) ;

  W_cmd(0x01) ;

  }

  void W_dat(uint8 dat)

  {

  EN = 0 ;

  P0 = dat ;

  RS = 1 ;

  RW = 0 ;

  EN = 1 ;

  EN = 0 ;

  }

  void W_string(uint8 *p)

  {

  while(*p !='

阅读
分享