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

📄 lcd.lst

📁 基于F020单片机的简易音频信号分析仪的实现keil程序(C实现)。2007年9月全国大学生电子设计竞赛题目(获得省2等奖)所有要求功能都实现。希望对感兴趣的朋友有帮助!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 199          /*      字符库为hzk02[]*/
 200          void lcd_disp1616(uint x,uint y,uchar n)  //在某一位置处显示显示一个16*16汉字 n表该字符在数组中的序号
 201          {                                             //显示汉字 上下行间间隔16,左右间间隔2
 202   1              uchar i;  uint j;
 203   1              for(i=0;i<16;i++)
 204   1              {
 205   2                      lcd_set_graph(x,y+i);
 206   2                      j=n*32+i*2;
 207   2                      lcd_disp8(hzk02[j]);
 208   2                      lcd_disp8(hzk02[j+1]);
 209   2              }
 210   1      }
 211          
 212          void lcd_disp3232(uint x,uint y,uchar n)     //左右间间隔32/8=4,上下间间隔32.
 213          {
 214   1              uchar i;uint j;
 215   1              for(i=0;i<32;i++)
 216   1              {
 217   2                      lcd_set_graph(x,y+i);
 218   2                      j=n*128+i*4;
 219   2                      lcd_disp8(hzk03[j]);
 220   2                      lcd_disp8(hzk03[j+1]);
 221   2                      lcd_disp8(hzk03[j+2]);
 222   2              lcd_disp8(hzk03[j+3]);
 223   2              }
 224   1      }
 225          
 226          
 227          /*      显示16x24图形点阵的子程序*/ 
 228          /*      字符库为hzk00[]*/
 229          
 230          /*void lcd_disp1624(uint x,uint y,uchar n)
 231          {
 232                  uchar i;  uint j;
 233                  for(i=0;i<24;i++)
 234                  {
 235                          lcd_set_graph(x,y+i);
 236                          j=n*48+i*2;
 237                          lcd_disp8(hzk00[j]);
 238                          lcd_disp8(hzk00[j+1]);
 239                  }
 240          }*/
 241          
C51 COMPILER V7.06   LCD                                                                   09/06/2007 21:49:07 PAGE 5   

 242          /*      显示16x24图形点阵的子程序*/ 
 243          /*display 24x24 dots */
 244          /*      字符库为hzk01[]*/
 245          
 246          /*void lcd_disp2424(uint x,uint y,uchar n)     //左右间间隔24/8=3,上下间间隔24.
 247          {
 248                  uchar i;uint j;
 249                  for(i=0;i<24;i++)
 250                  {
 251                          lcd_set_graph(x,y+i);
 252                          j=n*72+i*3;
 253                          lcd_disp8(hzk01[j]);
 254                          lcd_disp8(hzk01[j+1]);
 255                          lcd_disp8(hzk01[j+2]);
 256                  }
 257          }*/
 258          
 259          
 260          /////////////////////////////////////////
 261          
 262          /*      以下几个函数为文本特征下*/
 263          /*set graph x and y */
 264          /* 0------------->x */
 265          /* |                */
 266          /* |                */
 267          /* |                */
 268          /*\|/               */
 269          /* y                */
 270          /*      如果是采用清华蓬远T240128图形点阵液晶   */
 271          /*      下面这个函数lcd_set_graph()中第二条语句*/
 272          /*      y应该乘以30(240/30)其他型号依此类推*/
 273          
 274          /*set text x and y*/
 275          void lcd_set_text(uint x,uint y)                      //将文本地址转化为内存里的地址
 276          {
 277   1       uint xy;
 278   1       xy=y*16+x+16*256;lcd_write(xy&0xff);
 279   1       xy=xy/256;lcd_write(xy);lcd_ctrl(0x24);
 280   1      }
 281          
 282          //x为行字节数,y为列字节数
 283          void lcd_disp_text(uchar x,uchar y,uchar ccode) //在某一指定位置显示一个字符,ccode是该字符在ROM表中的位置
 284          {                                                //故要显示字母或数字时 ccode=字母或数字+0X10;   
 285   1       lcd_set_text(x,y);
 286   1       lcd_write(ccode);lcd_ctrl(0xc4);
 287   1      }
 288          
 289          
 290          void lcd_disp_char(uchar x,uchar y,uchar ccode){  //在某一指定位置显示一个字符 ccode 是该字符的ASC码值
 291   1          lcd_set_text(x,y);
 292   1          lcd_write(ccode-0x20);lcd_ctrl(0xc0);
 293   1      }
 294          
 295          void lcd_disp_string(uchar x,uchar y,uchar ccode[],uchar length){//在某一指定位置显示一个字符串 ccode是;  
             -                                                                
 296   1          uchar i;                                                       //用双引号引起的字符串
 297   1         for(i=0;i<length;i++){
 298   2                  lcd_disp_char(x+i,y,ccode[i]);
 299   2                }
 300   1      }
 301          
 302          
C51 COMPILER V7.06   LCD                                                                   09/06/2007 21:49:07 PAGE 6   

 303          
 304          /* first write a text letter on graph zone,then write char-attribe
 305          /*  on graph zone.NOTE: address must be the same.  */
 306          /*void lcd_text_attr(uchar x,uchar y,uchar cattr)
 307          {
 308           lcd_set_graph(x,y);
 309           lcd_write(cattr);lcd_ctrl(0xc0);//char-attr write on graph zone accordingly.
 310          }*/
 311          
 312          
 313          /*      建立自定义字库1,字符库为hzk1[]*/
 314          
 315          /*void lcd_set_cgram1(void)
 316          {
 317           uint i;
 318           lcd_write(0x03);//1800-1fffh
 319           lcd_write(0x00);lcd_ctrl(0x22);
 320           lcd_write(0x00);lcd_write(0x1c);
 321           lcd_ctrl(0x24);lcd_ctrl(0xb0);
 322           for(i=0;i<0x400;i++)//1k
 323           {
 324            lcd_autowrite(hzk1[i]);
 325           }
 326           lcd_ctrl(0xb2);
 327          }
 328          /*      建立自定义字库2,字符库为hzk2[]*/
 329          
 330          /*void lcd_set_cgram2(void)
 331          {
 332           uint i;
 333           lcd_write(0x03);//1800-1fffh
 334           lcd_write(0x00);lcd_ctrl(0x22);
 335           lcd_write(0x00);lcd_write(0x18);
 336           lcd_ctrl(0x24);lcd_ctrl(0xb0);
 337           for(i=0;i<0x800;i++)//2k
 338           {
 339            lcd_autowrite(hzk2[i]);
 340           }
 341           lcd_ctrl(0xb2);
 342          }
 343          
 344          /*      建立自定义字库3,字符库为hzk3[]*/
 345          
 346          /*void lcd_set_cgram3(void)
 347          {
 348           uint i;
 349           lcd_write(0x03);//1800-1fffh
 350           lcd_write(0x00);lcd_ctrl(0x22);
 351           lcd_write(0x00);lcd_write(0x1c);
 352           lcd_ctrl(0x24);lcd_ctrl(0xb0);
 353           for(i=0;i<0x400;i++)//1k
 354           {
 355            lcd_autowrite(hzk3[i]);
 356           }
 357           lcd_ctrl(0xb2);
 358          }
 359          
 360          /*      显示一个汉字,16x16*/
 361          /*      x为行字节数,y为列字节数*/
 362          
 363          /*void lcd_disp_hz(uchar x,uchar y,uchar ccode)
 364          {
C51 COMPILER V7.06   LCD                                                                   09/06/2007 21:49:07 PAGE 7   

 365           lcd_set_text(x,y);
 366           lcd_write(ccode); lcd_ctrl(0xc4);// left-up
 367           lcd_set_text(x,y+1); lcd_write(ccode+1);
 368           lcd_ctrl(0xc4);//left-down
 369           lcd_set_text(x+1,y);lcd_write(ccode+2);
 370           lcd_ctrl(0xc4);//right-up
 371           lcd_set_text(x+1,y+1);lcd_write(ccode+3);
 372           lcd_ctrl(0xc4);//rignt-dowm
 373          }
 374          
 375          /*设置汉字属性*/
 376          /*      x为行字节数,y为列字节数*/
 377          
 378          /*void lcd_hz_attr(uchar x,uchar y,uchar cattr)
 379          {
 380           lcd_text_attr(x,y,cattr);
 381           lcd_text_attr(x+1,y,cattr);
 382           lcd_text_attr(x,y+1,cattr);
 383           lcd_text_attr(x+1,y+1,cattr);
 384          }*/
 385          void Delay(uchar x){
 386   1              for(;x>0;x--){
 387   2                      _nop_();
 388   2              }
 389   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1834    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     83    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -