液晶显示屏模块1602驱动程序源代码

发布者:rho27最新更新时间:2011-11-17 关键字:液晶显示屏  1602驱动程序 手机看文章 扫描二维码
随时随地手机看文章

液晶显示屏模块1602驱动程序源代码

//lcd1602 drive program for 51 mcu
//designed by Wangchao
//2006-6-14

#i nclude "reg52.h"
/********************************************************************/
//lcd part
#define  LINE1     0
#define  LINE2     1
#define  LINE1_HEAD    0x80
#define  LINE2_HEAD    0xC0
#define  LCD_DELAY_TIME   40
#define  DATA_MODE    0x38
#define  OPEN_SCREEN    0x0C
#define  DISPLAY_ADDRESS   0x80
#define  CLEARSCREEN    LCD_en_command(0x01)
//common part
#define  HIGH   1
#define  LOW    0
#define  TRUE    1
#define  ZERO    0

/*******************************************************************/
//change this part at different board
#define  LCDIO     P2
sbit LCD1602_RS=P0^7;   //data command select  1 data  0 command  pin 4
sbit LCD1602_RW=P0^6;   //read write select   1 read   0 write     pin 5
sbit LCD1602_EN=P0^5;   //LCD enable signal             pin 6

/********************************************************************/
void LCD_delay(void);//lcd delay
void LCD_en_command(unsigned char command);//write command
void LCD_en_dat(unsigned char temp);//write data
void LCD_set_xy( unsigned char x, unsigned char y );//set display address
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//write lcd a character
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//write lcd string
void LCD_init(void);//lcd initize

/********************************************************************/
void delay_nms(unsigned int n);//delay

/********************************************************************/
void main(void)
{
 LCD_init();
 while(TRUE )    
 {
   CLEARSCREEN;
  
  delay_nms(2);
         LCD_write_string(0,LINE1,"Wellcome to DLUT");
         LCD_write_string(0,LINE2,"www.dlut.edu.cn!");
       
         delay_nms(500);
        
         CLEARSCREEN;
       
  delay_nms(2);
         LCD_write_string(0,LINE1,"   lcd test     ");
         LCD_write_string(0,LINE2,"   successful!  ");
        
         delay_nms(500);

   CLEARSCREEN;

       delay_nms(2);
         LCD_write_string(0,LINE1," I'm WangChao.  ");
         LCD_write_string(0,LINE2,"   Thank You!  ");

       delay_nms(500);                
 }
}
/********************************************************************/
/******************** LCD PART *************************************/
void LCD_delay(void)  
{
 unsigned char i;
 for(i=LCD_DELAY_TIME;i>ZERO;i--)  //be sure lcd reset
   ;
}
/********************************************************************/ 
void LCD_en_command(unsigned char command)
{
 LCDIO=command;
 LCD1602_RS=LOW;  
 LCD1602_RW=LOW;
 LCD1602_EN=LOW;
 LCD_delay();
 LCD1602_EN=HIGH;
}
/********************************************************************/
void LCD_en_dat(unsigned char dat)
{
 LCDIO=dat;
 LCD1602_RS=HIGH;
 LCD1602_RW=LOW;
 LCD1602_EN=LOW;
 LCD_delay();
 LCD1602_EN=HIGH;
}
/********************************************************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
 unsigned char address;
 if (y == LINE1)
  address = LINE1_HEAD + x;
 else
     address = LINE2_HEAD + 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)

 CLEARSCREEN;//clear screen
 LCD_en_command(DATA_MODE);//set 8 bit data transmission mode
 LCD_en_command(OPEN_SCREEN);//open display (enable lcd display)
 LCD_en_command(DISPLAY_ADDRESS);//set lcd first display address
 CLEARSCREEN;//clear screen
}
/********************************************************************/
/*********************** OTHER PART *********************************/
void delay_nms(unsigned int n)     
{
    unsigned int i=0,j=0;
    for (i=n;i>0;i--)
     for (j=0;j<1140;j++);  
}
/********************************************************************/

关键字:液晶显示屏  1602驱动程序 引用地址:液晶显示屏模块1602驱动程序源代码

上一篇:运放设计原理及电路说明
下一篇:采用可定制微控制器来优化算法的设计

推荐阅读最新更新时间:2024-03-16 12:46

51单片机lcd1602驱动程序
/* ******************************************** **头文件名:LCD液晶驱动 ** Target : AT89s52 ** Crystal: 11.0952 ********************************************* */ #ifndef _LCD_51_H_ #define _LCD_51_H_ #include DELAY_51.H #include at89x52.h /* ------80s52与LCD连接信息----------------------------------------- ** P1_2 - RS ** P1_3
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved