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

📄 arry_key.lst

📁 单片机控制的图文屏
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   ARRY_KEY                                                              05/12/2008 22:17:16 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ARRY_KEY
OBJECT MODULE PLACED IN arry_key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE arry_key.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h> 
   3          
   4          #define uchar unsigned char   
   5          #define uint unsigned int   
   6          
   7          sbit RS =       P2^5      ;       
   8          sbit RW =       P2^6      ;
   9          sbit E  =       P2^7      ;
  10          sbit PSB        =       P2^4  ;
  11          sbit RST        =       P2^3  ;
  12          
  13          sbit     T_CLK      = P1^1;   /*实时时钟时钟线引脚 */
  14          sbit     T_IO       = P1^2;   /*实时时钟数据线引脚 */
  15          sbit     T_RST      = P1^3;   /*实时时钟复位线引脚 */
  16          
  17          sbit  ACC0 = ACC^0;
  18          sbit  ACC7 = ACC^7;
  19          
  20          sbit DQ=P1^0;
  21          
  22          
  23          float tem;
  24          int temp_lo,temp_hi;
  25          
  26          
  27          void delayms(unsigned char ms)         ;
  28          void lcdinitial()                                          ;
  29          void lcdwritecom(unsigned char comm)   ;
  30          void lcdwritedata(unsigned char dat)   ;
  31          void photodis(unsigned char *s)                 ;
  32          void chardis(char *ddata);
  33          void Gunp();
  34          
  35          void   RTInputByte(uchar);       /* 输入 1Byte */
  36          uchar  RTOutputByte(void);       /* 输出 1Byte */
  37          void   W1302(uchar, uchar);
  38          uchar  R1302(uchar);
  39          void   Set1302(uchar *);         /* 设置时间 */
  40          void   Bcd2asc(uchar,uchar *);
  41          void   Get1302(uchar curtime[]); /* 读取1302当前时间 */
  42          
  43          
  44          unsigned char settime[]={0x00,0x19,0x22,0x12,0x05,0x01,0x08};  //秒,分,时,日,月,星期,年
  45          unsigned char Week[]="一二参四五六日" ;
  46          unsigned char dis1[]={"桂林电子科技大学"};
  47          unsigned char dis2[]={"电子工程系"};
  48          unsigned char dis3[]={"045024班"};
  49          unsigned char dis4[]={"黎斯铭"};
  50          unsigned char lcdy,lcdx,count1,count2,count3,flag=0;
  51          unsigned char ucCurtime[7]={0} ;
  52          unsigned char code tutab[]={
  53           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  55          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V7.50   ARRY_KEY                                                              05/12/2008 22:17:16 PAGE 2   

  56          0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  57          0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  58          0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  59          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  61          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
  62          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
  63          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
  64          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
  65          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
  66          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
  67          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
  68          0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
  69          0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
  70          0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  71          0x30,0x06,0x00,0x02,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  72          0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
  73          0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
  74          0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
  75          0x3F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
  76          0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
  77          0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,
  78          0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,
  79          0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,
  80          0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,
  81          0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,
  82          0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,
  83          0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,
  84          0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,
  85          0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,
  86          0x7F,0x9E,0x18,0x71,0xFF,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,
  87          0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,
  88          0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,
  89          0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,
  90          0x20,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,
  91          0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,
  92          0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,
  93          0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x19,0xF6,0x01,0xF0,
  94          0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,
  95          0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,
  96          0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,
  97          0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x01,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,
  98          0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,
  99          0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,
 100          0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,
 101          0x3C,0x04,0x00,0x0F,0xFF,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,
 102          0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,
 103          0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 104          0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 105          0x3C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 106          0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 107          0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 108          0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 109          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 110          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 111          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 112          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 113          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 114          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 115          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 116          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 117          
C51 COMPILER V7.50   ARRY_KEY                                                              05/12/2008 22:17:16 PAGE 3   

 118          
 119          
 120          
 121          };      
 122          
 123          
 124          
 125          /*温度传感器控制程序*/
 126          
 127          void Delay15(uchar n)                   //延时子程序
 128           {  do{ _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 129   2              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 130   2              _nop_(); _nop_(); _nop_();
 131   2        n--;
 132   2        
 133   2             }while(n);
 134   1        }
 135           
 136          void Delay10ms(uint delay_num)          //延时子程序
 137          {
 138   1       uchar i;
 139   1       while(delay_num--)
 140   1       { 
 141   2        for(i=0;i<125;i++) ;
 142   2         
 143   2       }
 144   1      }
 145          
 146          unsigned char Read18B20(void)           //读温度传感器子程序
 147           { unsigned char ch;
 148   1         unsigned char q ;
 149   1      
 150   1         for(q=0;q<8;q++)
 151   1          {ch=ch>>1;
 152   2           DQ=0;
 153   2           _nop_();
 154   2           DQ=1;
 155   2           _nop_();_nop_();_nop_();_nop_();
 156   2           if(DQ==1)  
 157   2              {ch=ch|0x80;}
 158   2      
 159   2         else     {ch=ch&0x7f;}
 160   2           Delay15(3);
 161   2         DQ=1;
 162   2       
 163   2           }  
 164   1       return (ch);
 165   1      }
 166          
 167          
 168          void Write18B20(uchar ch)               //写温度传感器子程序
 169           { uchar i;
 170   1         for(i=0;i<8;i++)
 171   1         { DQ=0;
 172   2        Delay15(1);
 173   2        DQ=ch&0x01;
 174   2        Delay15(3);
 175   2        DQ=1;
 176   2        ch=ch>>1;
 177   2        _nop_();
 178   2          }
 179   1       }
C51 COMPILER V7.50   ARRY_KEY                                                              05/12/2008 22:17:16 PAGE 4   

 180          
 181          void Init18B20(void)            //初始化温度传感器
 182           { DQ=0;
 183   1         Delay15(33);//至少延时480us
 184   1         DQ=1;
 185   1         Delay15(10);//至少延时100us
 186   1       }
 187          
 188          
 189          void DData(void)        //测温度、处理数据
 190          {
 191   1              uchar temp1,temp2,flag=0;
 192   1              EA=0;                   //在测温度时要关中断,避免影响温度传感器的控制时序
 193   1              Init18B20();
 194   1      
 195   1              Write18B20(0xCC);//跳过ROM
 196   1              _nop_();
 197   1      
 198   1      
 199   1              Write18B20(0x44);//发送温度转换指令
 200   1              Delay10ms(25);
 201   1              Delay10ms(25);
 202   1              Delay10ms(25);
 203   1              Delay10ms(25);//等待1s转换
 204   1              
 205   1              Init18B20();
 206   1              Write18B20(0xCC);//跳过ROM
 207   1              Write18B20(0xBE);//读温度转换指令
 208   1              temp1=Read18B20();  //读低位温度值
 209   1              temp2=Read18B20();  //读高位温度值
 210   1       
 211   1              temp2 = (temp2 << 4)|(temp1 >> 4);      //处理数据
 212   1              temp1&=0x0f;
 213   1      
 214   1              if(temp2>0x7f)
 215   1          {
 216   2                      temp1=~temp1;        //数据取反
 217   2                      temp2=~temp2;        //数据取反
 218   2                      temp1&=0x0f;
 219   2                      if(temp1==0x0f)
 220   2                              temp2=temp2+1;
 221   2                      else
 222   2                              temp1=temp1+1;
 223   2                      flag=1;
 224   2               }
 225   1               tem=temp1*0.0625+temp2;
 226   1               if(flag)
 227   1                      tem*=-1;
 228   1      }
 229          
 230          
 231          void RTInputByte(uchar d) 
 232          { 
 233   1          uchar i;
 234   1          ACC = d;
 235   1          for(i=8; i>0; i--)
 236   1          {
 237   2              T_IO = ACC0;           /*相当于汇编中的 RRC */
 238   2              T_CLK = 1;
 239   2              T_CLK = 0;
 240   2              ACC = ACC >> 1; 
 241   2          } 
C51 COMPILER V7.50   ARRY_KEY                                                              05/12/2008 22:17:16 PAGE 5   

 242   1      }
 243          
 244          uchar RTOutputByte(void) 
 245          { 
 246   1          uchar i;
 247   1          for(i=8; i>0; i--)
 248   1          {
 249   2              ACC = ACC >>1;         /*相当于汇编中的 RRC */
 250   2              ACC7 = T_IO;
 251   2              T_CLK = 1;
 252   2              T_CLK = 0;
 253   2          } 
 254   1          return(ACC); 
 255   1      }
 256          
 257          void W1302(uchar ucAddr, uchar ucDa)
 258          {
 259   1          T_RST = 0;
 260   1          T_CLK = 0;
 261   1          T_RST = 1;
 262   1          RTInputByte(ucAddr);       /* 地址,命令 */
 263   1          RTInputByte(ucDa);       /* 写1Byte数据*/
 264   1          T_CLK = 1;
 265   1          T_RST = 0;
 266   1      } 
 267          
 268          uchar R1302(uchar ucAddr)
 269          {
 270   1          uchar ucData;
 271   1          T_RST = 0;
 272   1          T_CLK = 0;
 273   1          T_RST = 1;
 274   1          RTInputByte(ucAddr);             /* 地址,命令 */
 275   1          ucData = RTOutputByte();         /* 读1Byte数据 */
 276   1          T_CLK = 1;
 277   1          T_RST = 0;
 278   1          return(ucData);
 279   1      }
 280          
 281          void Set1302(uchar *pClock) 
 282          {
 283   1          uchar i;
 284   1          uchar ucAddr = 0x80; 
 285   1              W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作*/
 286   1          for(i =7; i>0; i--)
 287   1          { 
 288   2              W1302(ucAddr,*pClock);  /* 秒 分 时 日 月 星期 年 */ 
 289   2              pClock++;
 290   2              ucAddr +=2;
 291   2          }
 292   1              W1302(0x8e,0x80);           /* 控制命令,WP=1,写保护*/
 293   1      
 294   1      }
 295          
 296          void Get1302(void) 
 297          {
 298   1          uchar i;
 299   1          uchar ucAddr = 0x81;
 300   1          for (i=0; i<7; i++)
 301   1          {

⌨️ 快捷键说明

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