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

📄 lcd1302.lst

📁 我做的畢業設計,用AT89S51 控制LCD1602作為顯示. DS1302時鐘芯片顯示時間,DS18B20測量溫度,還有4X4的鍵盤驅動.實現了一個計算功能.可以用PROTUES 仿真軟件仿真,當時
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   LCD1302                                                               03/15/2007 23:40:45 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD1302
OBJECT MODULE PLACED IN LCD1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD1302.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /**************************************************************************
   3            
   4                                          THE 1602 CHAR LCD LIB
   5            
   6                                  COPYRIGHT (c)   2005 BY JJJ.
   7                                          --  ALL RIGHTS RESERVED  --
   8            
   9             File Name:       LCD.h
  10             Author:          Jiang Jian Jun
  11             Created:         2005/4/3
  12             Modified:            NO
  13             Revision:            1.0
  14            
  15          ***************************************************************************/
  16          
  17          //#ifndef LCD_CHAR_1602_2005_4_9
  18          //#define LCD_CHAR_1602_2005_4_9
  19          
  20          //#include <intrins.h>
  21          
  22          //Port Definitions**********************************************************
  23          //sbit LcdRs            = P2^0;
  24          //sbit LcdRw            = P2^1;
  25          //sbit LcdEn    = P2^2;
  26          //sfr  DBPort   = 0x80;         //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
  27          
  28          //内部等待函数**************************************************************************
  29          //unsigned char LCD_Wait(void)
  30          /*{
  31                  LcdRs=0;
  32                  LcdRw=1;        _nop_();
  33                  LcdEn=1;        _nop_();
  34                  //while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
  35                                                           //可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
  36                                                           //实际硬件时打开此语句
  37                  LcdEn=0;
  38                  return DBPort;          
  39          }*/
  40          //向LCD写入命令或数据************************************************************
  41          //#define LCD_COMMAND                   0      // Command
  42          //#define LCD_DATA                      1      // Data
  43          //#define LCD_CLEAR_SCREEN      0x01      // 清屏
  44          //#define LCD_HOMING            0x02      // 光标返回原点
  45          /*void LCD_Write(bit style, unsigned char input)
  46          {
  47                  LcdEn=0;
  48                  LcdRs=style;
  49                  LcdRw=0;                _nop_();
  50                  DBPort=input;   _nop_();//注意顺序
  51                  LcdEn=1;                _nop_();//注意顺序
  52                  LcdEn=0;                _nop_();
  53                  LCD_Wait();     
  54          }
  55          */
C51 COMPILER V7.50   LCD1302                                                               03/15/2007 23:40:45 PAGE 2   

  56          //设置显示模式************************************************************
  57          /*#define LCD_SHOW                      0x04    //显示开
  58          #define LCD_HIDE                        0x00    //显示关          
  59          
  60          #define LCD_CURSOR                      0x02    //显示光标
  61          #define LCD_NO_CURSOR           0x00    //无光标                     
  62          
  63          #define LCD_FLASH                       0x01    //光标闪动
  64          #define LCD_NO_FLASH            0x00    //光标不闪动
  65          
  66          void LCD_SetDisplay(unsigned char DisplayMode)
  67          {
  68                  LCD_Write(LCD_COMMAND, 0x08|DisplayMode);       
  69          }
  70          */
  71          //设置输入模式************************************************************
  72          /*#define LCD_AC_UP                     0x02
  73          #define LCD_AC_DOWN                     0x00      // default
  74          
  75          #define LCD_MOVE                        0x01      // 画面可平移
  76          #define LCD_NO_MOVE                     0x00      //default
  77          
  78          void LCD_SetInput(unsigned char InputMode)
  79          {
  80                  LCD_Write(LCD_COMMAND, 0x04|InputMode);
  81          }
  82          */
  83          //移动光标或屏幕************************************************************
  84          /*
  85          #define LCD_CURSOR              0x02      
  86          #define LCD_SCREEN              0x08
  87          #define LCD_LEFT                0x00
  88          #define LCD_RIGHT               0x04
  89          void LCD_Move(unsigned char object, unsigned char direction)
  90          {
  91                  if(object==LCD_CURSOR)
  92                          LCD_Write(LCD_COMMAND,0x10|direction);
  93                  if(object==LCD_SCREEN)
  94                          LCD_Write(LCD_COMMAND,0x18|direction);
  95          }
  96          */
  97          //初始化LCD************************************************************
  98          /*void LCD_Initial()
  99          {
 100                  LcdEn=0;
 101                  LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
 102                  LCD_Write(LCD_COMMAND,0x38);
 103                  LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
 104                  LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
 105                  LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
 106          }
 107          */
 108          //************************************************************************
 109          /*void GotoXY(unsigned char x, unsigned char y)
 110          {
 111                  if(y==0)
 112                          LCD_Write(LCD_COMMAND,0x80|x);
 113                  if(y==1)
 114                          LCD_Write(LCD_COMMAND,0x80|(x-0x40));
 115          }
 116          void Print(unsigned char *str)
 117          {
C51 COMPILER V7.50   LCD1302                                                               03/15/2007 23:40:45 PAGE 3   

 118                  while(*str!='\0')
 119                  {
 120                          LCD_Write(LCD_DATA,*str);
 121                          str++;
 122                  }
 123          }*/
 124          /*
 125          void LCD_LoadChar(unsigned char user[8], unsigned char place)
 126          {
 127                  unsigned char i;
 128                  LCD_Write(LCD_COMMAND,0x40|(place*8));
 129                  for(i=0; i<8; i++)
 130                          LCD_Write(LCD_DATA,user[i]);
 131          }
 132          */
 133          //************************************************************************
 134          //#endif
 135          #ifndef _LCD1602_H_
 136          #define _LCD1602_H_
 137          
 138          //输入方式设置
 139          #define LCD_AC_AUTO_INCREMENT     0x06   //数据读、写操作后,AC自动增一
 140          #define LCD_AC_AUTO_DECREASE      0x04   //数据读、写操作后,AC自动减一
 141          #define LCD_MOVE_ENABLE           0x05   //数据读、写操作,画面平移
 142          #define LCD_MOVE_DISENABLE        0x04   //数据读、写操作,画面不动
 143          #define LCD_GO_HOME               0x02   //AC=0,光标、画面回HOME位
 144          //设置显示、光标及闪烁开、关
 145          #define LCD_DISPLAY_ON            0x0C         //显示开
 146          #define LCD_DISPLAY_OFF           0x08         //显示关
 147          #define LCD_CURSOR_ON             0x0A         //光标显示
 148          #define LCD_CURSOR_OFF            0x08         //光标不显示
 149          #define LCD_CURSOR_BLINK_ON       0x09         //光标闪烁
 150          #define LCD_CURSOR_BLINK_OFF      0x08         //光标不闪烁
 151          //光标、画面移动,不影响DDRAM
 152          #define LCD_LEFT_MOVE             0x18         //LCD显示左移一位
 153          #define LCD_RIGHT_MOVE            0x1C         //LCD显示右移一位
 154          #define LCD_CURSOR_LEFT_MOVE      0x10         //光标左移一位
 155          #define LCD_CURSOR_RIGHT_MOVE     0x14         //光标右移一位
 156          //工作方式设置
 157          #define LCD_DISPLAY_DOUBLE_LINE   0x38         //两行显示
 158          #define LCD_DISPLAY_SINGLE_LINE   0x30         //单行显示
 159          #define LCD_CLEAR_SCREEN  0X01   //清屏
 160          /***********************LCD1602地址相关******************************/
 161          #define LINE1_HEAD    0x80   // 第一行DDRAM起始地址 
 162          #define LINE2_HEAD    0xc0   //  第二行DDRAM起始地址
 163          #define LINE1         0      //第一行
 164          #define LINE2         1      //第二行
 165          #define LINE_LENGTH   16     //每行的最大字符长度
 166          /***********************LCD1602接线引脚定义**************************/
 167          
 168          #define LCDIO     P0        //定义P2口与LCD1602的数据口相接
 169            sbit   LCD_RS=P2^0;         
*** ERROR C202 IN LINE 169 OF LCD1302.C: 'P2': undefined identifier
 170            sbit   LCD_RW=P2^1;         
*** ERROR C202 IN LINE 170 OF LCD1302.C: 'P2': undefined identifier
 171            sbit   LCD_EN=P2^2;
*** ERROR C202 IN LINE 171 OF LCD1302.C: 'P2': undefined identifier
 172            sbit  LCD_BUSY=LCDIO^7;
*** ERROR C202 IN LINE 172 OF LCD1302.C: 'P0': undefined identifier
 173           /**********************另外相关的定*********************************/
 174           #define HIGH               1
 175           #define LOW                0   
C51 COMPILER V7.50   LCD1302                                                               03/15/2007 23:40:45 PAGE 4   

 176           #define TURE               1
 177           #define  FALSE             0
 178           #define  uchar unsigned char
 179           #define  uint  unsigned int
 180           

⌨️ 快捷键说明

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