液晶显示"I LOVE YOU!"代码和电路图
1 #include <reg51.h>
2 #include <stdio.h>
3 #define uchar unsigned char
4 #define LCD P3
5 sbit RS = P2^0;
6 sbit RW = P2^1;
7 sbit E = P2^2;
8 uchar i;
9 void writecmd(uchar cmd){
10 RS = 0;//数据命令选择端 RS=0,选择命令,RS=1,选择数据
11 RW = 0;//读写选择端 RW=0,选择写操作,RW=0,选择读操作
12 for(i=0;i<200;i++);//延时,确保LCD空闲,在初始化函数(init)里,连续四行,LCD可能一下子处理不过来
13 E = 1; //使能信号端 高电平使能 也就是允许给LCD输入命令的意思
14 LCD = cmd;//给LCD写命令
15 E = 0; //使能信号端 高电平使能 使用完之后要拉低,拉低之后就不能给LCD写命令了
16 }
17 void writedata(uchar* d){
18 RS = 1;//数据命令选择端 RS=0,选择命令,RS=1,选择数据
19 RW = 0;//读写选择端 RW=0,选择写操作,RW=0,选择读操作
20 for(i=0;i<200;i++);//延时,确保LCD空闲
21 E = 1;//使能信号端 高电平使能 也就是允许给LCD输入数据的意思
22 LCD = *d;//给LCD写数据
23 E = 0;//使能信号端 高电平使能 使用完之后要拉低,拉低之后就不能给LCD写数据了
24 }
25 //定义一个字符串函数
26 void writestr(uchar * str){
27 //writestr("12312"),以双引号写数据的话,默认结束后会以\0结束,所以判断\0就可以知道是最后一个,然后停止指针地址的累加
28 while(*str != '\0'){
29 //把字符串放到指针str的地址里面
30 writedata(str);
31 //指针地址的累加
32 str++;
33 }
34 }
35 //LCD初始化
36 void init(){
37 RW = 0;//读写选择端 RW=0,选择写操作,RW=0,选择读操作
38 E= 0;
39 writecmd(0x38);
40 writecmd(0x0c);//开显示屏
41 writecmd(0x06);//读或写一个字符后地址指针加1
42 //writecmd(0x01);//清屏
43 }
44 //主函数
45 void main(void)
46 {
47 //uchar j;
48 //调用初始化函数
49 init();
50 //写命令,写地址
51 writecmd(0X80);
52 //小延时
53 for(i=0;i<20;i++);
54 //for(j=0;j<10;j++)
55 //写数据
56
57 //writedata("h12");
58 writestr("I LOVE YOU!");
59 }