赞
踩
介绍:LCD1602液晶显示屏是一种字符型液晶显示模块,可以显示ASCll码的标准字符和其他一些内置的特殊字符,还可以内置8个自定义字符。
显示容量:16✖2个字符,每个字符为5*7点阵或5*10点阵
一、引脚介绍:
VO:对比度调节电压
RS:数据 / 指令选择,1为数组,0为指令
RW:读 / 写选择,1为读,0为写
E:数据使能,下降沿执行命令
D0~D7:数据的输入 / 输出
A:背光灯电源正极
K:背光灯电源负极
二、存储器结构:D2RAM(数据显示区)和G2RAM、G2ROM(内置字模库)
D2RAM(数据显示区)
G2RAM、G2ROM(内置字模库)
三、LCD1602显示指令集
四、时序结构:
写指令/数据
读指令/数据
五、模块函数化集成使用:
代码:
- void LCD_WriteCommand(unsigned char Command) //写指令
- {
- LCD_RS=0;
- LCD_RW=0;
- // 指令 写
-
- LCD_DataPort=Command; //并口:可以直接发送8位
-
- LCD_E=1;
- LCD_Delay1ms();
- LCD_E=0;
- LCD_Delay1ms();
- }
代码:
- void LCD_WriteData(unsigned char Data) //写数据
- {
- LCD_RS=1;
- LCD_RW=0;
- //数据 写
-
- LCD_DataPort=Data; //并口:直接发送8位
-
- LCD_E=1;
- LCD_Delay1ms();
- LCD_E=0;
- LCD_Delay1ms();
- }
代码:
- /**
- * @brief LCD1602初始化
- * @param 无
- * @retval 无
- **/
-
- void LCD_Init()
- {
- LCD_WriteCommand(0x01); //清屏
- LCD_WriteCommand(0x0C); //显示开,光标关,闪烁开
- LCD_WriteCommand(0x06); //数据读,写操作后,AC自动+1,画面不动
- LCD_WriteCommand(0x38); //八位数据接口,两行显示,5✖7点阵
- }
代码:
- /**
- * @brief 确定显示的首位置
- * @param Line,Column
- * @retval 无
- **/
-
-
- void LCD_Cursor(unsigned char Line,Column) //位置函数
- {
- if(Line==1) //根据数据显示区的地址可以得出 行和列 的关系
- {
- LCD_WriteCommand(0x80|(Column-1));
-
- }else
- {
- LCD_WriteCommand(0x80|(Column-1)+0x40);
- }
- }
代码:
- /**
- * @brief 显示一个字符
- * @param Line,Column,Char
- * @retval 无
- **/
- void LCD_ShowChar(unsigned char Line,Column,char Char)
- {
-
- LCD_Cursor(Line,Column); //确定位置
- LCD_WriteData(Char); //发送字符
- }
代码:
- /**
- * @brief 显示一个字符串
- * @param Line,Column,*String
- * @retval 无
- **/
-
- void LCD_ShowString(unsigned char Line,Column,char *String)
- {
- char Strlen=strlen(String),i; //确定字符串长度
- LCD_Cursor(Line,Column); //确定首位置
- for(i=0;i<Strlen;i++)
- {
- LCD_WriteData(String[i]);
- }
-
- }
代码:
- /**
- * @brief 显示一个数字
- * @param Line,Column,Num,lenth
- * @retval 无
- **/
-
- void LCD_ShwoNum(unsigned char Line,Column,unsigned int Num,lenth)
- {
- char i;
- LCD_Cursor(Line,Column);
- for(i=lenth;i>0;i--)
- {
- LCD_WriteData(Num/(int)pow(10,i-1)%10+'0');
- }
- /*
- 345/100%10 -> 3
- 345/10%10 -> 4
- 345/1%10 -> 5
-
- */
-
- }
代码:
- /**
- * @brief 显示一个有符号的数字
- * @param Line,Column,Num,lenth
- * @retval 无
- **/
-
- void LCD_ShowSignedNum(unsigned char Line,Column,int Num,unsigned int lenth)
- {
- char i;
- if(Num>=0)
- {
- LCD_ShowChar(Line,Column,'+');
- }else
- {
- LCD_ShowChar(Line,Column,'-');
- Num=-Num;
- }
-
- for(i=lenth;i>0;i--)
- {
- LCD_WriteData(Num/(int)pow(10,i-1)%10+'0');
- }
-
- /*
- 345/100%10 -> 3
- 345/10%10 -> 4
- 345/1%10 -> 5
-
- */
-
- }
代码:
- /**
- * @brief 显示一个十六进制的数
- * @param Line,Column,Num,lenth
- * @retval 无
- **/
-
- void LCD_ShowHexnum(unsigned char Line,Column,unsigned int Num,lenth)
- {
- unsigned char i;
- unsigned char SingleNum;
- LCD_Cursor(Line,Column);
- for(i=lenth;i>0;i--)
- {
-
- SingleNum=((Num/(int)pow(16,i-1)%16));
-
- /*
- 345/16^2%16 -> 1
- 345/16%16 -> 5
- 345/1%16 -> 9
-
- */
-
- if(SingleNum<10) //根据ASCll码进行补码
- {
- LCD_WriteData('0'+SingleNum);
- }else
- {
- LCD_WriteData('A'+SingleNum-10);
- }
-
-
- }
- }
代码:
- /**
- * @brief 显示一个二进制数字
- * @param Line,Column,Num,lenth
- * @retval 无
- **/
-
- void LCD_BinNum(unsigned char Line,Column,unsigned int Num,lenth)
- {
- unsigned char i;
- LCD_Cursor(Line,Column);
- for(i=lenth;i>0;i--)
- {
-
- LCD_WriteData((Num/(int)pow(2,i-1)%2)+'0');
- /*
- 345/2^2%2 -> 101
- 345/2%2 -> 011
- 345/1%2 -> 001
-
- */
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。