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

📄 main.lst

📁 51实例大全
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  06/09/2010 10:43:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\main.lst) OBJECT(.\obj\main.ob
                    -j)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:液晶显示密码锁
   3            论坛:www.doflye.net
   4            编写:shifang
   5            日期:2009.5
   6            修改:无
   7            内容:第一行显示固定密码,第二行显示输入密码,密码输入完毕后会有正确或者错误提示
   8          ------------------------------------------------*/
   9          #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  10          #include<stdio.h>
  11          #include"1602.h"
  12          #include"delay.h"
  13          #include"keyboard.h"
  14          
  15          
  16          unsigned char code password[8]={1,2,3,4,5,6,7,8};//可以更改此密码做多组测试
  17          
  18          /*------------------------------------------------
  19                              主程序
  20          ------------------------------------------------*/
  21          main()
  22          {
  23   1       unsigned char num,i,j;                  
  24   1       unsigned char temp[8];
  25   1       bit Flag;
  26   1      
  27   1       LCD_Init();         //初始化液晶屏
  28   1       DelayMs(10);        //延时用于稳定,可以去掉
  29   1       LCD_Clear();        //清屏
  30   1       LCD_Write_String(0,0,"password12345678");//写入第一行信息,主循环中不再更改此信息,所以在while之前写入
  31   1       LCD_Write_String(0,1,"Input  password!");    //写入第二行信息,提示输入密码
  32   1      while (1)         //主循环
  33   1        {
  34   2      
  35   2      
  36   2       num=KeyPro();  //扫描键盘
  37   2       if(num!=0xff)  //如果扫描是按键有效值则进行处理
  38   2         { 
  39   3          if(i==0)    //输入是第一个字符的时候需要把改行清空,方便观看密码
  40   3                LCD_Write_String(0,1,"                ");//清除该行
  41   3          if(i<8)     //密码是8位,大于8位时不再输入按键值
  42   3               {
  43   4           temp[i]=num;
  44   4           LCD_Write_Char(i,1,num+'0');
  45   4               }
  46   3              i++;   //输入数值累加
  47   3              if(i==9)//8位后的按键不输入数值,相当于确认按键(任意按键即可)
  48   3                {
  49   4                i=0;  //计数器复位
  50   4                Flag=1;//先把比较位置1
  51   4                for(j=0;j<8;j++)//循环比较8个数值,如果有一个不等 则最终Flag值为0
  52   4                   Flag=Flag&&(temp[j]==password[j]);//比较输入值和已有密码
  53   4      
  54   4            if(Flag)//如果比较全部相同,标志位置1
C51 COMPILER V7.06   MAIN                                                                  06/09/2010 10:43:00 PAGE 2   

  55   4                 {
  56   5              LCD_Write_String(0,1,"Right Open!");//密码正确显示的信息
  57   5                      }
  58   4                else 
  59   4                  {
  60   5                      LCD_Write_String(0,1,"Wrong Retry!");//密码错误,提示重新输入
  61   5                      }
  62   4      
  63   4                }
  64   3          }   
  65   2        }
  66   1      }
  67          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    156    ----
   CONSTANT SIZE    =     84    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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