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

📄 main.lst

📁 Keil写的320*240的液晶显示程序。很有参考意义。
💻 LST
📖 第 1 页 / 共 2 页
字号:
 194          /************************/
 195          void Displaytext(uchar O_X,uchar O_Y,uchar code_1)
 196           {
 197   1         uchar xdata count1,a;
 198   1         uint xdata i,j;
 199   1         j = 40 * O_Y + O_X;                               //计算光标地址
 200   1         Writecode( 0x4f );                            //CSRDIR 代码(下移)
 201   1         for(i = 0; i < 2;i++)
 202   1          {  
 203   2           Writecode( 0x46 );                          //CSRW代码,设置光标地址
 204   2           a = j % 256;
 205   2           Writedata( a );                             //设置光标地址CSR,低地址
 206   2           a = j / 256 + 0x40;
 207   2           Writedata( a );                             //高地址 
 208   2           Writecode( 0x42 );                          //MWRITE代码,连续显示数据             
 209   2           for(count1 = i*16;count1 < 16*(i+1);count1++)  
 210   2            {    
 211   3             Writedata(CGTAB[code_1][count1]);       //写入数据  
 212   3            }  
 213   2           j = j + 1;
 214   2          }
 215   1       }
 216          //显示图象函数
 217          /*
 218          void Diplaypic()
 219          {
 220             uchar SAVEPAGESFR=SFRPAGE;
 221             uchar xdata a,i;
 222             uint xdata j,count1;
 223             j=0;                                        //计算光标地址
 224             Writecode(0x4f);                            //CSRDIR 代码(下移)
 225             for(i=0;i<40;i++)
 226              {  
 227               Writecode(0x46);                          //CSRW代码,设置光标地址
 228               a=j%256;
 229               Writedata(a);                             //设置光标地址CSR,低地址
 230               a=j/256+0x40;
 231               Writedata(a);                             //高地址 
 232               Writecode(0x42);                          //MWRITE代码,连续显示数据             
 233               for(count1=i*240;count1<240*(i+1);count1++)  
 234                {    
 235                 Writedata(InterFaceTAB[count1]);       //写入数据  
 236                }  
 237               j=j+1;
 238              }
 239             SFRPAGE=SAVEPAGESFR;  
 240          }
 241          */
C51 COMPILER V8.02   MAIN                                                                  09/25/2008 09:34:57 PAGE 5   

 242          
 243          /************************/
 244          /*       西文函数       */
 245          /************************/
 246          void Displaydata(uchar O_X,uchar O_Y,uchar datacode)
 247           {
 248   1        uint j;
 249   1        j=40*O_Y+O_X;
 250   1        Writecode(0x46);             //CSRW 代码
 251   1        Writedata(j%256);            //设置光标地址CSR
 252   1        Writedata(j/256);
 253   1        Writecode(0x4c);             //CSRDIR代码,光标地址自动左移
 254   1        Writecode(0x42);             //MWRITE代码,连续写
 255   1        Writedata(datacode);         //写入数据 
 256   1       }
 257          /***********************/
 258          /*      绘点函数       */
 259          /***********************/
 260          void Displaydot(uint O_X,uint O_Y)
 261           {
 262   1         uint i,k;
 263   1         uchar dat;
 264   1         i=O_X%8;                          //计算显示单元地址(X坐标),低位点坐标
 265   1         O_X=O_X/8;                        //高位,字节坐标,以8的整数为单位
 266   1         k=40*O_Y+O_X;                     //指针地址
 267   1         Writecode(0x4f);
 268   1         Writecode(0x46);                  //设置光标地址 
 269   1         Writedata(k%256);                 //计算光标地址 
 270   1         Writedata(k/256+0x40);
 271   1         if(i==0)                          //如果=0,则是第8位(第一点),即把第8位置1
 272   1          O_Y=0x80;
 273   1         else
 274   1         {
 275   2          O_Y=1;
 276   2          for(;i<7;i++)                   //计算显示位,最高位为1位
 277   2          {
 278   3           O_Y=O_Y*2;                     //左移1位
 279   3          }
 280   2         }
 281   1         Writecode(0x43);                 //MREAD代码 
 282   1         dat=Readdata();                  //读取当前显示数据,同时光标指针根据设置方式自动修改
 283   1         Writecode(0x46);                 //重新设置光标地址 
 284   1         Writedata(k%256);                //计算光标地址 
 285   1         Writedata(k/256+0x40);
 286   1         Writecode(0x42);                 //MWRITE 代码
 287   1         Writedata(dat|O_Y);              //写入合成数据,或合成显示点 
 288   1      }
 289          //*******横线*******//
 290          void H_line(uint x,uchar y,uint lenth)
 291          {
 292   1        uint i;
 293   1        for(i=x;i<lenth;i++)        //横线
 294   1         Displaydot(i,y); 
 295   1      }
 296          //*******竖线******//
 297          void L_line(uint x,uchar y,uint lenth)
 298          {
 299   1        uint i;
 300   1        for(i=y;i<lenth;i++)        //竖线
 301   1         Displaydot(x,i);          
 302   1      }
 303          
C51 COMPILER V8.02   MAIN                                                                  09/25/2008 09:34:57 PAGE 6   

 304          //*********画矩形框********//
 305          void  Rect_line(uint x,uchar y,uint lenthx,uchar lenthy)
 306          {
 307   1        uint i;
 308   1        for(i=x;i<lenthx;i++)        //横线
 309   1         Displaydot(i,y); 
 310   1        for(i=x;i<lenthx;i++)        //横线
 311   1         Displaydot(i,y+lenthy); 
 312   1        for(i=y;i<lenthy;i++)        //竖线
 313   1         Displaydot(x,i); 
 314   1        for(i=y;i<lenthy;i++)         //竖线
 315   1         Displaydot(x+lenthx,i);     
 316   1      }
 317          
 318          //**********显示连续显示n个汉字函数**********//
 319          //**坐标,p为汉字库里的首个显示汉字的偏移量**//
 320          void DisplayStrC(uchar x,uchar y,uchar code_1,uchar lenth)
 321          {   
 322   1        uchar xdata count1,a,k;
 323   1        uint xdata i,j;
 324   1        j=40*y+x;                                  //计算光标地址
 325   1        Writecode(0x4f);                               //CSRDIR 代码(下移)
 326   1      
 327   1        for(k=0;k<lenth;k++)
 328   1         {
 329   2           for(i=0;i<2;i++)
 330   2            {  
 331   3             Writecode(0x46);                          //CSRW代码,设置光标地址
 332   3             a=j%256;
 333   3             Writedata(a);                             //设置光标地址CSR,低地址
 334   3             a=j/256+0x40;
 335   3             Writedata(a);                             //高地址 
 336   3             Writecode(0x42);                          //MWRITE代码,连续显示数据             
 337   3           for(count1=i*16;count1<16*(i+1);count1++)    
 338   3             Writedata(CGTAB[code_1][count1]);         //写入数据     
 339   3           j=j+1;
 340   3         }
 341   2        code_1=code_1+1;                               //指向下一个字
 342   2         }
 343   1      }
 344          
 345          //**********显示字符串函数**********//
 346          void DisplayStr(uchar x,uchar y,uchar *p,uchar lenth)
 347          {
 348   1        uchar i;
 349   1        uint j;
 350   1        j=40*y+x;
 351   1        Writecode(0x46);             //CSRW 代码
 352   1        Writedata(j%256);            //设置光标地址CSR
 353   1        Writedata(j/256);
 354   1        Writecode(0x4c);             //CSRDIR代码,光标地址自动左移
 355   1        Writecode(0x42);             //MWRITE代码,连续写
 356   1        for(i=0;i<lenth;i++)
 357   1          Writedata(*(p+i));           //写入数据 
 358   1      }
 359          void Delay(uchar x)
 360          {
 361   1          uint i=655; 
 362   1          while(x--)
 363   1              while(i--);  
 364   1      }
 365          main()
C51 COMPILER V8.02   MAIN                                                                  09/25/2008 09:34:57 PAGE 7   

 366          {
 367   1          Delay(2); 
 368   1              Init_LCD();
 369   1              Writecode(0x42);              //MWRITE 代码
 370   1              Rect_line(0,0,319,239);
 371   1          DisplayStrC(1,3,0,2);         //文件
 372   1              H_line(0,21,319);
 373   1          H_line(0,20,300);
 374   1          H_line(0,50,300);
 375   1          H_line(0,30,300);
 376   1              H_line(0,60,300);
 377   1              while(1);
 378   1      }
*** WARNING C316 IN LINE 378 OF main.c: unterminated conditionals


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1395    ----
   CONSTANT SIZE    =    370    ----
   XDATA SIZE       =   ----      13
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3      33
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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