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

📄 test_lcd12864.lst

📁 通过读取打卡器上传送过来的串口数据,识别打卡人
💻 LST
字号:
C51 COMPILER V7.50   TEST_LCD12864                                                         03/14/2008 16:51:27 PAGE 1   


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

line level    source

   1          
   2          
   3          #include<reg51.H>
   4          #include<test_lcd12864.h>
   5          #include <intrins.h>
   6          #include <absacc.h>
   7          #include <math.h>
   8          #include <stdio.h>
   9          #include <string.h>
  10          #define uchar unsigned char
  11          #define uint  unsigned int
  12          //void Display_comm(void);
  13          void Display(void);
  14          //void Display_second(void);
  15          
  16          void Display_name(void);
  17          //void Display_data(void);
  18          //void delay_ms(int ms);
  19          unsigned char idata Return_data[17];
  20          int j[4];
  21          int k=0;
  22          
  23          //串口初始化 晶振为11.0592M 方式1 波特率300-57600
  24          void InitCom(unsigned char BaudRate)
  25          {
  26   1      unsigned char THTL;
  27   1      switch (BaudRate)
  28   1      {
  29   2      case 1: THTL = 64; break; //波特率300
  30   2      case 2: THTL = 160; break; //600
  31   2      case 3: THTL = 208; break; //1200
  32   2      case 4: THTL = 232; break; //2400
  33   2      case 5: THTL = 244; break; //4800
  34   2      case 6: THTL = 250; break; //9600
  35   2      case 7: THTL = 253; break; //19200
  36   2      case 8: THTL = 255; break; //57600
  37   2      default: THTL = 208;
  38   2      }
  39   1      SCON = 0x50; //串口方式1,允许接收
  40   1      TMOD = 0x20; //定时器1定时方式2
  41   1      TCON = 0x40; //设定时器1开始计数
  42   1      TH1 = THTL;
  43   1      TL1 = THTL;
  44   1      PCON = 0x80; //波特率加倍控制,SMOD位
  45   1      RI = 0; //清收发标志
  46   1      TI = 0;
  47   1      TR1 = 1; //启动定时器
  48   1      }
  49          
  50          
  51          //从串口接收一个字符串(非中断方式)
  52          void ComInStr(void)
  53          {
  54   1      unsigned char temp,len;
  55   1       temp = 1;
C51 COMPILER V7.50   TEST_LCD12864                                                         03/14/2008 16:51:27 PAGE 2   

  56   1       len =0;
  57   1      
  58   1       while (temp)
  59   1       {
  60   2      
  61   2         while(!RI); //空语句判断字符是否收完
  62   2         temp = SBUF; //保存字符
  63   2         Return_data[len] = temp;
  64   2         if (temp == 0x0A)//判断结束标志位
  65   2            temp = 0x00;
  66   2         RI = 0; //清RI
  67   2         len++; //字符串指针加一
  68   2        } 
  69   1      }
  70          
  71          
  72          //分析比较所获得的字符串
  73          int cmpstr(void)
  74          {unsigned char idata have_data0[7]={0x46,0x33,0x39,0x34,0x34,0x45,0x42};//陈志宏
  75   1       unsigned char idata have_data1[7]={0x46,0x33,0x32,0x30,0x34,0x41,0x30};//李志华
  76   1       unsigned char idata have_data2[7]={0x46,0x31,0x36,0x46,0x44,0x37,0x44};//林跃东
  77   1       unsigned char idata have_data3[7]={0x45,0x45,0x46,0x33,0x36,0x34,0x45};//张仁建
  78   1      int i=0;
  79   1      for(i=0;i<7;i++)
  80   1            { if (have_data0[i]==Return_data[i+8]) 
  81   2                 j[0]++;
  82   2              if (have_data1[i]==Return_data[i+8]) 
  83   2                 j[1]++;
  84   2              if (have_data2[i]==Return_data[i+8]) 
  85   2                 j[2]++;
  86   2              if (have_data3[i]==Return_data[i+8]) 
  87   2                 j[3]++;
  88   2             }
  89   1      for(k=0;k<4;k++)
  90   1        { if (j[k]==7)   { Display_name();  j[k]=0; }
  91   2         else j[k]=0;}
  92   1        
  93   1      }
  94          //判断刷卡人
  95          void Display_name()
  96          {       //清屏
  97   1              LcdClear();
  98   1              DisplayCgrom(0x90,"刷卡人:");
  99   1      switch(k)
 100   1         {case 0:     DisplayCgrom(0x8a,"陈志宏");break;
 101   2         case 1:      DisplayCgrom(0x8a,"李志平");break;
 102   2         case 2:      DisplayCgrom(0x8a,"林跃东");break;
 103   2         case 3:      DisplayCgrom(0x8a,"张仁建");break;
 104   2        } 
 105   1      
 106   1      }
 107          
 108          void main(void)
 109          {   //初始化液晶显示和串口
 110   1              
 111   1              InitCom(6);
 112   1          LcdInit();
 113   1              //清屏
 114   1              LcdClear();
 115   1      while(1)
 116   1              {
 117   2       
C51 COMPILER V7.50   TEST_LCD12864                                                         03/14/2008 16:51:27 PAGE 3   

 118   2          //显示"请刷卡"
 119   2              Display();
 120   2          //串口接收字符
 121   2              ComInStr();
 122   2          //字符识别
 123   2          cmpstr();
 124   2              delay(2000);
 125   2              //清屏
 126   2              LcdClear();
 127   2          }   
 128   1              
 129   1      
 130   1      }
 131          
 132          
 133          
 134          /********************************
 135          函数名称:Display()显示刷卡界面
 136          入口参数:无
 137          返回参数:无
 138          ********************************/
 139          void Display(void)
 140          {
 141   1              DisplayCgrom(0x92,"请刷卡"); 
 142   1      }
 143          
 144          
 145          
 146          /********************************
 147          函数名称:Display_first 显示第二屏
 148          入口参数:无
 149          返回参数:无
 150          ********************************/
 151          //void Display_first(void)
 152          //{
 153          //    DisplayCgrom(0x90,"刷卡人:");
 154          //      DisplayCgrom(0x8a,"林跃东");
 155             
 156          
 157          //}
 158          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    627    ----
   CONSTANT SIZE    =     71    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   IDATA SIZE       =     17      28
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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