51单片机控制的 不带字库的12864 液晶显示系统编程实现以下显示内容: a. 第一行居中显示“南阳理工学院”; b. 第二行居中显示“www.nyist.edu.cn”; c. 第三行居中显示“电子信息工程专业”; d. 第四行居中显示尚春芳
时间: 2023-12-23 15:01:57 浏览: 71
以下是可以实现该显示内容的代码:
```
#include <reg51.h>
#define LCD_DB P0
sbit RS = P2^6;
sbit RW = P2^5;
sbit E = P2^7;
void delay(int time) // 延时函数
{
int i, j;
for(i = 0; i < time; i++)
for(j = 0; j < 120; j++);
}
void write_command(unsigned char command) // 写指令函数
{
RS = 0;
RW = 0;
LCD_DB = command;
E = 1;
delay(1);
E = 0;
}
void write_data(unsigned char data) // 写数据函数
{
RS = 1;
RW = 0;
LCD_DB = data;
E = 1;
delay(1);
E = 0;
}
void init_lcd() // 初始化液晶屏函数
{
write_command(0x38); // 8位数据总线,双行显示,5x7点阵字符
write_command(0x0c); // 显示开,光标不显示,光标闪烁不显示
write_command(0x06); // 光标右移,字符不移动
write_command(0x01); // 清屏
}
void display_string(unsigned char x, unsigned char y, unsigned char *s) // 在指定位置显示字符串函数
{
unsigned char i;
if(x < 16)
{
x |= 0x80;
switch(y)
{
case 0:
y = 0x80;
break;
case 1:
y = 0x90;
break;
case 2:
y = 0x88;
break;
case 3:
y = 0x98;
break;
}
write_command(y);
delay(5);
write_command(x);
delay(5);
for(i = 0; s[i] != '\0'; i++)
{
write_data(s[i]);
delay(5);
}
}
}
void main()
{
init_lcd(); // 初始化液晶屏
display_string(4, 0, "南阳理工学院"); // 第一行居中显示“南阳理工学院”
display_string(3, 1, "www.nyist.edu.cn"); // 第二行居中显示“www.nyist.edu.cn”
display_string(4, 2, "电子信息工程专业"); // 第三行居中显示“电子信息工程专业”
display_string(4, 3, "尚春芳"); // 第四行居中显示尚春芳
while(1);
}
```
需要注意的是,该代码假设你已经连接好了单片机和液晶屏,并将液晶屏的数据线接到了单片机的P0口,将液晶屏的控制线RS、RW、E分别接到了单片机的P2.6、P2.5、P2.7口。如果你的连接方式不同,需要修改代码中对应的引脚定义。另外,该代码使用的是汇编延时,如果你使用的是C语言编写,需要自行修改延时函数。
阅读全文