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

📄 12232.lst

📁 内含LCD驱动源代码大全
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   12232                                                                 10/31/2006 14:32:12 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE 12232
OBJECT MODULE PLACED IN 12232.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12232.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*============================================================
   2          功能:使用12232液晶显示图片演示
   3          作者: Mingtree  ycxms88@163.com   http://www.mcu123.com
   4          ============================================================== 
   5          硬件:TG12232B (122*32)模拟口线接线方式
   6          连接线图: 
   7          --------------------------------------------------|
   8          |DB0-----P0.0 | DB4-----P0.4 | RW-------P1.1 | A0--------P1.0 |
   9          |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | V0接1K电阻到GND |
  10          |DB2-----P0.2 | DB6-----P0.6 | E1-------P1.3 |
  11          |DB3-----P0.3 | DB7-----P0.7 | E2-------P1.2 |                  
  12          ---------------------------------------------------
  13          
  14          本程序源码只供学习参考,如有需要请联系作者。
  15          
  16          [注:AT89x52使用22.1184M或11.0592M晶振,实测使用22.1184M或11.0592都可以]
  17          编译平台:Keil uV2 7.08
  18          
  19          
  20          //可能看起来有点乱,不过效果还是不错的,显示图形总的来说比显示汉字要简单,当然显示汉字也不难。
  21          希望此程序能给你一些帮助。
  22          有什么问题可以发email 给我或到我的论坛发问.
  23          http://www.mcu123.com/bbs
  24          =============================================================*/
  25          
  26          
  27          #include <SST89x5x4.h>
  28          #include <stdio.h>
  29          #include <intrins.h>
  30          #define uchar unsigned char
  31          #define uint unsigned int
  32          #define lcd_data P0     //数据
  33          #define NOP() _nop_()
  34          
  35          sfr P4=0xA5;
  36          sbit E1 =P2^7;          //块1  左边
  37          sbit E2 =P2^6;          //块2  右边
  38          sbit RW =P2^1;  //1-read,0-write
  39          sbit A0 =P2^0;  //A0为1时是数据,0时为指令数据
  40          sbit W_R= P3^6;
  41          
  42          extern unsigned char code Bmpt1[];
  43          extern unsigned char code Bmpt2[];
  44          extern unsigned char code Bmpt3[];
  45          extern unsigned char code Bmpt4[];
  46          extern unsigned char code Bmpt5[];
  47          extern unsigned char code Bmpt6[];
  48          extern unsigned char code Bmpt7[];
  49          extern unsigned char code Bmptc[];
  50          extern unsigned char code bmp001[];
  51          extern  unsigned char code Bmp08[];
  52          extern  unsigned char code Bmp07[];
  53          extern  unsigned char code Bmp06[];
  54          extern  unsigned char code Bmp05[];
  55          extern  unsigned char code Bmp04[];
C51 COMPILER V7.07   12232                                                                 10/31/2006 14:32:12 PAGE 2   

  56          extern  unsigned char code Bmp03[];
  57          extern  unsigned char code Bmp02[];
  58          extern  unsigned char code Bmp01[];
  59          extern  unsigned char code Bmp012[];
  60          extern  unsigned char code Bmp003[];
  61          extern  unsigned char code Bmp002[];
  62          
  63          
  64          //延时
  65          void delay(unsigned int i)
  66          {
  67   1              unsigned char k=200;    
  68   1              while(i>0)
  69   1              {
  70   2                      i--;
  71   2              }
  72   1              while(k>1)k--;
  73   1      }
  74          
  75          //左页
  76          //发送数据
  77          void    OUTMD(unsigned char i)
  78          {
  79   1              E2=0;               //关S    
  80   1          E1=1;                   //开M       
  81   1              delay(5);
  82   1          A0=1;                       //数据
  83   1          WR=0;                       //写触发        
  84   1              NOP();
  85   1              lcd_data = i; 
  86   1              NOP();  
  87   1          E1=0;                   //关M
  88   1              
  89   1      }
  90          //左页
  91          //发送命令
  92          void    OUTMI(unsigned char i)
  93          {
  94   1              E2=0;               //关S    
  95   1          E1=1;                   //开M       
  96   1              delay(5);
  97   1          A0=0;                       //指令
  98   1          WR=0;                       //写触发        
  99   1              NOP();
 100   1              lcd_data = i; 
 101   1              NOP();  
 102   1          E1=0;                   //关M
 103   1      }
 104          //右页
 105          //发送数据
 106          void    OUTSD(unsigned char i)
 107          {
 108   1              E1=0;               //关S    
 109   1          E2=1;                   //开M       
 110   1              delay(5);
 111   1          A0=1;                       //数据
 112   1          WR=0;                       //写触发        
 113   1              NOP();
 114   1              lcd_data = i; 
 115   1              NOP();  
 116   1          E2=0;                   //关M
 117   1      }
C51 COMPILER V7.07   12232                                                                 10/31/2006 14:32:12 PAGE 3   

 118          //右页
 119          //发送命令
 120          void    OUTSI(unsigned char i)
 121          {
 122   1              E1=0;               //关S    
 123   1          E2=1;                   //开M       
 124   1              delay(5);
 125   1          A0=0;                       //指令
 126   1          WR=0;                       //写触发        
 127   1              NOP();
 128   1              lcd_data = i; 
 129   1              NOP();  
 130   1          E2=0;                   //关M
 131   1      }
 132          
 133          
 134          
 135          //初始化
 136          void    lcdini(void)
 137          {
 138   1              RW=0;
 139   1              OUTMI(0XE2);
 140   1              OUTSI(0XE2);//复位
 141   1              OUTMI(0XAE);
 142   1              OUTSI(0XAE);//POWER SAVE
 143   1              OUTMI(0XA4);
 144   1              OUTSI(0XA4);//动态驱动
 145   1              OUTMI(0XA9);
 146   1              OUTSI(0XA9);//1/32占空比
 147   1              OUTMI(0XA0);
 148   1              OUTSI(0XA0);//时钟线输出
 149   1              OUTMI(0XEE);
 150   1              OUTSI(0XEE);//写模式
 151   1              
 152   1              OUTMI(0X00);
 153   1              OUTMI(0XC0);
 154   1              OUTSI(0X00);
 155   1              OUTSI(0XC0);
 156   1              
 157   1              OUTMI(0XAF);
 158   1              OUTSI(0XAF);
 159   1              
 160   1      }
 161          /*
 162          函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
 163          ------------------------------------------------------------------------
 164          */
 165          void SetPage(uchar page0,uchar page1)
 166          {
 167   1      OUTMI(0xB8|page1);OUTSI(0xB8|page0);
 168   1      }
 169          
 170          /*
 171          --------------------------------------------------------------------------------
 172          函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
 173          --------------------------------------------------------------------------------
 174          */
 175          void SetAddress(uchar address0,uchar address1)
 176          {
 177   1      OUTMI(address1);OUTSI(address0);
 178   1      }
 179          
C51 COMPILER V7.07   12232                                                                 10/31/2006 14:32:12 PAGE 4   

 180          /*
 181          --------------------------------------------------------------------------------
 182          
 183          调用方式:void PutChar0(uchar ch)
 184          函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
 185          --------------------------------------------------------------------------------
 186          -*/
 187          void PutCharR(unsigned char ch_buffer1)//unsigned char ch_buffer
 188          {
 189   1      OUTSD(ch_buffer1);
 190   1      }
 191          
 192          /*
 193          --------------------------------------------------------------------------------
 194          
 195          调用方式:void PutChar1(uchar ch)
 196          函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
 197          --------------------------------------------------------------------------------
 198          -*/
 199          void PutCharL(unsigned char ch_buffer2)//unsigned char ch_buffer
 200          {
 201   1      OUTMD(ch_buffer2);
 202   1      } 
 203          
 204          /*
 205          --------------------------------------------------------------------------------
 206          
 207          调用方式:void DrawBmp(bit layer,uchar width,uchar *bmp)
 208          函数说明:画一个图,layer表示上下层,width是图形的宽,高都是16,bmp是
 209          图形指针
 210                    使用zimo3软件,纵向取模,字节倒序/240字节
 211          --------------------------------------------------------------------------------
 212          -*/
 213          void DrawBmp(bit layer,uchar width,uchar *bmp)
 214          {
 215   1      uchar x,address,i=0;     //address表示显存的物理地址
 216   1      uchar page=0;   //page表示上下两页
 217   1      bit window=0;  //window表示左右两页
 218   1      //putcharR      //右边
 219   1      //putcharL      //左边
 220   1      
 221   1      for (x=width;x>1;x--)
 222   1      {
 223   2      if (i>60) {window=1;address=i%61;}
 224   2      else address=i; 
 225   2      
 226   2      if(layer==0)    //显示一行八个字
 227   2              {
 228   3              SetPage(0,0);
 229   3              SetAddress(address,address);
 230   3              if(window==1)PutCharR(bmp[i]);
 231   3              else    PutCharL(bmp[i]);
 232   3              SetPage(1,1);
 233   3              SetAddress(address,address);
 234   3              if(window==1)PutCharR(bmp[i+width]);
 235   3              else    PutCharL(bmp[i+width]);
 236   3              }
 237   2      else
 238   2              {       //显示第二行八个汉字
 239   3              SetPage(2,2);
 240   3              SetAddress(address,address);
 241   3              if(window==1)PutCharR(bmp[i]);
C51 COMPILER V7.07   12232                                                                 10/31/2006 14:32:12 PAGE 5   

 242   3              else    PutCharL(bmp[i]);
 243   3              SetPage(3,3);
 244   3              SetAddress(address,address);
 245   3              if(window==1)PutCharR(bmp[i+width]);
 246   3              else    PutCharL(bmp[i+width]);
 247   3              }
 248   2          i++;
 249   2         
 250   2      }
 251   1      }
 252          
 253          
 254          /*
 255          --------------------------------------------------------------------------------
 256          
 257          调用方式:void clrscr(void)
 258          函数说明:清屏
 259          --------------------------------------------------------------------------------
 260          -*/
 261          void clrscr(void)
 262          {
 263   1      uchar i;
 264   1      uchar page;
 265   1      for (page=0;page<4;page++)
 266   1      {
 267   2      SetPage(page,page);
 268   2      SetAddress(0,0);
 269   2      for (i=0;i<61;i++){PutCharR(0);PutCharL(0);}
 270   2      }

⌨️ 快捷键说明

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