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

📄 lcddriveaaa.c

📁 一个分选系统的软件:用SmallRtos操作系统
💻 C
字号:
#include "config.h"
sbit LCDCS = P1^0;
sbit LCDDI = P3^5;
sbit LCDRW = P3^6;
sbit LCDE  = P3^7;

uint8 code lcd_lattice16_8[]={0};
uint8 code lcd_lattice16_16[]={9};
uint8 code lcd_lattice8_8[]={0};
bit dot_not;
void lcddelay()
{
    _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
/*************************************/
void outsi(unsigned char parameter)
{
 LCDCS = 0;lcddelay();
 LCDDI = 0;lcddelay();
 LCDRW = 0;lcddelay();
 LCDE  = 1;lcddelay();
 P2    = parameter;lcddelay();
 LCDE  = 0;lcddelay();
 LCDRW = 1;lcddelay();
}
/*************************************/
void outmi(unsigned char parameter)
{
 LCDCS = 1;lcddelay();
 LCDDI = 0;lcddelay();
 LCDRW = 0;lcddelay();
 LCDE  = 1;lcddelay();
 P2    = parameter;lcddelay();
 LCDE  = 0;lcddelay();
 LCDRW = 1;lcddelay();
}
/*************************************/
void outsd(unsigned char parameter)
{
 LCDCS = 0;lcddelay();
 LCDDI = 1;lcddelay();
 LCDRW = 0;lcddelay();
 LCDE  = 1;lcddelay();
 P2    = parameter;lcddelay();
 LCDE  = 0;lcddelay();
 LCDRW = 1;lcddelay();
}
/*************************************/
void outmd(unsigned char parameter)
{
 LCDCS = 1;lcddelay();
 LCDDI = 1;lcddelay();
 LCDRW = 0;lcddelay();
 LCDE  = 1;lcddelay();
 P2    = parameter;lcddelay();
 LCDE  = 0;lcddelay();
 LCDRW = 1;lcddelay();
}
/*************************************/
void lcdinit()
{
 outmi(0x3f);
 outsi(0x3f);/*display on*/
}
/*************************************/
void displayword(uint8 lcdrow,uint8 lcdline,uint8 wordnumber)
{
 unsigned char data i;
 unsigned int  data j;
 lcdinit();
 if(lcdline<64)
 {
  outmi(0xc0);
  outmi(0xb8|lcdrow);/*设置页地址*/
  outmi(0x40|lcdline);/*设置列地址*/
  j=wordnumber*32;
  for(i=0;i<32;i++)
  {
    if(dot_not)outmd(0x55);//;~lcd_lattice16_16[i+j]);
    else       outmd(0x55);// lcd_lattice16_16[i+j]);
    if(i==15)
    {
     outmi(0xb8|(lcdrow+1));/*设置页地址*/
     outmi(0x40|lcdline);/*设置列地址*/
    }
  }
 }
 else if(lcdline<112)
 {
  outsi(0xc0);/*设置显示起始行*/
  outsi(0xb8|lcdrow);/*设置页地址*/
  outsi(0x40|(lcdline-64));/*设置列地址*/
  j=wordnumber*32;
  for(i=0;i<32;i++)
  {
    if(dot_not)outsd(~lcd_lattice16_16[i+j]);
    else       outsd( lcd_lattice16_16[i+j]);
    if(i==15)
    {
     outsi(0xb8|(lcdrow+1));/*设置页地址*/
     outsi(0x40|(lcdline-64));/*设置列地址*/
    }
  }
 }
else
 {}
}
/*******************************************************/
void displaydata(uint8 lcdrow,uint8 lcdline,uint8 datanumber)
{
 unsigned char data i;
 unsigned int  data j;
 if(lcdline<64)
 {
//  outmi(0xc0);
  outmi(0xb8|lcdrow);/*设置页地址*/
  outmi(0x40|lcdline);/*设置列地址*/
  j=datanumber*16;
  for(i=0;i<16;i++)
  {
    if(dot_not==1) {outmd(~lcd_lattice16_8[i+j]);}
    else {outmd(lcd_lattice16_8[i+j]);}
   if(i==7)
    {outmi(0xb8|(lcdrow+1));/*设置页地址*/
     outmi(0x40|lcdline);/*设置列地址*/}
  }
 }
 else if(lcdline<121)
 {
//  outsi(0xc0);/*设置显示起始行*/
  outsi(0xb8|lcdrow);/*设置页地址*/
  if(lcdline<120)
   {
     outsi(0x40|(lcdline-64));/*设置列地址*/
   }
  j=datanumber*16;
  for(i=0;i<16;i++)
  {
    if(dot_not==1)
    {
    outsd(~lcd_lattice16_8[i+j]);
    }
    else {outsd(lcd_lattice16_8[i+j]);}
    if(i==7)
    {outsi(0xb8|(lcdrow+1));/*设置页地址*/
     outsi(0x40|(lcdline-64));/*设置列地址*/}
  }
 }
}
/*******************************************************/
/*******************************************************/
void displaybyte(uint8 lcdrow,uint8 lcdline,uint8 datanumber)
{
 unsigned char data i;
 unsigned int  data j;
 outmi(0xc0);
 outsi(0xc0);/*设置显示起始行*/
 if(lcdline<64)
 {
  outmi(0xb8|lcdrow);/*设置页地址*/
  outmi(0x40|lcdline);/*设置列地址*/
  j=datanumber*8;
  for(i=0;i<8;i++)
  {
   outmd(lcd_lattice8_8[i+j]);
  }
 }
 else
 {
  outsi(0xb8|lcdrow);/*设置页地址*/
  outsi(0x40|(lcdline-64));/*设置列地址*/
  j=datanumber*8;
  for(i=0;i<8;i++)
  {
   outsd(lcd_lattice8_8[i+j]);
  }
 }
}
/*******************************************************/
/*******************************************************/
void displaycls(void)
{
 unsigned char data i;
 unsigned int  data j;
 lcdinit();
 outmi(0xc0);
 outsi(0xc0);/*设置显示起始行*/
 for(i=0;i<8;i++)
  {outmi(0xb8|i);/*设置页地址*/
   outmi(0x40|0);/*设置列地址*/
   for(j=0;j<64;j++)
   {outmd(0x55);}
  }
  for(i=0;i<8;i++)
  {outsi(0xb8|i);/*设置页地址*/
   outsi(0x40|0);/*设置列地址*/
   for(j=0;j<64;j++)
   {outsd(0xF);}
  }
}

⌨️ 快捷键说明

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