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

📄 lcd1602yd.c

📁 16*2液晶显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:

/********************************************************************************
*  标题:  xl系列单片机实验仪演示程序 LCD1602 移动显示                          *
*  文件:   lcd1602Yd.C                                                      *
*  日期:  2006-1-5                                                             *
*  版本:  3.0 (试验通过版)可用xl600-xl1000单片机综合试验仪试验               *
*  作者:  部分程序参考网上修改而成,本站最终改编测试,特别对原作致敬!         *
*  邮箱:  sxj1974@163.com                                                      *
*  网站: http://www.51c51.com    www.8951.com                                 *
********************************************************************************
*  描述:                LCD1602 移动显示                                       *
* 显示方式:                                                                   *
* 1、LCD第一行显示: ilove 8051 mcu                                            *
*      LCD第二行显示:13714407535                                              *
* 2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示。                       *
* 3、在指定位置停留1.6秒后,闪烁2次,清屏。                                    *
* 4、反复循环上述显示方式。                                                    *                            
********************************************************************************
* 【版权】 Copyright(C)深圳市学林电子有限公司 www.51c51.com                    *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
*  【技术支持】请访问http://www.51c51.com/bbs/index.asp  官方论坛              *
********************************************************************************/

#include <reg51.h>
#include <intrins.h>                                                                  
                                                                           
#define uchar unsigned char                                                
#define uint unsigned int                                                  
                                                                           
sbit LCD_RS = P2^0;                                                        
sbit LCD_RW = P2^1;                                                        
sbit LCD_EN = P2^2;                                                        
                                                                           
uchar code dis1[] = {"I LOVE 8051 MCU"};                                  
uchar code dis2[] = {"TEL:13714407535"};                                  
                                                                           
                                                                           
/*******************************************************************/      
/*                                                                         
/* 延时子程序                                                              
/*                                                                         
/*******************************************************************/      
                                                                           
void delay(int ms)                                                         
{                                                                          
   int i;                                                                  
   while(ms--)                                                             
   {                                                                       
     for(i = 0; i< 250; i++)                                               
     {                                                                     
      _nop_();                                                             
      _nop_();                                                             
      _nop_();                                                             
      _nop_();                                                             
     }                                                                     
   }                                                                       
}                                                                          
                                                                           
/*******************************************************************/      
/*                                                                         
/*检查LCD忙状态                                                            
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。              
/*                                                                         
/*******************************************************************/      
                                                                           
bit lcd_busy()                                                             
{                                                                          
    bit result;                                                            
    LCD_RS = 0;                                                            
    LCD_RW = 1;                                                            
    LCD_EN = 1;                                                            
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               
     result = (bit)(P0&0x80);                                              
    LCD_EN = 0;                                                            
    return result;                                                         
}                                                                          
                                                                           
/*******************************************************************/      
/*                                                                         
/*写指令数据到LCD                                                          
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                                     
/*                                                                         
/*******************************************************************/      
                                                                           
void lcd_wcmd(uchar cmd)                                                   
{                                                                          
   while(lcd_busy());                                                      
    LCD_RS = 0;                                                            
    LCD_RW = 0;                                                            
    LCD_EN = 0;                                                            
    _nop_();                                                               
    _nop_();                                                               
    P0 = cmd;                                                              
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               
    LCD_EN = 1;                                                            
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               
    LCD_EN = 0;                                                            
}                                                                          
                                                                           
/*******************************************************************/      
/*                                                                         
/*写显示数据到LCD                                                          
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                                       
/*                                                                         
/*******************************************************************/      
                                                                           
void lcd_wdat(uchar dat)                                                   
{                                                                          
   while(lcd_busy());                                                      
    LCD_RS = 1;                                                            
    LCD_RW = 0;                                                            
    LCD_EN = 0;                                                            
    P0 = dat;                                                              
    _nop_();                                                               
    _nop_();                                                               
    _nop_();                                                               

⌨️ 快捷键说明

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