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

📄 lcm16864zk.lst

📁 一个基于51单片机的报警系统。包含有电路图
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   LCM16864ZK                                                            12/21/2006 15:22:27 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCM16864ZK
OBJECT MODULE PLACED IN D:\KEIL\调试程序\LCM16864ZK.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE D:\KEIL\调试程序\LCM16864ZK.C DB SB OE

stmt level    source

   1          #include <absacc.h>
   2          #include <reg51.h>
   3          #include "main.h"
   4          #define PRINTBYTE XBYTE[0x9FFF]         //打印地址
   5          #define WARNBYTE XBYTE[0x5FFF]         //射频报警地址
   6          #define LEDBYTE XBYTE[0X1FFF]          //显示芯片地址
   7          sbit BUSY=P3^2;
   8          void main(void)
   9          {
  10   1              SP=0x30;
  11   1      
  12   1              Delay_ms(2);
  13   1              SystemInitial();        //系统初始化
  14   1              while(1)
  15   1                      {
  16   2      
  17   2                              Delay_ms(10);   //显示初始画面
  18   2                              ShowTime();
  19   2                              if(LKEY==0)
  20   2                              {
  21   3                               Delay_ms(10);
  22   3                               if(LKEY==0)
  23   3                               {
  24   4                                while(1){if(LKEY==1)break;}
  25   4                               ShScreen1();
  26   4                               DisplayInitial();
  27   4      
  28   4                                }
  29   3                               }
  30   2      
  31   2                               if(flag)
  32   2                               {
  33   3                                 flag=0;
  34   3                           /*      TH0=0X3C;
  35   3                                 TL0=0XB0;
  36   3                                 TMOD=0X01;
  37   3      
  38   3                                                 */
  39   3                                 WarnDeal();
  40   3                                 Delay_s(1);
  41   3                                 DisplayInitial();
  42   3                               }
  43   2      
  44   2                      }
  45   1      }
  46          
  47          void SystemInitial(void)                // 系统初始化程序
  48          {
  49   1              uchar i;
  50   1      
  51   1              IE=0X95;                        //中断控制初始化
  52   1              PCON=0Xa0;
  53   1              SCON=0X90;                      //串行口波特率加倍
  54   1              REN=1;
  55   1              IT1=0;
C51 COMPILER V7.06   LCM16864ZK                                                            12/21/2006 15:22:27 PAGE 2   

  56   1              P3=0XFF;                        //P1,P3口的第二的功能先输出1
  57   1              for(i=0;i<=3;i++)               //密码初始化为0000
  58   1                   CodeNum[i]=0;
  59   1                                      //报警数据初始化
  60   1              pdx=0x0100;             //防抢设置向量地址
  61   1              *pdx=0x00;              //   向量数目
  62   1              pdx=0x0200;             //防盗设置向量首地址
  63   1              *pdx=0x00;
  64   1              pdx=0x0300;             //放火设置向量首地址
  65   1              *pdx=0x00;
  66   1              pdx=0x0400;             //报警发生存储向量首地址
  67   1              *pdx=0x00;
  68   1      
  69   1              RobDataInitial();
  70   1              CalendarInitial(calen);          //日历芯片初始化
  71   1              BurstR1302(calen);               //输入日历的初始值
  72   1              ShowInitial();                  //显示模块初始化
  73   1              DisplayInitial();               //显示初始画面
  74   1      }
  75          
  76          void ShowInitial(void)  //显示初始化
  77          {
  78   1              P2=0X1F;
  79   1              Delay_ms(22);   //delay > 40ms
  80   1                              //i=00110000B;
  81   1              WritCommand(0x30);      //function set
  82   1              Delay_us(6);    //delay > 100us
  83   1      
  84   1              WritCommand(0x30);      //function set
  85   1              Delay_us(3);    //delay > 37us
  86   1      
  87   1              WritCommand(0x0c);        //display set D=1 C=1 B=0
  88   1              Delay_us(6);           //>100us
  89   1      
  90   1      
  91   1              WritCommand(0x01);        //display clear
  92   1              Delay_ms(7);          //>10ms
  93   1      
  94   1                                 //i=00000110B
  95   1              WritCommand(0x06); //enter nod set
  96   1              P2=0X0F;
  97   1      
  98   1      }
  99          
 100          void RobDataInitial(void)
 101          {
 102   1       pdx=0x0100;
 103   1       *pdx=6;
 104   1       pdx=0x0102;
 105   1       *pdx=100;
 106   1       pdx=0x0103;
 107   1       *pdx=2;
 108   1       RobNum=2;      //最少与数
 109   1       pdx++;*pdx=0x07; pdx++;*pdx=0x00;   // 0111      高级
 110   1       pdx++;*pdx=0x01;pdx++;*pdx=0x01;
 111   1       pdx++;*pdx=0x04; pdx++;*pdx=0x00;   // 0100      高级
 112   1       pdx++;*pdx=0x02;pdx++;*pdx=0x01;
 113   1       pdx++; *pdx=0x08; pdx++;*pdx=0x00;   // 1000      高级
 114   1       pdx++;*pdx=0x03;pdx++;*pdx=0x01;
 115   1       pdx++; *pdx=0x02; pdx++;*pdx=0x00;   // 0010      低级
 116   1       pdx++;*pdx=0x04;pdx++;*pdx=0x00;
 117   1       pdx++; *pdx=0x01; pdx++;*pdx=0x00;   // 0001      低级
C51 COMPILER V7.06   LCM16864ZK                                                            12/21/2006 15:22:27 PAGE 3   

 118   1       pdx++;*pdx=0x05;pdx++;*pdx=0x00;
 119   1       pdx++; *pdx=0x0a; pdx++;*pdx=0x00;   // 1010      低级
 120   1       pdx++;*pdx=0x06;pdx++;*pdx=0x00;
 121   1       pdx=0x0302;*pdx=0x0a;pdx=0x0300;*pdx=0x01;
 122   1      }
 123          /////////////////////////////////////////////////////延时程序 us  ms  s
 124          
 125          void Delay_us(uchar i)  //delay 8 * i us
 126          {
 127   1              uchar j;
 128   1              for(j=0;j<i;j++);
 129   1      }
 130          
 131          void Delay_ms(uchar i)  // delay i * 1000 us=i  ms
 132          {
 133   1              uchar sum=125,j,k;
 134   1              for(j=0;j<i;j++)
 135   1                      for(k=0;k<sum;k++);
 136   1      }
 137          
 138          void Delay_s(uchar i)
 139          {
 140   1         uint sum=125000,k;
 141   1         uchar j;
 142   1         for(j=0;j<i;j++)
 143   1           for(k=0;k<sum;k++);
 144   1      
 145   1      }
 146          
 147          ///////////////////////////////////////////////////////
 148           ////////////////////////////////////////////////////////LED显示程序
 149          void WritCommand(uchar i)       //写命令
 150          {
 151   1          //    P2=0X1F;
 152   1              Waitfree();
 153   1              S_RS=0;
 154   1              S_RW=0;
 155   1              E=1;         //E=1
 156   1      /*      P0 = i;
 157   1              _WR=0;
 158   1      
 159   1              _WR=1;      */
 160   1              LEDBYTE=i;
 161   1              E=0;         //E=0
 162   1           //   P2=0X0F;
 163   1      }
 164          //////////////////////////////////////////////////////////
 165          void WritData(uchar i)  //写数据
 166          {
 167   1         //     P2=0X1F;
 168   1              Waitfree();
 169   1              S_RS=1;
 170   1              S_RW=0;
 171   1              E=1;          //E=1
 172   1      /*      P0=i;
 173   1              _WR=0;
 174   1      
 175   1              _WR=1;  */
 176   1              LEDBYTE=i;
 177   1              E=0;
 178   1           //   P2=0X0F;
 179   1      }
C51 COMPILER V7.06   LCM16864ZK                                                            12/21/2006 15:22:27 PAGE 4   

 180          
 181          void Waitfree(void)      //送数据入LED芯片的等待程序,判断数据线是否忙
 182          {
 183   1       P0=0XFF;
 184   1        S_RS=0;
 185   1        S_RW=1;
 186   1        _RD=0;
 187   1        ACC=P0;
 188   1       while(ACC7==1)
 189   1       {
 190   2        _RD=0;
 191   2        P2=0X1F;
 192   2        E=1;
 193   2        ACC=P0;
 194   2       // ACC=LEDBYTE;
 195   2        E=0;
 196   2        }
 197   1       _RD=1;
 198   1        S_RS=0;
 199   1        S_RW=0;
 200   1      }
 201          ////////////////////////////////////////////////////////////
 202          ////////////////////////////////////////////////////////////////
 203          
 204          void DisplayInitial(void)
 205          {
 206   1              WritCommand(0x01);                               //显示初始画面
 207   1              WritCommand(0x91);
 208   1              WritData(0xBC);WritData(0xAF);WritData(0xB3);WritData(0xc9);  //集成警务系统
 209   1              WritData(0xbe);WritData(0xaf);WritData(0xce);WritData(0xf1);
 210   1              WritData(0xcf);WritData(0xb5);WritData(0xcd);WritData(0xb3);
 211   1              WritCommand(0x98);
 212   1              WritData(0xc3);WritData(0xdc);WritData(0xc2);WritData(0xeb);    //密码门
 213   1              WritData(0xc3);WritData(0xc5);
 214   1              WritCommand(0x89);
 215   1              WritData(0xcf);WritData(0xe6);WritData(0xcc);WritData(0xb6);     //湘潭大学研制
 216   1              WritData(0xb4);WritData(0xf3);WritData(0xd1);WritData(0xa7);
 217   1              WritData(0xd1);WritData(0xd0);WritData(0xd6);WritData(0xc6);
 218   1      }
 219          
 220          /////////////////////////////////////////////////////////////
 221          
 222          
 223          
 224          /////////////////////////////////////////////////////////////////
 225          ///////////////////////////////////////////////////////日历程序
 226          
 227          void CalendarInitial(pcalen)//日历初始化程序
 228          uchar pcalen[8];
 229          {
 230   1              uchar i;
 231   1              BurstW1302(pcalen);             //读日历,并送到pcalen[]中
 232   1              i=Read1302(0x80);
 233   1              i=i&0x7f;                               //ch=0
 234   1              Writ1302(0x80,i);       //起震,
 235   1      }
 236          
 237          
 238          void BurstR1302(pcalen)         // 从1302读多字节,并存入日历数组中
 239          uchar pcalen[8];
 240          {
 241   1              uchar i;
C51 COMPILER V7.06   LCM16864ZK                                                            12/21/2006 15:22:27 PAGE 5   

 242   1              T_RST=0;
 243   1              T_CLK=0;
 244   1              T_RST=1;
 245   1              RTInputByte(0xbf);              //oxbf 时钟多字节读命令
 246   1              for(i=0; i<8; i++)
 247   1                      {
 248   2                              *pcalen=RTOutputByte(); //读1BYTE的数据
 249   2                              pcalen++ ;
 250   2                      }
 251   1              T_CLK=1;
 252   1              T_RST=0;
 253   1      }
 254          
 255          ////////////////////////////////////////////////////////
 256          
 257          void RTInputByte(udata)         //向1302写入一字节的数据
 258          uchar udata;
 259          {
 260   1              uchar i;
 261   1              ACC=udata;
 262   1              for(i=8;i>0;i--)
 263   1              {
 264   2                      T_IO=ACC0;
 265   2                      T_CLK=1;
 266   2                      T_CLK=0;
 267   2                      ACC=ACC>>1;
 268   2              }
 269   1      }
 270          
 271          /////////////////////////////////////////////////////
 272          uchar RTOutputByte(void)                //从1302读一字节的数据
 273          {
 274   1              uchar i;
 275   1              for(i=8;i>0;i--)
 276   1              {
 277   2                      ACC=ACC>>1;
 278   2                      ACC7=T_IO;
 279   2                      T_CLK=1;
 280   2                      T_CLK=0;
 281   2      
 282   2              }
 283   1              return(ACC);
 284   1      }
 285          
 286          //////////////////////////////////////////////////////
 287          
 288          void Writ1302(uchar uAddr,uchar udata)  //写1字节的数据入指定地址
 289          {
 290   1      
 291   1              T_RST=0;
 292   1              T_CLK=0;
 293   1              T_RST=1;
 294   1              RTInputByte(uAddr);     //先输入地址
 295   1              RTInputByte(udata);     //写数据
 296   1              T_CLK=1;
 297   1              T_RST=0;
 298   1      }
 299          
 300          //////////////////////////////////////////////////////
 301          
 302          uchar Read1302(uchar uAddr)     //从指定地址读出1字节数据
 303          {
C51 COMPILER V7.06   LCM16864ZK                                                            12/21/2006 15:22:27 PAGE 6   

 304   1              uchar udata;
 305   1              T_RST=0;
 306   1              T_CLK=0;
 307   1              T_RST=1;
 308   1              RTInputByte(uAddr);     //写入地址
 309   1              udata=RTOutputByte();   //读出数据
 310   1              T_CLK=1;
 311   1              T_RST=0;
 312   1              return(udata);

⌨️ 快捷键说明

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