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 + -
显示快捷键?