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

📄 lcd_0802.c

📁 一个能够直接编译使用的0802液晶驱动程序。具体物理连接网络上可以搜到。
💻 C
字号:
/*
*   Copyright (c) 2005, nuaa
*   All rights reserved.
*
*   lirui
*   v1.0
*   2005.8.10
*
**/


#include<reg52.h>
#include<string.h>

#define uint unsigned int
#define uchar unsigned char
#define Data P2
#define LCDLEN 16//显示屏最大显示数
#define LINELEN 8//每行最大显示数

sbit D0 = P2^0;
sbit D1 = P2^1;
sbit D2 = P2^2;
sbit D3 = P2^3;
sbit D4 = P2^4;
sbit D5 = P2^5;
sbit D6 = P2^6;
sbit D7 = P2^7;
sbit LcdE = P0^0;//使能信号控制
sbit LcdRW = P0^1;//读写信号控制
sbit LcdRS = P0^2;//寄存器选择信号

void SysInit(void);//系统初始化

void LcdInit(void);//显示屏初始化

void LcdSet(int imod);//显示屏功能设定

void LcdShMod(int ishmod);//显示模式设定

void LcdSrClr(void);//清屏

void LcdSrOn(void);//开显示屏

void LcdSrOff(void);//关显示屏

void LcdWrite(uint lwcode);//写数据寄存器

void LcdAdrWrt(uint addr);//写地址数据

void LcdLineCh(void);//转行显示

void LcdShowStr(char Digit[], int refspeed);//显示字符串,当字符串过长将报错。

void Delay(int time);//延时

void ComSend(void);//指令发送

void main(void)
{
     uint i=0;
     uint ishow = 0x31;

     SysInit();
     LcdInit();
     LcdShowStr("Date:", 3000);
     Delay(30000);
     LcdLineCh();
     LcdShowStr("05-8-10", 30000);
     for (;;);

}

void LcdInit(void)
{
     Delay(1000);
     LcdSet(0x38);
     Delay(400);
     LcdSet(0x38);
     Delay(80);
     LcdSet(0x38);
     Delay(20);

     LcdSet(0x38);
     LcdSrOff();
     LcdSrClr();
     LcdShMod(0x6);
     LcdSrOn();
}

void LcdSet(int imod)
{
     Data = imod;
     ComSend();
}

void LcdSrClr(void)
{
     Data = 0x1;
     ComSend();
}

void LcdSrOn(void)
{
     Data = 0xf;
     ComSend();
}

void LcdSrOff(void)
{
     Data = 0x8;
     ComSend();
}

void LcdShMod(int ishmod)
{
     Data = ishmod;
     ComSend();
}

void LcdWrite(uint lwcode)
{
     LcdRS = 1;
     Data = lwcode;
     ComSend();
     LcdRS =0;
     Delay(10);
}

void LcdAdrWrt(uint addr)
{
     Data = addr;
     ComSend();
}

void LcdLineCh(void)
{
     LcdAdrWrt(0xc0);
}

void LcdShowStr(char Digit[], int refspeed)
{
      int i=0;
      int istrlen=0;
      istrlen = strlen(Digit);
      if (istrlen > 16)
      {
         LcdShowStr("Erro!!", 300);
      }
      else
      {
         for (i=0; i<istrlen; i++)
         {
              if (i == LINELEN)
              {
                  LcdLineCh();
              }

             LcdWrite(Digit[i]);
             Delay(refspeed);
         }
       }//end of else
}


void Delay(int time)
{
     while(time--);
}

void ComSend(void)
{
     Delay(100);
     LcdE = 1;
     Delay(50);
     LcdE = 0;
     Delay(10);
}

void SysInit(void)
{
     P0 = 0;
     P1 = 0;
     P2 = 0;
     P3 = 0;
}



⌨️ 快捷键说明

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