📄 text1.c
字号:
#include <reg51.h>
/*unsigned char table1[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心图案 */
unsigned char table1[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02, //"年"代码=00H
0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //"月"代码=01H
0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00, //"日"代码=02H
0x11,0x0A,0x04,0x1F,0x04,0x1F,0x04,0x00, //"$"代码=03H
0x0E,0x00,0x1F,0x0A,0x0A,0x0A,0x13,0x00, //"元"代码=04H
0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00, //"℃"代码=05H
0x04,0x0A,0x15,0x04,0x04,0x04,0x04,0x00, //"↑"代码=06H
0x17,0x15,0x15,0x15,0x15,0x15,0x17,0x00}; //字符℃
unsigned char table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};
#define CLEARSCREEN LCD_write_command(0x01)
/**************定义接口************************/
#define LCDIO P1
sbit LCD1602_RS=P3^4;
sbit LCD1602_RW=P3^5;
sbit LCD1602_EN=P3^6;
/**************定义函数************************/
void LCD_write_command(unsigned char command);//写入指令函数
void LCD_write_dat(unsigned char dat);//写入数据函数
void LCD_set_xy( unsigned char x, unsigned char y );//设置显示位置函数
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//显示一个字符函数
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s);//显示字符串函数
void LCD_init(void);//初始化函数
void delay_nms(unsigned int n);//延时函数
/********************************************/
/************初始化函数****************/
void LCD_init(void)
{
CLEARSCREEN;//clear screen
LCD_write_command(0x38);//set 8 bit data transmission mode
LCD_write_command(0x0c);//open display (enable lcd display)
LCD_write_command(0x80);//set lcd first display address
CLEARSCREEN;//clear screen
}
/****************************************************/
/**************写指令函数********************************/
void LCD_write_command(unsigned char command)
{
LCDIO=command;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
LCD1602_EN=1;
delay_nms(10);
}
/***************************************************/
/****************写数据函数************************/
void LCD_write_dat(unsigned char dat)
{
LCDIO=dat;
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
delay_nms(1);
LCD1602_EN=1;
}
/****************************************************/
/***************设置显示位置**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 1)
address = 0x80 + x;
else
address =0xc0+ x;
LCD_write_command(address);
}
/***************************************************/
/****************显示一个字符**********************/
void LCD_dsp_char( unsigned char x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y );
LCD_write_dat(dat);
}
/**********************************************/
/***************显示字符串函数***************/
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCD_write_dat(*s);
s ++;
}
}
/***********************************************/
/********** 延时**********************/
void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<10;j++);
}
/**************************************/
/***********主函数**************/
void main(void)
{
unsigned char i,j,k,tmp;
LCD_init();
delay_nms(100);
tmp=0x40;//设置CGRAM地址的格式字 CGRAM地址格式很复杂 01 000 000 01是固定的 左起第一个000是代码的大小,最后的000是个偏移量(存储每个代码数据的偏移量)
k=0;
for(j=0;j<8;j++) {
for(i=0;i<8;i++) {
LCD_write_command(tmp+i); // 设置自定义字符的 CGRAM 地址
delay_nms(2);
LCD_write_dat(table1[k]); // 向CGRAM写入自定义字符表的数据
k++;
delay_nms(2);
}
tmp=tmp+8; //写完00H的8个数据后,转入写01H的8个数据
}
LCD_dsp_string(1,1,"LCD TEST ");//
LCD_dsp_string(1,2,"SUCCESSFUL ");//
for (i=0;i<4;i++)
{
LCD_dsp_char( 12+i,1,i);//在第一行第12列位置显示心图案的上半部
delay_nms(1);
}
for (i=4;i<8;i++)
{
LCD_dsp_char( 12+i-4,2,i);//在第二行第12列位置显示心图案的下半部
delay_nms(1);
}
for(i=0;i<30;i++){
delay_nms(1000);
}
CLEARSCREEN;
LCD_dsp_string(0,1,"XIONGJIALE");
LCD_dsp_string(5,2,"ICEXIONG");
while (1);
}
/********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -