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

📄 lcd.lst

📁 一款液晶RT240128GB的以8080方式控制的底层驱动源代码程序,非常难得,放血奉献!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 144   1       LCD_Write_Funtion(0x03,0x80);//LCD特殊显示功能
 145   1       LCD_Write_Funtion(0x10,0x6B);//LCD基本显示功能设定 2
 146   1       LCD_Write_Funtion(0x11,0x00);//光标高度和行距设定
 147   1       LCD_Write_Funtion(0x12,0x91) ;//显示层设定:高位8灰度,9水平单一层,A单二层,B同时一二层
 148   1       LCD_Write_Funtion(0x20,0x1E) ;//实际显示窗口垂直结束地址(LCD屏的分辨率30*8=240)
 149   1       LCD_Write_Funtion(0x30,0x7F) ;//实际显示窗口水平结束地址(128)
 150   1       LCD_Write_Funtion(0x40,0x00) ;//实际显示窗口垂直起始地址
 151   1       LCD_Write_Funtion(0x50,0x00) ;//实际显示窗口水平起始地址
 152   1       LCD_Write_Funtion(0x21,0x1E) ;//工作区窗口垂直结束地址(用户指定的显示窗口)
 153   1       LCD_Write_Funtion(0x31,0x7F) ;//工作区窗口水平结束地址
 154   1       LCD_Write_Funtion(0x41,0x00) ;//工作区窗口垂直起始地址
 155   1       LCD_Write_Funtion(0x51,0x00) ;//工作区窗口水平起始地址
 156   1       LCD_Write_Funtion(0x60,0x00) ;//地址定位
 157   1       LCD_Write_Funtion(0x61,0x00) ;//
 158   1       LCD_Write_Funtion(0x70,0x00) ;//
 159   1       LCD_Write_Funtion(0x71,0x00) ;//
 160   1       LCD_Write_Funtion(0x72,0x00) ;//
 161   1       LCD_Write_Funtion(0x80,0xAA) ;//光标闪烁时间
 162   1       LCD_Write_Funtion(0x81,0x04) ;//保留
 163   1       LCD_Write_Funtion(0x91,0x00) ;//保留
 164   1       LCD_Write_Funtion(0x90,0x0F) ;
 165   1       LCD_Write_Funtion(0xA0,0x11) ;//键、触摸屏、光标行列状态
 166   1       LCD_Write_Funtion(0xA1,0x00) ;
 167   1       LCD_Write_Funtion(0xA2,0x00) ;
 168   1       LCD_Write_Funtion(0xA3,0x00) ;
 169   1       LCD_Write_Funtion(0xB0,0x27) ;
 170   1       LCD_Write_Funtion(0xB1,0xEF) ;
 171   1       LCD_Write_Funtion(0xC0,0x00) ;
 172   1       LCD_Write_Funtion(0xC1,0x0A) ;
 173   1       LCD_Write_Funtion(0xC8,0x80) ;
 174   1       LCD_Write_Funtion(0xC9,0x80) ;
 175   1       LCD_Write_Funtion(0xCA,0x00) ;
 176   1       LCD_Write_Funtion(0xD0,0x80) ;
C51 COMPILER V7.50   LCD                                                                   05/09/2008 16:12:47 PAGE 4   

 177   1       LCD_Write_Funtion(0xE0,0x00) ;//自动写此寄存器的数据到DDRAM(图形模式有效)
 178   1       LCD_Write_Funtion(0xF0,0xA0) ;//字符字体控制
 179   1       LCD_Write_Funtion(0xF1,0x0F) ;//字符点阵大小控制
 180   1      /////39
 181   1      }
 182          //////////清除文本层显示数据///////////////////
 183          void LCD_Clear_Text(void)
 184          {
 185   1        uchar i,j;
 186   1        LCD_Write_Funtion(0x00,0xCD); //文本模式
 187   1        LCD_Write_Funtion(0x60,0x00) ;//地址定位
 188   1        LCD_Write_Funtion(0x70,0x00) ;//地址定位
 189   1        for(i=0;i<16;i++)/////共16//////
 190   1         {
 191   2          for(j=0;j<30;j++)    
 192   2                LCD_Write_Dat(0x00); ////每页连续写入40个数据/////      
 193   2         }  
 194   1      } 
 195          //////////清除图形层显示数据///////////////////
 196          void LCD_Clear_Graphics(void)
 197          {
 198   1        uchar i,j;
 199   1        LCD_Write_Funtion(0x00,0xC5); //图形模式
 200   1        LCD_Write_Funtion(0x60,0x00) ;//地址定位
 201   1        LCD_Write_Funtion(0x70,0x00) ;//地址定位
 202   1        for(i=0;i<128;i++)/////共16//////
 203   1         {
 204   2          for(j=0;j<30;j++)    
 205   2                LCD_Write_Dat(0x00); ////每页连续写入40个数据/////      
 206   2         }  
 207   1      } 
 208          ////////////////////////////////////
 209          void main(void)
 210          {
 211   1      
 212   1        P0=0x8f;//AT89C51的IO口初始化//
 213   1        Delay(20);
 214   1        P0=0x9f;
 215   1        P1=0xff;//AT89C51的IO口初始化//
 216   1       
 217   1        LCD_Init();
 218   1        LCD_Clear_Text();//////清除文本层显示数据///////////////////////
 219   1        LCD_Clear_Graphics();//清除图形层显示数据//
 220   1      
 221   1        LCD_Write_Funtion(0x00,0xCD);//文本模式
 222   1        LCD_Write_Funtion(0x60,0x00) ;//地址定位
 223   1        LCD_Write_Funtion(0x70,0x00) ;//地址定位
 224   1        LCD_Write_Dat(0xA4);
 225   1        LCD_Write_Dat(0xA4);
 226   1        LCD_Write_Dat(0xA4);
 227   1        LCD_Write_Dat(0xE5);//
 228   1        LCD_Write_Dat(0xB1);
 229   1        LCD_Write_Dat(0xB1);
 230   1        LCD_Write_Dat(0xA8);
 231   1        LCD_Write_Dat(0xEE);
 232   1        LCD_Write_Dat(0xBE);
 233   1        LCD_Write_Dat(0xB9);
 234   1        while(1)
 235   1        {
 236   2        ;
 237   2        }
 238   1      }  
C51 COMPILER V7.50   LCD                                                                   05/09/2008 16:12:47 PAGE 5   

 239          /*
 240          
 241          //////////////LCD左半屏清屏///////可实现全部、上部分、左部分、右部分的清屏功能////////////////////////////
             -/////
 242          void LCD_L_Clear( uchar ZB_y,/////参数ZB_y是液晶屏的64X64的点坐标系的y轴向右横向坐标值//////
 243           ///////x轴向上纵向坐标值固定为64, 坐标(64,ZB_y)确定了清屏的起点////////////////////////////////
 244                            uchar yy,////清屏的列数由yy确定////////
 245                           uchar page)/////清屏到那页为止,由page值确定, page的范围是0-7///////               
 246          {                                    
 247           uchar i,j;
 248            if((64-ZB_y)>=yy)
 249            {
 250              for(j=0;j<(page+1);j++)
 251               {
 252                LCD_WRTite_Com_L(0xc0|64);////从第64小行开始////
 253                LCD_WRTite_Com_L(0xb8|j);////根据确定的小行位置开始,从第0页(即0大行)开始//////
 254                LCD_WRTite_Com_L(0x40|ZB_y);/////从由ZB_y值确定的列开始////
 255                for(i=0;i<yy;i++) LCD_WRTite_Dat_L(0x00); ////写入0x00清屏/////    
 256               }
 257            }
 258          }
 259          
 260          ///////////////////左半屏/////////显示8x16点(横向右8点X纵向下16点)字符////////////////////////////////////
 261          /////坐标(ZB_x,ZB_y)是液晶屏的64X64的点坐标,坐标系的方向为:x轴纵(行)坐标向上 ,y轴横(列)坐标向右/////////
 262          /////左下角为坐标原点,左上角为(64,0)右下角为(0,64),该坐标用于确定在液晶屏的何处开始位置。//////////////
 263          /////根据上面确定的显示位置为坐标原点,坐标(x,y)位置按8x8=64个点为一个点坐标来定位的,这时///////////////
 264          /////坐标系的方向变更为:x轴纵(行)坐标向下,y轴横(列)坐标向右,x的范围是0-7,y的范围是0-7,////////////
 265          ////////////////////////////chrx:显示字符的指定参数值/////////////////////////////////////////////////////
 266          LCD_L_WRTite_Char_8x16(uchar ZB_x,uchar ZB_y,/////液晶屏的64X64的点坐标系////
 267                                      uchar x,uchar y,/////显示坐标系////////////////
 268                                                      uchar chrx)/////显示内容的指定参数索引值///////
 269          {
 270            uchar i;
 271            uint chr_m;
 272            chr_m=chrx;
 273            chr_m=chr_m*16;
 274            LCD_WRTite_Com_L(0xc0|ZB_x);////////从第ZB_x小行开始////
 275            LCD_WRTite_Com_L(0xb8|x); /////根据确定的小行位置开始,从第x页(即x大行)开始//////
 276            LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始///// 
 277            for(i=0;i<8;i++)  LCD_WRTite_Dat_L(Ezk[chr_m+i]); ////根据确定的具体点位置处写入8个数据//字符的上半部分/
             -// 
 278            LCD_WRTite_Com_L(0xb9|x); ////再从第x+1页(即x+1大行)开始//////// 
 279            LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始/////
 280            for(i=8;i<16;i++)  LCD_WRTite_Dat_L(Ezk[chr_m+i]);////根据确定的具体点位置处写入8个数据//字符的下半部分/
             -// 
 281          }
 282          
 283          ////////左半屏/////////显示16x16点(横向右16点X纵向下16点)的汉字字符////////////////////////////////////
 284          LCD_L_WRTite_Hanzi_16x16(uchar ZB_x,uchar ZB_y,
 285                                     uchar x,uchar y,
 286                                                                             uchar chrx)
 287          {
 288            uchar i;
 289            uint chr_m;
 290            chr_m=chrx;
 291            chr_m=chr_m*32;
 292            LCD_WRTite_Com_L(0xc0|ZB_x);////////////从第ZB_x小行开始////
 293            LCD_WRTite_Com_L(0xb8|x);  ////根据确定的小行位置开始,从第x页(即x大行)开始//////
 294            LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始///// 
 295            for(i=0;i<16;i++)  LCD_WRTite_Dat_L(Hzk1[chr_m+i]);////根据确定的具体点位置处写入16个数据//汉字的上半部

⌨️ 快捷键说明

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