📄 main.c
字号:
#include <reg51.h>
#include <intrins.h>
#include <string.h>
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned int
#define _ERR_ 0xff
#define _SUCC_ 0xfe
sbit REDE = P3^4;
uchar rec;
void delay(uint t)
{
for(;t>0;t--);
}
void ldelay(uint t)
{
uint i = 100;
for(;i>0;i--)
for(;t>0;t--);
}
void Send_date(uchar *buf)
{
uchar len;
uchar ecc;
uchar i;
len = strlen(buf);
ecc = len;
REDE = 1;
TI = 0;
TB8 = 0;
SBUF = len;
while(!TI);
TI = 0;
for(i=0;i<len;i++)
{
ecc = ecc^(*buf);
TB8 = 0;
SBUF = *buf;
buf++;
while(!TI);
TI = 0;
}
TB8 = 0;
SBUF = ecc;
while(!TI);
TI = 0;
REDE = 0;
}
void Send_addr(uchar addr, uchar *buf)
{
uchar tmp = addr-1;
while(tmp != addr)
{
REDE = 1;
TI = 0;
TB8 = 1;
SBUF = addr;
while(!TI);
TI = 0;
REDE = 0;
RI = 0;
ldelay(1); //?????????????????????
while(!RI);
tmp = SBUF;
RI = 0;
}
tmp = _ERR_;
while(tmp != _SUCC_)
{
Send_date(buf);
REDE = 0;
RI = 0;
while(!RI);
tmp = SBUF;
RI = 0;
}
wdec(addr);
wstr("#OK ");
}
void init()
{
delay(10); //延时等待复位
wcmd(0x38); //设置为8总线16*2,5*7点阵
wcmd(0x01); //清屏幕
wcmd(0x06); //光标移动,显示区不移动
wcmd(0x0f); //开显示,光标闪烁
}
void main()
{
init();
wstr("zongj");
loc(2,1);
SCON=0x90;
PCON = 0x80;
ES=1;
EA=1;
REDE = 0;
Send_addr(0x01, "abcd");
Send_addr(0x02, "efgh");
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -