你把跟lcd数据连接的一些外设都去掉程序的话
#include
#include
#define uint unsigned int
//这三个引脚参考资料
sbit LCD1602_EN=P2^7; //1602使能引脚
sbit LCD1602_RW=P2^6; //1602读写引脚
sbit LCD1602_RS=P2^5; //1602数据/命令选择引脚
/************************************ **********************************
*名称:LCD1602_delay()
*名称:LCD1602_delay()
p>*功能:延迟,延迟时间大概为5US。
* 输入:无
* 输出:无
********************* ****************************************************** /
void LCD1602_delay()
{
_nop_();
_nop_();
_nop_ ();
_nop_();
_nop_();
}
void LCD1602_Delay(uint i)
{
uint x,j;
for(j=0;j
for(x=0;x< =148;x++);
}
/************************************ **********************************
* 名称 : bit Busy(void)< /p>
* 功能 : 这是一个读状态函数,读取函数是否忙碌状态
* 输入 : 输入的命令值
* 输出 : 无< /p>
************************************************ **************************/
位忙(无效)
{ p>
位 busy_flag = 0;
LCD1602_RS = 0;
LCD1602_RW = 1;
LCD1602_EN = 1;
LCD1602_delay();
busy_flag = (bit)(P0 & 0x80);
LCD1602_EN = 0;
返回 busy_flag;
}
/******************************************** **************************
* 名称:LCD1602_wcmd(uchar del)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
************* ****************************************************** ********/
void LCD1602_wcmd(uchar del)
{
while(Busy());
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_delay();
P0 = del;< /p>
LCD1602_delay();
LCD1602_EN = 1;
LCD1602_delay();
LCD1602_EN = 0;
}
/******************************************** **************************
*名称:LCD1602_wdata(uchar del)
* 功能 : 1602 写数据函数
* 输入 : 需要写入 1602 的数据
* 输出 : 无
***** ****************************************************** **************/
void LCD1602_wdata(uchar del)
{
while(Busy()) ;
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_delay();
< p> P0 = del;LCD1602_delay();
LCD1602_EN = 1;
LCD1602_delay();
LCD1602_EN = 0;
}
/************************************ **********************************
* 名称:L1602_init()
* 功能 : 1602初始化,请参考1602的数据
* 输入 : 无
* 输出 : 无
***** ****************************************************** **************/
void LCD1602_init(void)
{
LCD1602_wcmd(0x38);// 设置16X2显示
LCD1602_wcmd(0x08);//关闭显示
LCD1602_wcmd(0x0c);//开显示
LCD1602_wcmd(0x0e);//开 显示显示头部
LCD1602_wcmd(0x0f);//开显示显示头部点亮
LCD1602_wcmd(0x06);//读取指针加一
LCD1602_wcmd (0x04);//读写指针减一
//LCD1602_wcmd(0x07);//写入整屏左移
//LCD1602_wcmd(0x05);//写 入整屏右移
LCD1602_wcmd(0x01);//清屏
//LCD1602_wcmd(0x80X10);
}
< p>/**************************************************** ********************** 名称:LCD1602_char(ucharhang,ucharlie,charsign)
* 功能:改变液晶中某位的值,如果要让第一行,第五个字符显示“b”,调用该函数如下
L1602_char(1,5,'b')
* 输入:行,列,需要输入1602的数据
* 输出:无
**************** ****************************************************** *****/
void LCD1602_char(ucharhang,ucharlie,charsign)
>{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
if(hang == 2) a = 0xc0;
p>
a = a + lie - 1;
LCD1602_wcmd(a);
LCD1602_wdata(sign);
}
< p>/**************************************************** ********************** 名称:LCD1602_string(ucharhang,ucharlie,uchar*p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
L1602_string(1,5,"ab cd ef;")
* 输入:行,列,需要输入1602的数据
* 输出:无
********* ****************************************************** ************/
void LCD1602_string(uchar Hang,uchar lie,uchar *p)
{
uchar a ,b=0;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
while(1)
{
LCD1602_wcmd(a++);
if((*p == '\0')||(b==16)) break;
b++;
LCD1602_wdata(*p );
p++;
}
}
/**************** ****************************************************** ***
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
************************************************ **************************/
void Main()
{ LCD1602_Delay(30); p>
LCD1602_Delay(30);
LCD1602_init();
LCD1602_string(1,1,"欢迎来到");
LCD1602_string(2,1,"MCU 世界");
LCD1602_char(1,1,'*');
LCD1602_char(1,16,'*');
while(1);
}
尝尝这个有用请给悲伤