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

📄 showfun.lst

📁 ADC0832实验,1602液晶,protus仿真,51单片机
💻 LST
📖 第 1 页 / 共 3 页
字号:
 178          uchar fnGetRow();
 179          uchar fnGetCol();
 180          uchar fnST01(); // 状态位STA1,STA0判断(读写指令和读写数据)
 181          uchar fnST2(); // 状态位ST2判断(数据自动读状态)
 182          uchar fnST3(); // 状态位ST3判断(数据自动写状态)
 183          uchar fnST6(); // 状态位ST6判断(屏读/屏拷贝状态)
 184          uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2); // 写双参数的指令
 185          uchar fnPR11(uchar uCmd,uchar uPar1); // 写单参数的指令
 186          uchar fnPR12(uchar uCmd); // 写无参数的指令
 187          uchar fnPR13(uchar uData); // 写数据
 188          uchar fnPR2(); // 读数据
 189          void fnSetPos(uchar urow, uchar ucol);  // 设置当前地址
 190          void cursor(uchar uRow, uchar uCol);    //设置当前显示行、列
 191          void at(unsigned char x,unsigned char y);/*设定文本x,y值*/
 192          void cls();      // 清屏
 193          char fnLCMInit(); // LCM 初始化
 194          void charout(uchar *str); //ASCII(8*8) 显示函数
 195          uchar dprintf(uchar x,uchar y,char *fmt);// ASCII(8*16) 及 汉字(16*16) 显示函数
 196          void OutToLCD(uchar Dat,uchar x,uchar y);//显示辅助函数 
 197          
 198          void SetShowMode(uchar newShowModeSW);  
 199          void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode);
 200          void Pixel(unsigned char PointX,unsigned char PointY, bit Mode);
 201          
 202          uchar fnGetRow(void)
 203          {
 204   1              return gCurRow;
 205   1      }
 206          
 207          uchar fnGetCol(void)
 208          {
 209   1              return gCurCol;
 210   1      }
C51 COMPILER V8.05a   SHOWFUN                                                              12/09/2006 18:03:03 PAGE 5   

 211          
 212          uchar fnST01(void) // 状态位STA1,STA0判断(读写指令和读写数据)
 213          {
 214   1              uchar i;
 215   1              
 216   1              for(i=10;i>0;i--)
 217   1              {
 218   2                      if((LCMCW & 0x03) == 0x03)
 219   2                      break;
 220   2              }
 221   1              return i; // 若返回零,说明错误
 222   1      }
 223          
 224          uchar fnST2(void) // 状态位ST2判断(数据自动读状态)
 225          {
 226   1              uchar i;
 227   1              
 228   1              for(i=10;i>0;i--)
 229   1              {
 230   2                      if((LCMCW & 0x04) == 0x04)
 231   2                      break;
 232   2              }
 233   1              return i; // 若返回零,说明错误
 234   1      }
 235          
 236          uchar fnST3(void) // 状态位ST3判断(数据自动写状态)
 237          {
 238   1              uchar i;
 239   1              
 240   1              for(i=10;i>0;i--)
 241   1              {
 242   2                      if((LCMCW & 0x08) == 0x08)
 243   2                      break;
 244   2              }
 245   1              return i; // 若返回零,说明错误
 246   1      }
 247          
 248          uchar fnST6(void) // 状态位ST6判断(屏读/屏拷贝状态)
 249          {
 250   1              uchar i;
 251   1              
 252   1              for(i=10;i>0;i--)
 253   1              {
 254   2                      if((LCMCW & 0x40) == 0x40)
 255   2                      break;
 256   2              }
 257   1              return i; // 若返回零,说明错误
 258   1      }
 259          
 260          uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2) // 写双参数的指令
 261          {
 262   1              if(fnST01() == 0)
 263   1              return 1;
 264   1              LCMDW = uPar1;
 265   1              if(fnST01() == 0)
 266   1              return 2;
 267   1              LCMDW = uPar2;
 268   1              if(fnST01() == 0)
 269   1              return 3;
 270   1              LCMCW = uCmd;
 271   1              return 0; // 返回0成功
 272   1      }
C51 COMPILER V8.05a   SHOWFUN                                                              12/09/2006 18:03:03 PAGE 6   

 273          
 274          uchar fnPR11(uchar uCmd,uchar uPar1) // 写单参数的指令
 275          {
 276   1              if(fnST01() == 0)
 277   1              return 1;
 278   1              LCMDW = uPar1;
 279   1              if(fnST01() == 0)
 280   1              return 2;
 281   1              LCMCW = uCmd;
 282   1              return 0; // 返回0成功
 283   1      }
 284          
 285          uchar fnPR12(uchar uCmd) // 写无参数的指令
 286          {
 287   1              if(fnST01() == 0)
 288   1              return 1;
 289   1              LCMCW = uCmd;
 290   1              return 0; // 返回0成功
 291   1      }
 292          
 293          uchar fnPR13(uchar uData) // 写数据
 294          {
 295   1              if(fnST3() == 0)
 296   1              return 1;
 297   1              LCMDW = uData;
 298   1              return 0; // 返回0成功
 299   1      }
 300          
 301          uchar fnPR2(void) // 读数据
 302          {
 303   1              if(fnST01() == 0)
 304   1              return 1;
 305   1              return LCMDW;
 306   1      }
 307          
 308          
 309          void fnSetPos(uchar urow, uchar ucol)   //设置当前地址
 310          {
 311   1              uint iPos;
 312   1              
 313   1              iPos = urow * 20 + ucol;
 314   1              fnPR1(LC_ADD_POS,iPos & 0xFF,iPos / 256);
 315   1              gCurRow = urow;
 316   1              gCurCol = ucol;
 317   1      }
 318          
 319          void cursor(uchar uRow, uchar uCol)     //设置当前显示行、列
 320          {
 321   1              fnSetPos(uRow * 16, uCol);
 322   1      }
 323          void at(unsigned char x,unsigned char y)/*设定文本x,y值*/
 324          {       
 325   1              uint iPos; //地址
 326   1              
 327   1              iPos = x  + y* 20;
 328   1              fnPR1(LC_ADD_POS,iPos&0xff,iPos/256);
 329   1              tCurRow = x;
 330   1              tCurCol = y;
 331   1      }
 332          
 333          // 清屏
 334          void cls(void)
C51 COMPILER V8.05a   SHOWFUN                                                              12/09/2006 18:03:03 PAGE 7   

 335          {
 336   1              uint i;
 337   1              
 338   1              fnPR1(LC_ADD_POS,0x00,0x00); // 置地址指针
 339   1              fnPR12(LC_AUT_WR); // 自动写
 340   1              for(i=0;i<0x2000;i++)
 341   1              {
 342   2                      fnST3();
 343   2                      fnPR13(0x00); // 写数据
 344   2              }
 345   1              fnPR12(LC_AUT_OVR); // 自动写结束
 346   1              fnPR1(LC_ADD_POS,0x00,0x00); // 重置地址指针
 347   1              gCurRow = 0; // 置地址指针存储变量
 348   1              gCurCol = 0;
 349   1      }
 350          
 351          // LCM 初始化
 352          char fnLCMInit(void)
 353          {
 354   1              reset=0;
 355   1              reset=1;
 356   1              fnPR1(LC_TXT_STP,0x00,0x00); // 文本显示区首地址
 357   1              fnPR1(LC_TXT_WID,0x14,0x00); // 文本显示区宽度
 358   1              fnPR1(LC_GRH_STP,0x00,0x00); // 图形显示区首地址
 359   1              fnPR1(LC_GRH_WID,0x14,0x00); // 图形显示区宽度
 360   1              fnPR11(LC_CGR_POS,CGRAMSTART >> 11);
 361   1              fnPR12(LC_CUR_SHP | 0x01); // 光标形状
 362   1              fnPR12(LC_MOD_OR); // 显示方式设置
 363   1              fnPR12(LC_DIS_SW |0x08);
 364   1              grhome = GRSTART;
 365   1          txthome = TXTSTART;
 366   1      
 367   1              return 0;
 368   1      }
 369          void charout(uchar *str)
 370          {
 371   1          uchar ch,len,i,uRow,uCol ;
 372   1          len=strlen(str);
 373   1          i=0;
 374   1          uRow = tCurRow;
 375   1          uCol = tCurRow;
 376   1          at(uCol,uRow);
 377   1          while(i<len)
 378   1          {
 379   2              ch=str[i]-0x20;
 380   2              fnPR11(LC_INC_WR,ch);
 381   2              i++;
 382   2          }
 383   1      } 
 384          // ASCII及汉字显示函数
 385          
 386          uchar dprintf(uchar x,uchar y,char *fmt)
 387          {
 388   1              char c1,c2,cData;
 389   1              uchar i=0,j,uLen;
 390   1              uchar k;
 391   1              
 392   1              uLen=strlen(fmt);
 393   1      
 394   1              while(i<uLen)

⌨️ 快捷键说明

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