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

📄 lcd24064-c.lst

📁 液晶显示器LM24064的驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.09   LCD24064_C                                                            07/19/2007 17:30:57 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE LCD24064_C
OBJECT MODULE PLACED IN LCD24064-C.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCD24064-C.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include        <stdio.h>
   2          #include        <reg52.h>
   3          #include        <intrins.h>
   4          
   5          #define         uchar   unsigned char           
   6          #define         uint    unsigned int
   7          sbit    CD=P3^2;
   8          sbit    RESET=P3^3;
   9          sbit    W=P3^0;
  10          sbit    R=P3^1;                                                 //定义各控制口
  11          
  12          void    delay(void);                                    //声明延迟函数
  13          void    state01(void);                                  //声明S0S1状态检查函数
  14          void    state3(void);                                   //声明S3状态检查函数
  15          void    writed1d2(uchar,uchar);                 //声明参数写入函数
  16          void    writecom(uchar);                                //声明指令写入函数
  17          void    writedat(uchar);                                //声明数据写入函数
  18          void    writedatauto(void);                             //声明数据自动写函数
  19          void    charshow(void);                                 //声明字型显示函数
  20          void    charflash(void);                                //声明字型闪烁控制函数(PT:死循环)
  21          void    writebyte(void);                                //声明写入一个字符函数
  22          void    readycharshow(void);                    //声明字型写入准备函数
  23          void    clear(void);                                    //声明清屏函数(全屏写空格)
  24          void    blank(void);                                    //声明写空格函数
  25          
  26          void    delay(void)
  27          {
  28   1              uchar   data    i;
  29   1              uint    data    j;
  30   1              for(i=0;i<100;i++)
  31   1              for(j=0;j<300;j++);
  32   1      }
  33          
  34          void    state01(void)
  35          {
  36   1              uchar   idata   i;
  37   1              P1=0xff;
  38   1              do
  39   1              {
  40   2                      R=0;
  41   2                      i=P1;
  42   2                      R=1;
  43   2              }
  44   1              while((i&0x03)!=0x03);
  45   1      }
  46          
  47          void    state3(void)
  48          {
  49   1              uchar   idata   i;
  50   1              P1=0xff;
  51   1              do
  52   1              {
  53   2                      R=0;
  54   2                      i=P1;
  55   2                      R=1;
C51 COMPILER V7.09   LCD24064_C                                                            07/19/2007 17:30:57 PAGE 2   

  56   2              }
  57   1              while((i&0x08)!=0x08);
  58   1      }
  59          
  60          void    writed1d2(uchar d1,uchar d2)
  61          {
  62   1              state01();
  63   1              CD=0;
  64   1              P1=d1;
  65   1              W=0;
  66   1              W=1;
  67   1              CD=1;
  68   1              state01();
  69   1              CD=0;
  70   1              P1=d2;
  71   1              W=0;
  72   1              W=1;
  73   1              CD=1;
  74   1      }
  75          
  76          void    writecom(uchar com)
  77          {
  78   1              state01();
  79   1              CD=1;
  80   1              P1=com;
  81   1              W=0;
  82   1              W=1;
  83   1      }
  84          
  85          void    writedat(uchar dat)
  86          {
  87   1              state01();
  88   1              CD=0;
  89   1              P1=dat;
  90   1              W=0;
  91   1              W=1;
  92   1              CD=1;
  93   1      }
  94          
  95          void    writedatauto(void)
  96          {
  97   1              uchar   data    n;
  98   1              writecom(0xb0);                         //数据自动写开
  99   1      
 100   1              for(n=0;n<30;n++)                       //数据自动写段,文字属性
 101   1              {
 102   2                      state3();
 103   2                      writedat(0x27);
 104   2              }
 105   1      
 106   1              writecom(0xb2);                         //数据自动写关
 107   1      }
 108          
 109          void    clear(void)
 110          {
 111   1              uint    data    n;
 112   1              writed1d2(0x00,0x00);           //地址指针
 113   1              writecom(0x24);
 114   1              writecom(0xb0);                         //数据自动写开
 115   1      
 116   1              for(n=0;n<10000;n++)                    //数据自动写段,文字属性
 117   1              {
C51 COMPILER V7.09   LCD24064_C                                                            07/19/2007 17:30:57 PAGE 3   

 118   2                      state3();
 119   2                      writedat(0x00);
 120   2              }
 121   1      
 122   1              writecom(0xb2);                         //数据自动写关
 123   1      }
 124          
 125          void    charflash(void)
 126          {
 127   1              while(1)                                        //字型闪烁控制(死循环)
 128   1              {
 129   2                      state01();
 130   2                      writecom(0x98);
 131   2                      delay();
 132   2                      state01();
 133   2                      writecom(0x90);
 134   2                      delay();
 135   2              };      
 136   1      }
 137          
 138          void    writebyte(void)
 139          {
 140   1              state01();                                      //写一个字符,文字属性
 141   1              writedat(0x28);
 142   1              state01();
 143   1              writecom(0xc0);
 144   1      }
 145          
 146          void    readycharshow(void)                     //静态显示可调用
 147          {       
 148   1              uchar   idata   number;
 149   1              number=30;                                                                      //写入字型图象数
 150   1              state01();
 151   1              writed1d2((number=(number<<1)),0x00);           //图象区宽度    240的LCD横向字节数为30个
 152   1              writecom(0x43);
 153   1      }
 154          
 155          void    blank(void)
 156          {
 157   1              uchar   idata   i;
 158   1              for(i=0;i<30;i++)
 159   1              {
 160   2                      state01();
 161   2                      writedat(0x00);
 162   2                      state01();
 163   2                      writecom(0xc0); 
 164   2              }               
 165   1      }
 166          
 167          void    main(void)
 168          {
 169   1              
 170   1              uchar   idata   i,a,b;                                  //可随意支配参数
 171   1              P3=0xff;                                                        //P3控制口置位
 172   1              RESET=0;                                                        //LCD上电复位
 173   1              delay();
 174   1              RESET=1;
 175   1              delay();
 176   1      /*
 177   1              writed1d2(0x00,0x00);           //光标设置
 178   1              writecom(0x21);
 179   1              writecom(0x93);
C51 COMPILER V7.09   LCD24064_C                                                            07/19/2007 17:30:57 PAGE 4   

 180   1              writecom(0xa7);
 181   1      */
 182   1              writed1d2(0x00,0x00);           //地址指针
 183   1              writecom(0x24);
 184   1      
 185   1              writed1d2(0x00,0x00);           //文字首地址
 186   1              writecom(0x40);
 187   1      
 188   1              writed1d2(0x1e,0x00);           //文字区宽度    注意进制换算 C中0x1e=汇编中30
 189   1              writecom(0x41);
 190   1      
 191   1              writed1d2(0x00,0x00);           //图象首地址
 192   1              writecom(0x42);
 193   1              
 194   1      //      writed1d2(0x1e,0x00);           //图象区宽度    240的LCD横向字节数为30个
 195   1      //      writecom(0x43);                         //(后面有设置)
 196   1              
 197   1              writecom(0x98);                         //文字开/关 图象开/关
 198   1      
 199   1              writecom(0x80);                         //启用内部文字 (逻辑选择)
 200   1      
 201   1      //      writebyte();
 202   1      
 203   1      
 204   1      /*清全屏幕,注意文字、图形参数不同,文字图形都有时以图形为准,参数可取大些*/
 205   1              clear();
 206   1              writed1d2(0x00,0x00);           //地址指针
 207   1              writecom(0x24);
 208   1      /*                     */
 209   1      
 210   1              readycharshow();
 211   1      
 212   1              while(1)
 213   1              {
 214   2              charshow();
 215   2              writed1d2(0x00,0x00);           //地址指针
 216   2              writecom(0x24);
 217   2              };
 218   1      
 219   1      
 220   1      
 221   1      
 222   1      
 223   1      
 224   1      /*
 225   1              writecom(0xb0);                         //数据自动写开
 226   1      
 227   1              for(b=0;b<30;b++)                       //数据自动写段,文字属性
 228   1              {
 229   1                      state3();
 230   1                      writedat(0x21);
 231   1              }
 232   1      
 233   1              writecom(0xb2);                         //数据自动写关
 234   1      */      
 235   1      
 236   1      
 237   1              while(1);

⌨️ 快捷键说明

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