找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机LCD1602问题请教,为什么这个代码一直仿真不出来?

[复制链接]
跳转到指定楼层
楼主
ID:1005963 发表于 2022-2-22 23:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <REGX52.H>
#include "delay.h"
#define u8 unsigned char
#define u16 unsigned int
sbit lcdrs=P3^5;
sbit lcden=P3^4;
u8 table[]="I LOVE YOU";
void write_com( u8 com)  
{
                                        lcdrs=0;
                                        lcden=0;
                                        P0=com;
                                        delay(5);
                                        lcden=1;
                                        delay(5);
                                        lcden=0;
}
void write_data( u8 Data)  
{
              lcdrs=1;
                                        lcden=0;
                                        P0=Data;
                                        delay(5);
                                        lcden=1;
                                        delay(5);
                                        lcden=0;
}
void Init()            
{
                                                 lcden=0;      
                                                write_com(0x38);   
                                                write_com(0x0f);
                                                write_com(0x06);
                                                write_com(0x01);
}

void mian()
{
      u8 show;
          Init();
          for(show=0;show<10;show++)
                   write_data(table[show]);
          delay(5);
      while(1);
}

为什么这个代码一直仿真不出来
请前辈赐教
谢谢

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

使用道具 举报

沙发
ID:96682 发表于 2022-2-23 00:19 来自手机 | 只看该作者
楼主的仿真图呢?还有代码也不全
回复

使用道具 举报

板凳
ID:213173 发表于 2022-2-23 05:56 | 只看该作者
void mian()
void main()
{
        u8 show;
        Init();
        write_com(0x80);
        for(show=0;show<10;show++)
        write_data(table[show]);
        delay(5);
        while(1);
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:480510 发表于 2022-2-23 07:37 | 只看该作者
你忘了设置显示地址。
显示字符前应该有一行write_com(0x80);
回复

使用道具 举报

5#
ID:1006306 发表于 2022-2-23 08:18 | 只看该作者
void write_com( u8 com) //写指令函数,里面的RW控制呢?
void write_data( u8 Data) //写数据,里面的RW控制呢?
void Init()  //代码不全,write_com(0x38);   一般需要增加延迟,还有就是要        写入(0x0c);                                                                                  //显示模式设置:显示开
回复

使用道具 举报

6#
ID:1006306 发表于 2022-2-23 08:22 | 只看该作者
显示时候前怎么不写下行指令?
回复

使用道具 举报

7#
ID:8222 发表于 2022-2-23 10:28 | 只看该作者
没有给1602写入显示地址。
回复

使用道具 举报

8#
ID:1005963 发表于 2022-2-23 11:37 | 只看该作者
ByanouQ 发表于 2022-2-23 07:37
你忘了设置显示地址。
显示字符前应该有一行write_com(0x80);

谢谢,主函数字母也写错了
回复

使用道具 举报

9#
ID:1005963 发表于 2022-2-23 11:38 | 只看该作者
wulin 发表于 2022-2-23 05:56
void mian()
void main()
{

非常感谢,完美解决问题
回复

使用道具 举报

10#
ID:1005963 发表于 2022-2-23 11:38 | 只看该作者
wc86110 发表于 2022-2-23 00:19
楼主的仿真图呢?还有代码也不全

仿真图没问题,少了delay的代码,主要是主函数写错了,谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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