📄 lcd1602 8
字号:
//LCD1602 8线并口通信源程序
//LCD 1602采用8线并口通信,连接方式是DB0-DB7接P1.0-P1.7;RS:P2.7;RW:P2.6
//EN:P2.5;注意初始化的设置。
/*******************************************************************
/* 模块功能: 显示内容: SME OF DUT
/* Fenyman
creat by:
Date:
Corporation:
Version V1.1
Copyright(C)
All rigths reserved
/*******************************************************************/
#include <reg52.h>
#define LCDIO P1
sbit LCD1602_RS=P2^7;
sbit LCD1602_RW=P2^6;
sbit LCD1602_EN=P2^5;
/********************************************************************/
void LCD_delay(void);
void LCD_en_command(unsigned char command);
void LCD_en_dat(unsigned char temp);
void LCD_set_xy( unsigned char x, unsigned char y );
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_init(void);
/********************************************************************/
void delay_nms(unsigned int n);
/********************************************************************/
void main(void)
{
LCD_init();
while(TRUE )
{
CLEARSCREEN;
delay_nms(2);
LCD_write_string(0,0," njut.edu.cn ");
LCD_write_string(0,1," 2007.10.30 ");
delay_nms(200);
CLEARSCREEN;
delay_nms(2);
LCD_write_string(0,0," thank you! ");
LCD_write_string(0,1," 2007.10.31 ");
delay_nms(200);
}
}
/********************************************************************/
/******************** LCD PART *************************************/
void LCD_delay(void)
{
unsigned char i;
for(i=40;i>0;i--)
;
}
/********************************************************************/
void LCD_en_command(unsigned char command)
{
LCDIO=command;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
LCD_delay();
LCD1602_EN=1;
}
/********************************************************************/
void LCD_en_dat(unsigned char dat)
{
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
LCD_delay();
LCDIO=dat;
LCD1602_EN=1;
}
/********************************************************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 0)
address = 0x80 + x;
else
address = 0xC0 + x;
LCD_en_command(address);
}
/********************************************************************/
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y );
LCD_en_dat(dat);
}
/********************************************************************/
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCDIO=*s;
LCD_en_dat(*s);
s++;
}
}
/********************************************************************/
void LCD_init(void)
{
LCD_en_command(0x01);
delay_nms(5);
LCD_en_command(0x38);
delay_nms(5);
LCD_en_command(0x38);
delay_nms(5);
LCD_en_command(0x38);
delay_nms(5);
LCD_en_command(0xC0);
delay_nms(5);
LCD_en_command(0x80);
delay_nms(5);
LCD_en_command(0x01);
delay_nms(5);
}
/********************************************************************/
void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<1140;j++);
}
/********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -