找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD1602显示初始化 为什么0x38命令要写很多遍?延时是为什么?

[复制链接]
跳转到指定楼层
楼主
ID:187249 发表于 2017-5-28 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LCD初始化程序我看到的两种形式:

  • void lcd_init()
  • {
  • lcd_wcmd(0x38);
  • DelayMs(5);
  • lcd_wcmd(0x38);
  • DelayMs(5);
  • lcd_wcmd(0x38);
  • DelayMs(5);
  • lcd_wcmd(0x38);    //8位数据,双行显示,5*7点阵
  • lcd_wcmd(0x08);    //显示关闭,无光标,光标不显示
  • lcd_wcmd(0x01);    //清显示
  • lcd_wcmd(0x06);    //光标右移
  • DelayMs(5);
  • lcd_wcmd(0x0c);    //开显示,有光标,光标闪烁
  • }



  • void lcd_init(void)        //LCD初始化设定
  • {
  •                 lcd_wcmd(0x38);        //设置显示格式为:16*2行显示,5*7点阵,8位数据接口
  •                 delay(1);
  •                 lcd_wcmd(0x0c);//0x0f--显示开关设置,显示光标并闪烁
  •                 delay(1);
  •                 lcd_wcmd(0x06);//0x06--读写后指针加1
  •                 delay(1);
  •                 lcd_wcmd(0x01);        // 清除LCD显示内容
第二个程序中的延时:
  • void delay(uchar ms)
  • {
  •         uchar i;
  •                 while(ms--)
  •                         {
  •                                 for(i=0;i<120;i++);
  •                         }
  • }


请问这两种初始化程序有什么不同,第一个程序中为什么0x38命令要写很多遍?初始化程序中加延时是为什么?谢谢大家!(程序都是在论坛中一个大神半年前上传的,怕联系不到先在这里问问大家。)


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

使用道具 举报

沙发
ID:155507 发表于 2017-5-29 07:16 | 只看该作者
1602有时反映不过来, 为了保险吧。。。。三次两次都行
写多少次不是单片机或者C语言决定的,是由液晶屏的资料决定的,液晶屏内部也有一个MCU控制,它的操作指令是出厂就定好了的,不同厂家的屏它的指令也可能会不一样。

初始化时需要加点延时,
是 时序图 没读到位 就认为延时没必要 在时序上 时间观念比较强

你说的每送数据后,是每送一个BIT ,还是一个BYTE ,还是整个数据包,?如果是每个数据包后要延时 ,那看你的LCD 要求的了,是否收一个数据包后要延时才可以收第二个,本来这个延时是不合理的了,也不应该的了。你可以把延时去掉看看,结果是如何,在具体分析一下,为什么这样的了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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