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

📄 液晶显示.c

📁 一个实用的万年历程序
💻 C
字号:
#include <at89x51.h>
#include <intrins.h>
#define LCD_RS   P2_0	//定义引脚
#define LCD_RW   P2_1
#define LCD_E    P2_2
#define LCD_DATA  P0
unsigned char a ;
unsigned char b ;
unsigned char c ;
unsigned char d ;
extern void delayus(unsigned int num);

extern void delayus(unsigned int num) //us级延时函数
{
  while( --num ) ;
}

bit LCD_Busy(void)	   //LCD忙碌状态检测
{							
   	bit result;
	LCD_RS = 0;			    
	LCD_RW = 1;
	LCD_E  =1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	result = (bit)(P0 & 0x80);	
    LCD_E  =0;
	return result;	
}

extern void LCD_WriteCommand(unsigned char cmd)	 //写指令数据到LCD
{							   
	while(LCD_Busy());
	LCD_RS = 0;
	LCD_RW = 0;
    LCD_E  =0;
	_nop_();
	_nop_();	
	LCD_DATA = cmd;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	LCD_E  =1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	LCD_E =0;		
}

 void LCD_WriteDate(unsigned char dat)   //写字符显示数据到LCD
{							
	while(LCD_Busy());
	LCD_RS=1;
	LCD_RW=0;
	LCD_E=0;
	LCD_DATA = dat;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	LCD_E  =1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	LCD_E =0;	
}

extern void LCD_DisplayOneChar(unsigned char X,unsigned char Y,unsigned char Z)   //显示指定坐标的一个字符子函数
							 // X为列0--15,Y为行0--1  ,Z为数据,输入字母加单引号
{   Y &= 0x1;
    X &= 0xF; //限制X不能大于15,Y不能大于1 
    if(Y == 0)
    {
	   LCD_WriteCommand(X|0X80);
        LCD_WriteDate(Z);
	}	                                       //1602地址为第一行00H~0FH,第二行为40H~4FH,
    if(Y==1)							       //而且写入地址命令格式为1xxx xxxx,
    {
       LCD_WriteCommand((X|0x40)|0X80);
         LCD_WriteDate(Z);
    }                                         //所以这里的0x80|(x-0x40)就是如此得出
}


extern void LCD_Init(void)	//LCD初始化
{							
    LCD_WriteCommand(0x38);	    //两行显示,5×7字型  
	delayus(5);
	LCD_WriteCommand(0x0c);	    //显示开,不显示光标,光标不闪
	delayus(5);
	LCD_WriteCommand(0x06);	    //输入模式,地址增量,显示不移动 
    delayus(5);
//	LCD_WriteCommand(0x01);	    //清显示,如果加上此语句,显示地址返回0x00
//	Delay(5);
}
extern void LCD_DisplayOneString(unsigned char X,unsigned char Y,unsigned char a[])
{   unsigned char  m ;//LCD_Init();              //初始化LCD
    Y &= 0x1;
    X &= 0xF; //限制X不能大于15,Y不能大于1 
    m = 0 ;
    while(a[m] != '\0')
    {                          //显示第一行字符
         LCD_DisplayOneChar(X,Y,a[m]);
         m++ ;
	     X++;
    }
}
extern void LCD_DisplayNum(unsigned char X,unsigned char Y,unsigned char num)       //显示一个数字
{ 
	 a = num%10;
	 b = num/10%10;
    LCD_DisplayOneChar((X+1),Y,a+0x30);
    LCD_DisplayOneChar(X,Y,b+0x30); 
 	 delayus(100);
 
}
extern void LCD_DisplayoneNum(unsigned char X,unsigned char num)
{   
  LCD_DisplayOneChar(X,0,num+0x30); 
}

⌨️ 快捷键说明

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