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

📄 shiyan.lst

📁 刚做的89C51驱动12864液晶显示字符&汉字 刚做的89C51驱动12864液晶显示字符&汉字
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   SHIYAN                                                                12/08/2006 13:58:19 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SHIYAN
OBJECT MODULE PLACED IN shiyan.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE shiyan.c DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          
   4          #define GDM12864ADataPort P1 //LCD数据线
   5          
   6          sbit DI=P2^2; // 数据\指令 选择
   7          sbit RW=P2^1; // 读\写 选择
   8          sbit EN=P2^0; // 读\写使能
   9          sbit cs1=P2^4; // 片选1
  10          sbit cs2=P2^3; // 片选2
  11          
  12          unsigned char i,j,t;
  13          
  14          /*--------函数列表-------*/
  15          
  16          /*----------------------------------------------------------------------------------------------------*/
  17          //状态检查
  18          void CheckState()
  19          {
  20   1         unsigned char dat;
  21   1         DI=0;
  22   1         RW=1;
  23   1         do{
  24   2            GDM12864ADataPort=0x00;
  25   2            EN=1; 
  26   2                dat=GDM12864ADataPort;
  27   2            EN=0;
  28   2            dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)
  29   2            }while(!(dat==0x00));
  30   1           }
  31          /*-----------------------------------------------------------------------------------------------------*/
  32          //向LCD发送命令
  33          //command :命令
  34          SendCommandToLCD(unsigned char command)
  35          {
  36   1         CheckState();
  37   1         RW=0;
  38   1         GDM12864ADataPort=command;
  39   1         EN=1; EN=0;
  40   1      }
  41          /*----------------------------------------------------------------------------------------------------*/
  42          //写显示数据
  43          //dat:显示数据
  44          void WriteByte(unsigned char dat)
  45          {
  46   1         CheckState();
  47   1         DI=1; RW=0;
  48   1         GDM12864ADataPort=dat;
  49   1         EN=1; EN=0;
  50   1        }
  51          /*----------------------------------------------------------------------------------------------------*/
  52          //读显示数据
  53          unsigned char ReadByte()
  54          {
  55   1         unsigned char dat;
C51 COMPILER V7.50   SHIYAN                                                                12/08/2006 13:58:19 PAGE 2   

  56   1         CheckState();
  57   1         DI=1; RW=1;
  58   1         GDM12864ADataPort=0xff;
  59   1         EN=1; dat=GDM12864ADataPort; EN=0;
  60   1         return(dat);
  61   1        }
  62          /*----------------------------------------------------------------------------------------------------*/
  63          //设定行地址(页)--X 0-7
  64          void SetLine(unsigned char line)
  65          {
  66   1        line=line & 0x07; // 0<=line<=7
  67   1        line=line|0xb8; //1011 1xxx
  68   1        SendCommandToLCD(line);
  69   1      }
  70          /*----------------------------------------------------------------------------------------------------*/
  71          //设定列地址--Y 0-63
  72          void SetColumn(unsigned char column)
  73          {
  74   1        column=column &0x3f; // 0=<column<=63
  75   1        column=column | 0x40; //01xx xxxx
  76   1        SendCommandToLCD(column);
  77   1      }
  78          /*----------------------------------------------------------------------------------------------------*/
  79          //设定显示开始行--XX
  80          void SetStartLine(unsigned char startline) //0--63
  81          {
  82   1        startline=startline & 0x07;
  83   1        startline=startline|0xc0; //1100 0000
  84   1        SendCommandToLCD(startline);
  85   1       }
  86          /*----------------------------------------------------------------------------------------------------*/
  87          //开关显示
  88          void SetOnOff(unsigned char onoff)
  89          {
  90   1      onoff=0x3e | onoff; //0011 111x
  91   1      SendCommandToLCD(onoff);
  92   1      }
  93          /*---------------------------------------------------------------------------------------------------*/
  94          //选择屏幕
  95          //screen: 0-全屏,1-左屏,2-右屏
  96          void SelectScreen(unsigned char screen)
  97          { //cs1: 1--左; cs2: 1--右
  98   1         switch(screen)
  99   1         { case 0: cs1=0;//全屏
 100   2                   _nop_(); _nop_(); _nop_(); 
 101   2                   cs2=0; 
 102   2                   _nop_(); _nop_(); _nop_(); 
 103   2                   break; 
 104   2           case 1: cs1=0;//左屏
 105   2                   _nop_(); _nop_(); _nop_(); 
 106   2                   cs2=1;
 107   2                   _nop_(); _nop_(); _nop_(); 
 108   2                   break;
 109   2           case 2: cs1=1;//右屏
 110   2                   _nop_(); _nop_(); _nop_(); 
 111   2                   cs2=0;
 112   2                   _nop_(); _nop_(); _nop_(); 
 113   2                   break;
 114   2         }
 115   1      }
 116          /*---------------------------------------------------------------------------------------------------*/
 117          //延时
C51 COMPILER V7.50   SHIYAN                                                                12/08/2006 13:58:19 PAGE 3   

 118          GDM12864delay()
 119             {
 120   1          unsigned int i=500;
 121   1          while(i--) {;}
 122   1          }
 123          
 124          /*---------------------------------------------------------------------------------------------------*/
 125          //清屏
 126          //screen: 0-全屏,1-左屏,2-右
 127          void ClearScreen(unsigned char screen)
 128             { unsigned char i,j;
 129   1           SelectScreen(screen);
 130   1           for(i=0;i<8;i++){
 131   2                      SetLine(i);
 132   2                    for(j=0;j<128;j++){
 133   3                                WriteByte(0x00);
 134   3                                 }
 135   2                           }
 136   1                                               
 137   1          }
 138          /*---------------------------------------------------------------------------------------------------*/
 139          //初始化LCD
 140          void InitLCD() 
 141          { unsigned char i=250; //延时
 142   1      while(i--);
 143   1      
 144   1      SelectScreen(0);
 145   1      SetOnOff(0); //关显示
 146   1      
 147   1      ClearScreen(0);//清屏
 148   1      
 149   1      SelectScreen(0);
 150   1      SetOnOff(1); //开显示
 151   1      SelectScreen(0);
 152   1      SetStartLine(0); //开始行:0
 153   1      }
 154          /*----------------------------------------------------------------------------------------------------*/
 155          
 156          
 157          
 158          /*----------------------------------------------------------------------------------------------*/
 159          unsigned char code ASC[]={
 160          /*.--0x2E       */
 161               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 162               0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
 163          
 164          /*'/'--0x2F       */
 165               0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00,
 166               0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,
 167          
 168          /*0--0x30       */
 169                   0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00,
 170               0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,
 171          
 172          /*1--0x31       */
 173                   0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,
 174               0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,
 175          
 176          /*2--0x32       */
 177                   0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,
 178               0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,
 179          
C51 COMPILER V7.50   SHIYAN                                                                12/08/2006 13:58:19 PAGE 4   

 180          /*3--0x33       */
 181                   0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,
 182               0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,
 183          
 184          /*4--0x34       */
 185                   0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,
 186               0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,
 187          

⌨️ 快捷键说明

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