lcd12864.c
来自「stc15单片机测试程序V1.0版」· C语言 代码 · 共 128 行
C
128 行
#include "STC15F2K.h"
#include <intrins.h>
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#define nop(); {_nop_();_nop_();_nop_();_nop_();};
#define DataPort P0 //定义P0口为LCD通讯端口
sbit RS=P4^5; //数据/命令端
sbit RW=P5^5; //读/写选择端
sbit E=P5^4;
sbit RST=P4^4;
sbit PSB=P4^1;
sbit Busy=DataPort^7;
void lcd_busy(void)
{
DataPort=0xff;
RS=0;
RW=1;
E=1;
while(Busy==1);
E=0;
}
void lcd_com(uchar com)
{
lcd_busy();
RS=0;
RW=0;
DataPort=com;
E=1;
nop();
E=0;
}
void lcd_dat(uchar dat)
{
lcd_busy();
RS=1;
RW=0;
DataPort=dat;
E=1;
nop();
E=0;
}
void lcd_init(void)
{
RST=1;
PSB=1;
lcd_com(0x30); /*30---基本指令动作*/
lcd_com(0x01); /*清屏,地址指针指向00H*/
lcd_com(0x06); /*光标的移动方向*/
lcd_com(0x0c); /*开显示,关游标*/
}
void lcd_disp(uchar y,uchar *str) //向第y行 写入字符串
{
uchar i;
switch(y)
{
case 0:y=0x80;break;
case 1:y=0x90;break;
case 2:y=0x88;break;
case 3:y=0x98;break;
}
lcd_com(0x30);
lcd_com(y);
for(i=0;i<16;i++)
{
lcd_dat(*str);
str++;
}
}
/*lcd_img 此函数可以与for函数组合画图*/
/*
void lcd_img(uchar y,uchar x,uchar dat1,uchar dat2)
{
lcd_com(0x34);
lcd_com(0x80+y);
lcd_com(0x80+x);
lcd_com(0x30);
lcd_dat(dat1);
lcd_dat(dat2);
lcd_com(0x36);
} */
void lcd_imgclr() //清除屏幕画点。
{
uchar x,y;
for(y=0;y<0x20;y++)
{
for(x=0;x<0x10;x++)
{
lcd_com(0x34);
lcd_com(0x80+y);
lcd_com(0x80+x);
lcd_com(0x30);
lcd_dat(0x00);
lcd_dat(0x00);
}
}
lcd_com(0x36);
}
void lcd_rec(uchar y,uchar x,uchar num,uchar dat)
{
uchar i,j;
x=y>1?(x+8):x;
y=y%2?0x10:0x00;
for(j=0;j<num;j++)
{
for(i=0;i<16;i++)
{
lcd_com(0x34);
lcd_com(0x80+y+i);
lcd_com(0x80+x+j);
lcd_com(0x30);
lcd_dat(dat);
lcd_dat(dat);
}
}
lcd_com(0x36);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?