📄 lcd.c
字号:
#include "config.h"
#ifndef __AT89X51_H__
#include <reg51.h>
#endif
#include <stdio.h>
//extern disram[2][16];
//所有函数声明
void init_lcd (void);
void wr_lcd (uchar dat_comm,uchar content);
void chk_busy (void);
void chn_disp (uchar x0,uchar y0,uchar num,uchar code *chn);
//声明结束
void init_lcd (void) //初始化
{
wr_lcd (comm,0x38); //设置16*2模式 5*7点阵 8位并行
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
wr_lcd (comm,0x06); /*光标的移动方向 000001NS N=1 地址加1 S=1 整屏左移(N=1) */
wr_lcd (comm,0x0d); /*开显示,关游标 00001DCB D=1 开显 C=1显光标 B=1 闪烁 */
}
/*
char putchar(char c)
{ chk_busy ();
rs=1; //data
rw=0; //write
dateport=c; //output data or comm
e=1;
;
e=0;
return 1;
}
*/
void coordinate_1602(uchar x0,uchar y0)
{
uchar coordinate;
if (x0==1) coordinate=0x80+y0-1;
else if (x0==2) coordinate=0xc0+y0-1;
else
return;
wr_lcd (comm,coordinate);
}
void wr_lcd(uchar dat_comm,uchar content)//向LCD写入命令或数据,写命令参数为(comm,#)写数据为(dat,#)
{
chk_busy ();
if(dat_comm)
{
rs=1; //data
rw=0; //write
}
else
{
rs=0; //command
rw=0; //write
}
dateport=content; //output data or comm
e=1;
;
e=0;
}
void chk_busy (void)
{
dateport=0xff;
;
rs=0;
rw=1;
e =1;
while(busy==1);
e =0;
}
/*void refreshLCD(void)
{uchar i;
wr_lcd (comm,0x80);
for(i=0;i<16;i++)
wr_lcd (dat,disram[0][i]);
wr_lcd (comm,0x80);
for(i=0;i<16;i++)
wr_lcd (dat,disram[1][i]);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -