找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2237|回复: 9
收起左侧

1602显示驱动程序函数封装,有需要的拿去

  [复制链接]
ID:281689 发表于 2018-2-2 13:08 | 显示全部楼层 |阅读模式
已经封装好的程序,使用起来非常方便
0.png
单片机源程序如下:
  1. /********************************************************************
  2. * 文件名  : 液晶1602显示.c
  3. * 描述    :  该程序实现了对液晶1602的控制。
  4. ***********************************************************************/
  5. #include <reg52.h>
  6. #include <intrins.h>
  7. #include "lcd1602.h"

  8. #define RS_CLR RS=0
  9. #define RS_SET RS=1
  10. #define RW_CLR RW=0
  11. #define RW_SET RW=1
  12. #define EN_CLR EN=0
  13. #define EN_SET EN=1

  14. //LCD 控制线接口
  15. sbit RS=P2^5;
  16. sbit RW=P2^4;
  17. sbit EN=P2^3;


  18. /******************************************************************/
  19. /*                   延时几微秒                               */
  20. /******************************************************************/
  21. void delay_us(unsigned int us)
  22. {
  23.     _nop_();
  24.     while(--us);
  25. }

  26. /******************************************************************/
  27. /*                 延时几毫秒                                */
  28. /******************************************************************/
  29. void delay_ms(unsigned long ms)
  30. {
  31.     unsigned char i, j;

  32.     do
  33.     {
  34.         _nop_();
  35.         _nop_();
  36.         _nop_();
  37.         i = 11;
  38.         j = 190;
  39.         do
  40.         {
  41.             while (--j);
  42.         }
  43.         while (--i);
  44.     }
  45.     while(--ms);
  46. }

  47. /******************************************************************/
  48. /*                   写一字节指令                                 */
  49. /******************************************************************/
  50. void LCD_write_com(unsigned char com)
  51. {
  52.     RW =0;
  53.     RS_CLR;
  54.     EN_SET;
  55.     P0 = com;
  56.     delay_us(5);
  57.     EN_CLR;
  58. }
  59. /******************************************************************/
  60. /*                   写一字节数据                                 */
  61. /******************************************************************/
  62. void LCD_write_data(unsigned char dat)
  63. {
  64.     RW =0;
  65.     RS_SET;
  66.     EN_SET;
  67.     P0 = dat;
  68.     delay_us(5);
  69.     EN_CLR;
  70. }
  71. /******************************************************************/
  72. /*                   清屏                                     */
  73. /******************************************************************/
  74. void LCD_clear(void)
  75. {
  76.     LCD_write_com(0x01);
  77.     delay_ms(5);
  78. }

  79. /******************************************************************/
  80. /*                   在指定位置写字符                             */
  81. /******************************************************************/
  82. void LCD_write_char(unsigned char x,unsigned char y,unsigned char dat)
  83. {
  84.     if (y == 0)
  85.     {
  86.         LCD_write_com(0x80 + x);
  87.     }
  88.     else
  89.     {
  90.         LCD_write_com(0xC0 + x);
  91.     }
  92.     LCD_write_data( dat);
  93. }


  94. /******************************************************************/
  95. /*             在指定位置写字符串                         */
  96. /******************************************************************/

  97. void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)
  98. {
  99.     if (y == 0)
  100.     {
  101.         LCD_write_com(0x80 + x);     //表示第一行
  102.     }
  103.     else
  104.     {
  105.         LCD_write_com(0xC0 + x);      //表示第二行
  106.     }
  107.     while (*s)                         //判断是否字符串的结尾
  108.     {
  109.         LCD_write_data( *s);    //显示当前字符
  110.         s ++;                             //字符串地址加1
  111.     }
  112. }

  113. /******************************************************************/
  114. /*                   lcd初始化                                   */
  115. /******************************************************************/
  116. void LCD_init(void)
  117. {
  118.     LCD_write_com(0x38);
  119.     delay_ms(5);
  120. ……………………

  121. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
1602.zip (1.37 KB, 下载次数: 33)

评分

参与人数 1黑币 +5 收起 理由
lei97 + 5 淡定

查看全部评分

回复

使用道具 举报

ID:269211 发表于 2018-2-12 15:48 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:237354 发表于 2018-2-12 17:05 来自手机 | 显示全部楼层
谢谢提供资料,收藏了
回复

使用道具 举报

ID:137736 发表于 2018-2-13 21:05 | 显示全部楼层
谢谢分享,收下了
回复

使用道具 举报

ID:283944 发表于 2018-2-15 15:30 来自手机 | 显示全部楼层
非常感谢,真是好东西
回复

使用道具 举报

ID:255376 发表于 2018-2-15 17:55 | 显示全部楼层
谢谢分享,学习了!
回复

使用道具 举报

ID:282144 发表于 2018-2-15 23:17 | 显示全部楼层
不错,谢谢楼主
回复

使用道具 举报

ID:282144 发表于 2018-2-15 23:18 | 显示全部楼层
谢谢分享,收下了
回复

使用道具 举报

ID:284302 发表于 2018-2-17 16:58 | 显示全部楼层
谢谢分享,研究研究!
回复

使用道具 举报

ID:358187 发表于 2018-6-26 08:30 | 显示全部楼层
啊,我需要
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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