老古开发网首页
导航:老古开发网首页文章索引文章分类嵌入式系统→[LCD1602 4线并口通信源程序]
| -文章搜索 - 最新文章 - |

LCD1602 4线并口通信源程序

发布时间:2006年6月23日 点击次数:1692
来源:   作者:
 

LCD 1602采用4线并口通信,连接方式是DB4-DB7接P1.4-P1.7;RS:P2.7;RW:P2.6
EN:P2.5;注意初始化的设置。
在万利MedWin 3.0开发环境上调试通过!

/*******************************************************************                                                                            
/* 模块功能: 显示内容:   creat by                                                   
/*                         fenyman

/*         LCD1602
/*         test
/*creat by:    fenyman
/*Date:    2006-06-21
/*Corporation: SME of Dalian University of Technology
/*Version V1.1
/*Copyright(C)feyman  2006-2016
/*All rigths reserved                                              
/*******************************************************************/  
#include <reg51.h>
/********************************************************************/
#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 8线并口通信源程序
简介:
LCD 1602采用8线并口通信,连接方式是DB0-DB7接P1.0-P1.7;RS:P2.7;RW:P2.6 EN:P2.5;注意初始化的设置。 在万利MedWin 3.0开发环境上调试通过! /******************************************************************* &......

LCD1602模块驱动说明
支持VRS51L2000系列高速8051MCU的即插即用式开发系统
Linux嵌入式实时操作系统开发与设计(5)
Linux嵌入式实时操作系统开发与设计(2)
Linux嵌入式实时操作系统开发与设计(4)
Linux嵌入式实时操作系统开发与设计(1)
Linux嵌入式实时操作系统开发与设计(6)
Linux嵌入式实时操作系统开发与设计(3)
MCU控制风光互补独立电源系统
 
下一个:[新闻热点]宏达欧洲首推自有品牌手机,疑与代工撞车
简介:
据英国《金融时报》报道,台湾宏达国际电子(以下简称“宏达”)首次在欧洲推出了自有品牌手机,迈出了战略转型的第一步。宏达是全球最大的生产基于微软移动操作系统的智能手机制造商。此举使宏达成为全球首家同时生产自有品牌及代工手机的制造商。   宏达首席执行长周永明说:“我们认为已经积蓄了足够力量和经验,对零售客户提供更多支持。”   宏达一直在为沃达丰、Orange、T-Mobile及Verizon等全球移动巨头代工高端智能手机,这一运营方式为该公司带来了丰厚利润,去年宏达的净利润增长三倍达3.62亿美元。   不过分析师认为,宏达的战略转型短期内会引发客户的忧虑,因为传统观点认为,......
 

上一个:[单片机]数字电压表

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒