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

📄 lcd12864r.lst

📁 lcd12864点阵液晶屏的测试代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 160   1              delay1();
 161   1      }
 162          
 163          //-------------------------------------------
 164          //清屏函数
 165          void clear_p()
 166          {
 167   1              send_i(0x1);                   //清除所有显示
 168   1              send_i(0x34);                  //扩展指令操作
 169   1              send_i(0x30);                  //基本指令操作
 170   1      }
 171          
 172          //------------------------------------------
 173          //查表函数
 174          void qushu(int counts,const unsigned char *ps)
 175          {
C51 COMPILER V7.06   LCD12864R                                                             07/21/2008 12:39:48 PAGE 4   

 176   1              int i;                         //定义循环变量
 177   1              for(i=counts;i>0;i--)          //循环counts次
 178   1              {  
 179   2                      send_d(*ps);             //查表取数并调用显示一个字节数据函数送显示
 180   2                      delay();                 //延长一定时间,确保能看到数据一个个的显示出来 
 181   2                      ps++;                    //取下一个数据
 182   2              }
 183   1      }
 184          
 185          //-------------------------------------------
 186          //显示一字节数据函数
 187          void send_d(unsigned char x)
 188          {
 189   1              chk_busy();                  //检测LCD是否工作繁忙
 190   1              rs=1;                        //设置该字节数据是显示数据
 191   1              rw=0;                        //设置该次操作为写
 192   1              P0=x;                     //送数据口PORTD
 193   1              e=1;                         //使能
 194   1              Mdelay();     
 195   1              Mdelay();
 196   1              Mdelay();
 197   1              e=0;                         //禁止
 198   1      }
 199          
 200          //--------------------------------------------
 201          //送一字节命令代码函数
 202          void send_i(unsigned char x)
 203          {
 204   1              chk_busy();                  //检测LCD是否工作繁忙
 205   1              rs=0;                        //设置该字节数据为控制命令
 206   1              rw=0;                        //设置此次操作为写
 207   1              P0=x;                     //送数据口PORTD
 208   1              e=1;                         //使能
 209   1              Mdelay();
 210   1              Mdelay();
 211   1              e=0;                         //禁止
 212   1      }
 213          
 214          //-------------------------------------------
 215          //检测LCD是否工作繁忙
 216          void chk_busy()
 217          {  
 218   1              busy=1;                      //先置位繁忙标志位
 219   1              rs=0;                        //设置该字节数据为命令代码
 220   1              rw=1;                        //设置此次操作为读
 221   1              while(busy)                  
 222   1              {
 223   2                      Mdelay();
 224   2                      Mdelay();
 225   2                      e=1;                   //使能
 226   2                      Mdelay();
 227   2                      Mdelay();
 228   2                      if(!P0^7) 
 229   2                      busy=0;       //检测LCD是否工作繁忙
 230   2                      Mdelay();
 231   2              Mdelay();
 232   2               e=0;                   //禁止
 233   2            }
 234   1         e=0;                         //禁止
 235   1       }
 236          
 237          //-------------------------------------------
C51 COMPILER V7.06   LCD12864R                                                             07/21/2008 12:39:48 PAGE 5   

 238          //延时函数
 239          void delay()
 240          {
 241   1          int i;
 242   1          for(i=0;i<5000;i++)
 243   1             {;}
 244   1      }
 245          
 246          //-------------------------------------------
 247          //延时函数1
 248          void delay1()
 249          {
 250   1          int i;
 251   1          for(i=0;i<10;i++)
 252   1            {
 253   2              delay();               //调用延时函数
 254   2            }
 255   1      } 
 256          void Mdelay()
 257          {
 258   1      }
 259          /***************************************串口驱动函数***************************/      
 260          void Serial()interrupt 4 using 2
 261          {
 262   1      
 263   1         char c;
 264   1         if(RI!=0)
 265   1         {
 266   2              c=SBUF;
 267   2                      RI=0;
 268   2                      //snd_flag=1;
 269   2                      if(istart+ILEN!=iend)
 270   2                      {
 271   3                          inbuf[iend++&(ILEN-1)]=c;
 272   3                      }
 273   2              }
 274   1      
 275   1              if(TI!=0)
 276   1              {
 277   2                  TI=0;
 278   2                      if(ostart!=oend)
 279   2                      {
 280   3                         SBUF=outbuf[ostart++&(OLEN-1)];
 281   3                         sendfull=0;
 282   3                       }
 283   2                       else 
 284   2                       {
 285   3                           sendactive=0;
 286   3                   }
 287   2              }
 288   1      }
 289          
 290          void putbuf(char c)
 291          {
 292   1          if(!sendfull)
 293   1              {
 294   2                  if(!sendactive)
 295   2                      {
 296   3                        sendactive=1;
 297   3                        SBUF=c;
 298   3                      }
 299   2                      else
C51 COMPILER V7.06   LCD12864R                                                             07/21/2008 12:39:48 PAGE 6   

 300   2                      {
 301   3                        ES=0;
 302   3                        outbuf[oend++&(OLEN-1)]=c;
 303   3                        if(((oend^ostart)&(OLEN-1))==0)
 304   3                        {
 305   4                          sendfull=1;
 306   4                        }
 307   3                        ES=1;
 308   3                        }
 309   2                      }
 310   1      }
 311          
 312          /*********************************************************************************/
 313          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    558    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     68       7
   IDATA SIZE       =     16    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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