📄 1602.c
字号:
#include<reg51.h>
#include <intrins.h>
/*-------------------------------------*/
//LCD数据控制口定义
/*-------------------------------------*/
#define LCD_DATA P0 //LCD的数据口
sbit LCD_BUSY=LCD_DATA^7; //LCD忙型号位
sbit LCD_RS=P3^0; //LCD积存器选择
sbit LCD_RW=P3^1; //LCD读写控制
sbit LCD_EN=P3^2; //LCD使能信号
/*-------------------------------------*/
#define LCD_GO_HOME 0X02 //光标复位,光标返回到地址00H
//输入方式设置
#define LCD_AC_AUTO_INCREASEMENT 0X06 //数据读写操作后,AC自动增一
#define LCD_AC_AUTO_DECREASEMENT 0x04 // 减一
#define LCD_MOVE_ENABLE 0X05 //数据读写操作后,画面平移
#define LCD_MOVE_DISABLE 0X04 // 不动
//设置显示,光标及闪烁开关
#define LCD_DISPLAY_ON 0X0C //显示开
#define LCD_DISPLAY_OFF 0X08 //显示关
#define LCD_CURSOR_ON 0X0A //光标显示
#define LCD_CURSOR_OFF 0X08 //光标不显示
#define LCD_CURSOR_BLINK_ON 0X09 //光标闪烁
#define LCD_CURSOR_BLINK_OFF 0XO8 //光标不闪烁
//光标,画面移动,不影响DDRAM
#define LCD_LEFT_MOVE 0X18 //LCD显示左移一位
#define LCD_RIGHT_MOVE 0X1C //LCD显示右移一位
#define LCD_CURSOR_LEFT_MOVE 0X10 //光标左移一位
#define LCD_CURSOR_RIGHT_MOVE 0X14 // 右
//工作方式设置
#define LCD_DISPLAY_DOUBLE_LINE 0X38 //两行显示
#define LCD_DISPLAY_SIGLE_LINE 0X30 //一行显示
void LCD_write_data(unsigned char);
void LCD_inital(void);
void LCD_set_position(unsigned char);
void LCD_printc(unsigned char);
void LCD_prints(unsigned char *);
//========================================================================
//延时程序
void TimeDelay(int Time)
{
int i;
while(Time > 0)
{
for(i = 0;i < 800;i++)
{
_nop_();
}
Time --;
}
}
/*------------------------------------------*/
void LCD_check_busy(void)
{
while(1)
{
LCD_EN=0;
LCD_RS=0;
LCD_RW=1;
LCD_DATA=0XFF;
LCD_EN=1;
if(!LCD_BUSY)break;
}
LCD_EN=0;
}
/*----------可以不要--------------------------------*/
void LCD_cls(void)
{
LCD_check_busy();
LCD_RS=0;
LCD_RW=0;
LCD_DATA=1;
LCD_EN=1;
LCD_EN=0;
}
/*------------------------------------------*/
void LCD_write_instruction(unsigned char LCD_instruction)
{
LCD_check_busy();
LCD_RS=0;
LCD_RW=0;
LCD_EN=1;
LCD_DATA=LCD_instruction;
LCD_EN=0;
}
/*------------------------------------------*/
void LCD_write_data(unsigned char LCD_data)
{
LCD_check_busy();
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
LCD_DATA=LCD_data;
LCD_EN=0;
}
/*------------------------------------------*/
void LCD_set_position(unsigned char x)
{
LCD_write_instruction(0x80+x);
}
/*------------------------------------------*/
void LCD_go_home(void)
{
LCD_write_instruction(LCD_GO_HOME);
}
/*------------------------------------------*/
void LCD_printc (unsigned char LCD_data)
{
LCD_write_data(LCD_data);
}
/*------------------------------------------*/
void LCD_prints (unsigned char *lcd_string)
{
unsigned char i=0;
while(lcd_string[i]!=0x00)
{
LCD_write_data(lcd_string[i]);
i++;
}
}
/*------------------------------------------*/
void LCD_inital(void)
{
LCD_write_instruction(LCD_AC_AUTO_INCREASEMENT|LCD_MOVE_DISABLE);
LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF);
LCD_write_instruction(LCD_DISPLAY_DOUBLE_LINE);
// LCD_cls();
}
/*------------------------------------------*/
void main()
{
LCD_inital();
LCD_set_position(0);
LCD_prints(" Ilove you,xiao zhu!Do you know?1234567");
LCD_set_position(0x40);
LCD_prints(" You love me ?");
while(1)
{
LCD_write_instruction(LCD_RIGHT_MOVE);
TimeDelay(20);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -