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

📄 lcd12864.lst

📁 自己单片机板c程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 146   1       LCD_E = 1;
 147   1       LCD_E = 0;  
 148   1      }
 149          
 150          //读数据
 151          unsigned char ReadDataLCD(void)
 152          {
 153   1       LCD_RS = 1; 
 154   1       LCD_RW = 1;
 155   1       LCD_E = 0;
 156   1       LCD_E = 0;
 157   1       LCD_E = 1;
 158   1       return(LCD_Data);
 159   1      }
 160          
 161          //读状态
 162          unsigned char ReadStatusLCD(void)
 163          {
 164   1       LCD_Data = 0xFF; 
 165   1       LCD_RS = 0;
 166   1       LCD_RW = 1; 
 167   1       LCD_E = 1;
 168   1       while (LCD_Data & Busy); //检测忙信号
 169   1       LCD_E = 0;
 170   1       return(LCD_Data);
 171   1      }
 172          
 173          void LCDInit(void) //LCM初始化
 174          {
 175   1       WriteCommandLCD(0x30,1); //显示模式设置,开始要求每次检测忙信号
 176   1       WriteCommandLCD(0x01,1); //显示清屏
 177   1       WriteCommandLCD(0x06,1); // 显示光标移动设置
 178   1       WriteCommandLCD(0x0C,1); // 显示开及光标设置
 179   1      }
C51 COMPILER V7.02a   LCD12864                                                             12/03/2008 18:04:56 PAGE 4   

 180          void LCDClear(void) //清屏
 181          {
 182   1       WriteCommandLCD(0x01,1); //显示清屏
 183   1       WriteCommandLCD(0x34,1); // 显示光标移动设置
 184   1       WriteCommandLCD(0x30,1); // 显示开及光标设置
 185   1      }
 186          void LCDFlash(void)     //闪烁效果
 187          {
 188   1       WriteCommandLCD(0x08,1); //显示清屏
 189   1       Delay400Ms();
 190   1       WriteCommandLCD(0x0c,1); // 显示开及光标设置
 191   1       Delay400Ms();
 192   1       WriteCommandLCD(0x08,1); //显示清屏
 193   1       Delay400Ms();
 194   1       WriteCommandLCD(0x0c,1); // 显示开及光标设置
 195   1       Delay400Ms();
 196   1       WriteCommandLCD(0x08,1); //显示清屏
 197   1       Delay400Ms();
 198   1      }
 199          //按指定位置显示一个字符
 200          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
 201          {
 202   1       if(Y<1)
 203   1              Y=1;
 204   1       if(Y>4)
 205   1              Y=4;
 206   1       X &= 0x0F; //限制X不能大于16,Y不能大于1
 207   1       switch(Y){
 208   2              case 1:X|=0X80;break;
 209   2              case 2:X|=0X90;break;
 210   2              case 3:X|=0X88;break;
 211   2              case 4:X|=0X98;break;
 212   2              }
 213   1       WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码
 214   1       WriteDataLCD(DData);
 215   1      }
 216          
 217          //按指定位置显示一串字符
 218          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
 219          {
 220   1       unsigned char ListLength,X2;
 221   1        ListLength = 0;
 222   1        X2=X;
 223   1       if(Y<1)
 224   1              Y=1;
 225   1       if(Y>4)
 226   1              Y=4;
 227   1       X &= 0x0F; //限制X不能大于16,Y在1-4之内
 228   1       switch(Y){
 229   2              case 1:X2|=0X80;break;  //根据行数来选择相应地址
 230   2              case 2:X2|=0X90;break;
 231   2              case 3:X2|=0X88;break;
 232   2              case 4:X2|=0X98;break;
 233   2              }
 234   1       WriteCommandLCD(X2, 1); //发送地址码
 235   1        while (DData[ListLength]>=0x20) //若到达字串尾则退出
 236   1        {
 237   2         if (X <= 0x0F) //X坐标应小于0xF
 238   2          {
 239   3           WriteDataLCD(DData[ListLength]); //
 240   3           ListLength++;
 241   3               X++;
C51 COMPILER V7.02a   LCD12864                                                             12/03/2008 18:04:56 PAGE 5   

 242   3               Delay5Ms();
 243   3          }
 244   2        }
 245   1      }
 246          
 247          //图形显示122*32
 248          void DisplayImage (unsigned char code *DData){
 249   1              unsigned char x,y,i;
 250   1              unsigned int tmp=0;
 251   1              for(i=0;i<9;){          //分两屏,上半屏和下半屏,因为起始地址不同,需要分开
 252   2              for(x=0;x<32;x++){                              //32行
 253   3                      WriteCommandLCD(0x34,1);
 254   3                      WriteCommandLCD((0x80+x),1);//列地址
 255   3                      WriteCommandLCD((0x80+i),1);    //行地址,下半屏,即第三行地址0X88
 256   3                      WriteCommandLCD(0x30,1);                
 257   3                      for(y=0;y<16;y++)       
 258   3                              WriteDataLCD(DData[tmp+y]);//读取数据写入LCD
 259   3                      tmp+=16;                
 260   3              }
 261   2              i+=8;
 262   2              }
 263   1              WriteCommandLCD(0x36,1);        //扩充功能设定
 264   1              WriteCommandLCD(0x30,1);
 265   1      }
 266          
 267          //5ms延时
 268          void Delay5Ms(void)
 269          {
 270   1       unsigned int TempCyc = 5552;
 271   1       while(TempCyc--);
 272   1      }
 273          
 274          //400ms延时
 275          void Delay400Ms(void)
 276          {
 277   1       unsigned char TempCycA = 5;
 278   1       unsigned int TempCycB;
 279   1       while(TempCycA--)
 280   1       {
 281   2        TempCycB=7269;
 282   2        while(TempCycB--);
 283   2       };
 284   1      }


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