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

📄 ili9163.lst

📁 2.4tft彩屏教程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   ILI9163                                                               02/03/2010 15:50:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE ILI9163
OBJECT MODULE PLACED IN .\obj\ILI9163.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ILI9163.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\ILI9163.lst) OBJECT(.\obj\I
                    -LI9163.obj)

stmt level    source

   1          
   2          #include "reg52.h"
   3          #include "stdio.h"
   4          
   5          #define uchar unsigned char
   6          //==============================================================//
   7          sbit CS =P2^2;
   8          sbit RS =P2^4;
   9          sbit Rw =P2^5;
  10          sbit Rd =P2^6;
  11          sbit RST=P2^1;
  12          
  13          sbit PAUSE=P1^4;
  14          
  15          //=====================================================================//
  16          void Delayms(int) ;//廷时子程序
  17          void WriteDAT(unsigned char a,unsigned char b);
  18          void WriteCOM(unsigned char b);
  19          void WriteDAT1(unsigned char b);
  20          void Ini_ILI9163(void);
  21          unsigned char code pic[];
  22          void show_photo(void);
  23          void  pause(void);
  24          void SleepOut(void);
  25          void SleepIn(void);
  26          void display_hb(void);
  27          //=======================延时程序========================//
  28          void Delayms(int count)  //  x 10ms 
  29          {
  30   1              int i,j;
  31   1              for(i=0;i<count;i++)
  32   1                      for(j=0;j<500;j++);
  33   1      }
  34          
  35          //======================== 按键测试 ======================//
  36          
  37          void  pause()
  38          {
  39   1      while(PAUSE);
  40   1      }
  41          
  42          //=========================写寄存器ID的子程序===========================//
  43          void WriteCOM(unsigned char b)
  44          {
  45   1        RS=0;
  46   1        CS=0;
  47   1        Rd=1;
  48   1       
  49   1        P0=0x00;
  50   1         Rw=0;
  51   1        Rw=1;
  52   1        P0=b;
  53   1        Rw=0;
  54   1        Rw=1;
C51 COMPILER V7.06   ILI9163                                                               02/03/2010 15:50:23 PAGE 2   

  55   1        RS=1;
  56   1        CS=1;
  57   1       }
  58          //==========================写数据的子程序==============================//
  59          void WriteDAT(unsigned char a,unsigned char b)
  60          {
  61   1         RS=1; 
  62   1         CS=0; 
  63   1         Rd=1;
  64   1      
  65   1         P0=a;
  66   1         Rw=0;
  67   1         Rw=1;
  68   1      
  69   1         P0=b;
  70   1         Rw=0;
  71   1         Rw=1;  
  72   1       
  73   1         RS=0;
  74   1         CS=1;
  75   1      
  76   1      }
  77          
  78          void WriteDAT1(unsigned char b)
  79          {
  80   1         RS=1; 
  81   1         CS=0; 
  82   1         Rd=1;
  83   1         
  84   1      
  85   1         P0=b;
  86   1         Rw=0;
  87   1         Rw=1; 
  88   1      
  89   1         RS=0;
  90   1         CS=1;
  91   1      }
  92          void  Write_Data_U16(unsigned int y)
  93          {
  94   1              unsigned char m,n;
  95   1              m=y>>8;
  96   1              n=y;
  97   1              WriteDAT(m,n);
  98   1      
  99   1      }
 100          //=========================== IC ILI9163初始化=======================================//
 101          
 102          void Ini_ILI9163(void)
 103            {     
 104   1        CS=1;
 105   1        Delayms(10);
 106   1        RST=0;
 107   1        Delayms(10);
 108   1        RST=1;
 109   1        Delayms(10);
 110   1        WriteCOM(0x11);//退出睡眠模式
 111   1        Delayms(10); 
 112   1        WriteCOM(0x26); // Gammut format 伽马曲线设置
 113   1        WriteDAT1(0x04);//  04h GC3 Gammut 2.2
 114   1                      //  01h GC1  Gammut  1.0 , 02h  GC2  gammut 1.8, 08h  GC3 Gammut 2.5
 115   1        Delayms(10);
 116   1        WriteCOM(0xB1);     //帧频控制    
C51 COMPILER V7.06   ILI9163                                                               02/03/2010 15:50:23 PAGE 3   

 117   1        WriteDAT1(0x08);   
 118   1        WriteDAT1(0x09);        // 75hz
 119   1      
 120   1      
 121   1        WriteCOM(0xC0);    //电源控制     
 122   1        WriteDAT1(0x04);   
 123   1        WriteDAT1(0x00);   
 124   1      
 125   1        WriteCOM(0xc1);    //电源控制 
 126   1        WriteDAT1(0x05);
 127   1      
 128   1        WriteCOM(0xC5);     //偏压控制     
 129   1        WriteDAT1(0x4c);   //vcom control  0x48,0x24  34  //2b
 130   1        WriteDAT1(0x38);   //vcom control  0x48,0x24  50  //47   
 131   1        Delayms(10);
 132   1      
 133   1        WriteCOM(0xC7);   //偏压控制       
 134   1        WriteDAT1(0x40); //C4 
 135   1      
 136   1        WriteCOM(0x3A);// Interface Pixel mode
 137   1        WriteDAT1(0x05);//  05 16 bit/Pixel  RGB 53-35  Twice per pixel for 80-8bits parallel
 138   1                       //  06 18 bit/Pixel  RGB 6-6-6  Three times per pixel for 80-8bits parallel
 139   1      
 140   1      
 141   1        WriteCOM(0x36); //扫描方向控制        
 142   1        WriteDAT1(0xC8);  //
 143   1      
 144   1       
 145   1        WriteCOM(0xB7);         
 146   1        WriteDAT1(0x00);  // 
 147   1      
 148   1        WriteCOM(0xF2);
 149   1        WriteDAT1(0x01);
 150   1        Delayms(10);
 151   1      
 152   1        // t Gamma
 153   1        WriteCOM(0xE0);// Positive  05
 154   1        WriteDAT1(0x3F);//1
 155   1        WriteDAT1(0x26);//2
 156   1        WriteDAT1(0x23);//3
 157   1        WriteDAT1(0x2D);//4
 158   1        WriteDAT1(0x28);//5
 159   1        WriteDAT1(0x0B);//6
 160   1        WriteDAT1(0x53);//7
 161   1        WriteDAT1(0xE1);//8
 162   1        WriteDAT1(0x41);//9
 163   1        WriteDAT1(0x17);//10
 164   1        WriteDAT1(0x1E);//11
 165   1        WriteDAT1(0x01);//12
 166   1        WriteDAT1(0x00);//13
 167   1        WriteDAT1(0x00);//14
 168   1        WriteDAT1(0x00);//15
 169   1      
 170   1        WriteCOM(0xE1); // Negative
 171   1        WriteDAT1(0x00);//1
 172   1        WriteDAT1(0x16);//2
 173   1        WriteDAT1(0x1a);//3
 174   1        WriteDAT1(0x0d);//4
 175   1        WriteDAT1(0x17);//5
 176   1        WriteDAT1(0x10);//6
 177   1        WriteDAT1(0x2a);//7
 178   1        WriteDAT1(0x18);//8
C51 COMPILER V7.06   ILI9163                                                               02/03/2010 15:50:23 PAGE 4   

 179   1        WriteDAT1(0x3b);//9
 180   1        WriteDAT1(0x05);//10
 181   1        WriteDAT1(0x1e);//11
 182   1        WriteDAT1(0x39);//12
 183   1        WriteDAT1(0x3f);//13
 184   1        WriteDAT1(0x3f);//14
 185   1        WriteDAT1(0x3f);//15     //////
 186   1      
 187   1      
 188   1      
 189   1      
 190   1         WriteCOM(0x29);      //Display on
 191   1         WriteCOM(0x2C);      //Write Data to GRAM
 192   1      
 193   1         Delayms(10);
 194   1      
 195   1      
 196   1      }
 197          
 198          
 199          
 200          //=======================================写地址====================================//
 201          void addr(void)
 202          {
 203   1        WriteCOM(0x2A);      //Colulm addRSTs set
 204   1        WriteDAT1(0x00);
 205   1        WriteDAT1(0x00);
 206   1        WriteDAT1(0x00);
 207   1        WriteDAT1(127);
 208   1      
 209   1        WriteCOM(0x2B);      //Colulm addRSTs set
 210   1        WriteDAT1(0x00);
 211   1        WriteDAT1(0x00);
 212   1        WriteDAT1(0x00);
 213   1        WriteDAT1(159);
 214   1      
 215   1        WriteCOM(0x2C);      //Write Data to GRAM
 216   1       }
 217          static void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
 218          {
 219   1        WriteCOM(0x2A);      //Colulm addRSTs set
 220   1        WriteDAT1(x0>>8);
 221   1        WriteDAT1(x0);
 222   1      
 223   1        WriteDAT1(x1>>8);
 224   1        WriteDAT1(x1);
 225   1      
 226   1        WriteCOM(0x2B);      //Colulm addRSTs set
 227   1        WriteDAT1(y0>>8);
 228   1        WriteDAT1(y0);
 229   1      
 230   1        WriteDAT1(y1>>8);
 231   1        WriteDAT1(y1);
 232   1      
 233   1        WriteCOM(0x2C);      //Write Data to GRAM
 234   1      }
 235          
 236          /*-----------------------------------------------------------------
 237           * 函数名:Put_pixel
 238           * 功能:在屏幕上画点
 239           * 输入参数:坐标x,y
 240           *                      color颜色
C51 COMPILER V7.06   ILI9163                                                               02/03/2010 15:50:23 PAGE 5   

 241           * 输出参数:无
 242           ----------------------------------------------------------------*/
 243          void Put_pixel(uchar x,uchar y,unsigned int color)
 244          {
 245   1              LCD_SetPos(x,x,y,y);
 246   1              Write_Data_U16(color);
 247   1      }
 248          /*-----------------------------------------------------------------
 249           * 函数名:Line
 250           * 功能:在屏幕上画线
 251           * 输入参数:起始坐标X0,Y0,终止坐标X1,Y1
 252           *                      color颜色
 253           * 输出参数:无
 254           ----------------------------------------------------------------*/
 255          void Line(      uchar X0,
 256                                  uchar Y0,
 257                                  uchar X1,
 258                                  uchar Y1,
 259                                  unsigned int color)
 260          {
 261   1              int dx = X1 - X0;
 262   1              int dy = Y1 - Y0;
 263   1              int P  = 2 * dy - dx;
 264   1              int dobDy = 2 * dy;
 265   1              int dobD = 2 * (dy - dx);
 266   1              int PointX = 0,PointY = 0;
 267   1              int incx = 0,incy = 0;
 268   1              int distance = 0,xerr = 0,yerr = 0;
 269   1              unsigned int i = 0;
 270   1      
 271   1              if(dx == 0)             //k=1斜率为1
 272   1              {
 273   2                      PointX = X0;
 274   2                      if(Y0 < Y1)
 275   2                      {
 276   3                              PointY = Y0;
 277   3                      }
 278   2                      else
 279   2                      {
 280   3                              PointY = Y1;
 281   3                      }
 282   2                      for(i = 0;i <= ((Y0<Y1) ? (Y1-Y0) : (Y0-Y1));i++)
 283   2                      {
 284   3      
 285   3                                      Put_pixel(PointX,PointY,color);

⌨️ 快捷键说明

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