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

📄 lcd_demo.lst

📁 KIT RTC按键设置闹钟程序!
💻 LST
📖 第 1 页 / 共 5 页
字号:
ARM COMPILER V2.53,  Lcd_Demo                                                              02/08/06  16:25:34  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE Lcd_Demo
OBJECT MODULE PLACED IN .\Obj\Lcd_Demo.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe Lcd_Demo.c THUMB BROWSE DEBUG PRINT(.\LST\LCD_DEMO.LST) TABS(4) OBJECT(.\Obj
                    -\Lcd_Demo.obj) 

stmt  level    source

    1          /*============================================================
    2          LPC214X 液晶功能演示
    3          作者: Mingtree  ycxms88@163.com   http://www.mcu123.com
    4          ==============================================================
    5          
    6          
    7          
    8          
    9          
   10          
   11          
   12          /*
   13          引脚分布
   14          P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
   15          TX0  RX0            CS1       K4   K3
   16          
   17          P0.8 P0.9 P0.10 P0.11 P0.12 P0.13 P0.14 P0.15
   18          TX1  RX1  RW    SCL   SDA    K1   VRST  K2
   19          
   20          P0.16 P0.17 P0.18 P0.19 P0.20 P0.21 P0.22 P0.23
   21          BEEP  SCK1  MISO  MOSI  SSEL  RS_COM RW    VB
   22          P0.24 P0.25 P0.26 P0.27 P0.28 P0.29 P0.30 P0.31
   23                AOUT  D+     D-   A_IN1 A_IN2  CS2   ULED
   24          
   25          LED引脚
   26          L1---------L8
   27          P1.16----P1.23
   28          */
   29          
   30          #include <LPC214X.H>                        /* LPC214x definitions */
   31          
   32          #include <Code.H>
   33          
   34          #include <adc.h>
   35          
   36          #define  ok   13
   37          #define  add   7
   38          #define  dec   15
   39          #define  fun    6
   40          
   41          #define E1  4     //块1  左边
   42          #define E2  30    //块2  右边
   43          
   44          #define RW  22    //读写控制端     0为写 1为读
   45          #define A0  21    //A0为1时是数据,0时为指令数据
   46          
   47          #define  BEEP  16
   48          
   49          #define DATA PORTB  //数据
   50          
   51          
   52           uchar  key_code=0; 
   53           uint  data=0;
   54          
   55          
   56          
   57          void Io_Set(uchar pin)     //单个IO口置位函数
   58          {
ARM COMPILER V2.53,  Lcd_Demo                                                              02/08/06  16:25:34  PAGE 2   

   59   1      unsigned int io_data=1;
   60   1      io_data=io_data<<pin;
   61   1      IOSET0=io_data;         //IOSET0为IO线上置位寄存器,1有效,0无
   62   1      }
   63          
   64          
   65          void Io_Clr(uchar pin)     //单个IO口清零函数
   66          {
   67   1      unsigned int io_data=1;
   68   1      io_data=io_data<<pin;
   69   1      IOCLR0=io_data;         //IOCLR0为IO线上清零寄存器,1有效,0无
   70   1      }
   71          
   72          
   73          void Io_Set1(uchar pin)    //单个IO口置位函数
   74          {
   75   1      unsigned int io_data=1;
   76   1      io_data=io_data<<pin;
   77   1      IOSET1=io_data;         //IOSET0为IO线上置位寄存器,1有效,0无
   78   1      }
   79          
   80          
   81          void Io_Clr1(uchar pin)    //单个IO口清零函数
   82          {
   83   1      unsigned int io_data=1;
   84   1      io_data=io_data<<pin;
   85   1      IOCLR1=io_data;         //IOCLR0为IO线上清零寄存器,1有效,0无
   86   1      }
   87          void OUT_DATA(unsigned char data)
   88          {
   89   1      unsigned char i;
   90   1      for(i=0;i<8;i++) 
   91   1        {
   92   2        
   93   2         if(data&1) {Io_Set1(i+16);}   //把相应的IO口置位或者清零
   94   2         else {Io_Clr1(i+16);}
   95   2         data=data>>1;
   96   2         }
   97   1      }
   98          
   99          
  100          
  101          //延时
  102          void delay(unsigned int i)
  103          {
  104   1          unsigned int k=1000;
  105   1          while(i>0)
  106   1          {
  107   2              i--;
  108   2          }
  109   1          while(k>1)k--;
  110   1      }
  111          
  112          
  113          void delayms (unsigned int i) {                        /* Delay function */
  114   1      unsigned int n;
  115   1      while(i>1)
  116   1      {
  117   2          for(n=65535;n>1;n--);
  118   2          i--;
  119   2      }
  120   1      }
  121          //左页
  122          //发送数据
  123          void    OUTMD(unsigned char i)
  124          {
ARM COMPILER V2.53,  Lcd_Demo                                                              02/08/06  16:25:34  PAGE 3   

  125   1          Io_Set(A0); //A0_1; //写数据
  126   1          delay(1);
  127   1          Io_Set(E1); //E1_1;
  128   1          delay(1);
  129   1          OUT_DATA(i);//  DATA=i;
  130   1          delay(1);
  131   1          Io_Clr(E1); //E1_0;
  132   1          
  133   1      }
  134          //左页
  135          //发送命令
  136          void    OUTMI(unsigned char i)
  137          {
  138   1          Io_Clr(A0); //A0_0; //写指令
  139   1          delay(1);
  140   1          Io_Set(E1); //E1_1;
  141   1          delay(1);
  142   1          OUT_DATA(i);    //DATA=i;
  143   1          delay(1);
  144   1          Io_Clr(E1); //E1_0;
  145   1          
  146   1      }
  147          //右页
  148          //发送数据
  149          void    OUTSD(unsigned char i)
  150          {
  151   1          Io_Set(A0); //A0_1; //写数据
  152   1          delay(1);
  153   1          Io_Set(E2); //E2_1;
  154   1          delay(1);
  155   1          OUT_DATA(i);    //DATA=i;
  156   1          delay(1);
  157   1          Io_Clr(E2); //E2_0;
  158   1      
  159   1      }
  160          //右页
  161          //发送命令
  162          void    OUTSI(unsigned char i)
  163          {
  164   1          Io_Clr(A0); //A0_0; //写指令
  165   1          delay(1);
  166   1          Io_Set(E2); //E2_1;
  167   1          delay(1);
  168   1          OUT_DATA(i);    //DATA=i;
  169   1          delay(1);
  170   1          Io_Clr(E2); //E2_0;
  171   1          
  172   1      }
  173          
  174          
  175          
  176          
  177          //初始化
  178          void    lcdini(void)
  179          {
  180   1          Io_Clr(RW);     //RW_0;
  181   1          OUTMI(0XE2);
  182   1          delay(1);
  183   1          OUTSI(0XE2);//复位
  184   1          delay(1);
  185   1          OUTMI(0XAE);
  186   1          delay(1);
  187   1          OUTSI(0XAE);//POWER SAVE
  188   1          delay(1);
  189   1          OUTMI(0XA4);
  190   1          delay(1);
ARM COMPILER V2.53,  Lcd_Demo                                                              02/08/06  16:25:34  PAGE 4   

  191   1          OUTSI(0XA4);//动态驱动
  192   1          delay(1);
  193   1          OUTMI(0XA9);
  194   1          delay(1);
  195   1          OUTSI(0XA9);//1/32占空比
  196   1          delay(1);
  197   1          OUTMI(0XA0);
  198   1          delay(1);
  199   1          OUTSI(0XA0);//时钟线输出
  200   1          delay(1);
  201   1          OUTMI(0XEE);
  202   1          delay(1);
  203   1          OUTSI(0XEE);//写模式
  204   1          delay(1);
  205   1          OUTMI(0X00);
  206   1          OUTMI(0XC0);
  207   1          OUTSI(0X00);
  208   1          OUTSI(0XC0);
  209   1          
  210   1          OUTMI(0XAF);
  211   1          OUTSI(0XAF);
  212   1          
  213   1      }
  214          /*
  215          函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
  216          ------------------------------------------------------------------------
  217          */
  218          void SetPage(uchar page0,uchar page1)
  219          {
  220   1      OUTMI(0xB8|page1);OUTSI(0xB8|page0);
  221   1      }
  222          
  223          /*
  224          --------------------------------------------------------------------------------
  225          函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
  226          --------------------------------------------------------------------------------
  227          */
  228          void SetAddress(uchar address0,uchar address1)
  229          {
  230   1      OUTMI(address1);OUTSI(address0);
  231   1      }
  232          
  233          /*
  234          --------------------------------------------------------------------------------
  235          
  236          调用方式:void PutChar0(uchar ch)
  237          函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
  238          --------------------------------------------------------------------------------
  239          -*/
  240          void PutCharR(uchar ch)
  241          {
  242   1      OUTSD(ch);
  243   1      }
  244          
  245          /*
  246          --------------------------------------------------------------------------------
  247          
  248          调用方式:void PutChar1(uchar ch)
  249          函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
  250          --------------------------------------------------------------------------------
  251          -*/
  252          void PutCharL(uchar ch)
  253          {
  254   1      OUTMD(ch);
  255   1      } 
  256          
ARM COMPILER V2.53,  Lcd_Demo                                                              02/08/06  16:25:34  PAGE 5   

  257          /*
  258          --------------------------------------------------------------------------------
  259          
  260          调用方式:void DrawBmp(bit layer,uchar width,uchar *bmp)
  261          函数说明:画一个图,layer表示上下层,width是图形的宽,高都是16,bmp是
  262          图形指针
  263                    使用zimo3软件,纵向取模,字节倒序/240字节
  264          --------------------------------------------------------------------------------
  265          -*/
  266          void DrawBmp(unsigned layer,uchar width,unsigned char const *bmp)
  267          {
  268   1      uchar x,address,i=0;     //address表示显存的物理地址
  269   1      uchar page=0;   //page表示上下两页
  270   1      uchar window=0;  //window表示左右两页
  271   1      //putcharR  //右边
  272   1      //putcharL  //左边
  273   1      
  274   1      for (x=width;x>1;x--)
  275   1      {
  276   2      if (i>60) {window=1;address=i%61;}
  277   2      else address=i; 
  278   2      
  279   2      if(layer==0)    //显示一行八个字
  280   2          {
  281   3          SetPage(0,0);
  282   3          SetAddress(address,address);
  283   3          if(window==1)PutCharR(bmp[i]);
  284   3          else    PutCharL(bmp[i]);
  285   3          SetPage(1,1);
  286   3          SetAddress(address,address);
  287   3          if(window==1)PutCharR(bmp[i+width]);
  288   3          else    PutCharL(bmp[i+width]);
  289   3          }
  290   2      else
  291   2          {   //显示第二行八个汉字
  292   3          SetPage(2,2);
  293   3          SetAddress(address,address);
  294   3          if(window==1)PutCharR(bmp[i]);
  295   3          else    PutCharL(bmp[i]);
  296   3          SetPage(3,3);
  297   3          SetAddress(address,address);
  298   3          if(window==1)PutCharR(bmp[i+width]);
  299   3          else    PutCharL(bmp[i+width]);

⌨️ 快捷键说明

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