您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 第12讲-1602液晶显示及其应用
第十二讲LCD1602及其应用液晶图形点阵显示屏液晶字符显示屏液晶模块简介◆实物1602液晶模块及管脚介绍1602液晶模块简介1.LCD1602引脚分布字符型液晶是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可分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端由高电平跳变为低电平时,向液晶模块写;保持高电平时读模块。第7~14脚:D0~D7为8位双向数据线第15脚:BLA背光电源正极(接+5V)第16脚:BLK背光电源负极(接GND)◆液晶的指令集1602液晶模块的内部控制器共有11条指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。说明1为高电平,0为低电平)2.LCD1602指令集指令码功能00111000设置16×2显示,5×7点阵,8位数据接口(1)初始化设置①显示模式设置LCD_Write_Com(0x38);/*显示模式设置*/2.LCD1602指令集(1)初始化设置②显示开/关及光标设置指令码功能00001DCBD=1,开显示;D=0,关显示C=1,显示光标;C=0,不显示光标B=1,光标闪烁;B=0,光标不闪烁000001NSN=1,当读或写一个字节后地址指针加一,且光标加一N=0,当读或写一个字节后地址指针减一,且光标减一S=1,当写一个字符,整屏显示左移(N=1)或右移(N=0)S=0,当写一个字符,整屏显示不移动LCD_Write_Com(0x08);/*显示关闭*/LCD_Write_Com(0x06);/*显示光标移动设置*/LCD_Write_Com(0x0C);/*显示开及光标设置*/2.LCD1602指令集③指针设置指令码功能01H显示清屏:1.数据指针清零2.所有显示清零02H显示回车:数据指针清零2.LCD1602指令集(1)初始化设置LCD_Write_Com(0x01);/*显示清屏*///清屏函数voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*------------------------------------------------初始化函数------------------------------------------------*/voidLCD_Init(void){LCD_Write_Com(0x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);/*显示模式设置*/LCD_Write_Com(0x08);/*显示关闭*/LCD_Write_Com(0x01);/*显示清屏*/LCD_Write_Com(0x06);/*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C);/*显示开及光标设置*/}初始化函数示例2.LCD1602指令集(2)读控制器状态液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志。若为低电平,表示不忙,否则此指令失效。2.LCD1602指令集(2)读控制器状态读状态指令RS=0,RW=1,E=110RS数据命令R/W读写E10时,液晶模块写命令、写数据1:读状态字、读数据读出来的状态字的含义:只有D7表示是否允许读写每次对控制器进行读写之前都要进行读写检测,确保STA7=0/*------------------------------------------------判忙函数------------------------------------------------*/bitLCD_Check_Busy(void){DataPort=0xFF;RS_0_CMD;//命令操作RW_1_RD;//读操作EN_LOW;_nop_();EN_HIG;return(bit)(DataPort&0x80);//返回值1禁止读写,0允许读写}2.LCD1602指令集(2)读控制器状态读状态指令RS=0,RW=1,E=110RS数据命令R/W读写E10时,液晶模块写命令、写数据1:读状态字、读数据#defineRS_0_CMDRS=0#defineRS_1_DATRS=1#defineRW_0_WRRW=0#defineRW_1_RDRW=1#defineEN_LOWEN=0#defineEN_HIGEN=1/*------------------------------------------------写入命令函数------------------------------------------------*/voidLCD_Write_Com(unsignedcharcom){while(LCD_Check_Busy());//忙则等待RS_0_CMD;//命令RW_0_WR;//写EN_HIG;//EN=1DataPort=com;//命令字节_nop_();//等命令稳定EN_LOW;//EN=0}2.LCD1602指令集(3)写命令10RS数据命令R/W读写E10时,液晶模块写命令、写数据1:读状态字、读数据①数据指针设置控制器内部带有80×8位的RAM缓冲区,通过一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM。2.LCD1602指令集(4)数据控制以下地址为16进制2.LCD1602指令集(4)数据控制②读数据输入:RS=H,RW=H,E=H;输出:D0~D7=数据30单位:ns1504001010RS数据命令R/W读写E10时,液晶模块写命令、写数据1:读状态字、读数据③写数据输入:RS=H,RW=L,D0~D7=数据,E=高脉冲;2.LCD1602指令集(4)数据控制3015010RS数据命令R/W读写E10时,液晶模块写命令、写数据1:读状态字、读数据/*------------------------------------------------写入数据函数------------------------------------------------*/voidLCD_Write_Data(unsignedcharData){while(LCD_Check_Busy());//忙则等待RS_1_DAT;//数据RW_0_WR;//写EN_HIG;//EN=1DataPort=Data;//数据字节_nop_();//等数据稳定EN_LOW;//EN=0}③写数据输入:RS=H,RW=L,D0~D7=数据,E=高脉冲;2.LCD1602指令集(4)数据控制10RS数据命令R/W读写E10时,液晶模块写命令、写数据1:读状态字、读数据2.LCD1602指令集(4)数据控制数据读写数据时序参数⑤写入字符串控制器内部带有80×8位的RAM缓冲区,通过一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM。2.LCD1602指令集(4)数据控制以下地址为16进制⑤写入字符(串)2.LCD1602指令集(4)数据控制地址为16进制80H+0H80H+1H80H+2H80H+3H80H+4H80H+5H……80H+0FH80H+40H80H+41H80H+42H80H+43H80H+44H80H+45H……80H+4FH写RAM时的指令码,需+0x80(下面第一个表格可转换为第二个表格)80H+0H80H+1H80H+2H80H+3H80H+4H80H+5H……80H+0FHC0H+0HC0H+1HC0H+2HC0H+3HC0H+4HC0H+5H……C0H+0FH以下是字符的地址//写入字符函数,功能:向第y行的第x个位置写入字符Data//x表示第1行或第2行的第x的显示的字符//y为0表示第1行,为其它值表示第2行voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0){LCD_Write_Com(0x80+x);}else{LCD_Write_Com(0xC0+x);}LCD_Write_Data(Data);}要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。2.LCD1602指令集//写入字符串函数//x表示第y行的第x位置写入要显示的字符串,其指针为S//y为0表示第1行,为其它值表示第2行voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0){LCD_Write_Com(0x80+x);//表示第一行}else{LCD_Write_Com(0xC0+x);//表示第二行}while(*s)//字符串以0结尾{LCD_Write_Data(*s);s++;}}/*------------------------------------------------主函数------------------------------------------------*/voidmain(void){LCD_Init();LCD_Clear();//清屏,若不清屏,本次没更新的字符仍然显示while(1){LCD_Write_Char(7,0,‘o’);//第一行第7个字符显示oLCD_Write_Char(8,0,'k');//第一行第8个字符显示kLCD_Write_String(1,1,);//第二行从第1个字符起显示字符串(1);}}注意,显示字符为ASCII码:显示字母’a’,实际是其ASCII码:0x61显示数字时,也应写入其ASCII码,0的ASCII码是0x30,1的ASCII码是0x31,有一种方便的写法:比如显示9,可写成9+‘0’;设计:实现一个能显示时间、日期、温度液晶显示系统,如下图所示。直流电机•设计一个电机控制程序•一个按键表示/停止•三个按键表示低速、中速、高速•低速占空比20%,中速50%,高速80%
本文标题:第12讲-1602液晶显示及其应用
链接地址:https://www.777doc.com/doc-7176865 .html