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

📄 lcd.c

📁 NT7532驱动的LCD与AVR单片机接口源代码,C语言编写
💻 C
字号:
/*
LCD底层操作函数

所有与LCD相关的初始化,写数据,读数据等操作函数
都封装在该文件中
设计人:吴光捷
*/
#include "lcd.h"


//高低位转换函数
unsigned char convert(unsigned char c)
{
	int i;
	unsigned char d;
	d=0x00;
	if(c&0x80) d=d|(0x01);
	if(c&0x40) d=d|(0x02);
	if(c&0x20) d=d|(0x04);
	if(c&0x10) d=d|(0x08);
	if(c&0x08) d=d|(0x10);
	if(c&0x04) d=d|(0x20);
	if(c&0x02) d=d|(0x40);
	if(c&0x01) d=d|(0x80);
	return d;
}
/*
lcd参数初始化函数
*/
void Lcd_Init(void)
{
 	 
	 DDRE=DDRE|0x06;
	 DDRC=DDRC|0xc0;
	 DDRB=DDRB|0x02;
	 DDRA=0xFF;
	 Lcd_Reset();
	 Set_Bias();
	 Set_ADC(0);
	 
	 Set_Scan(0);
	 
	 Set_Register(0x03);
	 Set_Volume(40);
	 Lcd_Clear();
	 Set_Power();
	 Lcd_OnOff(1);
}
/*关闭打开LCD显示屏函数*/
void Lcd_OnOff(unsigned char on)
{
    unsigned char d;
    if(on)  
    	 d=0xf5;
    else    
    	 d=0x75;
    SetLcdA0_L();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=d;
    SetLcdWr_H();
    SetLcdCs_H();	
	if(on)  
    	 SetLcdCs_L();
    else    
    	 SetLcdCs_H();
}
/*写LCD数据命令*/
void Write_Data(unsigned char x,unsigned char y,unsigned char d)
{ 
    
   
    Set_Column(x);
	Set_Page(y);
	
	
    SetLcdA0_H();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=d;
    SetLcdWr_H();
    SetLcdCs_H();
     
}
/*清除LCD*/
void Lcd_Clear()
{
/*
 int i,j;
 for(i=0;i<8;i++)
 {
    Set_Page(i);
    for(j=0;j<132;j++)
 	{
    SetLcdA0_H();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=0;
    SetLcdWr_H();
    SetLcdCs_H();		   
 	}
 }*/
 
 			 int k=0;
			 for(k=0;k<132;k++)
			 {
			  		Write_Data(k,0,0x00);
					Write_Data(k,1,0x00);
			  		Write_Data(k,2,0x00);
					Write_Data(k,3,0x00);
					Write_Data(k,4,0x00);
					Write_Data(k,5,0x00);
					Write_Data(k,6,0x00);
					Write_Data(k,7,0x00);
			 }

 	
}
unsigned char Read_Data(unsigned char x,unsigned char y)
{ 
    unsigned char c;
    Set_Column(x);
	Set_Page(y);
		
    SetLcdA0_H();
    SetLcdCs_L();
	SetLcdWr_H();
	SetLcdRd_L();
	DDRA=0x00;
    PORTA=0xff;
    
	c=PINA;
	c=PINA;
	c=PINA;
	SetLcdRd_H();
	
	
	DDRA=0xFF;	

    SetLcdCs_H();
	
    return c;     
}

void Write_command(unsigned char command)
{   
    SetLcdA0_L();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=convert(command);
    SetLcdWr_H();
    SetLcdCs_H();

}
void Set_Start_Line(unsigned char line)
{
    unsigned char d;
    d=0x40|(line&0xc0);
    d=convert(d);
    SetLcdA0_L();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=d;
    SetLcdWr_H();
    SetLcdCs_H();
	
}
void Set_Page(unsigned char page)
{
 	unsigned char d;
    d=0xB0|(page);
    d=convert(d);
    SetLcdA0_L();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=d;
    SetLcdWr_H(); 
	SetLcdCs_H();
}
void Set_Column(unsigned char colum)
{
    unsigned char d;
    d=0x10|((colum&0xF0)>>4);
    d=convert(d);
    SetLcdA0_L();
    SetLcdCs_L();
    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=d;
    SetLcdWr_H();
    SetLcdCs_H();
	d=0x00|(colum&0x0F); 
	
	SetLcdCs_L();   
    d=convert(d);
    SetLcdA0_L();

    SetLcdRd_H();
    SetLcdWr_L();
    PORTA=d;
    SetLcdWr_H();
    
    SetLcdCs_H();
    
    	
}
void clear_line(unsigned char line)
{
		int i,j;
	    unsigned char *p;

	       	

}
unsigned char Read_Stat()
{
    unsigned char c;
    
    SetLcdA0_L();
    SetLcdCs_L();
    SetLcdRd_L();
    SetLcdWr_H();
    c=PINA;
    SetLcdRd_H();
    
    SetLcdCs_H();
    return convert(c);  
}
void  Lcd_Reset()
{
 	int k;
	DDRC=DDRC|(0x01>>6);
	SetLcdRes_L();
	k=655;
	while(k>0)
	{
	 k--;
	}
	SetLcdRes_H();
}
void Set_Power()
{
 	 Write_command(0x2f);
}
void Set_Register(unsigned char regvalue)
{
 	  Write_command(regvalue|0x20);
}

void Set_Volume(unsigned char VolValue)
{
 	  Write_command(0x81);
	  Write_command(VolValue);
}

void Set_Bias()
{
 	  Write_command(0xa3);
}
void Set_EntireOn(unsigned char on)
{
if(on)
 Write_command(0x85);
else
 Write_command(0x84);


}
void Set_ADC(unsigned char on )
{
 if(on)
  Write_command(0xA1);
  else
  Write_command(0xA0);
}

void Set_Scan(unsigned char direct )
{
 if(direct)
  Write_command(0xc0);
  else
  Write_command(0xc8);
}

⌨️ 快捷键说明

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