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

📄 lcdok.c

📁 51单片机驱动SC1602液晶块的代码
💻 C
字号:
#include<reg51.h>
#include<string.h>
#include"lcd.h"
    unsigned char l;
    unsigned char m;
    unsigned char n;
    unsigned char tmp; 
void delay_ms(int k)/*delay 1ms*,11.0592Mhz*/
{
    int i,j;
    for(i=0;i<k;i++)
      for(j=0;j<121;j++);
}
unsigned char ReadStatusLCM(void)
{
   P1=0xff;
   LCM_RS=0;
   LCM_RW=1;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=1;
   while(P1&Busy);
   return P1;
}
unsigned char ReadDataLCM(void)
{
   LCM_RS=1;
   LCM_RW=1;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=1;
   return P1;
}

void WriteCommandLCM(unsigned char WCLCM,unsigned char BusyC)/*Instruction Register*/
{
      if(BusyC)
        ReadStatusLCM();
	  P1=WCLCM;
	  LCM_RS=0;
	  LCM_RW=0;
	  LCM_EN=0;
	  LCM_EN=0;
	  LCM_EN=0;
	  LCM_EN=0;
      LCM_EN=0;
	  LCM_EN=0;
	  LCM_EN=0;
      LCM_EN=0;
	  LCM_EN=0;
	  LCM_EN=0;
	  LCM_EN=1;
}
void WriteDataLCM(unsigned char WDLCM)
{
   ReadStatusLCM();
   P1=WDLCM;   
   LCM_RS=1;
   LCM_RW=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=0;
   LCM_EN=1;
}
void InitLcd(void)
{
   delay_ms(200);
   WriteCommandLCM(0x01,1);
   delay_ms(5);
   WriteCommandLCM(0x04,1);
   delay_ms(5);
   WriteCommandLCM(0x0c,1);
   delay_ms(5);
   WriteCommandLCM(0x14,1);
   delay_ms(5);
   WriteCommandLCM(0x3c,1);
   delay_ms(5);
   WriteCommandLCM(0x80,1);
   delay_ms(5); 
}
void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData)
{
   Y&=1;
   X&=15;
   if(Y)
    X|=0x40;
   X|=0x80;
   WriteCommandLCM(X,0);
   delay_ms(18);
   WriteDataLCM(DData);
   delay_ms(25);
}

void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData)
{
    unsigned char ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<=15)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++; 
        if(X==0x0F)
        {
           X=0;
	       Y=!Y;
        }
        delay_ms(100);
    } 
}

void main()
{
    
  unsigned char code str0[]="hello!Computer!Design By Palamer!This is my first LCD Programme!";
  InitLcd();
  delay_ms(200);
  DisplayListChar(0,0,str0);
  delay_ms(10);
  for(;;);
}

⌨️ 快捷键说明

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