资源简介
内附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\wordCodeba
目录 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
相关资源
- 51 单片机 红外避障小车 大集合136
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- proteus仿真 AT89C51输出各种波形
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- 浙江工业大学2005-2006学年单片机习题
评论
共有 条评论