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

📄 hw_disp.lst

📁 实现PID算法的C语言程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 220          
 221          ****************************************/
 222          void DispChr(INT8U cv)
 223          {
 224   1              INT8U *pF;
 225   1              INT8U len,n,row,col;
 226   1      
 227   1              row = CurRow;
 228   1              col = CurCol;
 229   1              len = FontAttr[CurFont][0] * FontAttr[CurFont][1];
 230   1              pF = (INT8U *)FontAdr[CurFont];
 231   1              pF += cv*len;
 232   1      
 233   1              n = 0;
 234   1              while (1)
 235   1              {
 236   2                      LCD_Disp_Pic(pF+n*FontAttr[CurFont][0],FontAttr[CurFont][0]);
 237   2                      n ++;
 238   2                      if (n>= FontAttr[CurFont][1])
 239   2                              break;
 240   2                      CurRow ++;
 241   2                      CurCol = col;
C51 COMPILER V7.50   HW_DISP                                                               11/10/2008 14:21:37 PAGE 5   

 242   2              }
 243   1              CurRow = row;
 244   1      }
 245          
 246          /***************************************
 247          
 248                  显示一个整数
 249                  入口参数:整数数值,起始显示位置,长度
 250          
 251          ****************************************/
 252          void DispIntU(INT32U val,INT8U len)
 253          {
 254   1              INT32U n = 1;
 255   1              INT8U i;
 256   1              
 257   1              for (i=1;i<len;i++)
 258   1                      n *= 10;
 259   1      
 260   1              for (i=0;i<len;i++)
 261   1              {
 262   2                      DispChr(val/n +'0');
 263   2                      val %= n;
 264   2                      n /= 10;
 265   2              }
 266   1      }
 267          
 268          
 269          void DispIntS(INT32S val,INT8U len)
 270          {
 271   1              INT32U n = 1;
 272   1              INT8U i;
 273   1              
 274   1              if (val < 0)
 275   1              {
 276   2                      val = 0 - val;
 277   2                      DispChr('-');
 278   2              }
 279   1              else
 280   1              {
 281   2                      DispChr('+');
 282   2              }
 283   1      
 284   1              for (i=1;i<len;i++)
 285   1                      n *= 10;
 286   1      
 287   1              for (i=0;i<len;i++)
 288   1              {
 289   2                      DispChr(val/n +'0');
 290   2                      val %= n;
 291   2                      n /= 10;
 292   2              }
 293   1      }
 294          
 295          /***************************************
 296          
 297                  显示一个字符
 298                  入口参数:字符,显示位置,是否闪烁
 299          
 300          ****************************************/
 301          void DispHZ(INT8U cv)
 302          {
 303   1              INT8U *pF;
C51 COMPILER V7.50   HW_DISP                                                               11/10/2008 14:21:37 PAGE 6   

 304   1              INT8U n,row,col;
 305   1      
 306   1              row = CurRow;
 307   1              col = CurCol;
 308   1      
 309   1              pF = (INT8U *)FontHZ14x14;
 310   1              pF += cv*(14*2);
 311   1      
 312   1              n = 0;
 313   1              while (1)
 314   1              {
 315   2                      LCD_Disp_Pic(pF+n*14,14);
 316   2                      n++;
 317   2                      if (n>= 2)
 318   2                              break;
 319   2                      CurRow ++;
 320   2                      CurCol = col;
 321   2              }
 322   1              CurRow = row;
 323   1      }
 324          
 325          /***************************************
 326          
 327                  显示一个浮点数
 328                  注:无超显示范围判断
 329                          使用全部的显示区域
 330          
 331          ****************************************/
 332          void DispFloat(float val,INT8U Len)
 333          {
 334   1              INT8U IntLen,n;
 335   1              INT32U iv,ivf;
 336   1      
 337   1              /* 符号位处理 */
 338   1              if (val < 0)
 339   1                      {
 340   2                      DispChr('-');
 341   2                      val = -val;
 342   2                      Len --;
 343   2                      }
 344   1                      
 345   1              /* 整数位数计算 */
 346   1              IntLen = GetIntLen((INT32U)val);        
 347   1      
 348   1              /* 整数部分 */
 349   1              iv = (INT32U)val;
 350   1              /* 显示整数部分 */
 351   1              DispIntU(iv,IntLen);
 352   1              /* 显示小数点 */
 353   1              DispChr('.');
 354   1      
 355   1              /*  */
 356   1              val -= iv;
 357   1              for (n=0;n<(Len-IntLen);n++)
 358   1                      {
 359   2                      val *= 10;
 360   2                      }
 361   1              ivf = (INT32U)val;
 362   1              ivf += 5;
 363   1              ivf /= 10;
 364   1              
 365   1      
C51 COMPILER V7.50   HW_DISP                                                               11/10/2008 14:21:37 PAGE 7   

 366   1              /* 显示小数部分 */
 367   1              DispIntU((INT32U)ivf,Len-IntLen-1);
 368   1      }
 369          
 370          /***************************************
 371          
 372                  显示清屏
 373          
 374          ****************************************/
 375          void DispCls(void)
 376          {
 377   1              DispXYSet(0,0);
 378   1              LCD_Disp_Pattern(0,128);
 379   1              DispXYSet(1,0);
 380   1              LCD_Disp_Pattern(0,128);
 381   1              DispXYSet(2,0);
 382   1              LCD_Disp_Pattern(0,128);
 383   1              DispXYSet(3,0);
 384   1              LCD_Disp_Pattern(0,128);
 385   1              DispXYSet(4,0);
 386   1              LCD_Disp_Pattern(0,128);
 387   1              DispXYSet(5,0);
 388   1              LCD_Disp_Pattern(0,128);
 389   1              DispXYSet(6,0);
 390   1              LCD_Disp_Pattern(0,128);
 391   1              DispXYSet(7,0);
 392   1              LCD_Disp_Pattern(0,128);
 393   1      }
 394          
 395          
 396          
 397          /***************************************
 398          
 399                  屏初始化
 400          
 401          ****************************************/
 402          void DispInit(void)
 403          {
 404   1              INT16U i;
 405   1              Pin_CS1 = 0;
 406   1              Pin_CS2 = 0;
 407   1      
 408   1              for (i=0;i<5000;i++)
 409   1                      Pin_RST = 0;
 410   1              for (i=0;i<5000;i++)
 411   1                      Pin_RST=1;                      //使RST无效后延时一段时间(若不,则后续指令无效,原12864无需亦可???延时取255还不够!!!)
 412   1      
 413   1              Pin_E=0;
 414   1              Pin_RS=1;       
 415   1              Pin_RW=1;
 416   1      
 417   1              Pin_CS1 = 1;
 418   1      
 419   1              LCD_Cmd(0x3F);                  //LCD_ON
 420   1              LCD_Cmd(0xC0|0);                        //LCD_STARTLINE
 421   1              LCD_Cmd(0xB8|0);                        //LCD_ROW
 422   1              LCD_Cmd(0x40|0);                        //LCD_COL
 423   1      
 424   1              Pin_CS1 = 0;
 425   1      
 426   1              CurCol = 0;
 427   1              CurRow = 0;
C51 COMPILER V7.50   HW_DISP                                                               11/10/2008 14:21:37 PAGE 8   

 428   1      }
 429          
 430          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1276    ----
   CONSTANT SIZE    =   4925    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12      52
   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 + -