📄 1602.c
字号:
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^7;
sbit RW=P3^6;
sbit EN=P3^5;
static void delay(uint j);
//************************
void initlcd(); /*LCD初始化*/
void writecom(uchar c);
void writedata(uchar c);
void showchar(uchar pos,uchar c); /*显示一个字符 pos为位置 范围0-31 c为字符*/
void showstring(uchar line,uchar *ptr);/*显示一行字符 line为行号 范围0,1 *ptr为首地址*/
void disp_1602(uchar line,uchar *add);/*显示一行数字line为行号 范围0,1 *add为首地址*/
code uchar disp1[16]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5};
code uchar disp2[]="ABCDEFGHIJKLMNOP";
//************************
void writecom(uchar c)
{ delay(100);
EN=0;
RS=0;
RW=0;
_nop_();
P0=c;
EN=1;
_nop_();
EN=0;
}
//*************************
void writedata(uchar c)
{ delay(100);
EN=0;
RS=1;
RW=0;
_nop_();
P0=c;
EN=1;
_nop_();
EN=0;
RS=1;
}
//*****************
void showchar(uchar pos,uchar c)
{ uchar p;
if(pos>=0x10)
p=pos+0xb0;
else
p=pos+0x80;
writecom(p);
writedata(c);
}
//****************************
void showstring(uchar line,char *ptr)
{ uchar l,i;
l=line<<4;
for(i=0;i<16;i++)
{showchar(l++,*(ptr+i));}
}
//***************************
void initlcd()
{
writecom(0x38);
writecom(0x38);
writecom(0x06);
writecom(0x0c);
writecom(0x01);
}
//*********************
void delay(uint j)
{
while(j--);
}
//***************************************
void disp_1602(uchar line,uchar *add)
{
uchar k;
for(k=0;k<16;k++)
showchar(16*line+k,*(add+k)+0x30);
}
//*************************
void delayms(uint j)
{
uchar i;
while(j--)
{
for(i=0;i<125;i++)
;
}
}
//************************
main()
{
delayms(1);
initlcd();
disp_1602(0,disp1);
showstring(1,disp2);
while(1)
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -