西电A测 | 基于Arduino uno的电子密码锁仿真系统 | 使用Proteus仿真 | Arduino IDE编写 | ATMEGA328P
电子密码锁系统
功能要求:通过4*4薄膜键盘输入密码,LCD 上显示输入密码,Arduino UNO(Atmega328P)判断密码是否正确。如果密码正确,LCD 上显示开锁成功,绿灯亮,连接继电器的黄灯亮。LCD 第一行显示PASSWORD,第二行显示输入的密码。如果输入密码正确,第二行显示OPEN,如果输入密码错误,第二行显示INVALID。
Arduino UNO
Arduino是一个开源电子原型平台,拥有灵活、易用的硬件(Arduino开发板)和软件(Arduino IDE)。其中,Arduino UNO是一款最基础的Arduino开发板,采用的芯片是ATMEGA328P。这款开发板(芯片)包含14个数字引脚(带~的数字引脚具有PMW脉冲宽度调制功能),6个模拟引脚;即图片中的0-13以及A0-A5引脚。
Arduino IDE的下载及配置
Arduino IDE是一款针对Arduino开发板的集成开发环境,可以免费在官网上下载。由于本实验需要用到4*4键盘输入,还需要下载keypad库。首次打开IDE,选择File,preferences,可以将语言修改成英文,同时勾选编译显示详细输出,后续需要。此外,IDE还会自动下载安装一些程序包,如果下载失败可以通过连接手机热点解决。点击项目,选择添加.zip库,将刚才下载的keypad压缩文件添加,后续仿真程序需要用到。
Proteus的说明
Proteus需要破解下载,可以参考一些微信公众号,如:蓝朋友啊。由于Arduino IDE编写的程序是直接烧写到开发板的,如果没有开发板,就需要使用Proteus并基于Arduino UNO的芯片(ATMEGA328P)搭建电路来模拟开发板进行仿真。本实验提供的Proteus仿真电路如下图所示。
Proteus仿真电路
Arduino微控制器电路如下图。IO0~IO13相当UNO的14个数字引脚,在程序中以数字0-13代表。IO14-IO19连接到AD0-AD5,代表6个模拟引脚,在程序中可以以A0-A5代表,也可以以数字14-19代表。IO0和IO1分别与RX和TX相连接,如果要用到串口通信,那么数字引脚0和1不能用于输入输出功能。Arduino下载程序也是通过串口完成的,所以此时USB将占用0和1脚,此时0和1脚不能接任何东西,否则会产生冲突。
继电器电路如下图所示。当IO12输出高电平时,黄灯亮,否则黄灯灭。其余电路不再提及。
仿真程序
Arduino的程序主体包含void函数和loop函数。void函数是对Arduino UNO的初始化,每次复位后执行且只执行一次。loop函数则在void函数执行完毕后重复执行。
//KEYPAD的初始程序,实例化一个4*4的键盘
#include<Keypad.h>//引入库
const byte rows =4;//行数
const byte cols =4;//列数
char akeypad[rows][cols] ={
{
'7','8','9','/'},
{