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

📄 lcd12864.c

📁 在ICCAVR环境下做的ATMEGA128单片机实现模拟时钟
💻 C
字号:
#include<iom128.h>
#include<macros.h>
#include<stdio.h>

#define  LCD_DAT      PORTC                            
#define  LCDENH       PORTD=PORTD|(1<<6)               
#define  LCDENL        PORTD=PORTD&(~(1<<6))
#define  LCDDIH         PORTD=PORTD|(1<<7)
#define  LCDDIL         PORTD=PORTD&(~(1<<7))   
#define  LCDCS1H     PORTD=PORTD|(1<<5)
#define  LCDCS1L      PORTD=PORTD&(~(1<<5))
#define  LCDCS2H     PORTD=PORTD|(1<<4)
#define  LCDCS2L      PORTD=PORTD&(~(1<<4))
/**************************************
*函数名称:LCD——WRITEDAT(dat)
*函数功能:向LCD写入数据
*入口参数:dat
*出口参数:无
*************************************/
void LCD_WRITE_DAT(uchar dat)
{
    LCDENL;
	delayUS(2);
	LCDDIH;                        //选择为输入数据
	delayUS(2);
	LCDENH;
	delayUS(2);
	PORTC=dat;
	delayUS(2);
	LCDENL;
}
/******************************************
*函数名称:LCD_WRITE_COM(com)
*函数功能:向LCD写入命令
*入口参数:com
*出口参数:无
***********************************************/
void LCD_WRITE_COM(uchar com)
{
  LCDENL;
  delayUS(2);
  LCDDIL;
  delayUS(2);
  LCDENH;
  delayUS(2);
  PORTC=com;
  delayUS(2);
  LCDENL;
}
/*******************************************
*函数名称:LCD_WRITE_ADD_CHAR(uchar x,y ,uchar *p)
*函数功能:在坐标xy处写入西文字符
*入口参数:x,y 写入字符的坐标,  *p字符编码表的首地址
*出口参数:无
**********************************************/
void    LCD_WRITE_ADD_CHAR(uchar x, uchar y, uchar  p)
{
  uchar i;
  x=0xb8+x*2;
  y=0x40+y*8;
  LCD_WRITE_COM(x);    //x为行
  LCD_WRITE_COM(y);    // y为列
  for(i=0;i<8;i++)
  {
      LCD_WRITE_DAT(table[p][i]);     //西文字母的上半部分,由8行点构成(每行有8个点)
  }
   LCD_WRITE_COM(x+1);
  LCD_WRITE_COM(y);
    for(i=0;i<8;i++)                                 //写入西文字母的下半部分
  {
      LCD_WRITE_DAT(table[p][8+i]);
  }
}
void LCD_WRITE_ADD_CHINESE(uchar x,uchar y,uchar p)
{
   uchar i;
  x=0xb8+x*2;
  y=0x40+y*16;
  LCD_WRITE_COM(x);
  LCD_WRITE_COM(y);
  for(i=0;i<16;i++)
  {
      LCD_WRITE_DAT(Tab_Chinesepoem[2*p][i]);  
  }
   LCD_WRITE_COM(x+1);
  LCD_WRITE_COM(y);
    for(i=0;i<16;i++)
  {
      LCD_WRITE_DAT(Tab_Chinesepoem[2*p+1][i]);
  }
}

/********************************************************
*函数名称:LCD_WRITE_PICTURE()
*函数功能:在LCD液晶屏上显示图片‘南华大学电气工程学院’
*函数引用了字模软件生成的字模表Tab_pic2[][16]
*其取模方式为  :从第一列开始向下取8个点作为一个字节
,然后从第二列开始向下取8个点作为第二个字节...依此类推。
如果最后不足8个点就补满8位。  取模顺序是从低到高,即第
一个点作为最低位。如*-------取为00000001
***********************************************************/
/*void LCD_WRITE_PICTURE()
{
  uchar i,j,k;
  uint a;
  LCDCS1H;
  LCDCS2L; 
   LCD_WRITE_COM(0x3F);
  LCD_WRITE_COM(0xC0);
  for(k=0;k<8;k++)
  {
     LCD_WRITE_COM(0xB8+k);         //起始行,每页有八行
	 LCD_WRITE_COM(0x40);              //起始列,列自动加一
               for(i=0;i<4;i++)
                   for(j=0;j<16;j++)
                            {
                              LCD_WRITE_DAT(Tab_pic2[i+k*8][j]);
                              
                            }
							
  }
   LCDCS1L;
  LCDCS2H; 
   LCD_WRITE_COM(0x3F);
  LCD_WRITE_COM(0xC0);
  for(k=0;k<8;k++)
    {
         LCD_WRITE_COM(0xB8+k);         //起始行,每页有八行
	     LCD_WRITE_COM(0x40);              //起始列,列自动加一
               for(i=0;i<4;i++)
                   for(j=0;j<16;j++)
                            {
                              LCD_WRITE_DAT(Tab_pic2[i+4+k*8][j]);        
                              
                            }
     }
}*/
/***************12864液晶清屏**********************/
void LCD_CLS()
{
  uchar i,j;
  LCDCS1H;         //清左边屏幕
  LCDCS2L;
  LCD_WRITE_COM(0x3F);
  LCD_WRITE_COM(0xC0);
  for(i=0;i<4;i++)
    for(j=0;j<8;j++)
	{
	   LCD_WRITE_ADD_CHAR(i,j,0x0C);
	}
	
   LCDCS1L;       //清右边屏幕
   LCDCS2H;
   LCD_WRITE_COM(0x3F);
   LCD_WRITE_COM(0xC0);
  for(i=0;i<4;i++)
    for(j=0;j<8;j++)
	{
	   LCD_WRITE_ADD_CHAR(i,j,0x0C);
	}
}

⌨️ 快捷键说明

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