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

📄 lcd1602.lst

📁 红外遥控+1602LCD显示的源代码
💻 LST
字号:
C51 COMPILER V8.08   LCD1602                                                               05/10/2008 19:44:50 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE LCD1602.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //=========================1602液晶头文键=================//
   2          #ifndef  LCD1602_4_H
   3          #define  LCD1602_4_H
   4          #include <reg52.h>
   5          #include <intrins.h>
   6          
   7          #define  MSB   0x80    //读忙位
   8          #define  HIGH   1
   9          #define  LOW   0
  10          
  11          //*****************************************
  12          #define   DATA_MODE       0x28 //LCD模式设置,0x28位四位数据线模式
  13          #define   OPEN_SCREEN       0x0f //打开LCD显示,有光标;0x0c没有光标
  14          #define   DISPLAY_ADDRESS     0x80 //写地址指令
  15          #define   CLEARSCREEN       LCD_en_com(0x01)  //清屏
  16          
  17          //***********//LCD1602的接线//*****************************
  18          #define  LCDIO     P0  //LCD1602的高四位接在P0口的高四位
  19          sbit LCD1602_RS=P0^0;   //RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
  20          sbit LCD1602_RW=P0^1;   //RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
  21          sbit LCD1602_EN=P0^2; 
  22          sbit LCDFLASH=P0^3;
  23            //E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
  24          //**********************************************************************
  25          void LCD_en_com(unsigned char command);         //写命令指令
  26          void LCD_en_dat(unsigned char temp);         //写数据指令
  27          void LCD_set_xy(unsigned char x, unsigned char y);      //设置显示地址:X为横轴(0-15),Y为纵轴(0-1).
  28          void LCD_write_char(unsigned x,unsigned char y,unsigned char dat);  //写一个字符
  29          void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s);//写一个字符串
  30          void LCD_write_int(unsigned char x,unsigned char y,unsigned int intdat); //写无字符型整形数
  31          void LCD_init(void);             //lcd初始化
  32          void LCD_Read_BF(void);             //LCD读忙信号
  33          //**********************************************************************
  34          /*
  35          LCD1602.c
  36          
  37          Created by Zhengxihui
  38          email: zhengxihui0506@126.com
  39          May 2007
  40          
  41          */
  42          void LCD_Read_BF(void)
  43          {
  44   1          LCD1602_RW=HIGH;  //RW 1
  45   1          LCD1602_RS=LOW;   //RS 0
  46   1          LCD1602_EN=HIGH;  //EN 1 读忙信号
  47   1          LCDIO=LCDIO&0x0F|0xf0;
  48   1          while(LCDIO&MSB);
  49   1          LCD1602_EN=LOW;  
  50   1      }
  51          void LCD_en_write(void)        //EN端产生一个高电平脉冲,写LCD
  52          {
  53   1          LCD1602_EN=HIGH;
  54   1          _nop_();
  55   1          LCD1602_EN=LOW; 
C51 COMPILER V8.08   LCD1602                                                               05/10/2008 19:44:50 PAGE 2   

  56   1      }
  57          //*************************************
  58          void LCD_en_com(unsigned char command)
  59          {
  60   1          LCD_Read_BF();
  61   1          LCD1602_RS=LOW;    //RS 0  写命令
  62   1          LCD1602_RW=LOW;  //RW 0 
  63   1          
  64   1          LCDIO&=0x0F;
  65   1          LCDIO=command&0xf0 | LCDIO&0x0f; //先发送高四位数据
  66   1          LCD_en_write();
  67   1          command=command<<4; 
  68   1          LCDIO&=0x0F;
  69   1          LCDIO=command&0xf0 | LCDIO&0x0f;  //发送低四位数据
  70   1          LCD_en_write();
  71   1      }
  72          //*********************************
  73          void LCD_en_dat(unsigned char dat)
  74          {
  75   1          LCD_Read_BF();
  76   1          LCD1602_RS=HIGH;   //RS 1  写数据
  77   1          LCD1602_RW=LOW;    //RW 0 
  78   1          LCDIO &=0x0F;
  79   1          LCDIO=dat&0xf0 | LCDIO&0x0f;   //先发送高四位数据
  80   1          LCD_en_write();
  81   1          dat=dat<<4;
  82   1          LCDIO &=0x0F;
  83   1          LCDIO=dat&0xf0 | LCDIO&0x0f;    //发送低四位数据
  84   1          LCD_en_write();
  85   1      }
  86          //**************设置显示地址:X为横轴(0-15),Y为纵轴(0-1)********************
  87          void LCD_set_xy(unsigned char x,unsigned char y)
  88          {
  89   1          unsigned char address;
  90   1          x&=0x0f;
  91   1          if(!y) 
  92   1          address=0x80+x;
  93   1          else    
  94   1          address=0xc0+x;
  95   1          LCD_en_com(address); 
  96   1      }
  97          //***************写一个字符:X为横轴(0-15),Y为纵轴(0-1)**********
  98          void LCD_write_char(unsigned x,unsigned char y,unsigned char dat)
  99          {
 100   1          LCD_set_xy(x,y); 
 101   1          LCD_en_dat(dat);
 102   1      }
 103          //****************写一个字符串***************************************
 104          void LCD_write_string(unsigned char x,unsigned char y,const unsigned char *s)
 105          {
 106   1          LCD_set_xy(x,y); 
 107   1          while(*s)  
 108   1          {
 109   2              LCD_en_dat(*s);   
 110   2              s++;
 111   2          }
 112   1      }
 113          /***************写一个无字符整数***************************************
 114          void LCD_write_int(unsigned char x,unsigned char y,unsigned int intdat)
 115          {
 116              unsigned char i="0",temp[5];
 117              while(intdat/10 || intdat%10)  
C51 COMPILER V8.08   LCD1602                                                               05/10/2008 19:44:50 PAGE 3   

 118              {
 119                  temp=intdat%10;
 120                  intdat/=10;
 121                  i++;   
 122              }
 123              LCD_set_xy(x,y);
 124              while(i)  
 125              {
 126                  i--;
 127                  LCD_en_dat(temp+0x30);
 128              }
 129          }
 130          //*****///LCD的初始化函数(刚上电的时候一定要调用一次)//***************/
 131          void LCD_init(void)
 132          { 
 133   1          LCD_en_com(DATA_MODE);  //设计四位数据线模式
 134   1          LCD_en_com(DATA_MODE);  //设计四位数据线模式 
 135   1          LCD_en_com(OPEN_SCREEN); //打开LCD显示
 136   1          LCD_en_com(DISPLAY_ADDRESS);//设计首地址 
 137   1          CLEARSCREEN;       //清屏
 138   1      }
 139          void main(void)
 140          {
 141   1          LCD_init();        //1602初始化
 142   1          while(1)
 143   1          {
 144   2              
 145   2              LCD_write_string(0,0,"Fuck JANPANESE");
 146   2                      LCDFLASH=0; //说明初始化成功
 147   2          }
 148   1      }
*** WARNING C316 IN LINE 148 OF LCD1602.C: unterminated conditionals


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    199    ----
   CONSTANT SIZE    =     15    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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