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

📄 lcd_driver.lst

📁 C8051F005单片机控制160*128液晶屏的驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 207   1      */
 208   1      }
 209          
 210          //一字节参数指令写入函数
 211          void oneparameter(uchar onep1,uchar comd1)
 212          {
 213   1        writedata(onep1);
 214   1        writecode(comd1);
 215   1      }
 216          
 217          //两字节参数指令写入函数
 218          void twoparameter(uchar twop1,uchar twop2,uchar comd2)
 219          {
 220   1        writedata(twop1);
 221   1        writedata(twop2);
 222   1        writecode(comd2);
 223   1      }
 224          
 225          
 226          /***********************************************************
 227           液晶初始化,清屏
 228          ***********************************************************/
 229          
 230          //内置T6963C控制器液晶初始化函数
 231          void lcd_init(void)
 232          {
 233   1        twoparameter(0x00,0x00,0x40);  //文本显示区域首地址0x0000
 234   1        twoparameter(0x20,0x00,0x41);  //文本显示区域宽度32字节
 235   1        twoparameter(0x00,0x08,0x42);  //图形显示区域首地址0x0800
 236   1        twoparameter(0x20,0x00,0x43);  //图形显示区域宽度32字节
 237   1        writecode(0xa7);  //光标形状
 238   1        writecode(0x80);  //显示方式设置(使用内部CGROM,逻辑或合成)
 239   1        writecode(0x9c);  //显示开关(开文本和图形显示方式,禁止光标显示和闪烁)
 240   1      }
 241          
C51 COMPILER V7.20   LCD_DRIVER                                                            10/25/2005 20:21:40 PAGE 5   

 242          
 243          //清除屏幕(清所有8K存储空间)
 244          void lcd_clear(void)
 245          { 
 246   1        uint cl_count;
 247   1        twoparameter(0x00,0x00,0x24);  //设置显示存储器首地址
 248   1        writecode(0xb0);  //设置自动写状态
 249   1        for(cl_count=8192;cl_count>0;cl_count--)
 250   1          writeauto(0x00);
 251   1        writecode(0xb2);  //关闭自动写状态  
 252   1      }
 253          
 254          
 255          /********************************************************
 256              西文字符,汉字,点阵显示函数
 257          ********************************************************/
 258          //西文字符写入函数
 259          //x_asc:0~19;  y_asc:0~15
 260          void writeasc(uchar x_asc,uchar y_asc,uchar code_asc)
 261          {
 262   1        uint address;
 263   1        address=y_asc*32+x_asc;
 264   1        twoparameter((uchar)(address),(uchar)(address>>8),0x24);  //设置显示存储器地址
 265   1        oneparameter(code_asc,0xc4);  //装入字符代码,写入数据,地址不变
 266   1      }
 267          
 268          
 269          //汉字写入函数
 270          //x_hz:0~19;  y_hz:0~127
 271          void writehz(uchar x_hz,uchar y_hz,uchar code_hz)
 272          {
 273   1        uchar i_hz;
 274   1        uint address,addr_hz;
 275   1        address=y_hz*32+x_hz+0x0800;  //计算显示存储器地址
 276   1        addr_hz=code_hz*32;  //计算汉字字模地址(cctab的下标)
 277   1        for(i_hz=0;i_hz<16;i_hz++)  //计数值16
 278   1         {
 279   2         twoparameter((uchar)(address),(uchar)(address>>8),0x24);  //设置显示存储器地址
 280   2         oneparameter(cctab[addr_hz++],0xc0);  //写入汉字字模左部  
 281   2         oneparameter((cctab[addr_hz++]),0xc0);//写入汉字字模右部
 282   2         address+=32;  //修改显示存储器地址,显示下一列(共16列)
 283   2         }
 284   1      }
 285          //写数字
 286          void writenum(uchar x_asc,uchar y_asc,uchar code_asc)
 287          {
 288   1         code_asc+=0x10;
 289   1         writeasc(x_asc,y_asc,code_asc);
 290   1      }
 291          //写字母
 292          void writeabc(uchar x_asc,uchar y_asc,uchar code_asc)
 293          {
 294   1      
 295   1         code_asc-=0x20;
 296   1         writeasc(x_asc,y_asc,code_asc);
 297   1      }
 298          
 299          
 300          
 301          /*********************主程序*******************/
 302          void main(void)
 303          {
C51 COMPILER V7.20   LCD_DRIVER                                                            10/25/2005 20:21:40 PAGE 6   

 304   1       
 305   1              WDTCN = 0xDE;   //禁止看门狗
 306   1              WDTCN = 0xAD;
 307   1      
 308   1              SYSCLK_Init();  //初始化时钟
 309   1              PORT_Init();    //初始化端口
 310   1          CE=0;
 311   1      
 312   1              lcd_init();
 313   1          lcd_clear();
 314   1              
 315   1      //      writeasc(2,2,'2');
 316   1              while(1)
 317   1          {
 318   2      //    writeasc(0,0,'0');
 319   2      
 320   2      
 321   2              writehz(1,30,0);
 322   2              writehz(1,46,1);
 323   2              writehz(1,62,2);
 324   2              writehz(1,78,3);
 325   2      //      writenum(1,10,9);
 326   2      
 327   2              writenum(1,1,1);
 328   2              writenum(2,1,2);
 329   2              
 330   2              writenum(3,1,3);
 331   2              
 332   2              writenum(4,1,4);
 333   2              
 334   2              writenum(5,1,5);
 335   2              
 336   2              writenum(6,1,6);
 337   2              
 338   2              writenum(7,1,7);
 339   2              
 340   2              writenum(8,1,8);
 341   2              
 342   2              writenum(9,1,9);
 343   2      
 344   2              writeabc(0,2,'a');
 345   2              writeabc(1,2,'b');
 346   2              writeabc(2,2,'c');
 347   2              writeabc(3,2,'d');
 348   2              writeabc(4,2,'e');
 349   2              writeabc(5,2,'f');
 350   2              writeabc(6,2,'g');
 351   2              writeabc(7,2,'h');
 352   2              writeabc(8,2,'i');
 353   2              writeabc(9,2,'j');
 354   2              writeabc(10,2,'k');
 355   2              writeabc(11,2,'l');
 356   2              writeabc(12,2,'m');
 357   2              writeabc(13,2,'n');
 358   2              writeabc(14,2,'p');
 359   2              writeabc(15,2,'q');
 360   2      
 361   2      /*      writeasc(13,0,10);
 362   2              writeasc(13,1,10);
 363   2              writeasc(13,2,10);
 364   2              writeasc(13,3,10);
 365   2              writeasc(13,4,10);
C51 COMPILER V7.20   LCD_DRIVER                                                            10/25/2005 20:21:40 PAGE 7   

 366   2              writeasc(13,5,10);
 367   2              writeasc(13,6,10);
 368   2              writeasc(13,7,10);
 369   2              writeasc(13,8,10);
 370   2              writeasc(13,9,10);
 371   2              writeasc(13,10,10);
 372   2              writeasc(13,11,10);
 373   2              writeasc(13,12,10);
 374   2              writeasc(13,13,10);
 375   2              writeasc(13,14,10);
 376   2              writeasc(13,15,11);
 377   2      //      writeasc(13,16,10);
 378   2      //      writeasc(13,0,10);
 379   2              writeasc(0,0,0x10);
 380   2              writeasc(1,0,0x10);
 381   2              writeasc(2,0,0x10);
 382   2              writeasc(3,0,0x10);
 383   2              writeasc(4,0,0x10);
 384   2              writeasc(5,0,0x10);
 385   2              writeasc(6,0,0x10);
 386   2              writeasc(7,0,0x10);
 387   2              writeasc(8,0,0x10);
 388   2              writeasc(9,0,0x10);
 389   2              writeasc(10,0,0x10);
 390   2              writeasc(11,0,0x10);
 391   2              writeasc(12,0,0x10);
 392   2              writeasc(13,0,0x10);
 393   2              writeasc(14,0,0x10);
 394   2              writeasc(15,0,0x10);
 395   2              writeasc(16,0,0x10);
 396   2              writeasc(17,0,0x10);
 397   2              writeasc(18,0,0x10);
 398   2              writeasc(19,0,0x11);
 399   2      */
 400   2      
 401   2      
 402   2              }
 403   1      
 404   1      }
 405          
 406          


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