当前位置:   article > 正文

LCD1602液晶显示屏

lcd1602

介绍: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显示指令集

四、时序结构:

                                                                写指令/数据

 

 

                                                               读指令/数据

五、模块函数化集成使用:

 代码:

  1. void LCD_WriteCommand(unsigned char Command) //写指令
  2. {
  3. LCD_RS=0;
  4. LCD_RW=0;
  5. // 指令 写
  6. LCD_DataPort=Command; //并口:可以直接发送8位
  7. LCD_E=1;
  8. LCD_Delay1ms();
  9. LCD_E=0;
  10. LCD_Delay1ms();
  11. }

代码:

  1. void LCD_WriteData(unsigned char Data) //写数据
  2. {
  3. LCD_RS=1;
  4. LCD_RW=0;
  5. //数据 写
  6. LCD_DataPort=Data; //并口:直接发送8位
  7. LCD_E=1;
  8. LCD_Delay1ms();
  9. LCD_E=0;
  10. LCD_Delay1ms();
  11. }

代码:

  1. /**
  2. * @brief LCD1602初始化
  3. * @param 无
  4. * @retval 无
  5. **/
  6. void LCD_Init()
  7. {
  8. LCD_WriteCommand(0x01); //清屏
  9. LCD_WriteCommand(0x0C); //显示开,光标关,闪烁开
  10. LCD_WriteCommand(0x06); //数据读,写操作后,AC自动+1,画面不动
  11. LCD_WriteCommand(0x38); //八位数据接口,两行显示,5✖7点阵
  12. }

代码:

  1. /**
  2. * @brief 确定显示的首位置
  3. * @param Line,Column
  4. * @retval 无
  5. **/
  6. void LCD_Cursor(unsigned char Line,Column) //位置函数
  7. {
  8. if(Line==1) //根据数据显示区的地址可以得出 行和列 的关系
  9. {
  10. LCD_WriteCommand(0x80|(Column-1));
  11. }else
  12. {
  13. LCD_WriteCommand(0x80|(Column-1)+0x40);
  14. }
  15. }

代码:

  1. /**
  2. * @brief 显示一个字符
  3. * @param Line,Column,Char
  4. * @retval 无
  5. **/
  6. void LCD_ShowChar(unsigned char Line,Column,char Char)
  7. {
  8. LCD_Cursor(Line,Column); //确定位置
  9. LCD_WriteData(Char); //发送字符
  10. }

代码:

  1. /**
  2. * @brief 显示一个字符串
  3. * @param Line,Column,*String
  4. * @retval 无
  5. **/
  6. void LCD_ShowString(unsigned char Line,Column,char *String)
  7. {
  8. char Strlen=strlen(String),i; //确定字符串长度
  9. LCD_Cursor(Line,Column); //确定首位置
  10. for(i=0;i<Strlen;i++)
  11. {
  12. LCD_WriteData(String[i]);
  13. }
  14. }

代码:

  1. /**
  2. * @brief 显示一个数字
  3. * @param Line,Column,Num,lenth
  4. * @retval 无
  5. **/
  6. void LCD_ShwoNum(unsigned char Line,Column,unsigned int Num,lenth)
  7. {
  8. char i;
  9. LCD_Cursor(Line,Column);
  10. for(i=lenth;i>0;i--)
  11. {
  12. LCD_WriteData(Num/(int)pow(10,i-1)%10+'0');
  13. }
  14. /*
  15. 345/100%10 -> 3
  16. 345/10%10 -> 4
  17. 345/1%10 -> 5
  18. */
  19. }

代码:

  1. /**
  2. * @brief 显示一个有符号的数字
  3. * @param Line,Column,Num,lenth
  4. * @retval 无
  5. **/
  6. void LCD_ShowSignedNum(unsigned char Line,Column,int Num,unsigned int lenth)
  7. {
  8. char i;
  9. if(Num>=0)
  10. {
  11. LCD_ShowChar(Line,Column,'+');
  12. }else
  13. {
  14. LCD_ShowChar(Line,Column,'-');
  15. Num=-Num;
  16. }
  17. for(i=lenth;i>0;i--)
  18. {
  19. LCD_WriteData(Num/(int)pow(10,i-1)%10+'0');
  20. }
  21. /*
  22. 345/100%10 -> 3
  23. 345/10%10 -> 4
  24. 345/1%10 -> 5
  25. */
  26. }

代码:

  1. /**
  2. * @brief 显示一个十六进制的数
  3. * @param Line,Column,Num,lenth
  4. * @retval 无
  5. **/
  6. void LCD_ShowHexnum(unsigned char Line,Column,unsigned int Num,lenth)
  7. {
  8. unsigned char i;
  9. unsigned char SingleNum;
  10. LCD_Cursor(Line,Column);
  11. for(i=lenth;i>0;i--)
  12. {
  13. SingleNum=((Num/(int)pow(16,i-1)%16));
  14. /*
  15. 345/16^2%16 -> 1
  16. 345/16%16 -> 5
  17. 345/1%16 -> 9
  18. */
  19. if(SingleNum<10) //根据ASCll码进行补码
  20. {
  21. LCD_WriteData('0'+SingleNum);
  22. }else
  23. {
  24. LCD_WriteData('A'+SingleNum-10);
  25. }
  26. }
  27. }

代码:

  1. /**
  2. * @brief 显示一个二进制数字
  3. * @param Line,Column,Num,lenth
  4. * @retval 无
  5. **/
  6. void LCD_BinNum(unsigned char Line,Column,unsigned int Num,lenth)
  7. {
  8. unsigned char i;
  9. LCD_Cursor(Line,Column);
  10. for(i=lenth;i>0;i--)
  11. {
  12. LCD_WriteData((Num/(int)pow(2,i-1)%2)+'0');
  13. /*
  14. 345/2^2%2 -> 101
  15. 345/2%2 -> 011
  16. 345/1%2 -> 001
  17. */
  18. }
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/501854
推荐阅读
相关标签
  

闽ICP备14008679号