12864带字库操作步骤
答案:1 悬赏:70 手机版
解决时间 2021-04-17 12:31
- 提问者网友:寂寞梧桐
- 2021-04-16 22:20
12864带字库操作步骤
最佳答案
- 五星知识达人网友:迟山
- 2021-04-16 23:45
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P1 //数据口
sbit LCD_RS = P2^4; //选择寄存器(并行) 0 ;指令 1 :数据;
sbit LCD_RW = P2^3; //液晶读/写控制
sbit LCD_EN = P2^2; //读写数据启始脚(并行)
sbit LCD_PSB = P2^7; //串/并方式控制 0为串行模式,1 为并
sbit LCD_RST = P2^5; //复位 低电平有
uchar code dis1[] = {"一二三四 ,送 |"};
uchar code dis2[] = {"落日故人情。友李"};
uchar code dis3[] = {"挥手自兹去,人白"};
uchar code dis4[] = {"萧萧班马鸣。 | "};
void delay(uint k)
{
uint i;
uchar j;
for(i=0;i {
for(j=0;j<10;j++);
}
}
void delay_ms(unsigned int k)//延时0.994us,晶振12M
{
unsigned int x,y;
for(x=k;x>0;x--)
for(y=121;y>0;y--);
}
void ledzs()
{
led=0;
delay_ms(100);
led=1;
delay_ms(100);
}
void Read_busy()
{
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
while(P2&0x80);
LCD_EN=0;
}
void Lcdwcom(uchar wcom)
{
Read_busy(); //每次进行读忙标识 可以不加 最好加
delay(1); // 延时
LCD_RS=0; //指令 为底 数据为高
delay(1); // 延时
LCD_RW=0; //写为底 读为高
delay(1); // 延时
LCD_EN=1; //使能信号
delay(1); // 延时
LCD_data=wcom; //将指令写入并口
delay(1); // 延时
LCD_EN=0; // 关闭使能
}
void Lcdwdata(uchar wdata)
{
Read_busy();
delay(1);
LCD_RS=1; //指令 为底 数据为高
delay(1);
LCD_RW=0; //写为底 读为高
delay(1);
LCD_EN=1; //使能信号
delay(1);
LCD_data=wdata; //将数据写入并口
delay(1);
LCD_EN=0; // 关闭使能
}
void Set_Pos(uchar x,uchar y)
{
uchar i;
switch(x) //确定行号
{
case 0: i=0x80; break;
case 1: i=0x90; break;
case 2: i=0x88; break;
case 3: i=0x98; break;
default :break;
}
i=i+y; //确定列号
Lcdwcom(i);
}
void LCD_Init(void)
{
delay_ms(2);
LCD_RST=1;
LCD_RST=0;
LCD_RST=1;
LCD_PSB=1; //选择并口
Lcdwcom(0x30); //基本指令操作1 延时不同
delay(8);
Lcdwcom(0x30); //基本指令操作2
delay(5);
Lcdwcom(0x0c); //显示开光标
delay(5);
Lcdwcom(0x01); //清楚LCD显示内容
delay(5);
Lcdwcom(0x06); //光标的移动方向
delay(5);
}
void Display_String(uchar x1,uchar y1,uchar *string)
{
uchar i=0;
Set_Pos(x1,y1); //设定位置
while(string[i]!='\0')
{
Lcdwdata(string[i]);
i++;
}
}
void Display_Ascii(uchar x2,uchar y2,uchar ascii)
{
Set_Pos(x2,y2);
Lcdwdata(ascii);
}
void main()
{
uchar j=0;
LCD_Init();
Lcdwcom(0x01); //清楚LCD显示内容
Display_String(0,0,dis1);
Display_String(1,0,dis2);
Display_String(2,0,dis3);
Display_String(3,0,dis4);
while(1);
}追问要改变屏幕的字显示要在哪里修改追答只需要修改这四句话里面就可以,
uchar code dis1[] = {"一二三四 ,送 |"};
uchar code dis2[] = {"落日故人情。友李"};
uchar code dis3[] = {"挥手自兹去,人白"};
uchar code dis4[] = {"萧萧班马鸣。 | "};
#include
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P1 //数据口
sbit LCD_RS = P2^4; //选择寄存器(并行) 0 ;指令 1 :数据;
sbit LCD_RW = P2^3; //液晶读/写控制
sbit LCD_EN = P2^2; //读写数据启始脚(并行)
sbit LCD_PSB = P2^7; //串/并方式控制 0为串行模式,1 为并
sbit LCD_RST = P2^5; //复位 低电平有
uchar code dis1[] = {"一二三四 ,送 |"};
uchar code dis2[] = {"落日故人情。友李"};
uchar code dis3[] = {"挥手自兹去,人白"};
uchar code dis4[] = {"萧萧班马鸣。 | "};
void delay(uint k)
{
uint i;
uchar j;
for(i=0;i
for(j=0;j<10;j++);
}
}
void delay_ms(unsigned int k)//延时0.994us,晶振12M
{
unsigned int x,y;
for(x=k;x>0;x--)
for(y=121;y>0;y--);
}
void ledzs()
{
led=0;
delay_ms(100);
led=1;
delay_ms(100);
}
void Read_busy()
{
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
while(P2&0x80);
LCD_EN=0;
}
void Lcdwcom(uchar wcom)
{
Read_busy(); //每次进行读忙标识 可以不加 最好加
delay(1); // 延时
LCD_RS=0; //指令 为底 数据为高
delay(1); // 延时
LCD_RW=0; //写为底 读为高
delay(1); // 延时
LCD_EN=1; //使能信号
delay(1); // 延时
LCD_data=wcom; //将指令写入并口
delay(1); // 延时
LCD_EN=0; // 关闭使能
}
void Lcdwdata(uchar wdata)
{
Read_busy();
delay(1);
LCD_RS=1; //指令 为底 数据为高
delay(1);
LCD_RW=0; //写为底 读为高
delay(1);
LCD_EN=1; //使能信号
delay(1);
LCD_data=wdata; //将数据写入并口
delay(1);
LCD_EN=0; // 关闭使能
}
void Set_Pos(uchar x,uchar y)
{
uchar i;
switch(x) //确定行号
{
case 0: i=0x80; break;
case 1: i=0x90; break;
case 2: i=0x88; break;
case 3: i=0x98; break;
default :break;
}
i=i+y; //确定列号
Lcdwcom(i);
}
void LCD_Init(void)
{
delay_ms(2);
LCD_RST=1;
LCD_RST=0;
LCD_RST=1;
LCD_PSB=1; //选择并口
Lcdwcom(0x30); //基本指令操作1 延时不同
delay(8);
Lcdwcom(0x30); //基本指令操作2
delay(5);
Lcdwcom(0x0c); //显示开光标
delay(5);
Lcdwcom(0x01); //清楚LCD显示内容
delay(5);
Lcdwcom(0x06); //光标的移动方向
delay(5);
}
void Display_String(uchar x1,uchar y1,uchar *string)
{
uchar i=0;
Set_Pos(x1,y1); //设定位置
while(string[i]!='\0')
{
Lcdwdata(string[i]);
i++;
}
}
void Display_Ascii(uchar x2,uchar y2,uchar ascii)
{
Set_Pos(x2,y2);
Lcdwdata(ascii);
}
void main()
{
uchar j=0;
LCD_Init();
Lcdwcom(0x01); //清楚LCD显示内容
Display_String(0,0,dis1);
Display_String(1,0,dis2);
Display_String(2,0,dis3);
Display_String(3,0,dis4);
while(1);
}追问要改变屏幕的字显示要在哪里修改追答只需要修改这四句话里面就可以,
uchar code dis1[] = {"一二三四 ,送 |"};
uchar code dis2[] = {"落日故人情。友李"};
uchar code dis3[] = {"挥手自兹去,人白"};
uchar code dis4[] = {"萧萧班马鸣。 | "};
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯