lcd1602程序设计4线并口通信源程序-皇冠最新app版本

×
单片机 > 单片机程序设计 > 详情

lcd1602程序设计4线并口通信源程序

发布时间:2024-10-21 发布时间:
|

lcd 1602采用4线并口通信,连接方式是db4-db7接p1.4-p1.7;rs:p2.7;rw:p2.6
en:p2.5;注意初始化的设置。
在万利medwin 3.0开发环境上调试通过!

#include
/********************************************************************/
#define  lcdio        p1

sbit lcd1602_rs=p2^7;  

sbit lcd1602_rw=p2^6;  

sbit lcd1602_en=p2^5;  


/********************************************************************/
void lcd_delay(void);

void lcd_en_command(unsigned char command);

void lcd_en_dat(unsigned char temp);

void lcd_set_xy( unsigned char x, unsigned char y );

void lcd_write_char( unsigned x,unsigned char y,unsigned char dat);

void lcd_write_string(unsigned char x,unsigned char y,unsigned char *s);

void lcd_init(void);


/********************************************************************/

void delay_nms(unsigned int n);

/********************************************************************/
void main(void)
{
  lcd_init();
  while(1 )   
  {
     lcd_en_command(0x01);

    delay_nms(2);
        lcd_write_string(0,0,"     create by    ");
        lcd_write_string(0,1,"     fenyman      ");
   
        delay_nms(200);

        lcd_en_command(0x01);

    delay_nms(2);
        lcd_write_string(0,0,"     lcd1602   ");
        lcd_write_string(0,1,"     test      ");
 
        delay_nms(200);         
  }
}
/******************** lcd part *************************************/
void lcd_delay(void)  
{
  unsigned char i;
  for(i=40;i>0;i--)
    ;
}
/********************************************************************/ 
void lcd_en_command(unsigned char command)
{
 
  lcd1602_rs=0;  
  lcd1602_rw=0;
  lcd1602_en=0;
  lcdio=(command & 0xf0);
 
  lcd1602_en=1;
  lcd_delay();
 
  lcd1602_en=0;

  lcdio=(command & 0x0f)<<4;
  lcd1602_en=1;
  lcd_delay();
  lcd1602_en=0;
}
/********************************************************************/
void lcd_en_dat(unsigned char dat)
{
 
  lcd1602_rs=1;
  lcd1602_rw=0;
  lcd1602_en=0;
  lcdio=(dat & 0xf0);

  lcd1602_en=1;
  lcd_delay();
  lcd1602_en=0;

  lcdio=(dat & 0x0f)<<4;
  lcd1602_en=1;
 
  lcd_delay();
  lcd1602_en=0;
}
/********************************************************************/
void lcd_set_xy( unsigned char x, unsigned char y )
{
  unsigned char address;
  if (y ==0)
   address = 0x80 x;
  else
      address = 0xc0 x;
  lcd_en_command(address);
}
/********************************************************************/
void lcd_write_char( unsigned x,unsigned char y,unsigned char dat)
{
  lcd_set_xy( x, y );
  lcd_en_dat(dat);
}
/********************************************************************/
void lcd_write_string(unsigned char x,unsigned char y,unsigned char *s)
{
    lcd_set_xy( x, y );    //set address
    while (*s)       // write character
    {
      lcdio=*s;
      lcd_en_dat(*s);  
   s ;
    }
}
/********************************************************************/
void lcd_init(void)
{
  lcd_en_command(0x01);
  delay_nms(5);
  lcd_en_command(0x01);
  delay_nms(5);    
  lcd_en_command(0x28);
  delay_nms(5);
  lcd_en_command(0x28);
  delay_nms(5);
  lcd_en_command(0x28);
  delay_nms(5);    
  lcd_en_command(0x0c);
  delay_nms(5);    
  lcd_en_command(0x80);
  delay_nms(5);    
  lcd_en_command(0x01);
  delay_nms(5);
}
/********************************* *********************************/
void delay_nms(unsigned int n)     
{
    unsigned int i=0,j=0;
    for (i=n;i>0;i--)
     for (j=0;j<1140;j ); 
}
/********************************************************************/


关键字:lcd1602  4线并口通信 

『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』

网站地图