标题: 单片机LCD1602问题请教,为什么这个代码一直仿真不出来? [打印本页]

作者: szhuide    时间: 2022-2-22 23:50
标题: 单片机LCD1602问题请教,为什么这个代码一直仿真不出来?
#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);
}

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


作者: wc86110    时间: 2022-2-23 00:19
楼主的仿真图呢?还有代码也不全
作者: wulin    时间: 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);
}
作者: ByanouQ    时间: 2022-2-23 07:37
你忘了设置显示地址。
显示字符前应该有一行write_com(0x80);

作者: 文家小阿哥    时间: 2022-2-23 08:18
void write_com( u8 com) //写指令函数,里面的RW控制呢?
void write_data( u8 Data) //写数据,里面的RW控制呢?
void Init()  //代码不全,write_com(0x38);   一般需要增加延迟,还有就是要        写入(0x0c);                                                                                  //显示模式设置:显示开
作者: 文家小阿哥    时间: 2022-2-23 08:22
显示时候前怎么不写下行指令?
作者: 温xyz    时间: 2022-2-23 10:28
没有给1602写入显示地址。
作者: szhuide    时间: 2022-2-23 11:37
ByanouQ 发表于 2022-2-23 07:37
你忘了设置显示地址。
显示字符前应该有一行write_com(0x80);

谢谢,主函数字母也写错了
作者: szhuide    时间: 2022-2-23 11:38
wulin 发表于 2022-2-23 05:56
void mian()
void main()
{

非常感谢,完美解决问题
作者: szhuide    时间: 2022-2-23 11:38
wc86110 发表于 2022-2-23 00:19
楼主的仿真图呢?还有代码也不全

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1