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

📄 lcddrive.lst

📁 基于LPC2132和图形液晶128*64(型号为MGL(S)-12864T)的控制显示系统。可以显示时间
💻 LST
📖 第 1 页 / 共 5 页
字号:
ARM COMPILER V2.32a,  LCDDRIVE                                                             25/01/07  14:11:01  PAGE 1   


ARM COMPILER V2.32a, COMPILATION OF MODULE LCDDRIVE
OBJECT MODULE PLACED IN LCDDRIVE.OBJ
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe LCDDRIVE.C THUMB BROWSE DEBUG TABS(4) 

stmt  level    source

    1                    
    2          /****************************************************************************************
    3          * 文件名:LCDDRIVE.C
    4          * 功能:图形液晶128*64驱动(型号为MGL(S)-12864T)。62K显示存,0000H-7FFFH地址。显示是横向字节,高位
    5          *      在前。
    6          * 说明:图形液晶采用T6963C为LCD控制芯片,内带负压产生器,单5伏供电,并行接口(使用LPC2132驱动)。
    7          
    8          
    9          次页面内的函数只是命令,具体的控制信号需要在主程序调用这些函数前进行定义即使能
   10          /****************************************************************************************/
   11          #include    <includes.h>
   12          #include <LPC21xx.H> 
   13          #include <stdio.h>
   14          /***********************************/
   15          
   16          #define  GUI_LCM_XMAX       128                         /* 定义液晶x轴的点数 */
   17          #define  GUI_LCM_YMAX       64                          /* 定义液晶y轴的点数 */
   18          
   19          #define  LCD_CD             0x08000000
   20          #define  LCD_WR             0x08000000
   21          #define  LCD_RD             0x10000000
   22          #define  LCD_CE             0x20000000
   23          #define  LCD_RST            0x01000000
   24          #define  LCD_DIR            0x00400000
   25          #define  BEEPCON            0x80000000
   26          #define  LCD_BL             0x00800000
   27          #define  TCOLOR     uint8
   28          extern  uint8   gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8];             // 声明显示缓冲区
   29          
   30          
   31              uint8 shuzi_0[12]={0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,};  //  文字:  0  
   32              uint8 shuzi_1[12]={0x00,0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00,} ; //  文字:  1  
   33              uint8 shuzi_2[12]={0x00,0x00,0x1C,0x22,0x22,0x04,0x08,0x10,0x20,0x3E,0x00,0x00,} ; //  文字:  2  
   34              uint8 shuzi_3[12]={0x00,0x00,0x1C,0x22,0x02,0x0C,0x02,0x02,0x22,0x1C,0x00,0x00,};  //  文字:  3  
   35              uint8 shuzi_4[12]={0x00,0x00,0x04,0x0C,0x14,0x14,0x24,0x3E,0x04,0x0E,0x00,0x00,};  //  文字:  4  
   36              uint8 shuzi_5[12]={0x00,0x00,0x3E,0x20,0x20,0x3C,0x02,0x02,0x22,0x1C,0x00,0x00, }; //  文字:  5  
   37              uint8 shuzi_6[12]={0x00,0x00,0x1C,0x22,0x20,0x3C,0x22,0x22,0x22,0x1C,0x00,0x00,};  //  文字:  6  
   38              uint8 shuzi_7[12]={0x00,0x00,0x3E,0x24,0x04,0x08,0x08,0x08,0x08,0x08,0x00,0x00,};  //  文字:  7  
   39              uint8 shuzi_8[12]={0x00,0x00,0x1C,0x22,0x22,0x1C,0x22,0x22,0x22,0x1C,0x00,0x00, }; //  文字:  8  
   40              uint8 shuzi_9[12]={0x00,0x00,0x1C,0x22,0x22,0x22,0x1E,0x02,0x22,0x1C,0x00,0x00,};  //  文字:  9 
   41              uint8 shuzi_kg[12]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; //  空格
   42            /* 数字 */
   43          uint8 data1[180]={  
   44              0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,  //  文字:  0  
   45              0x00,0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00,  //  文字:  1  
   46              0x00,0x00,0x1C,0x22,0x22,0x04,0x08,0x10,0x20,0x3E,0x00,0x00,  //  文字:  2  
   47              0x00,0x00,0x1C,0x22,0x02,0x0C,0x02,0x02,0x22,0x1C,0x00,0x00,  //  文字:  3  
   48              0x00,0x00,0x04,0x0C,0x14,0x14,0x24,0x3E,0x04,0x0E,0x00,0x00,  //  文字:  4  
   49              0x00,0x00,0x3E,0x20,0x20,0x3C,0x02,0x02,0x22,0x1C,0x00,0x00,  //  文字:  5  
   50              0x00,0x00,0x1C,0x22,0x20,0x3C,0x22,0x22,0x22,0x1C,0x00,0x00,  //  文字:  6  
   51              0x00,0x00,0x3E,0x24,0x04,0x08,0x08,0x08,0x08,0x08,0x00,0x00,  //  文字:  7  
   52              0x00,0x00,0x1C,0x22,0x22,0x1C,0x22,0x22,0x22,0x1C,0x00,0x00,  //  文字:  8  
   53              0x00,0x00,0x1C,0x22,0x22,0x22,0x1E,0x02,0x22,0x1C,0x00,0x00,  //  文字:  9  
   54              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,  //  文字:  .
   55              0x00,0x00,0x1C,0x22,0x22,0x04,0x08,0x08,0x00,0x08,0x00,0x00,  //  文字: ?
   56              0x04,0x0C,0x1C,0x3C,0x7C,0xFC,0xFC,0x7C,0x3C,0x1C,0x0C,0x04,  //  左箭头            
   57              0x20,0x30,0x38,0x3C,0x3E,0x3F,0x3F,0x3E,0x3C,0x38,0x30,0x20,  //  右箭头
   58              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //  空格
   59              } ;
ARM COMPILER V2.32a,  LCDDRIVE                                                             25/01/07  14:11:01  PAGE 2   

   60              uint8 Matrixxie[17]=
   61          {
   62          /*------------------------------------------------------------------------------
   63          ;  源文件 / 文字: /
   64          ;  宽×高(像素) : 18×7
   65          ------------------------------------------------------------------------------*/
   66            0x00,0x00,0x02,0x04,0x04,0x04,0x08,
   67            0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x40,
   68            0x80,0x00
   69          };
   70          uint8 MatrixMaohao[12]=
   71          {
   72          /*------------------------------------------------------------------------------
   73          ;  源文件 / 文字: :
   74          ;  宽×高(像素) : 18×7
   75          ------------------------------------------------------------------------------*/
   76           0x00,0x00,
   77            0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,
   78            0x00,0x00
   79          };
   80          
   81          /************************************************
   82          *   名称:DelayNS()
   83          *   功能:长软件延时
   84          *   入口参数:dly               延时参数,值越大,延时越长
   85          *   出口参数:无
   86          ***************************************************/
   87          void DelayNs(uint32 dly)
   88          {   uint32  i;
   89   1          for(;dly>0;dly--)
   90   1              for(i=0;i<250;i++);
   91   1      }
   92          /* *************硬件连接:D0--D7  <===>  P1.16--P1.23    PINSEL2 =0x0008H  P1:25:16 用作GPIO 管脚。
   93          
   94          *               /WR     <===>  P0.27
   95          *               /RD     <===>  P0.28
   96          *               /CE     <===>  P0.29
   97          *               /RST    <===>  P1.24 
   98          *               C/D     <===>  P1.27/TDO    跳线
   99          
  100          
  101          /***********************************************************************
  102          * 名称:LCD_WriteCommand()
  103          * 功能:写命令子程序。(发送命令前,不检查液晶模块的状态)
  104          * 入口参数:command     要写入LCM的命令字
  105          * 出口参数:无
  106          * 说明:函数会设置LCM数据总线为输出方式
  107          ***********************************************************************/
  108          extern void   LCD_WriteCommand(uint8 lcdcommand)  
  109                 { 
  110   1              uint32 lcdcommand32;
  111   1              uint8  lcdcommand8; 
  112   1               IODIR1=IODIR1|0x00FF0000;              /*P1.16--p1.23作为GPIO输出口*/
  113   1      
  114   1              IOSET0|=LCD_DIR;                    //74HC245 DIR 为高时数据从左到右
  115   1          DelayNs(1);
  116   1              IOSET1|=LCD_CD;                 //  指令通道使能=1
  117   1              DelayNs(1);
  118   1              IOCLR0|=LCD_CE;             //  片选使能
  119   1              DelayNs(1);
  120   1              IOCLR0|=LCD_WR;             //  LCD写使能
  121   1              DelayNs(1);
  122   1      
  123   1              lcdcommand8=lcdcommand;
  124   1             
  125   1              lcdcommand32 = lcdcommand8 << 16;                       /*数据向左移16位*/
ARM COMPILER V2.32a,  LCDDRIVE                                                             25/01/07  14:11:01  PAGE 3   

  126   1              IOPIN1=(IOPIN1&0xFF00FFFF)|lcdcommand32;
  127   1              //IOCLR0|=LCD_WR;
  128   1                              //  LCD写使能
  129   1              DelayNs(1);//需要延时
  130   1              
  131   1              IOSET0|=LCD_WR;              //  LCD写使能停止
  132   1              IOSET0|=LCD_CE;              //  LCD片选停止
  133   1              DelayNs(1);
  134   1              IOSET1|=LCD_CD;              //  写数据使能 终止  
  135   1              DelayNs(1);
  136   1            }
  137          
  138          /***********************************************************************
  139          * 名称:LCD_WriteData()
  140          * 功能:写数据子程序。(发送数据前,不检查液晶模块的状态)
  141          * 入口参数:dat     要写入LCM的数据
  142          * 出口参数:无
  143          * 说明:函数会设置LCM数据总线为输出方式
  144          ***********************************************************************/
  145          extern void LCD_WriteData(uint8 lcddat) 
  146               {  uint32 lcddat32;
  147   1              lcddat32=lcddat;
  148   1      
  149   1             IODIR1=IODIR1|0x00FF0000;                        /*P1.16--p1.23作为GPIO输出口*/
  150   1              
  151   1              IOSET0|=LCD_DIR;                    //74HC245 DIR 为高时数据从左到右
  152   1              DelayNs(1);
  153   1              IOCLR1|=LCD_CD;         //数据通道使能 =0
  154   1              DelayNs(1);
  155   1              IOCLR0|=LCD_CE;
  156   1              DelayNs(1);
  157   1              IOCLR0|=LCD_WR;             //  LCD写使能
  158   1              DelayNs(1);
  159   1              
  160   1              
  161   1              lcddat32=lcddat;
  162   1              lcddat32 <<= 16;                                /*数据向左移16位*/
  163   1              IOPIN1=(IOPIN1&0xFF00FFFF)|lcddat32;
  164   1              
  165   1              DelayNs(1); //需要延时
  166   1              
  167   1              IOSET0|=LCD_WR;              // LCD写使能停止
  168   1              IOSET0|=LCD_CE;              //LCD片选停止
  169   1              DelayNs(1);
  170   1              IOSET1|=LCD_CD;             //写数据使能 终止
  171   1              DelayNs(1);
  172   1            }
  173          
  174          
  175          
  176          /***********************************************************************
  177          * 名称:LCD_ReadState()
  178          * 功能:读取状态字子程序。
  179          * 入口参数:无
  180          * 出口参数:返回值即为读出的状态字
  181          * 说明:函数会设置LCM数据总线为输入方式
  182          ***********************************************************************/
  183          uint8   LCD_ReadState()
  184                { uint32 LCDinSTATE;
  185   1              uint8  LCDinSTATE8;
  186   1      
  187   1              IOCLR0|=LCD_DIR;                    //74HC245 DIR 为低时数据从右到左
  188   1              DelayNs(1);
  189   1              IODIR1=IODIR1&0xFF00FFFF;                               /*P1.16--p1.23作为GPIO输入口*/
  190   1              DelayNs(1);
  191   1              IOSET1|=LCD_CD;                 //数据通道使能 =0
ARM COMPILER V2.32a,  LCDDRIVE                                                             25/01/07  14:11:01  PAGE 4   

  192   1                  DelayNs(1);
  193   1              IOCLR0|=LCD_CE;                 //片选LCD
  194   1              DelayNs(1);
  195   1              IOCLR0|=LCD_RD;                         //读使能
  196   1          
  197   1              
  198   1              LCDinSTATE=IOPIN1;
  199   1              LCDinSTATE>>=16;
  200   1              LCDinSTATE8=LCDinSTATE;
  201   1              DelayNs(1);
  202   1      
  203   1              IOSET0|=LCD_RD;                 //读使能关闭
  204   1              DelayNs(1);
  205   1              IOSET0|=LCD_CE;         //片选LCD 结束
  206   1              DelayNs(1);
  207   1              IODIR1=IODIR1|0xFFFF0000;       // 重新定义P1.16--P1.23为输出
  208   1              
  209   1              IOSET0|=LCD_DIR;                    //74HC245 DIR 为高时数据从左到右
  210   1              DelayNs(1);
  211   1              return LCDinSTATE8;
  212   1           }
  213          
  214          /***********************************************************************
  215          * 名称:LCD_ReadData()
  216          * 功能:读取数据子程序。
  217          * 入口参数:无
  218          * 出口参数:返回值即为读出的数据
  219          * 说明:函数会设置LCM数据总线为输入方式
  220          ***********************************************************************/
  221          extern uint8 LCD_ReadData()
  222                  {uint32 LCDinData;
  223   1               uint8  LCDinData8;
  224   1               
  225   1               IOCLR0|=LCD_DIR;                   //74HC245 DIR 为低时数据从右到左
  226   1               DelayNs(1);
  227   1               IODIR1=IODIR1&0xFF00FFFF;                              /*P1.16--p1.23作为GPIO输入口*/
  228   1               
  229   1               DelayNs(1);
  230   1               IOSET1|=LCD_CD;            //数据通道使能 =0
  231   1               DelayNs(1);
  232   1               IOCLR0|=LCD_CE;            //片选LCD
  233   1               DelayNs(1);
  234   1               IOCLR0|=LCD_RD;                        //读使能
  235   1              
  236   1                       
  237   1               LCDinData=IOPIN1;
  238   1               LCDinData>>=16;
  239   1               LCDinData8=LCDinData;
  240   1               DelayNs(1);
  241   1          
  242   1               IOSET0|=LCD_RD;                //读使能关闭
  243   1               DelayNs(1);
  244   1               IOSET0|=LCD_CE;            //片选LCD 结束
  245   1               DelayNs(1);
  246   1               IODIR1=IODIR1|0xFFFF0000;      // 重新定义P1.16--P1.23为输出
  247   1                  DelayNs(1);
  248   1                  IOSET0|=LCD_DIR;                    //74HC245 DIR 为高时数据从左到右
  249   1                  DelayNs(1);
  250   1               return LCDinData8;
  251   1      }
  252          

⌨️ 快捷键说明

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