📄 lcd1602 液晶.txt
字号:
//function: 循环显示2行字符串,整屏左移;
//data: 2009 4.16
//E-->P1.7 R/W-->P1.6 RS-->P1.5
//D7-->P0.3 D6-->P0.2 D5-->P0.1 D4-->P0.0
//=================================头文件
#include <c8051f330.h>
#include <intrins.h>
//==================================宏命名
#define uchar unsigned char
#define uint unsigned int
//======================================定义变量
uchar num;
uchar code table[]="I am CJG!!!";
uchar code table1[]="a USST's student";
//================================ 定义常量
sbit LCM_RS = P1^5;
sbit LCM_RW = P1^6;
sbit LCM_E = P1^7;
//=============================子程序声明
void delay(uint z);
void init();
void write_data(uchar date);
void write_com(uchar com);
void left_str( );
void lcd_init();
//=============================//主程序
void main()
{
init();
lcd_init();
while(1)
{
left_str( );
}
}
//=============================//子程序
void init()
{
PCA0MD &= ~0x40;
XBR0=0x00;
XBR1=0x40;
P1MDIN |=0xee;
P1MDOUT |=0xee;
P0MDIN |=0x0f;
P0MDOUT |=0x0f;
}
void delay(uint z) //延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //写命令
{
delay(10);
LCM_RS=0;
LCM_RW=0 ;
LCM_E=0;
com = ((com&0x0f)<<4) | ((com&0xf0)>>4); //高低位转换
P0=(com&0x0f);
delay(5);
LCM_E=1;
delay(5); //延时0.5us
LCM_E=0;
com = com >>4; //高四位移到低四位
P0= com&0x0f; //写低四位
LCM_E = 1; delay(5); // Z=1,延时3.2us
LCM_E= 0; delay(5);
}
void write_data(uchar date)//写数据
{
delay(10);
LCM_RS=1;
LCM_RW=0 ;
LCM_E=0;
date = ((date&0x0f)<<4) | ((date&0xf0)>>4);
P0=(date&0x0f);
delay(5);
LCM_E=1;
delay(5);
LCM_E=0;
date = date >>4;
P0= date&0x0f;
LCM_E = 1; delay(5);
LCM_E = 0; delay(5);
}
void lcd_init() //lcd初始化
{
delay(10);
write_com(0x02); //function set
write_com(0x28); //4bit 2line frot
write_com(0x06); //Mode set 显示右移
write_com(0x0e); //开屏幕,开光标,不闪烁
write_com(0x01); //清屏
write_com(0x80+0x03); //指针
delay(5);
}
void left_str( )
{
write_com(0x80+0x13); //移动指针
//--------------------------------------
for (num=0;num<11;num++)
{
write_data(table[num]); //写字符串1
}
write_com(0x80+0x40+0x10);
//----------------------------------
for (num=0;num<16;num++)
{
write_data(table1[num]); //写字符串2
}
//------------------------------------
for(num=0;num<16;num++) //全屏左移
{
write_com(0x18);
delay(500);
}
delay(1000);
write_com(1); //清屏
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -