设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 412|回复: 0
收起左侧

C51/STC12系列单片机 LCD1602液晶显示屏的驱动程序源码 实现显示字母与数字与特殊符号

[复制链接]
发表于 2023-1-17 09:28:44 | 显示全部楼层 |阅读模式
1602.png
  1. #include "STC12C5A60S2.h"                //根据单片机系列改头文件 晶振频率:12Mhz
  2. #include "intrins.h"
  3. #define u8 unsigned char
  4. #define u16 unsigned int
  5. #define u32 unsigned long

  6. #define Port P2
  7. sbit RS = P0 ^ 7;
  8. sbit RW = P0 ^ 6;
  9. sbit E = P0 ^ 5;

  10. u8 *lcd1602_text = "Hello World!2023 Happy New Year!";                //显示的字符 (固定32字节)


  11. void delay(u16 i){                //延时
  12.         while(i--);
  13. }

  14. bit lcd1602_busy(){                //查忙
  15.         bit ret;
  16.         RS = 0;delay(100);
  17.         RW = 1;delay(100);
  18.         E = 1;delay(100);
  19.         ret = (Port&0x80) ? 1 : 0;delay(100);
  20.         E = 0;delay(100);
  21.         return ret;
  22. }

  23. void lcd1602_com(u8 com){                //地址
  24.         while(lcd1602_busy());
  25.         RS = 0;delay(100);
  26.         E = 0;delay(100);
  27.         RW = 0;delay(100);
  28.         Port = com;delay(100);
  29.         E = 1;delay(100);
  30.         E = 0;delay(100);
  31. }

  32. void lcd1602_dat(u8 dat){                //数据
  33.         while(lcd1602_busy());
  34.         RS = 1;delay(100);
  35.         RW = 0;delay(100);
  36.         E = 0;delay(100);
  37.         Port = dat;delay(100);
  38.         E = 1;delay(100);
  39.         E = 0;delay(100);
  40. }
  41. void lcd1602_init(){                //初始化
  42.         lcd1602_com(0x38);delay(50);
  43.         lcd1602_com(0x38);delay(50);
  44.         lcd1602_com(0x38);delay(50);
  45.         lcd1602_com(0x0C);delay(50);
  46.         lcd1602_com(0x06);delay(50);
  47.         lcd1602_com(0x01);delay(50);
  48.         delay(600);
  49. }
  50. void main(){                //主函数
  51.         u8 i;
  52.         lcd1602_init();
  53.         lcd1602_com(0x80);
  54.         for(i=0;i<32;i++){
  55.                 if(i == 16) lcd1602_com(0xC0);
  56.                 lcd1602_dat(lcd1602_text[i]);
  57.         }
  58.         while(1);
  59. }
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-27 08:28 , Processed in 0.764044 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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