⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yejing.c

📁 12864液晶显示驱动
💻 C
字号:
#include "reg51.h"
#define uchar unsigned char
#define LCD_Data P0	//DO-D7数据总线
#define Busy 0x80 	//用于检测LCM状态字中的Busy标识

sbit LCD_RS=P2^0;	//定义引脚
sbit LCD_RW=P2^1; 
sbit LCD_E=P2^2;
//sbit LCD_PS=P2^3;

uchar show[]="12864液晶测试程序0123456789ABCDEFGHIJKLMNOPQ";

/////////延时程序/////////
void delay(second)    	 //second=1时,延时5ms子程序
  unsigned char second;
    {
      unsigned char i,j,k;
      for(i=second;i>0;i--)
      for(j=20;j>0;j--)
      for(k=248;k>0;k--)  ;
    }

////////读状态////////
void ReadStatusLCD(void)
 {
  LCD_E=0; 		//使能 取消选择
  LCD_Data=0xFF; 	
  LCD_RS=0;		//instruction
  LCD_RW=1;		//read
  LCD_E=1;		//使能 选择
  while (LCD_Data&0x80); 	//检测忙信号
  LCD_E=0;
 }

////////写指令////////
void WriteCommandLCD(uchar Command,BuysC) //BuysC为0时忽略忙检测
  {
   LCD_E=0; 
   if (BuysC) ReadStatusLCD(); //根据需要检测忙
   LCD_RS=0;
   LCD_RW=0; 
   LCD_Data=Command;
   LCD_E=1;
   LCD_E=0;
  }

////////写数据////////
void WriteDataLCD(uchar Data,BuysC)
  {
   LCD_E=0; 
   if (BuysC) ReadStatusLCD(); //根据需要检测忙
   LCD_RS=1;
   LCD_RW=0;
   LCD_Data=Data;
   LCD_E=1;
   LCD_E=0;
  }

void LCDInit(void) //LCD初始化
  {
   WriteCommandLCD(0x01,1); //清除显示
   delay(1); 
   WriteCommandLCD(0x03,1); //地址归位
   delay(1);
   WriteCommandLCD(0x0f,1); //开显示
  //WriteCommandLCD(0x1c,1); //游标右移
   WriteCommandLCD(0x30,1); //基本指令集动作
  }

//显示一个汉字
void Display(uchar show[])
  {
   uchar *p,i=0;
   p=show;
   WriteCommandLCD(0x80,1);
   while(*p!='\0')
    {
     WriteDataLCD(*p++,1);
     i++;
     if(i==16)  WriteCommandLCD(0x90,1);
     else if(i==32)  WriteCommandLCD(0x88,1);
     else if(i==48)  WriteCommandLCD(0x98,1);
    }
  }

void main(void)
 {
  //LCD_PS=1;
  delay(8); //启动等待,等LCM讲入工作状态
  delay(8); //启动等待,等LCM讲入工作状态
  LCDInit(); //LCM初始化

  Display(show);
  delay(250);
  WriteCommandLCD(0xa7,1); 
  delay(250);
  while(1);
 }






⌨️ 快捷键说明

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