51单片机控制的 12864 液晶显示系统编程实现以下显示内容: a. 第一行居中显示“南阳理工学院”; b. 第二行居中显示“www.nyist.edu.cn”; c. 第三行居中显示“电子信息工程专业”; d. 第四行居中显示尚春芳
时间: 2023-12-22 16:06:43 浏览: 112
以下是51单片机控制的12864液晶显示系统编程实现所需的代码:
```
#include <reg51.h>
#include <intrins.h>
#define LCD_DB P0
sbit LCD_RS = P2^6; // RS信号
sbit LCD_RW = P2^5; // RW信号
sbit LCD_E = P2^7; // E信号
sbit LCD_CS1 = P2^0; // CS1信号
sbit LCD_CS2 = P2^1; // CS2信号
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void write_com(unsigned char com) // 写命令函数
{
LCD_RS = 0;
LCD_RW = 0;
LCD_DB = com;
LCD_E = 1;
_nop_();
_nop_();
LCD_E = 0;
}
void write_data(unsigned char dat) // 写数据函数
{
LCD_RS = 1;
LCD_RW = 0;
LCD_DB = dat;
LCD_E = 1;
_nop_();
_nop_();
LCD_E = 0;
}
void init_lcd() // 初始化函数
{
write_com(0xc0); // 设置显示模式
write_com(0x3f); // 允许显示
write_com(0x40); // 设置起始地址
write_com(0xb8); // 设置页地址
write_com(0xc0); // 设置列地址
write_com(0x40); // 设置起始地址
write_com(0xb8); // 设置页地址
write_com(0xc0); // 设置列地址
}
void display_string(unsigned char x, unsigned char y, unsigned char *s) // 显示字符串函数
{
unsigned char i;
if(y == 0) // 第一行居中显示“南阳理工学院”
{
write_com(0xb8 + x);
write_com(0x40);
}
else if(y == 1) // 第二行居中显示“www.nyist.edu.cn”
{
write_com(0xb8 + x);
write_com(0x48);
}
else if(y == 2) // 第三行居中显示“电子信息工程专业”
{
write_com(0xb8 + x);
write_com(0x50);
}
else if(y == 3) // 第四行居中显示尚春芳
{
write_com(0xb8 + x);
write_com(0x58);
}
for(i = 0; s[i] != '\0'; i++)
{
write_data(s[i]);
}
}
void main()
{
init_lcd(); // 初始化LCD
display_string(18, 0, "南阳理工学院"); // 显示第一行
display_string(16, 1, "www.nyist.edu.cn"); // 显示第二行
display_string(16, 2, "电子信息工程专业"); // 显示第三行
display_string(22, 3, "尚春芳"); // 显示第四行
while(1);
}
```
以上代码实现了你提出的要求,第一行居中显示“南阳理工学院”,第二行居中显示“www.nyist.edu.cn”,第三行居中显示“电子信息工程专业”,第四行居中显示尚春芳。
阅读全文