这份程序照着视频写的,还是实现不了程序,到底是出了什么问题啊!!!
---------------------主功能程序-------------------------#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)
{
}
} 到底是什么问题啊,我真的头都大了,:Q:Q:Q:Q 先用普中的例程测试一下硬件是否正常,能显示的话直接对照已有的代码就简单多了
页:
[1]