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

📄 字符显液晶lcd1602显示程序.c

📁 这是本人花了200元买的51开发板上的所有程序资料
💻 C
字号:
//MCU:AT89S51
//晶振:12M
#include "AT89X51.h"
#include "intrins.h" 

#define  LCDPORT P0  //LCD数据线
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^2;
//*************LCD1602驱动程序***************************///
void lcd_delay(unsigned char delaytime)
{
while(delaytime)delaytime--;
}
/********1ms延时子程序***********/
void delay_nms(unsigned int n)
{
 unsigned int i;
 unsigned char j;

 for(i=0;i<n;i++)
    for(j=0;j<120;j++)
	  ;     //空操作
}

void hc164(unsigned a)
{
 unsigned char i;
   //164使用共阴代码
 for(i=8;i>0;i--)
  {
   P3_1=0;
   P3_0=a&0x80;      
   P3_1=1;
   a=a<<1;  
  }
}



void write_lcd_command(unsigned char write_command)
{
lcd_delay(40);
RS=0;
RW=0;
LCDPORT=write_command;
//hc164(write_command);
EN=1;
EN=0;
}
void write_lcd_data(unsigned char write_data)
{
lcd_delay(40);
RS=1;
RW=0;
LCDPORT=write_data;
//hc164(write_data);
EN=1;
EN=0;
}

void LCD_write_char( unsigned x,unsigned char y,unsigned char dat) //x表示行,y表示该行的位置(也就是列)
{
 //LCD_set_xy( x, y ); 
 switch(x)
 {
  case 0:
       write_lcd_command(0x80+y);
	   break;
	   case 1:
	   write_lcd_command(0xc0+y);
       break;
  }
// LCD_en_dat(dat);
  write_lcd_data(dat|0x30);   //dat或上0x30,就时把数字0123456789转换成ASIIC码
}

void lcd_displaystr(unsigned char x,unsigned char y,unsigned char code *str)
{  //x表示行,y表示该行的位置(也就是列)
 switch(x)
 {
  case 0:
       write_lcd_command(0x80+y);
	   break;
	   case 1:
	   write_lcd_command(0xc0+y);
       break;
  }
  while (*str)
  {
    write_lcd_data(*str);
	str++;
  }
}

void initial_lcd1602(void) //初始化LCD1602
{
 unsigned char i;
 EN=0;
 for(i=200;i>0;i--)
   lcd_delay(248);
 write_lcd_command(0x38);//设置lcd1602为每个字符5×7显示
 for(i=4;i>0;i--)
   lcd_delay(248);
 write_lcd_command(0x38);
  for(i=4;i>0;i--)
   lcd_delay(248);
 write_lcd_command(0x0f); //开显示,光标显示并闪烁
 for(i=4;i>0;i--)
   lcd_delay(248);
 write_lcd_command(0x06);//光标移动设置,每写一个数,光标自动加一
  for(i=4;i>0;i--)
   lcd_delay(248);
write_lcd_command(0x01); //清屏
 for(i=4;i>0;i--)
   lcd_delay(248);

}
//********************lcd1602驱动程序到此完********************//



void main(void)
{
 unsigned char mode,i;
  initial_lcd1602();

  //输出显示
  lcd_displaystr(0,0x00," Study by MCS51 ");
  lcd_displaystr(1,0x00," Come On Baby! ");
  while(1)
     {
	  //按键扫描
	  if(P2_0==0)
	    {
		 delay_nms(10);
		 if(P2_0==0)
		   {
		    mode++;
			if(mode>=4)
			 mode=0;
			write_lcd_command(0x01); //清屏
		   }
		 while(P2_0==0);
		}
	  switch(mode)
         {
		  case 0x00:
		    lcd_displaystr(0,0x00," Study by MCS51 ");
            lcd_displaystr(1,0x00," Come On Baby! ");  
			break;
		  case 0x01:
		    lcd_displaystr(0,0x00," Welcome To Use ");
            lcd_displaystr(1,0x00,"www.huayimcu.com");  
			break;
		  case 0x02:
		    lcd_displaystr(0,0x00,"  QQ:289994918  ");
            lcd_displaystr(1,0x00,"TEL:07732996883"); 
 		    break;
		  case 0x03:
		    for(i=0;i<32;i++)
		      {
			  if(i<16)
 			    { LCD_write_char(0,i,i%10);delay_nms(400);}
              else
			    { LCD_write_char(1,(i-16),i%10);delay_nms(400);}
			  mode=5;
             }
		 }
	 }
 
}

⌨️ 快捷键说明

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