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

📄 lcd_series.c

📁 51单片机的1602液晶显示程序
💻 C
字号:

/* File Name:        	lcd.c    */
/* Author:          	Huaming Liu */
/* Created:         	2007-6-5   */
/* Modified:   			no          */
/* Revision:         	V1.0     	*/


#include <reg52.h> 					/*定义头文件*/				 
#include <absacc.h>
#define Set_Bit(BIT)    (BIT = 1) 	/*定义置1函数*/
#define Clear_Bit(BIT)  (BIT = 0) 	/*定义清0函数*/
typedef unsigned char uchar; 		/*自定义字节类型*/ 

sbit LCD_CS=P1^0;	/*定义LCD片选信号连接*/
sbit LCD_STD=P1^1; 	/*定义LCD串行数据硬件连接*/
sbit LCD_Clk=P1^2; 	/*定义LCD串行时钟硬件连接*/

/****** LCD的指令 ******/
#define CMD_RESET 	0xa4   		/*需改变*/

void Write_LCD(uchar,uchar); 	/*定义LCD写函数,先写命令再写控制信息*/
uchar Read_LCD(uchar); 		/*定义LCD读函数,只需发出命令再读入数据*/
void Send_uchar(uchar); 			/*定义LCD发送字节函数*/
uchar Receive_uchar(void); 		/*定义LCD接收字节函数*/
void Short_Delay(void); 		/*定义短延时函数*/
void Long_Delay(void); 			/*定义长延时函数*/
void Mcu_Init(void); 			/*定义MCU初始化函数*/
void Delay_200_mS(void); 		/*定义200ms延时函数*/


/************************************************************************************/
void main(void) /*主函数*/
{
	LCD_CS=0;
	Send_uchar(CMD_RESET); /*LCD复位*/
	DBYTE[0X00A6]=0x1e;
	DBYTE[0X00A6]=0xe1;		/*启动看门狗*/	
	while(1)
	{ 	
		Mcu_Init(); /*MCU初始化*/	
	}	  /*while*/
}	   /*main*/


void Delay_200_mS(void)  /*200ms延时函数*/
	{
   	uchar i,j;
   	i=200;
   	while (i--)
     	{
        j=228;
        while(j--);
     	} 
	} 


void Mcu_Init(void) /*MCU初始化函数*/
	{
	Send_uchar(CMD_TEST); /*所有LED均亮,且闪烁*/   	
	}




void Short_Delay(void) /*短延时函数*/
	{ 
	uchar i;
  	for(i=0;i<0x08;i++);
	}

void Long_Delay(void) /*长延时函数*/
	{
	uchar i;
  	for(i=0;i<0x30;i++);
	}




void Write_LCD(uchar Command,uchar Data) /*LCD写函数*/
	{ 
	Send_uchar(Command);	 /*先发送命令*/
   	Send_uchar(Data);	 /*再接收字节*/
	}

uchar Read_LCD(uchar Command) /*LCD读函数*/
	{ 
	Send_uchar(Command);	 	/*先发送命令*/
   	return(Receive_uchar());	/*再接收字节*/
 	}


void Send_uchar(uchar Data_Out) /*向LCD发送字节函数*/
	{ 
	uchar i;
   	Long_Delay();
   	for(i=0;i<8;i++)
   		{ 
   		if(Data_Out&0x80) 
			Set_Bit(LCD_Data);
     	else 
			Clear_Bit(LCD_Data);
     	Set_Bit(LCD_Clk);
     	Short_Delay();
     	Clear_Bit(LCD_Clk);/*下降沿发出数据*/
     	Short_Delay();		  
     	Data_Out=Data_Out<<1;
    	}
    Clear_Bit(LCD_Data);
 	}


uchar Receive_uchar(void)  /*从LCD接收字节函数*/
	{ 
	uchar i,Data_In;
  	Set_Bit(LCD_Data);
  	Long_Delay();
  	for(i=0;i<8;i++)
   		{
   		Set_Bit(LCD_Clk);
    	Short_Delay();
    	Data_In=Data_In<<1;
    	if(LCD_Data)  /*数据线上为1时*/
			Data_In=Data_In|0x01;
    	Clear_Bit(LCD_Clk);
    	Short_Delay();
    	}
    Clear_Bit(LCD_Data);
    return(Data_In);
	}
/*END*/	

⌨️ 快捷键说明

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