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

📄 lcd.lst

📁 51单片机与LCD接口的C语言驱动程序设计.
💻 LST
📖 第 1 页 / 共 5 页
字号:
 188   1       RW = 0;
 189   1       E  = 1;
 190   1       _nop_();
 191   1       E  = 0;
 192   1       _nop_();
 193   1      }
 194          
 195          void WriteCommandM( unsigned char CommandByte )
 196          {
 197   1       BusyM();
 198   1       P0 = CommandByte;
 199   1       RS = 0;  //指令
 200   1       RW = 0;
 201   1       E  = 1;
 202   1       _nop_();
 203   1       E  = 0;
 204   1       _nop_();
 205   1      }
 206          
 207          void WriteCommandR( unsigned char CommandByte )
 208          {
 209   1       BusyR();
 210   1       P0 = CommandByte;
 211   1       RS = 0;  //指令
 212   1       RW = 0;
 213   1       E  = 1;
 214   1       _nop_();
 215   1       E  = 0;
 216   1       _nop_();
 217   1      }
 218          
 219          /***************************/
 220          /*读数据                   */
 221          /***************************/
 222          unsigned char ReadData( void )
 223          {
 224   1       unsigned char DataByte;
 225   1       Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 226   1       RS = 1;  /*数据输出*/
 227   1       RW = 1;  /*读入  */
 228   1       P0 = 0xFF;  //输出0xff以便读取正确
 229   1       E  = 1;  /*读入到LCM*/
 230   1       _nop_();
 231   1       DataByte = P0; /*数据读出到数据口P1 */
 232   1       E  = 0;
 233   1       _nop_();
 234   1       return DataByte;
 235   1      }
 236          
 237          /***************************/
 238          /*写数据                   */
 239          /***************************/
 240          void WriteData( unsigned char DataByte )
 241          {
C51 COMPILER V7.08   LCD                                                                   05/26/2008 00:03:31 PAGE 5   

 242   1       Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 243   1       RS = 1;  /*数据输出*/
 244   1       RW = 0;  /*写输出  */
 245   1       P0 = DataByte; /*数据输出到数据口 */
 246   1       E  = 1;  /*写入到LCM*/
 247   1       _nop_();
 248   1       E  = 0;
 249   1       _nop_();
 250   1      }
 251          
 252          void LcmClear(unsigned char a,unsigned char b,unsigned char c,unsigned char d)
 253          {
 254   1       Page = 0;
 255   1       Col  = 0;
 256   1       for(Page=a;Page<b;Page++)
 257   1        for(Col=c;Col<d;Col++)
 258   1         WriteData(0);
 259   1      }
 260          
 261          void LcmInit( void )
 262          {
 263   1       WriteCommandL(0x3f); //开显示
 264   1       WriteCommandM(0x3f);
 265   1       WriteCommandR(0x3f);
 266   1       
 267   1       WriteCommandL(0xc0); //设置起始地址=0
 268   1       WriteCommandM(0xc0);
 269   1       WriteCommandR(0xc0);
 270   1      
 271   1       WriteCommandL(0x3f); //开显示
 272   1       WriteCommandM(0x3f);
 273   1       WriteCommandR(0x3f);
 274   1      
 275   1       LcmClear(0,8,0,192);
 276   1       Col = 0;
 277   1       Page= 0;
 278   1       Locatexy();
 279   1      }
 280          
 281          void LcmPutDots( unsigned char a,unsigned char b,unsigned char c,unsigned char d,unsigned char DotByte )
 282          {
 283   1       Page = 0;
 284   1       Col  = 0;
 285   1       for(Page=a;Page<b;Page++)
 286   1       {
 287   2        for(Col=c;Col<d;Col++)
 288   2        {
 289   3         WriteData( DotByte );
 290   3        }
 291   2       }
 292   1      }
 293          
 294          void LcmPutBMP(unsigned char a,unsigned char b,unsigned char c,unsigned char d,unsigned char *puts )
 295          {
 296   1       unsigned int X=0;
 297   1       Page = 0;
 298   1       Col  = 0;
 299   1       for(Page=a;Page<b;Page++)
 300   1       {
 301   2        for(Col=c;Col<d;Col++)
 302   2        {
 303   3         WriteData( puts[X] );
C51 COMPILER V7.08   LCD                                                                   05/26/2008 00:03:31 PAGE 6   

 304   3         X++;
 305   3        }
 306   2       }
 307   1      }
 308          
 309          /*void date(void)
 310          {
 311          LcmPutBMP(0,2,42,50,number_0);               //0
 312          LcmPutBMP(0,2,50,58,number_8);               //8年
 313          
 314          LcmPutBMP(0,2,62,70,number_0);               //(0-1)月
 315          LcmPutBMP(0,2,70,78,number_5);               //(0-9)月  
 316          
 317          LcmPutBMP(0,2,82,90,number_2);                //0-3日
 318          LcmPutBMP(0,2,90,98,number_6);                //0-9日            
 319          }*/
 320          void Delay(unsigned int MS)
 321          {
 322   1       unsigned char us,usn;
 323   1       while(MS!=0)
 324   1       {
 325   2        usn = 2; //for 12M
 326   2        while(usn!=0)
 327   2        {
 328   3         us=0xf6;
 329   3         while (us!=0){us--;};
 330   3         usn--;
 331   3        }
 332   2        MS--;
 333   2       }
 334   1      }
 335          void key_scan(void)
 336          {  
 337   1           if(KEY_YES==0){Delay(100);if(KEY_YES==0){KEY=1;}}
 338   1           if(KEY_UP==0){Delay(100);if(KEY_UP==0){KEY=2;a+=1;if(a==5)a=1;}}
 339   1           if(KEY_DOWN==0){Delay(100);if(KEY_DOWN==0){KEY=3;a-=1;if(a==0)a=4;}}
 340   1           if(KEY_NO==0){Delay(100);if(KEY_NO==0){KEY=4;}}               
 341   1      }
 342          void main_menu(void)
 343          {    KEY=0;
 344   1           for(;;)
 345   1           {       
 346   2                   LcmPutBMP(0,2,2,34,DATE);
 347   2                   LcmPutBMP(0,2,34,42,Symbol);
 348   2                   LcmPutBMP(0,2,106,138,TIME);
 349   2                   LcmPutBMP(0,2,138,146,Symbol);
 350   2                   LcmPutBMP(2,4,2,66,Company_Profile);
 351   2                   LcmPutBMP(2,4,66,74,Symbol);
 352   2                   LcmPutBMP(2,4,100,164,Contact);
 353   2                   LcmPutBMP(2,4,164,172,Symbol);
 354   2                   LcmPutBMP(4,6,2,66,Information);
 355   2                   LcmPutBMP(4,6,66,74,Symbol);
 356   2                   LcmPutBMP(6,8,2,66,parameters);
 357   2                   LcmPutBMP(6,8,66,74,Symbol);
 358   2                   
 359   2                   LcmPutBMP(0,2,42,50,number_0);               //0
 360   2                   LcmPutBMP(0,2,50,58,number_8);               //8年
 361   2      
 362   2                   LcmPutBMP(0,2,62,70,number_0);               //(0-1)月
 363   2                   LcmPutBMP(0,2,70,78,number_5);               //(0-9)月  
 364   2      
 365   2                   LcmPutBMP(0,2,82,90,number_2);                //0-3日
C51 COMPILER V7.08   LCD                                                                   05/26/2008 00:03:31 PAGE 7   

 366   2                   LcmPutBMP(0,2,90,98,number_6);                //0-9日
 367   2                   
 368   2                   time_display();
 369   2                   key_scan();
 370   2                   if(KEY==4){break;}
 371   2                   if(a==1)
 372   2                   {
 373   3                          
 374   3                           LcmClear(4,8,75,91);
 375   3                           LcmClear(2,4,175,191);
 376   3                           KEY=0;
 377   3                           for(;;)
 378   3                           {
 379   4                                  LcmPutBMP(2,4,75,91,Cursor);
 380   4                                  if(count_min_1==0){LcmClear(0,2,50,58);LcmPutBMP(0,2,50,58,number_0);}
 381   4                      if(count_min_1==1){LcmClear(0,2,50,58);LcmPutBMP(0,2,50,58,number_1);}
 382   4                      if(count_min_1==2){LcmClear(0,2,50,58);LcmPutBMP(0,2,50,58,number_2);}                    
             -            //8年

⌨️ 快捷键说明

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