📄 1602_c.c
字号:
///////////////////////////////////////////////////
//P2接1602的数据位
//1602第1行显示 " guangxi beihai"
// 第2行显示" subingen "
////////////////////////////////////////////////////
#include<reg51.h>
#include<intrins.h>//当需用_nop_()时,使用它
#define uchar unsigned char
uchar display1[16]={" guangxi beihai "};//要显示的数据
uchar display2[16]={" subingen "};
/******************************************************************
1602程序部分
数据总线接到p2口 用到1ms延时程序 <intrins.h>函数
*******************************************************************/
uchar command[]={0x38,0x38,0x38,0x38,0x08,0x01,0x06,0x0c}; /* P2=0x01;//清屏并光标复位
P2=00111000;//显示模式设置,8位总线,2行,5*7
P2=0x0c;//开显示。光标和闪烁
P2=0x06;//文字不动,光标自动右移
P2=0x80;//写入的起始位置,第1行第1列*/
sbit e=P3^7;
sbit rw=P3^6;
sbit rs=P3^0;
sbit busy=P2^7;
//init();//1602初始化
//dataw();//数据写入
//comw();//指令写入
//--------------------------延时程序-------------------------------
void delay(uchar i)
{ uchar a;
while(i--)
{for(a=0;a<=125;a++)
{;}
}
}
//--------------------查LCD是否忙程序-----------------------
void wait(void)
{ do
{ P2=0xff;
rs=0;//
rw=1;//
e=0;
_nop_();
_nop_();
e=1; }
while(busy==1);
}
//-------------------数据写入函数-------------------------
void dataw(uchar da)
{ wait();
rs=1;
rw=0;
e=1;
P2=da;
e=0;
}
//-------------------指令和显示地址写入子函数------------
void comw(uchar da)
{ wait();
rs=0;
rw=0;
e=1;
P2=da;
e=0;
}
//--------------------------初始化--------------------------------
void init(void)
{ uchar i;
delay(20);
e=1;
for(i=0;i<8;i++)
{comw(command[i]);
delay(5);
}
}
/****************************************************************************
主函数部分
*****************************************************************************/
main()
{ uchar i=0;
init();//初始化
comw(0x80);//写入第一行
for(i=0;i<16;i++)
dataw(display1[i]);//数据写入
comw(0xc0);//写第二行
for(i=0;i<16;i++)
dataw(display2[i]);//数据写入
while(1);
}
/*******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -