普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1231|回复: 2

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

[复制链接]

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 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)
        {

        }
}
回复

使用道具 举报

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2023-10-8 21:21:44 | 显示全部楼层
到底是什么问题啊,我真的头都大了,
回复 支持 反对

使用道具 举报

0

主题

10

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2023-10-9 16:56:37 | 显示全部楼层
先用普中的例程测试一下硬件是否正常,能显示的话直接对照已有的代码就简单多了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-29 14:13 , Processed in 0.089575 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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