找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3442|回复: 1
打印 上一主题 下一主题
收起左侧

值的收藏的C51单片机LCD1602库文件

[复制链接]
跳转到指定楼层
楼主
ID:254411 发表于 2017-11-28 07:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  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. }


复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332269 发表于 2019-2-28 09:00 | 只看该作者
谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表