display.c

来自「应用案例」· C语言 代码 · 共 69 行

C
69
字号
#include <reg52.h>

#define comm  0
#define dat   1

sbit RS = P3^3;   //H=data; L=command;
sbit RW = P3^4;   //H=read; L=write;
sbit  E = P3^5;   //input enable;
sbit busy=P1^7;   //lcd busy bit

void chk_busy (void)
{
  P1=0xff;
  RS=0;
  RW=1;
  E =1;
  while(busy==1);
  E =0;
}

/*---------------------------------------*/
void write_lcd (unsigned char dat_comm,unsigned char content)
{
  chk_busy ();
  if(dat_comm)
    {
     RS=1;   RW=0;   //write data
    }
  else
    {
     RS=0;   RW=0;   //write command
    }
  P1=content;   //output data or comm
  E=1;
  E=0;
}


void clrram (void)
{
  write_lcd (comm,0x30);
  write_lcd (comm,0x01);
}


void init_lcd (void)
{
  write_lcd (comm,0x30);  /*30---基本指令动作*/
  write_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
  write_lcd (comm,0x06);  /*光标的移动方向*/
  write_lcd (comm,0x0c);  /*开显示,关游标*/
}


void line_disp (unsigned char lines , unsigned char *chn)
{ 
  unsigned char i;
  write_lcd (comm,0x30);
  switch (lines)
    {
	 case 0: write_lcd (comm,0x80);for (i=0;i<16;i++)write_lcd (dat,chn[i]);break;
     case 1: write_lcd (comm,0x90);for (i=0;i<16;i++)write_lcd (dat,chn[i]);break;
     case 2: write_lcd (comm,0x88);for (i=0;i<16;i++)write_lcd (dat,chn[i]);break;
     case 3: write_lcd (comm,0x98);for (i=0;i<16;i++)write_lcd (dat,chn[i]);break;
    }
}

		

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?