📄 lcd4.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define START 0xf8 //数据传输起始位
sbit sid=P2^6; //定义串行数据位为P2.6
sbit sclk=P2^5; //定义串行时钟位为P2.5
sbit rs=P2^7; //定义RS位为p2.7
uchar com,hdata,ldata; //命令和数据
uchar idata s_1234[]={0x31,0x32,0x33,0x34,0x00}; //待显示字符
uchar t1=1; //延时1ms
uchar t2=40; //延时40ms
//函数说明
void init_lcd(void); //初始化液晶
void write(uchar a); //写入命令或数据
void disp_1234(uchar x,uchar idata *s); //显示1234
void send(uchar b); //串行数据发送
void wait(uchar t); //延时程序
//主函数
void main()
{ rs=1;
init_lcd();
disp_1234(0x80,s_1234);
}
void init_lcd(void)
{ wait(t2); //延时等待内部复位
com=0x30; write(com); //使用8位控制界面
com=0x30; write(com); //使用基本指令集
com=0x0c; write(com); //整体显示开
wait(t1);
com=0x01; write(com); //清屏
wait(t2);
com=0x06; write(com); //显示右移
wait(t1);
}
void write(a)
uchar a;
{ hdata=a&0xf0; //将高四位送至hdata单元
ldata=(a&0x0f)<<4; //将低四位送至ldata单元
send(START); //发送启始字节
wait(t1);
send(hdata); //发送高四位
wait(t1);
send(ldata); //发送低四位
wait(t1);
}
void disp_1234(x,s)
uchar x; //显示位置
uchar idata *s; //显示的字符串
{ uchar i=0;
write(START);
write(x);
while(s[i]!=0x00)
{ write(s[i]);
i++;
}
}
void send(b)
uchar b;
{ uchar j;
for(j=0;j<8;j++) //发送8位
{ sid=b>=0x80; //从高到低逐位发送
b<<=1;
sclk=0; //产生同步时钟
sclk=1;
}
}
void wait(t)
uchar t; //延时t毫秒
{ uchar k;
while(t--)
{ for(k=0;k<125;k++) //延时约1秒
{;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -