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

📄 925+.lst

📁 一个用keil写的,动行在c8051f410上的自己做的开关电源的驱动程序,在protes下仿真过.希望对初学者能有用.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   925_                                                                  10/06/2007 14:02:24 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 925_
OBJECT MODULE PLACED IN .\925+.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE D:\Documents and Settings\hp\桌面\925+.C BROWSE DEBUG OBJECTEXTEND PRINT(.\
                    -925+.lst) OBJECT(.\925+.obj)

line level    source

   1          #include <c8051f410.H>
   2          
   3          #define uchar unsigned char
   4          #define uint  unsigned int 
   5          #define LCD_PORT P2                      
   6          #define Left  2                                     
   7          #define Right 1
   8          
   9          
  10          ////////////////////12864
  11          sbit  LCD_Busy=P2^7;     
  12          sbit  LCD_EN = P1^7;
  13          sbit  LCD_RW = P1^6;
  14          sbit  LCD_RS = P1^5;
  15          sbit  LCD_CS1= P1^4;
  16          sbit  LCD_CS2= P1^3;
  17          sbit  LCD_RST= P1^1;
  18          
  19          uchar Page_Num,Clm_Num,tempdata,page,clum,pagestart,clmstart,clmsum,pageend,i,j,k,dataout,digih2,digih,dig
             -il2,digil,digitalin,clockrecog;
  20          uchar swd,symbolin,symbolout,con,ab,keysetsymbol,keyud,keylr,keyset,keysetin,dir,enterkeynumber=0,keyclr,x
             -,y;
  21          uint  v5,v15,vm15,v151,v152,v153,v154,v24,v24h;
  22          uchar count,dafig=0;
  23          uchar serial,accidentrecog=0;
  24          uchar dt[7];
  25          uchar datacenter[3][9];                                  
  26          code uchar digital[19][14]={{0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00},/*"0",
             -0*/
  27                                     {0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00},/*"1",1
             -*/
  28                                     {0x00,0x18,0x04,0x04,0xC4,0x38,0x00,0x00,0x0C,0x0A,0x09,0x08,0x0C,0x00},/*"2",2
             -*/
  29                                     {0x00,0x18,0x04,0x44,0x44,0xB8,0x00,0x00,0x06,0x08,0x08,0x08,0x07,0x00},/*"3",3
             -*/
  30                                     {0x80,0x40,0x30,0x08,0xFC,0x00,0x00,0x01,0x01,0x01,0x09,0x0F,0x09,0x01},/*"4",4
             -*/
  31                                     {0x00,0x7C,0x24,0x24,0x64,0xC4,0x00,0x00,0x06,0x08,0x08,0x0C,0x07,0x00},/*"5",5
             -*/
  32                                     {0xF0,0x88,0x44,0x44,0x44,0x8C,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"6",6
             -*/
  33                                     {0x00,0x1C,0x04,0xC4,0x34,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00},/*"7",7
             -*/
  34                                     {0x38,0xE4,0x44,0x44,0xC4,0x38,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"8",8
             -*/
  35                                     {0x78,0x84,0x84,0x84,0x4C,0xF0,0x00,0x0C,0x08,0x08,0x0C,0x06,0x01,0x00},/*"9",9
             -*/
  36                                     {0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,0x20,0x3F,0x28,0x08,0x0C,0x07,0x00},/*"p",1
             -0*/
  37                                     {0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x00,0x06,0x09,0x08,0x08,0x0F,0x08},/*"a",1
             -1*/
  38                                     {0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//:   12
             -           
  39                                     {0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",1
C51 COMPILER V7.50   925_                                                                  10/06/2007 14:02:24 PAGE 2   

             -3*/
  40                                     {0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00},/*"+",1
             -4*/
  41                                     {0x00,0x38,0x44,0xFE,0x84,0x18,0x00,0x00,0x06,0x08,0x3F,0x08,0x07,0x00},/*"$",1
             -5*/
  42                                                             {0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"=",16*/
  43                                     {0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},/*"V",1
             -7*/
  44                                                     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00}};/*".",18*/
  45          
  46          void Delay_us(unsigned int DelayTime)
  47           {
  48   1         while(DelayTime) DelayTime--;
  49   1        }
  50          
  51          void Delay_x10ms(unsigned char DelayTime)   //***************10ms延时**********//
  52             {
  53   1             unsigned char iq,jq,kq;
  54   1             for(iq=0;iq<DelayTime;iq++)
  55   1                for(jq=0;jq<50;jq++)
  56   1                   for(kq=0;kq<120;kq++) {;}
  57   1          }      
  58          
  59          
  60          /*---------------------------------------------------------------------------- 
  61          下面这个函数用于液晶模块的忙信号检测。 
  62          ----------------------------------------------------------------------------*/ 
  63          void LCD_Check_Busy(void)
  64            {
  65   1         while(1)
  66   1              {
  67   2                LCD_EN = 0;
  68   2                LCD_RS = 0;
  69   2                //Delay_us(10);
  70   2                LCD_RW = 1;
  71   2                LCD_PORT = 0xff;
  72   2                LCD_EN = 1;
  73   2                if(!LCD_Busy) break;
  74   2           }
  75   1         LCD_EN = 0;
  76   1        }
  77          /*---------------------------------------------------------------------------- 
  78          下面这个函数用于向液晶模块写入控制指令代码。 
  79          函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。 
  80                        CS_Num  ------ 左右半屏的选数值 
  81          ----------------------------------------------------------------------------*/ 
  82          void LCD_WriteCommand(uchar Command, uchar CS_Num) 
  83          {  
  84   1        if(CS_Num==1)                 /*选择左半屏*/
  85   1         {
  86   2           LCD_CS1 = 0;
  87   2               LCD_CS2 = 1;
  88   2              }
  89   1        else if(CS_Num==2)    /*选择右半屏*/
  90   1         {
  91   2           LCD_CS1 = 1;
  92   2               LCD_CS2 = 0;
  93   2              }
  94   1        LCD_Check_Busy();       /* 使能信号为L */ 
  95   1        LCD_RS = 0;           /* 置寄存器选择为L */ 
  96   1        LCD_RW = 0;           /* 置读/写选择为L */ 
  97   1        LCD_PORT = Command;   /* 将控制指令代码输出到的数据端口 */ 
C51 COMPILER V7.50   925_                                                                  10/06/2007 14:02:24 PAGE 3   

  98   1        LCD_EN = 1;           /* 使能信号为H */ 
  99   1        Delay_us(10);          /* 延时2us */ 
 100   1        LCD_EN = 0;           /* 使能信号为L */ 
 101   1        LCD_CS1 = 1;          /* 置片选1为L */ 
 102   1        LCD_CS2 = 1;          /* 置片选2为L */ 
 103   1      } 
 104          
 105          
 106          /*---------------------------------------------------------------------------- 
 107          下面这个函数用于向液晶模块写入显示数据。 
 108          函数入口参数:Data------ 向液晶模块写入的显示数据 。 
 109                      CS_Num-------左右半屏的选数值 
 110          ----------------------------------------------------------------------------*/ 
 111          void LCD_WriteData(uchar Data,uchar CS_Num) 
 112          {  
 113   1      if(CS_Num==1)            /*选择左半屏*/
 114   1         {
 115   2           LCD_CS1 = 0;
 116   2               LCD_CS2 = 1;
 117   2              }
 118   1        else if(CS_Num==2)  /*选择右半屏*/
 119   1         {
 120   2           LCD_CS1 = 1;
 121   2               LCD_CS2 = 0;
 122   2              }
 123   1        LCD_Check_Busy();
 124   1        LCD_EN = 0;
 125   1        LCD_RS = 1;  /* 置寄存器选择为H */ 
 126   1        LCD_RW = 0;       /* 置读/写选择为L */  
 127   1        LCD_PORT = Data;  /* 将显示数据输出到的数据端口 */ 
 128   1        LCD_EN = 1;       /* 使能信号为H */ 
 129   1        Delay_us(10);      /* 延时2us */ 
 130   1        LCD_EN = 0;       /* 使能信号为L */ 
 131   1        LCD_CS1= 1;       /* 置片选1为L */ 
 132   1        LCD_CS2= 1;       /* 置片选2为L */ 
 133   1      }    
 134          
 135          /*---------------------------------------------------------------------------
 136          下面这个函数用于液晶模块的清屏。
 137          ---------------------------------------------------------------------------*/
 138          void LCD_keyclr(uchar Side_Num)
 139           {
 140   1         uchar i,k,COM;
 141   1         
 142   1         for(i=0;i<8;i++)                               
 143   1         {
 144   2               COM=0xB8+i;
 145   2           LCD_WriteCommand(COM,Side_Num);    
 146   2               COM=0x40;
 147   2               LCD_WriteCommand(COM,Side_Num);  
 148   2                       
 149   2           for(k=0;k<64;k++)
 150   2            {
 151   3                  LCD_WriteData(0x00,Side_Num);
 152   3                 }
 153   2              }
 154   1               Delay_us(2);
 155   1        }
 156          
 157          
 158          /*---------------------------------------------------------------------------
 159          下面这个函数用于向液晶模块初始化。
C51 COMPILER V7.50   925_                                                                  10/06/2007 14:02:24 PAGE 4   

 160          如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
 161          ---------------------------------------------------------------------------*/
 162          void LCD_Initial(void) 
 163          {   
 164   1        LCD_RST = 0;    /* 置复位信号为低电平 */ 
 165   1       // Delay_us(2);  
 166   1        LCD_RST = 1;    /* 置复位信号为高电平 */ 
 167   1        LCD_WriteCommand(0x3F,Left);    /*显示开*/
 168   1        LCD_WriteCommand(0x3F,Right);
 169   1        LCD_WriteCommand(0xC0,Left);    /*起始行*/
 170   1        LCD_WriteCommand(0xC0,Right);                     
 171   1        LCD_WriteCommand(0xB8,Left);    /*起始页*/
 172   1        LCD_WriteCommand(0xB8,Right);  
 173   1        LCD_WriteCommand(0x40,Left);    /*起始列*/
 174   1        LCD_WriteCommand(0x40,Right); 
 175   1      } 
 176          
 177          
 178          /*---------------------------------------------------------------------------
 179          下面这个函数用于数字数组例坐标选择,对应相应数值的点阵
 180          ---------------------------------------------------------------------------*/
 181          swi()
 182          {
 183   1        switch (swd)
 184   1        {
 185   2        case 0: k=0; break;
 186   2        case 1: k=1; break;
 187   2        case 2: k=2; break;
 188   2        case 3: k=3; break;
 189   2        case 4: k=4; break;
 190   2        case 5: k=5; break;
 191   2        case 6: k=6; break;
 192   2        case 7: k=7; break;
 193   2        case 8: k=8; break;
 194   2        case 9: k=9; break;
 195   2        case 10: k=10; break;
 196   2        case 11: k=11; break;
 197   2        case 12: k=12; break;
 198   2        case 13: k=13; break;
 199   2        case 14: k=14; break;
 200   2        case 15: k=15; break;
 201   2        case 16: k=16; break;
 202   2        case 17: k=17; break;
 203   2        case 18: k=18; break;
 204   2      
 205   2        }
 206   1      }
 207          
 208          /*---------------------------------------------------------------------------
 209          下面这个函数用于左半屏数字位的显示示,只需给定页地址,起始例
 210          ---------------------------------------------------------------------------*/
 211          digitaloutleft()
 212          {
 213   1      for(j=0;j<2;j++)
 214   1      {
 215   2        LCD_WriteCommand((page+j),Left);
 216   2        LCD_WriteCommand(clmstart,Left);
 217   2      for(i=0;i<7;i++)
 218   2      {
 219   3         digitalin=digital[k][7*j+i];
 220   3        if(keysetin==1){digitalin=~digital[k][7*j+i];};
 221   3        
C51 COMPILER V7.50   925_                                                                  10/06/2007 14:02:24 PAGE 5   

 222   3        LCD_WriteData(digitalin,Left); 
 223   3      }}
 224   1      keysetin=0;
 225   1      }
 226          

⌨️ 快捷键说明

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