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

📄 lcd12864.lst

📁 用单片机控制写lcd的c代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 156   2      for(i=0;i<125;i++);
 157   2      }
 158   1      }
 159          //检查LCD忙状态
 160          void LcdBusy(){
 161   1      DI=0;
 162   1      RW=1;
 163   1      E=1;
 164   1      _nop_();
 165   1      while(Busy);
 166   1      E=0;
 167   1      }
 168          //给LCD写命令
 169          void WriteCommand(uchar Command){
 170   1      LcdBusy();
 171   1      DI=0;
 172   1      RW=0;
 173   1      P0=Command;
 174   1      E=1;
 175   1      _nop_();
 176   1      E=0;
 177   1      }
 178          //给LCD写数据
 179          void WriteData(uchar Data){
C51 COMPILER V8.02   LCD12864                                                              11/14/2007 13:59:43 PAGE 4   

 180   1      LcdBusy();
 181   1      DI=1;
 182   1      RW=0;
 183   1      P0=Data;
 184   1      E=1;
 185   1      _nop_();
 186   1      E=0;
 187   1      }
 188          //LCD清屏
 189          void LcdClear(){
 190   1      uchar i,j,Y=0;
 191   1      CSL=1;
 192   1      CSR=1;
 193   1      for(j=0;j<8;j++){
 194   2      WriteCommand(Y|0xB8);
 195   2      WriteCommand(0x40);
 196   2      for(i=0;i<64;i++) WriteData(0x00);
 197   2      Y++;
 198   2      }
 199   1      }
 200          //LCD初始化
 201          void LcdInit(){
 202   1      RST=0;
 203   1      _nop_();_nop_();_nop_();
 204   1      RST=1;
 205   1      CSL=1;
 206   1      CSR=1;
 207   1      WriteCommand(0x3F);//开显示
 208   1      Delay(1);
 209   1      LcdClear();
 210   1      }
 211          //显示一幅图像
 212          void Pic(uchar *PicCode){
 213   1      uchar i,j,Y=0;
 214   1      for(j=0;j<8;j++){
 215   2      //左半屏写64个数据
 216   2      CSL=1;
 217   2      CSR=1;
 218   2      WriteCommand(Y|0xB8);
 219   2      WriteCommand(0x40);
 220   2      for(i=0;i<64;i++) WriteData(*PicCode++);
 221   2      //右半屏写64个数据
 222   2      CSL=0;
 223   2      CSR=1;
 224   2      WriteCommand(Y|0xB8);
 225   2      WriteCommand(0x40);
 226   2      for(i=0;i<64;i++) WriteData(*PicCode++);
 227   2      Y++;
 228   2      }
 229   1      }
 230          //显示汉字
 231          void Zh(uchar X,uchar Y,uchar Start,uchar Num){
 232   1      uchar i;
 233   1      uchar j;
 234   1      for(j=0;j<Num;j++){
 235   2        for(i=0;i<16;i++){
 236   3          if(X>128){
 237   4              Y+=2;
 238   4              X=1;
 239   4              }
 240   3          if(X>64){
 241   4          CSL=0;
C51 COMPILER V8.02   LCD12864                                                              11/14/2007 13:59:43 PAGE 5   

 242   4          CSR=1;
 243   4          }else{
 244   4          CSL=1;
 245   4          CSR=0;
 246   4          }
 247   3          WriteCommand((Y-1)*2|0xB8);
 248   3          WriteCommand((X-1)|0x40);
 249   3          WriteData(ZhCode[(Start+j)*32+i]);
 250   3          WriteCommand(((Y-1)*2+1)|0xB8);
 251   3          WriteCommand((X-1)|0x40);
 252   3          WriteData(ZhCode[(Start+j)*32+i+16]);
 253   3              X++;
 254   3        }
 255   2      }
 256   1      }
 257          //显示字符
 258          void Char(uchar X,uchar Y,uchar Start,uchar Num){
 259   1      uchar i;
 260   1      uchar j;
 261   1      for(j=0;j<Num;j++){
 262   2        for(i=0;i<8;i++){
 263   3          if(X>128){
 264   4              Y+=2;
 265   4              X=1;
 266   4              }
 267   3          if(X>64){
 268   4          CSL=0;
 269   4          CSR=1;
 270   4          }else{
 271   4          CSL=1;
 272   4          CSR=0;
 273   4          }
 274   3          WriteCommand((Y-1)*2|0xB8);
 275   3          WriteCommand((X-1)|0x40);
 276   3          WriteData(CharCode[(Start+j)*16+i]);
 277   3          WriteCommand(((Y-1)*2+1)|0xB8);
 278   3          WriteCommand((X-1)|0x40);
 279   3          WriteData(CharCode[(Start+j)*16+i+8]);
 280   3              X++;
 281   3        }
 282   2      }
 283   1      }
 284          //主函数
 285          main(){
 286   1      P0=0x00;
 287   1      LcdInit();//Lcd初始化
 288   1      while(1){
 289   2      Pic(PicCode);
 290   2      Delay(2000);
 291   2      LcdClear();
 292   2      Zh(17,1,0,6);//显示"伟杰电子科技"
 293   2      Char(1,2,0,16);//显示"www.wejay.com.cn"
 294   2      Zh(1,3,6,2);//显示"型号"
 295   2      Char(33,3,16,8);//显示":WJ89S52"
 296   2      Zh(1,4,8,2);//显示"电话"
 297   2      Char(33,4,24,12);//显示":13818903490"
 298   2      Delay(2000);
 299   2      LcdClear();
 300   2      }
 301   1      }


C51 COMPILER V8.02   LCD12864                                                              11/14/2007 13:59:43 PAGE 6   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    648    ----
   CONSTANT SIZE    =   1920    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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