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

📄 bb.lst

📁 自己写的930单片机的1602显示和tlc549串行ad程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 179   1      
C51 COMPILER V8.02   BB                                                                    04/17/2008 19:49:59 PAGE 4   

 180   1              DataLow;
 181   1              ClkDown;
 182   1              LEDown;
 183   1      
 184   1              KB=1;
 185   1      
 186   1              LED1=1;
 187   1              LED2=1;
 188   1              
 189   1      }   
 190          
 191          
 192          /***********************************/
 193          /* 间接访问方式的驱动函数      */
 194          /***********************************/
 195          /* 直接驱动函数由4个子程序组成:
 196            1.读BF和AC值函数WaitForEnable
 197            2.写指令代码函数LcdWriteCommand
 198            3.写显示数据函数LcdWriteData
 199            4.读显示数据函数LcdReadData
 200          */   
 201          
 202          /*---------读BF和AC值函数---------*/ 
 203          /*
 204          =======================================================
 205          正常读写操作之前必须检测LCD控制器状态: CS=1 RS=0 RW=1
 206          DB7: 0 LCD控制器空闲; 1 LCD控制器忙
 207          ========================================================
 208          */
 209          void WaitForEnable( void )
 210          {
 211   1              DataPort = 0xff;
 212   1              RS =0;RW = 1;
 213   1              Elcm = 1;
 214   1              /* 判BF=0? */
 215   1              _nop_();
 216   1              while( DataPort & Busy );
 217   1              Elcm = 0;
 218   1              //ACC=P1; while(ACC_7==1); com=cradd;
 219   1      }
 220          
 221          
 222          /*
 223          =======================================================
 224          写控制字符子程序: E=1 RS=0 RW=0
 225          =======================================================
 226          */
 227          /*-----------写指令函数-----------*/
 228          void LcdWriteCommand( void ) 
 229          {
 230   1              WaitForEnable(); // 检测忙信号?
 231   1              RS = 0;RW = 0;
 232   1              DataPort = com;
 233   1              // 送控制字子程序
 234   1              _nop_();
 235   1              Elcm = 1;
 236   1              _nop_();
 237   1              _nop_();
 238   1              Elcm = 0; // 操作允许脉冲信号
 239   1      }
 240          
 241          
C51 COMPILER V8.02   BB                                                                    04/17/2008 19:49:59 PAGE 5   

 242          /*
 243          =======================================================
 244          当前位置写字符子程序: E =1 RS=1 RW=0
 245          =======================================================
 246          */
 247          /*-----------写数据函数-----------*/
 248          //void LcdWriteData( char dataW ) {
 249          void LcdWriteData( void )
 250          {
 251   1              WaitForEnable();
 252   1              // 检测忙信号
 253   1              RS = 1;RW = 0;
 254   1              DataPort = dat;
 255   1              _nop_();
 256   1              Elcm = 1;
 257   1              _nop_();
 258   1              _nop_(); 
 259   1              Elcm = 0; // 操作允许脉冲信号
 260   1      
 261   1      }
 262          
 263          
 264          /*
 265          =======================================================
 266          initialization of LCD   
 267          =======================================================
 268          */
 269          void initLCD(void)
 270          {
 271   1      
 272   1      
 273   1      unsigned char i,j;
 274   1      
 275   1          for(j=0;j<3;j++)
 276   1                      {
 277   2                              RS=0;
 278   2                              RW=0;
 279   2                              DataPort=Work_M; 
 280   2                      Elcm=1;
 281   2                              _nop_();
 282   2                      Elcm=0;
 283   2                              for(i=0;i<180;i++);
 284   2                      Elcm=1;
 285   2                              _nop_();
 286   2                      Elcm=0;
 287   2                      }
 288   1      
 289   1              com=Work_M;
 290   1          LcdWriteCommand();
 291   1      
 292   1          com=Screen_Off;
 293   1          LcdWriteCommand();
 294   1      
 295   1          com=Cls;
 296   1          LcdWriteCommand();
 297   1      
 298   1          com=Input_M; 
 299   1          LcdWriteCommand();
 300   1      
 301   1              com=Disp_M;
 302   1          LcdWriteCommand(); 
 303   1      }
C51 COMPILER V8.02   BB                                                                    04/17/2008 19:49:59 PAGE 6   

 304          
 305          
 306          /*
 307          =======================================================
 308          disp the string
 309          =======================================================
 310          */
 311          void Dispall(void)
 312          {
 313   1              uchar i;
 314   1              com = Ddram_Al1;
 315   1              LcdWriteCommand();
 316   1              
 317   1              for (i=0;i<16;i++)
 318   1                      {
 319   2                      dat=dispc[0][i];
 320   2                      LcdWriteData(); // 写字符
 321   2                      }
 322   1              
 323   1              com = Ddram_Al2;
 324   1              LcdWriteCommand();
 325   1              
 326   1              for (i=0;i<16;i++)
 327   1              {
 328   2                      dat=dispc[1][i];
 329   2                      LcdWriteData(); 
 330   2              }
 331   1      }
 332          
 333                   //////
 334          void Dispall1(void)
 335          {
 336   1              uchar i;
 337   1              com = Ddram_Al1;
 338   1              LcdWriteCommand();
 339   1              
 340   1              for (i=0;i<16;i++)
 341   1                      {
 342   2                      dat=low[0][i];
 343   2                      LcdWriteData(); // 写字符
 344   2                      }
 345   1              
 346   1              com = Ddram_Al2;
 347   1              LcdWriteCommand();
 348   1              
 349   1              for (i=0;i<16;i++)
 350   1              {
 351   2                      dat=low[1][i];
 352   2                      LcdWriteData(); 
 353   2              }
 354   1      }
 355          //============================================================================================== 
 356          /****************************************************************
 357          ;说明CPU配置WDTE=1WDSE=0
 358          ;***************************************************************/
 359          void init_wdt()
 360          {
 361   1      ACC = WDCON; //读取WDT控制寄存器
 362   1      ACC = ACC|0xc5; //置位ACC.2准备启动WDT   PRE2PRE1PRE0=110_D765  WDCLK_D0当该位为1时选择看门狗振荡器作为时钟

⌨️ 快捷键说明

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