罗洛 发表于 2023-10-8 21:20:51

这份程序照着视频写的,还是实现不了程序,到底是出了什么问题啊!!!

---------------------主功能程序-------------------------
#include "LCD1602.h"

void delay( int time)
{ while (time--);
}
void delay_ms( int ms)
{
        int i,j;
        for(i=ms;i>0;i--)
        {
        for(j=110;j>0;j--);
        }
}
void LCD_write_cmd(char cmd)//写命令程序
{       
        LCD_RS=0;
    LCD_WR=0;
        LCD_E=0;
        LCD_DATA=cmd;
        delay_ms(1);
        LCD_E=1;
        delay_ms(1);
        LCD_E=0;
}
void LCD_write_data(char dat)//写数据程序
{       
        LCD_RS=1;
    LCD_WR=0;
        LCD_E=0;
        LCD_DATA=dat;
        delay_ms(1);
        LCD_E=1;
        delay_ms(1);
        LCD_E=0;
}


void LCD_INIT()
{
LCD_write_cmd(0x38);
LCD_write_cmd(0x0c);
LCD_write_cmd(0x06);                                                                                                                                                                                                                                                       
LCD_write_cmd(0x01);
}

void LCD_clear(void)
{
LCD_write_cmd(0x01);
}
                                  


void LCD_show_string(char x,char y,char *str)//x,y指定地址,str写入数据(使用指针是方便修改)
{        
          char i=0;
          if(y>1||x>15)return;
          if(y<1)//第一行
          {
                  while(*str!='\0')
                {       
                        if(i<16-x)
                        {       
                                LCD_write_cmd(0x80+x+i);
                                       
                        }
                        else
                        {
                                LCD_write_cmd(0x40+0x80+x+i-16);
                               
                        }
                        LCD_write_data(*str);
                        str++;
                        i++;       
                }
          }
          else//第二行
          {
                  while(*str!='\0')
                {       
                        if(i<16-x)
                        {
                                LCD_write_cmd(0x80+0x40+i+x);
                                       
                        }
                        else
                        {
                                LCD_write_cmd(0x80+i+x-16);
                               
                        }
                        LCD_write_data(*str);
                        str++;
                        i++;               
                }
          }
}


---------------------主功能程序头文件-------------------------
#ifndef _LCD1602_H
#define _LCD1602_H

#include <REGX51.H>



void delay( int time);
void delay_ms( int ms);

sbit LCD_RS=P2^6;
sbit LCD_WR=P2^5;
sbit LCD_E=P2^7;
#define LCD_DATA P0
void LCD_show_string1(int i,char ch);
void LCD_show_string(char x,char y,char* str);
void LCD_write_data(char dat);
void LCD_write_cmd(char cmd);
void LCD_INIT(void);
void LCD_clear(void);

#endif


----------------------main程序---------------------------
#include "lcd1602.h"
void mian ()
{
        LCD_INIT();
        LCD_show_string(0,0,"Hello World!");//第一行显示
        LCD_show_string(0,1,"0123456789");//第二行显示
        while(1)
        {

        }
}

罗洛 发表于 2023-10-8 21:21:44

到底是什么问题啊,我真的头都大了,:Q:Q:Q:Q

蓝鹏 发表于 2023-10-9 16:56:37

先用普中的例程测试一下硬件是否正常,能显示的话直接对照已有的代码就简单多了
页: [1]
查看完整版本: 这份程序照着视频写的,还是实现不了程序,到底是出了什么问题啊!!!