资源简介

内附keil代码 + proteus电路 + 实验报告。 采用51单片机设计门禁系统,4X4键盘用户输入密码,错误蜂鸣器叫一声,正确LED闪烁,12864作为用户界面,初始显示“欢迎光临”,正确与错误时12864有相应的提示。 该实验属于应用型题目。设计一款门禁系统,将会使用到 12864的屏幕显示知识,而其中必定有串行或并行的数据传送方式选择,而用户之间交互采用矩形按键的方式,可使用线反转,可使用扫描,甚至可以将中断和反转中原理中和。预置密码可以用一个EPROM去存储。用户交互内核需要考虑数据输入时一些规范性检查等等。

资源截图

代码片段和文件信息

//MCU experiment_7
//Gate control system
#include
#include 
#include 
#include “HDG12864F1.h“
#include “wordCodebase.h“
#include “keyControl.h“
typedef unsigned char uchar;
typedef unsigned int uint;


sbit LED = P2 ^ 2;//LED灯引脚定义
sbit BEEP = P2 ^ 3;//蜂鸣器引脚定义

unsigned char Key[] = “895100“;//初始密码
//unsigned char Buff[7] = “\0\0\0\0\0\0\0“;
unsigned int length = 0;
bit Key_Flag = 1;//按键按下标志位
bit Key_Display_Flag = 0;//密码是否显示标志

void Delay(unsigned int z);
void Display_First();
void Main_Key_Pro();
void External_Interrupt_Init();
void Input_Key(unsigned char Input_Buff[]);
void Alter(unsigned char Input_Buff[]);
void Log(unsigned char Key_Buff[]);
bit Check_Key(unsigned char Input_Buff1[] unsigned char Input_buff2[]);

void main()
{
    LED = 0;
    BEEP = 0;
  P1 = 0x0F;
    
    External_Interrupt_Init();
    HDG12864F1_Init();
    Display_First();

    while(1)
    {
        P1 = 0x0F;//0000 1111
if(Key_Flag == 1)
{
Key_Flag = 0;
Main_Key_Pro();
}
    }
}
void Delay(unsigned int z)
{
unsigned int i j;
for(i = z; i > 0; i--)
for(j = 120; j > 0; j--);
}
void Display_First()
{
    length = sizeof(Welcome) / sizeof(Welcome[0]);
    HDG12864F1_Write_Char(4 3 Char_Table[10]);
    HDG12864F1_Write_Char(4 4 Char_Table[10]);
    HDG12864F1_Write_String(2 3 length Welcome);
    HDG12864F1_Write_Char(4 13 Char_Table[10]);
    HDG12864F1_Write_Char(4 14 Char_Table[10]);
}
void Main_Key_Pro()
{
switch(Matrix_Key_Scan())
{
case 0x7d://修改
Alter(Key);
break;
case 0x77:
Log(Key);
break;
}
HDG12864F1_Clear();
Display_First();
}
void External_Interrupt_Init()
{
    EA = 1;
    EX0 = 1;
    IT0 = 1;
}

void External_Interrupt_0()interrupt 0
{
    Key_Flag = 1;
}

void Input_Key(unsigned char Input_Buff[])
{
unsigned int i = 0;//记录密码输入个数
    unsigned int j = 0;
    while(i < 7)
    {
        if(i < 6)
        {
            switch(Matrix_Key_Scan())
            {
            //第一行键值码
            case 0xee:
                Input_Buff[i] = ‘7‘;
                ++i;
                break;
            case 0xde:
                Input_Buff[i] = ‘8‘;
                ++i;
                break;
            case 0xbe:
                Input_Buff[i] = ‘9‘;
                ++i;
                break;
            case 0x7e://清除
                i = 0;
                for(j = 0; j < 7; j++)
                {
                    HDG12864F1_Write_Char(5 6 + j Char_Table[0]);
                    Input_Buff[j] = ‘\0‘;
                }
                break;

            //第二行键值码
            case 0xed:
                Input_Buff[i] = ‘4‘;
                ++i;
                break;
            case 0xdd:
                Input_Buff[i] = ‘5‘;
                ++i;
                break;
            case 0xbd:
                Input_Buff[i] = ‘6‘;
                ++i;
             

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-04 17:19  新建文件夹\
     目录           0  2018-10-04 17:17  新建文件夹\PR07code\
     文件        3819  2018-06-21 10:59  新建文件夹\PR07code\HDG12864F1.h
     文件         914  2018-06-21 11:04  新建文件夹\PR07code\keyControl.h
     文件        6966  2018-06-21 12:28  新建文件夹\PR07code\main.c
     文件       12356  2018-06-21 11:09  新建文件夹\PR07code\main.LST
     文件       32022  2018-06-21 11:09  新建文件夹\PR07code\main.OBJ
     文件       18817  2018-06-21 11:08  新建文件夹\PR07code\test7.hex
     文件          26  2018-06-21 11:08  新建文件夹\PR07code\test7.lnp
     文件       28611  2018-06-21 11:08  新建文件夹\PR07code\test7.M51
     文件         174  2018-07-12 13:31  新建文件夹\PR07code\test7.plg
     文件       74516  2018-07-12 13:31  新建文件夹\PR07code\test7.uvgui.HP
     文件       74524  2018-07-12 13:07  新建文件夹\PR07code\test7.uvgui_HP.bak
     文件        5385  2018-07-12 13:31  新建文件夹\PR07code\test7.uvopt
     文件       13422  2018-05-19 22:06  新建文件夹\PR07code\test7.uvproj
     文件       24852  2018-06-21 20:38  新建文件夹\PR07code\wordCodebase.h
     目录           0  2018-10-04 17:17  新建文件夹\pro7proteus\
     文件       27629  2018-06-21 11:15  新建文件夹\pro7proteus\Backup Of test7.pdsbak
     文件       15723  2018-05-28 17:58  新建文件夹\pro7proteus\Last Loaded test7.pdsbak
     文件       27645  2018-06-21 20:38  新建文件夹\pro7proteus\test7.pdsprj
     文件        3603  2018-06-25 16:53  新建文件夹\pro7proteus\test7.pdsprj.LAPTOP-VGCSRA90.HP.workspace
     文件         162  2018-10-04 17:18  新建文件夹\~$实验报告.docx
     文件      155444  2018-10-04 17:19  新建文件夹\实验报告.docx
     文件      209567  2018-10-04 17:19  新建文件夹\逻辑电路图.png

评论

共有 条评论