📄 lcd1602.c
字号:
#include <REG51.H>
#include<absacc.h>
#include <stdio.h>
#include <STRING.H>
#include <MATH.H>
#define DB P0
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
////延时函数//////////
void msec(unsigned int x)
{
uchar j;
while(x--)
{
for (j=0;j<125;j++)
{;}
}
}
//液晶配置函数
void configure(uchar com) //com配置参数,初始化时需要配置若干次
{
uchar m;
RS=0;
RW=1;
do
{
DB=0x0ff;
E=1;
m=DB;
E=0;
m=m&0x80;
}
while (m==0x80);
RW=0;
DB=com;
E=1;
E=0;
}
void LcdIni()
{
DB=0x30;
RS=0;
RW=0;
msec(0x15);
DB=0x38;
E=1;
E=0;
configure(0x01);
configure(0x0c);
configure(0x06);
}
//显示函数
void printchar(uchar row,uchar col, buf )
{
uchar cod;
uchar m;
cod=0x80;
if(row==1) cod=cod+0x40;
if(row==2) cod=cod+0x14;
if(row==3) cod=cod+0x54;
cod=cod+col;
//cod=0x80 + 0x10 * row + col/2;
configure(cod);
RS=0;
RW=1;
do
{
DB=0x0ff;
E=1;
m=DB;
E=0;
m=m&0x80;
}
while (m==0x80);
RS=1;
RW=0;
DB=buf;
E=1;
E=0;
}
//-------------
void print(uchar row,uchar col,char * buf,uchar len )
{
uchar i;
uchar cod;
uchar m;
cod=0x80;
if(row==1) cod=cod+0x40;
if(row==2) cod=cod+0x14;
if(row==3) cod=cod+0x54;
cod=cod+col;
//cod=0x80 + 0x10 * row + col/2;
configure(cod);
for(i=0;i<len;i++)
{
RS=0;
RW=1;
do
{
DB=0x0ff;
E=1;
m=DB;
E=0;
m=m&0x80;
}
while (m==0x80);
RS=1;
RW=0;
DB=buf[i];
E=1;
E=0;
//msec(0x10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -