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

📄 1602.c

📁 用verilog写的1602驱动 仿真已经通过
💻 C
字号:
#include<AT89x52.h>
#include <intrins.h>	
#define uchar unsigned char
#define uint unsigned int 

sbit rs = P2^0;             
sbit rw = P2^1;
sbit ep = P2^2;

uchar code dis1[] = {"xiong zhi peng"};
uchar code dis2[] = {"shi 417 laoda "};

delay(uint ms)
{							// 延时子程序
	int i;
	while(ms--)
	{
		for(i = 0; i< 250; i++)
		{
			_nop_();
			_nop_();
			_nop_();
			_nop_();
		}
	}
}
  lcd_bz()
{							// 测试LCD忙碌状态
    uchar result;
	rs = 0;
	rw = 1;
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	result = P0&0x80;
	ep = 0;
	return result;	
}
 lcd_com(uchar cmd)
{
   while(lcd_bz());
   rs=0;
   rw=0;
   ep=0;   
   P0=cmd;
   _nop_();
	_nop_();
	_nop_();
	_nop_();
   ep=1;
   _nop_();
	_nop_();
	_nop_();
	_nop_();
   ep=0;
}
 lcd_date(uchar dat)
{
   while(lcd_bz());
   rs=1;
   rw=0;
   ep=0;
   P0=dat;
  _nop_();
	_nop_();
	_nop_();
	_nop_();
   ep=1;
   _nop_();
	_nop_();
	_nop_();
	_nop_();
   ep=0;
}
lcd_init()
{
  
  lcd_com(0x38);
  delay(1) ;
  lcd_com(0x0c);
  delay(1) ;
  lcd_com(0x06);
  delay(1) ;
  lcd_com(0x01);
  delay(1) ;
}
 void flash()                                                               
{                                                                          
    delay(600);                     //控制停留时间                         
    lcd_com(0x08);            //关闭显示                                  
    delay(200);                    //延时                                  
    lcd_com(0x0c);            //开显示                                    
    delay(200);                                                            
    lcd_com(0x08);            //关闭显示                                  
    delay(200);                     //延时                                 
    lcd_com(0x0c);            //开显示                                    
    delay(200);                                                            
}                                                                          
  a()
  {	
   uchar i;
	 lcd_init();
   lcd_com(0x80+0x10) ;
  	i=0;
 while(dis1[i] != '\0')    
   {	
	  
   lcd_date(dis1[i]);
	 i++;
   }
   lcd_com(0x80+0x40+0x10) ;
   i=0;
   while(dis1[i] != '\0')    
   {	 				
    lcd_date(dis2[i]);
	i++;	
   }
   i=0;
  for(i=0;i<15;i++)
  {
    lcd_com(0x18)	;
    delay(100)  ;
   }
    flash()	;

  }  
  b()
  {	 uchar i;
	lcd_init();
    
  	lcd_com(0x80) ;
  	 i=0;
   while(dis1[i] != '\0')    
   {	
	  
   lcd_date(dis1[i]);
	 i++;
   }
   lcd_com(0x80+0x40) ;
   i=0;
 while(dis1[i] != '\0')    
   {	 				
    lcd_date(dis2[i]);
	i++;	 
   }
   i=0;
  for(i=0;i<22;i++)
  {
    lcd_com(0x18)	;
    delay(100)  ;
   }
  }                           
main()
{ 
 
 lcd_init();
 delay(10);
  while(1) 
  {
  	 a();
	 b(); 
  }
}

⌨️ 快捷键说明

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