标题: 值的收藏的C51单片机LCD1602库文件 [打印本页]

作者: qwe1818    时间: 2017-11-28 07:54
标题: 值的收藏的C51单片机LCD1602库文件

  1. /**********************************************************
  2.                             LCD1602 DRIVER

  3.    File Name:       LCD1602.H
  4. **********************************************************/

  5. #ifndef LCD_CHAR_1602_2009_6_28
  6. #define LCD_CHAR_1602_2009_6_28

  7. #include <AT89X52.H>                         //因使用了P2端口定义,所以添加此文件
  8. #include <intrins.h>
  9. sbit LcdRs                = P2^0;                //定义端口
  10. sbit LcdRw                = P2^1;
  11. sbit LcdEn                 = P2^2;
  12. sfr  DBPort                = 0x80;                //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.????

  13. /********************************************************
  14. 内部等待函数
  15. ********************************************************/
  16. unsigned char LCD_Wait(void);

  17. /*******************************************************
  18. ?LCD???????
  19. *******************************************************/
  20. #define LCD_COMMAND                        0      // Command
  21. #define LCD_DATA                           1      // Data
  22. #define LCD_CLEAR_SCREEN               0x01    // 清屏
  23. #define LCD_HOMING                     0x02      // 光标返回原点
  24. void LCD_Write(bit style, unsigned char input);

  25. /*****************************************************
  26. ??????
  27. *****************************************************/
  28. #define LCD_SHOW                              0x04    //显示开
  29. #define LCD_HIDE                              0x00    //显示关         

  30. #define LCD_CURSOR                          0x02         //显示光标
  31. #define LCD_NO_CURSOR                   0x00    //无光标                  

  32. #define LCD_FLASH                              0x01    //光标闪动
  33. #define LCD_NO_FLASH                       0x00    //光标不闪动

  34. void LCD_SetDisplay(unsigned char DisplayMode);

  35. /***************************************************
  36. ??????
  37. ***************************************************/
  38. #define LCD_AC_UP                              0x02
  39. #define LCD_AC_DOWN                        0x00      // default

  40. #define LCD_MOVE                                0x01      // 画面可平移
  41. #define LCD_NO_MOVE                         0x00      //default

  42. void LCD_SetInput(unsigned char InputMode);

  43. /***************************************************
  44. 初始化LCD
  45. ***************************************************/
  46. void LCD_Initial();

  47. /***********************************************
  48. 液晶字符输入位
  49. ************************************************/
  50. void GotoXY(unsigned char x, unsigned char y);

  51. /************************************************
  52. 将字符输出到液晶显示
  53. ************************************************/
  54. void Print(unsigned char *str);
  55. #endif

  56.          
  57. #include "LCD1602.H"

  58. /********************************************************
  59. 内部等待函数
  60. ********************************************************/
  61. unsigned char LCD_Wait(void)
  62. {
  63.         LcdRs=0;
  64.         LcdRw=1;        _nop_();
  65.         LcdEn=1;        _nop_();

  66.         LcdEn=0;
  67.         return DBPort;               
  68. }

  69. /*******************************************************
  70. 向LCD写入命令或数据
  71. *******************************************************/
  72. void LCD_Write(bit style, unsigned char input)
  73. {
  74.         LcdEn=0;
  75.         LcdRs=style;
  76.         LcdRw=0;                _nop_();
  77.         DBPort=input;        _nop_();//注意顺序
  78.         LcdEn=1;                _nop_();//注意顺序
  79.         LcdEn=0;                _nop_();
  80.         LCD_Wait();        
  81. }


  82. /*****************************************************
  83. 设置显示模式
  84. *****************************************************/
  85. void LCD_SetDisplay(unsigned char DisplayMode)
  86. {
  87.         LCD_Write(LCD_COMMAND, 0x08|DisplayMode);        
  88. }

  89. /***************************************************
  90. 设置输入模式
  91. ***************************************************/
  92. void LCD_SetInput(unsigned char InputMode)
  93. {
  94.         LCD_Write(LCD_COMMAND, 0x04|InputMode);
  95. }

  96. /***************************************************
  97. 初始化LCD
  98. ***************************************************/
  99. void LCD_Initial()
  100. {
  101.         LcdEn=0;
  102.         LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
  103.         LCD_Write(LCD_COMMAND,0x38);
  104.         LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示,无光标。
  105.         LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
  106.         LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC第曾,画面不动。
  107. }


  108. /***********************************************
  109. 液晶字符输入位置
  110. ************************************************/
  111. void GotoXY(unsigned char x, unsigned char y)
  112. {
  113.         if(y==0)
  114.                 LCD_Write(LCD_COMMAND,0x80|x);
  115.         if(y==1)
  116.                 LCD_Write(LCD_COMMAND,0x80|(x-0x40));
  117. }

  118. /************************************************
  119. 将字符输出到液晶
  120. ************************************************/
  121. void Print(unsigned char *str)
  122. {
  123.         while(*str!='\0')
  124.         {
  125.                 LCD_Write(LCD_DATA,*str);
  126.                 str++;
  127.         }
  128. }


复制代码

作者: 会飞的鱼1710    时间: 2019-2-28 09:00
谢谢





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1