第12讲1602液晶显示及其应用ppt课件.ppt
第十二讲,LCD1602及其应用,液晶图形点阵显示屏,液晶字符显示屏,液晶模块简介实物1602液晶模块及管脚介绍,1602液晶模块简介,1.LCD1602引脚分布,字符型液晶是一种用57点阵图形来显示字符的液晶显示器,根据显示的容量可分1行16个字、2行16个字、2行20个字等。LCD1602是2行16个字(英文数字),如图:第1脚:VSS为电源地,接GND。第2脚:VDD接5V正电源。第3脚:液晶显示偏压信号第4脚RS:数据/命令选择端(H/L)第5脚R/W:读/写选择端(H/L)第6脚E:E为使能信号,当E端由高电平跳变为低电平时,向液晶模块写;保持高电平时读模块。第714脚:D0D7为8位双向数据线第15脚:BLA背光电源正极(接+5V)第16脚:BLK背光电源负极(接GND),液晶的指令集 1602液晶模块的内部控制器共有11条指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。说明1为高电平,0为低电平),2.LCD1602指令集,(1)初始化设置,显示模式设置,LCD_Write_Com(0 x38);/*显示模式设置*/,2.LCD1602指令集,(1)初始化设置,显示开/关及光标设置,LCD_Write_Com(0 x08);/*显示关闭*/,LCD_Write_Com(0 x06);/*显示光标移动设置*/,LCD_Write_Com(0 x0C);/*显示开及光标设置*/,2.LCD1602指令集,指针设置,2.LCD1602指令集,(1)初始化设置,LCD_Write_Com(0 x01);/*显示清屏*/,/清屏函数void LCD_Clear(void)LCD_Write_Com(0 x01);DelayMs(5);,/*-初始化函数-*/void LCD_Init(void)LCD_Write_Com(0 x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0 x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0 x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0 x38);/*显示模式设置*/LCD_Write_Com(0 x08);/*显示关闭*/LCD_Write_Com(0 x01);/*显示清屏*/LCD_Write_Com(0 x06);/*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0 x0C);/*显示开及光标设置*/,初始化函数示例,2.LCD1602指令集,(2)读控制器状态,液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志。若为低电平,表示不忙,否则此指令失效。,2.LCD1602指令集,(2)读控制器状态,读状态指令,RS=0,RW=1,E=1,读出来的状态字的含义:只有D7表示是否允许读写,每次对控制器进行读写之前都要进行读写检测,确保STA7=0,/*-判忙函数-*/bit LCD_Check_Busy(void)DataPort=0 xFF;RS_0_CMD;/命令操作 RW_1_RD;/读操作 EN_LOW;_nop_();EN_HIG;return(bit)(DataPort/返回值1禁止读写,0允许读写,2.LCD1602指令集,(2)读控制器状态,读状态指令,RS=0,RW=1,E=1,#define RS_0_CMD RS=0#define RS_1_DAT RS=1#define RW_0_WR RW=0#define RW_1_RD RW=1#define EN_LOW EN=0#define EN_HIG EN=1,/*-写入命令函数-*/void LCD_Write_Com(unsigned char com)while(LCD_Check_Busy();/忙则等待 RS_0_CMD;/命令 RW_0_WR;/写 EN_HIG;/EN=1 DataPort=com;/命令字节 _nop_();/等命令稳定 EN_LOW;/EN=0,2.LCD1602指令集,(3)写命令,数据指针设置 控制器内部带有808位的RAM缓冲区,通过一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM。,2.LCD1602指令集,(4)数据控制,以下地址为16进制,2.LCD1602指令集,(4)数据控制,读数据 输入:RS=H,RW=H,E=H;输出:D0D7=数据,30,单位:ns,150,400,10,写数据 输入:RS=H,RW=L,D0D7=数据,E=高脉冲;,2.LCD1602指令集,(4)数据控制,30,150,/*-写入数据函数-*/void LCD_Write_Data(unsigned char Data)while(LCD_Check_Busy();/忙则等待 RS_1_DAT;/数据 RW_0_WR;/写 EN_HIG;/EN=1 DataPort=Data;/数据字节 _nop_();/等数据稳定 EN_LOW;/EN=0,写数据 输入:RS=H,RW=L,D0D7=数据,E=高脉冲;,2.LCD1602指令集,(4)数据控制,2.LCD1602指令集,(4)数据控制,数据读写数据时序参数,写入字符串 控制器内部带有808位的RAM缓冲区,通过一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM。,2.LCD1602指令集,(4)数据控制,以下地址为16进制,写入字符(串),2.LCD1602指令集,(4)数据控制,地址为16进制,写RAM时的指令码,需+0 x80(下面第一个表格可转换为第二个表格),以下是字符的地址,/写入字符函数,功能:向第y行的第x个位置写入字符Data/x表示第1行或第2行的第x的显示的字符/y为0表示第1行,为其它值表示第2行void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)if(y=0)LCD_Write_Com(0 x80+x);else LCD_Write_Com(0 xC0+x);LCD_Write_Data(Data);,要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。,2.LCD1602指令集,/写入字符串函数/x表示第y行的第x位置写入要显示的字符串,其指针为S/y为0表示第1行,为其它值表示第2行void LCD_Write_String(unsigned char x,unsigned char y,unsigned char*s)if(y=0)LCD_Write_Com(0 x80+x);/表示第一行 else LCD_Write_Com(0 xC0+x);/表示第二行 while(*s)/字符串以0结尾 LCD_Write_Data(*s);s+;,/*-主函数-*/void main(void)LCD_Init();LCD_Clear();/清屏,若不清屏,本次没更新的字符仍然显示while(1)LCD_Write_Char(7,0,o);/第一行第7个字符显示o LCD_Write_Char(8,0,k);/第一行第8个字符显示k LCD_Write_String(1,1,);/第二行从第1个字符起显示字符串 while(1);,注意,显示字符为ASCII码:显示字母a,实际是其ASCII码:0 x61显示数字时,也应写入其ASCII码,0的ASCII码是0 x30,1的ASCII码是0 x31,有一种方便的写法:比如显示9,可写成9+0;,设计:,实现一个能显示时间、日期、温度液晶显示系统,如下图所示。,直流电机,设计一个电机控制程序一个按键表示/停止三个按键表示低速、中速、高速低速占空比20%,中速50%,高速80%,