;
文章:行业新闻EDA文摘电源技术无线通信测量仪表嵌入式类电子技术制造技术半导体网络/协议展会实验家电维修  
  下载:EDA教程电源技术电子书籍电子元件无线通信通信网络电路图纸嵌入式类单片机传感/控制电子教材模拟数字
.... 音视频类
消费电子机械电子行业软件C/C++FPGA/ASIC规则标准家电维修DSPIC资料ARM软件电路图电子技术论坛
 
位置:电子发烧友 > 行业新闻 > 嵌入式类 > 单片机类 >液晶显示屏模块1602驱动程序源代码 退出登录 用户管理
栏目导航


· 单片机类 · 接口/总线/驱动
· ARM · DSP
· FPGA/ASIC技术 · 设计应用
· 嵌入式操作系统 · 电视卡
热门文章
· [组图] 电子元器件基础知识...
· [图文] USB接口定义
· [图文] 三极管开关电路图
· [组图] RS232 RS485接口原理...
· [组图] [组图]电动车充电器...
· [组图] 电子捕鱼器电路图
· [组图] 高品质音调电路的制...
· [组图] JRC4558电路
· [图文] M51134P低音炮电路图...
· [图文] TL494脉宽调制控制电...
相关文章

· [组图] LCD液晶显示模块功耗...
· [图文] 图形液晶显示器和单...
· [组图] 1602b液晶显示使用范...
· [组图] 液晶显示器色彩技术...
· [组图] 液晶显示器的专业技...
· 液晶显示器面板的分...
· 薄膜晶体管液晶显示...
· 液晶显示器的技术参...
· 液晶显示器的工作原...
· LCD液晶显示屏不良现...

液晶显示屏模块1602驱动程序源代码
作者:本站  来源:www.elecfans.com  发布时间:2008-10-8 13:39:31 减小字体 增大字体

液晶显示屏模块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++);  
}
/********************************************************************/

[] [返回上一页] [打 印] [收 藏]
 

上一篇文章:S12仿真器BDM的电路图
下一篇文章:DS18B20 MSP430 C程序
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 
关于本站- 意见反馈 - 网站导航 - 帮助 - 隐私政策 - 联系我们 - 使用条款 - 安全承诺 - 友情连接
站长QQ:39550527 Powered by: 飓风网络(电路图
Copyright 2006-2008 Elecfans.Com.电子发烧友: 粤ICP备07065979号All Rights Reserved