求LCD1602显示生日快乐四个汉字的程序,单片机用AT89S52的,谢啦~
答案:4 悬赏:50 手机版
解决时间 2021-03-06 09:57
- 提问者网友:风月客
- 2021-03-05 22:56
求LCD1602显示生日快乐四个汉字的程序,单片机用AT89S52的,谢啦~
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-03-05 23:37
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="Believe yourself!";
uchar code table2[]="Happybirthy to you!";
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^2;
void delay(uint ms)
{
uint n;
for(;ms>0;ms--)
for(n=124;n>0;n--);
}
void write_Instruction(uchar Instruction)
{
RS=0;
RW=0;
E=0;
P0=Instruction;
delay(5);
E=1;
delay(5);
E=0;
}
void write_Data(uchar Data)
{
RS=1;
RW=0;
E=0;
P0=Data;
delay(5);
E=1;
delay(5);
E=0;
}
void Init()
{
delay(15);
write_Instruction(0x38);
delay(5);
write_Instruction(0x38);
delay(5);
write_Instruction(0x38);
delay(5);
write_Instruction(0x38);
write_Instruction(0x38);
write_Instruction(0x08);
write_Instruction(0x01);
write_Instruction(0x06);
write_Instruction(0x0c);
}
void left_move()
{
uchar i;
for(i=0;i<16;i++)
{
write_Instruction(0x18);
delay(3000);
}
}
void main()
{
uchar i;
Init();
while(1)
{
write_Instruction(0x80);
for(i=0;i<16;i++)
{
write_Data(table1[i]);
delay(1);
}
write_Instruction(0x80+0x40);
for(i=0;i<19;i++)
{
write_Data(table2[i]);
delay(1);
}
left_move();
}
}
全部回答
- 1楼网友:持酒劝斜阳
- 2021-03-06 02:54
#define lcd_way 0x80 //状态字 #define lcd1602_h 1 //宏定义手册中出现的h的定义 #define lcd1602_l 0 //宏定义手册中出现的l的定义 #define lcd1602_dat 1 //数据 #define lcd1602_com 0 //命令 uchar lcd1602_readway()//读状态函数 由写入和读取函数调用 { uchar lcd1602_way; //状态字变量 lcd1602_data=0xff; //io口数据清除 lcd1602_rs = lcd1602_com; //数据/命令选择端(h/l) 命令 lcd1602_rw = lcd1602_h; //读/写选择端(h/l) lcd1602_e = lcd1602_h; //拉高使能信号开始接收状态 lcd1602_way = lcd1602_data; //读取状态 lcd1602_e = lcd1602_l; //拉低使能信号锁存数据 lcd1602_way = lcd1602_way&lcd_way;//取忙状态字 return(lcd1602_way); //返回状态字 } uchar lcd1602_num; //定义变量用来液晶无忙回答的退出死循环 lcd1602_num=255; //忙状态检测次数 while(lcd1602_readway()) //检查忙状态 {lcd1602_num--; //检测次数自减 if(lcd1602_num==0) //判断检测次数等于0 中文的程序 看着真别扭
- 2楼网友:底特律间谍
- 2021-03-06 01:23
太强悍了,1602可以显示汉字么?另外,1602是显示双排的,哪怕用符号来显示,也不可能完成生日快乐的正确显示,建议采用12832或者12864屏幕显示,要么就是采用1602显示英文“HAPPY BIRTHDAY TO YOU”倒是可以的。
- 3楼网友:山君与见山
- 2021-03-06 00:51
(因为你没有说想怎样显示‘生日快乐!’,所以我给你编写的是这些字向右循环移动,你也可以编写,闪烁的,循环左移的)
在LCD中,一次只能写入一个字符,所以,你先建立一个字符串数组:
unsigned char code string[]={"生日快乐!"}
然后再设置一个循环,从第一个数组元素开始写入LCD,直到写到字符串的结束标志‘\0’为止,程序如下:
unsigned char i;
i=0;
while(string[i]!='\0')
{
WriteData (string[i]);
i++;
delay (150);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯