一.原理图及引脚说明


可由Rb1电位器控制LCD的对比度

编号 引脚名 引脚说明 编号 引脚名 引脚说明
1 VSS 电源地 9 D2 Data I/O
2 VDD 电源正极 10 D3 Data I/O
3 VL 对比度调节 11 D4 Data I/O
4 RS 数据/指令选择段(H/L) 12 D5 Data I/O
5 R/W 读/写选择段(H/L) 13 D6 Data I/O
6 E 使能信号 14 D7 Data I/O
7 D0 Data I/O 15 BLA 背光源正极
8 D1 Data I/O 16 BLK 背光源负级

二.控制接口说明

1.1602的存储器

DDRAM:作为显示用的RAM,其地址直接和屏幕上的位置相对应,具体可看第4点;
CGROM:字模存储ROM,里面存入了ascall码字符,显示时自动调用,无需修改;
CGRAM:用户自建字模RAM,可自行向其中添加想要的字模,6位地址码,每个字符占8个字节,所以最多存8个字符。

2.基本操作时序
序号 基本操作 时序
1 读状态 RS=L,R/W=H,E=H,D0~7=状态字
2 写指令 RS=L,R/W=L,D0~7=指令码,E=高脉冲
3 读数据 RS=H,R/W=H,E=H,D0~7=数据
4 写数据 RS=H,R/W=L,D0~7=数据,E=高脉冲
3.状态字说明

STA7:读写操作使能,1—禁止,0—允许
STA6~0:当前数据地址指针的数值

对应代码:

//读状态
void read_state(void)
{unsigned char sta;         //状态读取存储变量LCD1602_DB=0xff; LCD1602_RS=0;LCD1602_RW=1;LCD1602_E=1;do{LCD1602_E=1;sta=LCD1602_DB;   //把状态字读取到sta变量中,可通过最高位判断液晶是否处于忙态,1时为忙 LCD1602_E=0;   //释放总线,防止影响其他模块}while(sta&0x80); //判断最高位,直到允许读写时跳出循环
}//写指令
void write_cmd(unsigned char cmd)
{read_state();LCD1602_RS=0;    //RS=0->指令LCD1602_RW=0;    //R/W=0->写LCD1602_DB=cmd;  //写入指令LCD1602_E=1; LCD1602_E=0;
}//写数据
void write_data(unsigned char date)
{read_state();LCD1602_RS=1;   //RS=1->数据LCD1602_RW=0; //R/W=0->写LCD1602_DB=date; //写入数据LCD1602_E=1;LCD1602_E=0;
}
4.DDRAM地址映射图

5.指令说明
序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清显示 0 0 0 0 0 0 0 0 0 1
2 光标返回 0 0 0 0 0 0 0 0 1 *
3 光标和显示模式设置 0 0 0 0 0 0 0 1 I/D S
4 显示开/关控制 0 0 0 0 0 0 1 D C B
5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *
6 功能设置 0 0 0 0 1 DL N F * *
7 设置字符发生存储器地址 0 0 0 1 A5 A4 A3 A2 A1 A0
8 设置数据存储器地址 0 0 1 A6 A5 A4 A3 A2 A1 A0
9 读忙标志或AC地址 0 1 BF A6 A5 A4 A3 A2 A1 A0
10 写数据到CGRAM/DDRAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0
11 从CGRAM/DDRAM读数据 1 1 D7 D6 D5 D4 D3 D2 D1 D0

指令1:清显示
1.清除显示器,将DDRAM全部写入空白的ASCll码20H;
2.地址计数器AC的值设为0;
3.光标复位到地址00H的位置;

指令2:光标复位指令
1.光标复位到地址00H的位置;
2.地址计数器AC的值设为0;
3.DDRAM内容不变

指令3:光标和显示模式设置
1.I/D:光标移动方向。0—左移,1—右移;
2.S:屏幕上所有文字是否移动。0—关闭,1—右移

指令4:显示开关控制
1.D:控制整体显示的开关。0—关,1—开;
2.C:控制光标显示的开关。0—关,1—开;
3.B:控制光标闪烁的开关。0—关,1—开;

指令5:光标或显示移位

S/C R/L 功能
0 0 光标左移1格且地址计数器AC减1
0 1 光标右移1格且地址计数器AC加1
1 0 屏幕上所有字符左移1格但光标不变
1 1 屏幕上所有字符右移1格但光标不变

指令6:功能设置
设定数据总线位数、显示的行数及字型
1.DL:数据总线位数。0—4位,1—8位;
2.N:显示行数。0—1行,1—2行;
3. F:显示点阵类型。0—5X10点阵,1— 5X7点阵

指令7:设定CGRAM地址
设定下一个要存入数据的CGRAM的地址,该指令在向CGRAM时数据前使用。

指令8:设定DDRAM地址
设定下一个要存入数据的DDRAM的地址,该指令在向DDRAM写数据(即显示)时使用。

指令9:读取忙信号或AC地址
1.BF:液晶显示器是否忙。0—不忙,可接收,1—忙,暂时无法接收;
2.读取计数器AC的地址;

指令10:写数据到CGRAM或DDRAM
1.将字符码写入DDRAM,以使液晶显示屏显示出相对于的字符;
2.使用者自己设计的图形存入CGRAM;

指令11:从CGRAM或DDRAM读出数据
读取CGRAM或DDRAM中的内容。

初始化代码:

//LCD初始化设置
void lcd_init()
{       LCD1602_E=0;        //使能关(操作前关使能使用时打开)write_cmd(0x3c);     //设置16*2显示,5*7点阵,8位数据口write_cmd(0x0c);     //设置开显示,不显示光标write_cmd(0x06);     //设置写一个字符后地址指针自动加1write_cmd(0x01);     //显示清0,数据指针清0
}//x为列,范围0~39
//y为行,0——第1行,1——第2行
//将坐标转换为对应的RAM地址,实际指针地址为0x80+RAM映射地址,0x80为指令固定位
void LCD1602_SetRAM(unsigned char x,unsigned char y)
{unsigned char addr;if(y == 0)addr = 0x80 + x;elseaddr = 0xc0 + x;write_cmd(addr);
}//对应位置显示字符串
void LCD1602_Show(unsigned char x,unsigned y,unsigned char *str)
{LCD1602_SetRAM(x,y);while(*str != '\0'){write_data(*str++);}
}
#define LCD1602_DB P0sbit LCD1602_RS=P2^0;  //RS,数据/命令选择端(H/L)
sbit LCD1602_RW=P2^1;  //R/W,读/写选择端(H/L)
sbit LCD1602_E=P1^2;  // E,使能信号void read_state(void);//读状态,直到lcd不忙才继续执行其他操作
void write_cmd(unsigned char com);//写指令
void write_data(unsigned char date);//写数据
void lcd_init();//LCD初始化
void LCD1602_SetRAM(unsigned char x,unsigned char y);//设置显示RAM起始地址(x,y对应屏上字符坐标)
void LCD1602_Show(unsigned char x,unsigned y,unsigned char *str);//显示字符串void main()
{lcd_init();LCD1602_Show(0,0,"Hello everyone!");  //第一行显示Hello everyone!//向CGRAM中存入字符:write_cmd(0X40+num);num为8的倍数(0~56)//然后用write_data(data);循环写入8个字节,即一个字符对应的8行//如果要将CGRAM中自己存入的字符显示到屏幕上//可先write_cmd(addr);addr为DDRAM的地址//然后write_data(num);num=1~8,即CGRAM中的8个字符//注意首先要保证CGRAM中已经存入字符while(1){
//      write_cmd(0x18);    //显示器字符左移//添加适当的延时函数        }
}

注意:用此开发板时,如果插上LCD1602,可能会对其他模块产生影响,例如数码管无法正常显示等。

【蓝桥杯——单片机学习笔记】十二.LCD1602(STC15F2K60S2)相关推荐

  1. 【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

    一.要求 在CT107D单片机训练综合平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份"2022",接着是2个分隔符"--",最后两位是月份,从1 ...

  2. 【蓝桥杯-单片机学习笔记(六)】矩阵键盘控制数码管显示0~F

    一.要求 在CT107D单片机训练平台上,首先将J5处的跳线帽接到1~2引脚,使按键S4~S19组成4*4的矩阵键盘.在扫描按键的过程中,发现有按键触发信号后,待按键松开后,数码管显示相应的数字.按键 ...

  3. 【蓝桥杯-单片机学习笔记(十七)】24C02原理及其读写操作

    一.24C02 24C02是一个2K Bit的串行EEPROM存储器,内部含有256个字节.在24C02里面有一个8字节的页写缓冲器.24C02支持I2C总线协议.I2C是一种双向.两线串行通信接口, ...

  4. 【蓝桥杯-单片机学习笔记(十二)】工厂灯光控制系统

    一.要求 在CT107D单片机综合训练平台上,设计程序,实现实时显示开机系统运行时间和按键控制灯光. 1.设计系统初始化函数,关闭蜂鸣器和继电器等无关设备. 2.设计设备检测函数,首先检测LED灯,从 ...

  5. 【蓝桥杯-单片机学习笔记(十五)】NE555频率测量

    一.要求 在CT107D平台上测量NE555产生方波的频率值并显示在数码管上.频率数据显示用5位数码管,单位是Hz,数码管最左边显示"F".改变滑动变阻器Rb3可以改变频率大小. ...

  6. 【蓝桥杯-单片机学习笔记(十四)】DS1302

    一.DS1302介绍 1.功能介绍 DS1302包括时钟/日历寄存器和31字节(8位)的数据暂存寄存器,数据通信仅通过一条串行输入输出口,实时时钟/日历提供包括秒.分.时.日期.月份和年份信息.闰年可 ...

  7. 【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示

    一.要求 在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复. 二.数码管 1.七段数码管 七段数码管,其实内部由8个发光二极管构 ...

  8. 【蓝桥杯——单片机学习笔记】五.数码管显示(STC15F2K60S2)

    一.原理图 二.原理图分析 如上图,U7锁存器控制数码管的段选(即每个数字的7个短横和1个点),U6锁存器控制数码管的位选(即8个数字).具体锁存器的输出端对应数码管的哪个输入端可看上图.控制锁存器的 ...

  9. [蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示

    一.理论部分 共阳数码管引脚可以分为两个部分,一是段码,一个是位码.段码指的是一个数码管的7个段加dp小数点,一共8个,通过P0控制其亮灭使得数码管显示出不同效果.譬如亮afedcg表示的是6形状.位 ...

最新文章

  1. 华为腾讯百度众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!...
  2. Xamarin.iOS提供没有匹配的配置文件
  3. GeoEvent使用问题及解决方法整理
  4. spring boot中SpringBootCondition框架
  5. 如何修改linux的MAC地址
  6. mysql操作常用技巧
  7. Netapp日志出现auth.dc.trace.DCConnection.errorMsg:error报错
  8. 'tensorflow' has no attribute 'sub'
  9. 计算机一级学ug么,怎样才能学好UG从事电脑编程工作呢?进来看看必有收获!...
  10. 回乡偶记|从这个四省交界的苏北大城, 看二三线城市区块链现状
  11. 解决spring-data-jpa 级联添加时,主表放弃对外键维护时外键字段为null
  12. LSF COMMAND bhist
  13. SWOT分析法——进行项目管理的高效方法
  14. PC端实现浏览器点击分享到QQ好友,空间,微信,微博等
  15. 保护眼睛的颜色的各种色值,强力推荐!
  16. 乐视还有400多位员工?过着没有老板的神仙日子 官方出来回应了...
  17. 5 个免费练习黑客技术的网站
  18. 计算机管理员 职称,档案管理员职称分为哪几个等级
  19. 财务系统开发-知识储备
  20. Python - 操作txt文件

热门文章

  1. 微软Windows系统发展史
  2. Python中的True和False详解
  3. 8本入门级大数据经典图书,开启你的“深度学习” | 世界读书日
  4. 企业内网防火墙搭建实验
  5. ftp上传 防火墙的设置
  6. 超诡异的自杀案,有点坑爹
  7. 计算机基础及Java语法
  8. 基于javaweb的设备台账管理系统(java+ssm+html+jsp+js+mysql)
  9. 轻松解决网络广播风暴
  10. Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras