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

📄 main.lst

📁 驱动15X20D液晶屏
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\setup\keil\C51\BIN\C51.EXE main.c LARGE DEBUG OBJECTEXTEND

line level    source

   1          /************************** ************************************************
   2          文件名:        main.c
   3          
   4          摘要:LCD测试程序
   5          作者:  turtle
   6          完成日期:      2008.04.03
   7          
   8          源版本:        
   9          **************************************************************************/
  10          
  11          #include "inc\ConstDef.h"       //硬件相关常数定义
  12          #include "inc\main.h"   //硬件相关常数定义
  13          //X向中断模式测量命令字,0x90
  14          #define CODE_INT_X      0x90
  15          //Y向中断模式测量命令字
  16          #define CODE_INT_Y      0xd0
  17          uchar temp;
  18          long    Tx;
  19          long    Ty;
  20          void main (void)
  21          {
  22   1               //通过多次读数据取平均来提高精 
  23   1      //=========系统初始化
  24   1          WDTCN     = 0xDE;
  25   1          WDTCN     = 0xAD;   //关闭看门狗
  26   1      
  27   1              SysClkInit();           //初始化系统时钟
  28   1              PortInit();                     //初始化GPIO和交叉开关
  29   1              DelayL(10);
  30   1      //=========外设与变量初始化
  31   1      
  32   1              P7 = 0x00;                      //打开指示灯
  33   1              
  34   1              LCD_Reset();
  35   1              lcd_initial();
  36   1              lcd_clear();
  37   1              lcd_regwrite(0x00,0xcD);//打开屏
  38   1              temp=lcd_regread(0x00);
  39   1              SetXY(4,24);
  40   1              lcd_datawrite(0xD1);
  41   1              lcd_datawrite(0xEE);
  42   1              DelayS(1);
  43   1              SetXY(4,56);
  44   1              lcd_datawrite(0xD1);
  45   1              lcd_datawrite(0xEE);
  46   1              DelayS(1);
  47   1              SetXY(4,88);
  48   1              lcd_datawrite(0xD1);
  49   1              lcd_datawrite(0xEE);
  50   1      
  51   1      /*      lcd_regwrite(0x00,0xc5);
  52   1              DelayS(1);
  53   1              lcd_photo(tab2);
  54   1      */       
  55   1              while(1)
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 2   

  56   1              {
  57   2               if(INT2==0)
  58   2                      {
  59   3                   DelayS(200);
  60   3                       if(INT2==0)
  61   3                              {
  62   4                              XY_Position_change();//完成触摸屏坐标到lcd坐标的转换
  63   4                              MouseDown(Tx,Ty);//根据转换的坐标做相应的操作
  64   4                              while(INT2==0)
  65   4                              {
  66   5                              DelayS(100);
  67   5                              }
  68   4      //                      MouseUp();//按键释放时候的操作
  69   4                  }
  70   3                 }
  71   2              } 
  72   1      }
  73          
  74          
  75          
  76          
  77          
  78          
  79          // ===============================================================
  80          //                      子函数
  81          // ===============================================================
  82          /*-------------------------------------------------------------------
  83          * 功能: 长时间延时
  84          * 调用: NULL
  85          * 输入: NULL
  86          * 返回: NULL
  87          * 说明: 长时间延时,工作在11.0592M时,此函数近似延时28ms
  88          -------------------------------------------------------------------*/
  89          void DelayL(uchar Time)
  90          {
  91   1              uchar i,j,k;
  92   1              while(Time--)
  93   1              {
  94   2                      for(k=0; k<CLK_BASE; k++)
  95   2                              for(j=0; j<100; j++)
  96   2                                      for(i=0; i<100; i++)
  97   2                                              _nop_();
  98   2              }
  99   1      }
 100           
 101          /*-------------------------------------------------------------------
 102          * 功能: 短时间延时
 103          * 调用: NULL
 104          * 输入: NULL
 105          * 返回: NULL
 106          * 说明: 工作在11.0592M时,此函数近似延时0.11ms
 107          -------------------------------------------------------------------*/
 108          void DelayS(uchar Time)
 109          {
 110   1              uchar i;
 111   1              while(Time--)
 112   1              {
 113   2                      for(i=0; i<250; i++)
 114   2                              {_nop_(); _nop_(); _nop_(); _nop_(); _nop_();}
 115   2              }
 116   1      }
 117          
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 3   

 118          /*-------------------------------------------------------------------
 119          * 功能: 系统时钟初始化
 120          * 调用: NULL
 121          * 输入: NULL
 122          * 返回: NULL
 123          * 说明: 切换至11.0592M外部晶振
 124          -------------------------------------------------------------------*/
 125          void SysClkInit (void)
 126          {
 127   1              int i;
 128   1              OSCXCN = 0x67;                          // 使用22MHz的外部晶振
 129   1              for(i=0; i<3000; i++);          // 延时,等待外部晶振起振
 130   1              while(!(OSCXCN&0x80));          // 等待外部晶振起振完成
 131   1              OSCICN = 0x08;                          // 启用外部晶振,启用时钟丢失检测器
 132   1      }
 133          
 134          /*-------------------------------------------------------------------
 135          * 功能: C8051端口初始化
 136          * 调用: NULL
 137          * 输入: NULL
 138          * 返回: NULL
 139          * 说明: 配置各端口输入输出状态。如非必要,关闭不相关端口的弱上拉
 140          -------------------------------------------------------------------*/
 141          void PortInit (void)
 142          {
 143   1              XBR0 = 0x07;            //允许SMBus、UART0、SPI0
 144   1              XBR2 = 0x46;            //允许交叉开关和弱上拉,允许UART1
 145   1      
 146   1          P0MDOUT = 0x1D; // Output configuration for P0 
 147   1          P1MDOUT = 0xF9; // Output configuration for P1 
 148   1          P2MDOUT = 0x0D; // Output configuration for P2 
 149   1          P3MDOUT = 0xFF; // Output configuration for P3 
 150   1          P74OUT = 0xF3;  // Output configuration for P4-7
 151   1      
 152   1          P1MDIN = 0xFF;  // Input configuration for P1
 153   1      }
 154          /*-------------------------------------------------------------------
 155          * 功能: 液晶屏的相关程序
 156          * 调用: NULL
 157          * 输入: NULL
 158          * 返回: NULL
 159          * 说明: 对LCD的寄存器和DDRAM
 160          -------------------------------------------------------------------*/
 161          void lcd_regwr(uchar regnada) 
 162          {
 163   1        LCD_DB = regnada;
 164   1        LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
 165   1        LCD_COMMAND |=LCD_CS2_ENABLE;
 166   1        LCD_COMMAND |=LCD_RD_DISABLE;
 167   1        LCD_COMMAND &=LCD_RS_REG; 
 168   1        LCD_COMMAND &=LCD_WR_ENABLE;
 169   1        ;
 170   1        LCD_COMMAND |=LCD_WR_DISABLE;
 171   1        LCD_COMMAND |=LCD_RS_DDRAM;
 172   1        LCD_COMMAND |=LCD_CS1_DISABLE;
 173   1        
 174   1      }
 175          //.............................................
 176          void lcd_datawrite(uchar wrdata) 
 177          {                       //写资料到DDRAM
 178   1        //while(LCD_BUSY == 1);
 179   1        LCD_DB = wrdata;
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 4   

 180   1        LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
 181   1        LCD_COMMAND |=LCD_CS2_ENABLE;
 182   1        LCD_COMMAND |=LCD_RD_DISABLE;
 183   1        LCD_COMMAND |=LCD_RS_DDRAM; 
 184   1        LCD_COMMAND &=LCD_WR_ENABLE;
 185   1        ;
 186   1        LCD_COMMAND |=LCD_WR_DISABLE;
 187   1        LCD_COMMAND |=LCD_RS_REG;
 188   1        LCD_COMMAND |=LCD_CS1_DISABLE;
 189   1      }
 190          
 191          uchar lcd_regread(uchar regname) 
 192          {                           //读缓存器
 193   1        uchar reg_rddata;
 194   1        lcd_regwr(regname);
 195   1        LCD_DB= 0xff;
 196   1        P74OUT = 0x03;  // Output configuration for P4-7
 197   1        DelayS(10);
 198   1        LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
 199   1        LCD_COMMAND |=LCD_CS2_ENABLE;
 200   1        LCD_COMMAND |=LCD_WR_DISABLE;
 201   1        LCD_COMMAND &=LCD_RS_REG; 
 202   1        LCD_COMMAND &=LCD_RD_ENABLE;
 203   1        ;
 204   1        reg_rddata=LCD_DB;
 205   1        LCD_COMMAND |=LCD_RD_DISABLE;
 206   1        LCD_COMMAND |=LCD_RS_DDRAM;
 207   1        LCD_COMMAND |=LCD_CS1_DISABLE;
 208   1        ;
 209   1        P74OUT = 0xF3;
 210   1        DelayS(10);

⌨️ 快捷键说明

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