将这个C51代码改为显示汉字“南信大欢迎你”: #include "reg52.h" #define uchar unsigned char #define uit unsigned int sbit RS=P2^6; sbit RW=P2^5; sbit E=P2^7; uchar code str1[]="WELCOME TO NUIST"; uchar code str2[]=" MENG FEI"; uchar sec=0; uchar con=0; void delay( uit ms ) { uit i,j; for(i=ms;i>0;i--) { for( j=110;j>0;j--); } } void w_com(uchar com) //写指令寄存器函数 { RS=0; //选择指令寄存器 RW=0; //写指令 E=1; P0=com; //指令代码从P0口输出 E=0; delay(1); } void w_dat(uchar dat) //写数据寄存器函数 { RS=1; //选择数据寄存器 RW=0; //写数据 E=1; P0=dat; //数据从P0口送出 E=0; delay(1); } void lcd_ini(void) //液晶屏初始化 { delay(1); w_com(0x38); delay(10); w_com(0x0c); delay(10); w_com(0x06); delay(10); w_com(0x01); delay(10); w_com(0x38); delay(10); } void main (void) { uchar i; lcd_ini(); w_com(0x80); for(i=0;str1[i]!='\0';i++) w_dat(str1[i]); while(1) { w_com(0xc0); for(i=0;str2[i]!='\0';i++) w_dat(str2[i]); while(1) {} } }
时间: 2023-12-05 22:03:51 浏览: 117
要显示汉字“南信大欢迎你”,需要先将要显示的文字转换成汉字的点阵码,然后通过写入液晶屏的数据寄存器来显示。以下是修改后的代码:
```
#include "reg52.h"
#define uchar unsigned char
#define uit unsigned int
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
uchar code hanzi[] = {
0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10, /* 南 */
0x10,0x10,0x10,0x10,0xFF,0x00,0x00,0x00, /* 信 */
0x40,0x20,0x10,0x08,0x04,0x03,0x00,0x00, /* 大 */
0x10,0x08,0x04,0x02,0xFF,0x00,0x00,0x00, /* 欢 */
0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10, /* 迎 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 空格 */
};
void delay(uit ms)
{
uit i,j;
for(i=ms;i>0;i--)
{
for(j=110;j>0;j--);
}
}
void w_com(uchar com)
{
RS=0;
RW=0;
E=1;
P0=com;
E=0;
delay(1);
}
void w_dat(uchar dat)
{
RS=1;
RW=0;
E=1;
P0=dat;
E=0;
delay(1);
}
void lcd_ini(void)
{
delay(1);
w_com(0x38);
delay(10);
w_com(0x0c);
delay(10);
w_com(0x06);
delay(10);
w_com(0x01);
delay(10);
w_com(0x38);
delay(10);
}
void main(void)
{
uchar i, j;
lcd_ini();
w_com(0x80);
for(i=0;i<6;i++) // 显示“南信大欢迎你”
{
for(j=0;j<8;j++)
{
w_dat(hanzi[i*8+j]);
}
}
while(1)
{
;
}
}
```
注意,此代码中的汉字点阵码是按照 GB2312 编码方式编写的。如果要显示其他汉字,需要将其转换成相应的点阵码。
阅读全文