标签:访问 读数 基本原理 play bsp har 四种 技术 src
————————————————————————————————————————————
LCD1602
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
引脚情况:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
基本操作时序:
状态 |
输入 |
输出 |
读状态 |
|
|
读数据 |
|
|
写指令 |
|
无 |
写数据 |
|
无 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RAM内部映射:80个字节
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
状态字说明://状态字反应了当前液晶屏的情况,当STA7为1时说明显示器正在忙碌状态,不可进行操作
p.s.原则上每次对控制器读写操作之前都必须进行读写检测,确保STA7=0,实际操作中由于单片机操作速度慢于液晶控制的反应速度,可以不进行读写检测而只进行简短的延时。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
数据指针设置:
用户可以通过以下的数据地址指针访问内部的80个字节RAM,用来设置数据地址
80H+地址码(0~27H,40~67H)
例:对第一个地址进行操作,0x80+0x01
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
其他指令码:
01H |
显示清屏(数据指针清零,所有显示清零) |
02H |
显示回车(数据指针清零) |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
初始化:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
读写操作时序:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
操作方式:
————————————————————————————————————————————
LCD1602使用实例:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
设计要求:
使用LCD1602显示两行字符,显示两行字,两个按键控制着显示或清屏
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
设计思路:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实现代码:
1 #include <reg52.h> 2 typedef unsigned char uchar; 3 sbit en = P3 ^ 4; 4 sbit rs = P3 ^ 5; 5 uchar code table1[] = 6 { 7 "SMC1602 0x01..." 8 }; 9 uchar code table2[] = 10 { 11 " Hugh Dong." 12 }; 13 void Delay(uchar m) 14 { 15 uchar i, j; 16 for (i = m; i > 0; --i) 17 for (j = 110; j > 0; --j); 18 } 19 /* 写数据 */ 20 void write_date(uchar date) 21 { 22 //参考写操作时序图 23 rs = 1; //RS高电平,写数据 24 P2 = date; //写入数据,对应时序图t_SP2数据建立 25 Delay(5); 26 en = 1; //打开使能,给E一个高脉冲,开始写入数据 27 Delay(5); 28 en = 0; //关闭使能,写入数据完成 29 } 30 /* 写指令 */ 31 void write_com(uchar com) 32 { 33 //基本原理同写数据 34 rs = 0; //RS低电平,写指令 35 P2 = com; 36 Delay(5); 37 en = 1; 38 Delay(5); 39 en = 0; 40 } 41 /* 初始化LCD */ 42 void Init() 43 { 44 en = 1; 45 write_com(0x38); //00111000 设置16*2显示,5*7点阵,8位数据接口 46 write_com(0x0E); //00001110 开显示,显示光标,不闪烁 47 write_com(0x06); //00000110 读写字符后地址指针+1,光标+1,屏幕不移动 48 write_com(0x01); //清屏 49 write_com(0x80 + 0x01); //设置数据地址指针从第一个开始 50 } 51 int main() 52 { 53 /* 初始化LCD */ 54 Init(); 55 Delay(100); 56 /* 初始化中断 */ 57 EA = 1; 58 EX0 = 1; 59 EX1 = 1; 60 /* 死循环 */ 61 while(1); 62 } 63 void Display()interrupt 0 using 1 64 { 65 uchar i; 66 for (i = 0; i < 16; ++i) //遍历逐个写入第一行数据 67 { 68 write_date(table1[i]); 69 Delay(20); 70 } 71 write_com(0x02); //换行 72 write_com(0x80 + 0x40); //数据地址指针指向第二行 73 for(i = 0; i < 16; ++i) //逐个遍历写入第二行数据 74 { 75 write_date(table2[i]); 76 Delay(20); 77 } 78 } 79 void Clear() interrupt 1 using 1 80 { 81 write_com(0x01); 82 }
标签:访问 读数 基本原理 play bsp har 四种 技术 src
原文地址:http://www.cnblogs.com/hughdong/p/6890337.html