课程设计格式参考-单片机课程设计 - - 电子密码锁报告(范文) - 图文

更新时间:2024-01-02 23:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计说明书

题 目: __ 电子密码锁设计

专 业: 机械工程及自动化 班 级: 学 号: 指导教师: 职 称: 完成日期: 电子密码锁设计

摘 要

本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用。

关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘

一、设计概述

1.设计任务

根据设定好的密码,采用按键实现6位密码的输入功能,当用户输入的密码正确而且是在规定的时间(普通用户要求在12s内输入正确的密码,管理员要求在5s输入正确的密码)当,锁就打开,如果输入的三次的密码不正确,就发出报警声。如果用户输入密码的时间超过40秒,电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。 2.电路原理图

MCU模块U112345678RESET9DATA10WR11CS121314151617181920AT89S51VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221电源接口VCCR/T/LEDWRVCCGND1234DATA数码管接口P1.0P1.1P1.2P1.3P1.4P1.5/MOSIP1.6/MISOP1.7/SCKRESTP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1GND1000uF/25VVCCVCC矩阵键盘21C5C40.1uF存储器选择接口GNDEA/VPEA/VPALE/PPSEN321GNDEA/VPVCCSCLSDADLQI1DLQI2SPEAKDSVCCCRYC233PFGND6MHzS5R7200C333PF串行存储模块U41234GNDNCNCNCGNDAT24C02AVCCWPSCLSDA8765R85.1kR105.1kVCCSCLSDAC122uFRESETR11K电源电路及其UPS电路复位电路GND -1-

电子密码锁设计

设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。

二、方案论证与比较

方案一:采用数字电路控制。其原理方框图如图1-1所示。

图2-1 数字密码锁电路方案

采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。

电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图所示。 输入错误锁定键盘 矩阵 键盘 控制 89S51 延时报警控制电路 单片机 -2- 电子密码锁设计

AT24C02掉电存储 开锁控制电路 串口显示电路 指示电路 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。

三、电路的功能单元设计

1.开锁机构

通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图2-1所示。

返回 单片机微控制器 密码正确? N 电磁锁 Y 开锁驱动电路

图3-1密码锁开锁机构示意图

当用户输入的密码正确而且是在规定的时间(普通用户要求在12s内输入正确的密码,管理员要求在5s输入正确的密码)输入的话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图3-2所示。

电路驱动和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。D5作为开锁的提示;由D6、C24、T11组成。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且由一定的余量。

在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。

-3-

电子密码锁设计

VCCD5R13.3KD6电磁锁C24T11T10来自微控制器信号GND

图3-2密码锁开锁机构电路图

2.按键电路设计

由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3-3所示。

5.1K X 4 D10 D9 D8 VCC 89s51 D7 D6 D5 D4 D3 D2 D1 D0 5.1K X 4

图3-3 行列式键盘原理电路图

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

-4-

电子密码锁设计

当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

对照图2-3所示的44键盘,说明线反转个工作原理。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

按键的操作面板如图所示。共计数字键10个,功能键6个。键盘上还有3个指示灯和一个蜂鸣器。

L1 F1 L2 L3 F2 F3 F4 6 7 8 9 2 3 4 6 CLR 0 1 EN 图3-4 按键操作面板示意图

10个数字键用来输入密码,另外6个功能键分别是:CLR、EN、F1、F2、F3、F4。其中CLR键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。EN键的功能是确认输入的密码。F1是管理模式切换键,当用户不小心三次输入密码都没有正确,键盘被锁定,这个时候就可以启动管理模式,使用管理员的密码来开门。F2是用来进入修改密码的状态。F3用来关闭显示器,一来可以节省电量,另外也可以防止不法分子偷窥密码。F4用来作电铃。

上面的3个指示灯L1、L2、L3是用来指示操作的状态:L1锁定及输入指示状态灯,正常的情况下显示红色,当键盘动作的时候,L1灯开始闪动,当键盘处于锁定状态时,指示灯也显示红色。L2开门指示灯,当用户在规定的时间内正确的输入了密码,此灯转变为绿色,表示开门,否则不显示。L3是管理员状态指示灯,当按下F1后,指示灯自动点亮。

面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。 3.显示电路设计

本系统设计的显示电路是为了给使用者以提示而设置的。考虑到为了节约单片机的口资源,本系统的显示采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图3-5所示。

-5-

电子密码锁设计

电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。

从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC164还兼作数码管的驱动,插头1

(header1)接电源,插头2(header2)接数据和脉冲输出端。电路中的三个整流管D1~D3的作用是降低数码管的工作电压,增加其使用寿命。

d3d2d1LED0cdpbDPYaLED1cdpbDPYaLED2cdpbDPYaLED3cdpbDPYaLED4cdpDPYabLEDcdp99999DPYagbggggdddddg934561011121312345678CLK128abcfdeefgpddabcfdeefgpdabcfdeefgpdabcfdeefgpdabcfdeefgpdHEADER2vcc2112345678123456781234567812345678345610111213345610111213345610111213345610111213345610Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q712CLKCLKCLKCLKCLKMRMRMRMRMR12891289128912891289C9MRABABABABABABQ0Q1Q2Q3Q4Q5Q6Q7HEADER1IC1IC2IC3IC411121312345678abcfdeefgpdIC5IC6 图3-5 显示器原理图

显示器主显示几个字符,给用户提供指示见图2-6所示。

O F F -- -- 2 图3-6 a关闭状态

8 8 8 -- -- 1 -6- 电子密码锁设计

图3-6 b 开锁状态

-- -- -- -- -- -- 图3-6 c 密码输入及修改状态

E R R O R S 图3-6 d 密码输入错误后的提示

-- L O C K -- 图3-6 e密码在规定的时间内输入错误次数超过3次后的锁定状态 4.AT24C02掉电存储单元的设计

掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图所示。

VCC串行存储模块U41NC2NC3NC4GNDGNDAT24C02A图3-7 掉电存储电路原理图

R85.1k8VCC7WP6SCL5SDAR105.1k接P2.6接P2.5

图中R8、R10是上拉电阻,其作用是减少AT24C02的静态功耗,由于AT24C02的数据

线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。

-7-

电子密码锁设计

每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。

5.密码锁的电源电路设计

为了防止停电情况的发生,本电路后备了UPS电源,它包括市电供电电路,停电检测

7805电路,电子开关切换电路,蓄电池充电电路和蓄电池组成。电源电路图如图3-8所示。

R11K123D3D2JP21221D4D1D5C20.1C33300C13300JP1 图3-8 市电供电电路

220V市电通过变压器降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。

由R8,R9,R6,R7及IC14构成电压比较器,正常情况下,V+V- IC14输出高电平,由T3,T4构成的达林顿管使继电器J开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。其电路图如下图所示:

5V 直流电源 A1蓄电池 A2R620K1蓄电池供电R105.1KVCC继电器常开常闭R850K蓄电池 A25V 直流电源 A174123T39018R940KR730KIC14T49014图3-9 停电检测及电子开关切换电路

T1,T2构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D1亮为正在充电,D2为工作指示。由R4,R5,T1构成电压检测电路,蓄电池电压低,则T1,T2

-8-

电子密码锁设计

导通,实现对其充电;充满后,T1,T2截止,停止充电,同时D1熄灭,电路中C4的作用是滤除干扰信号。其电路图如图所示:

6V 充电电源6V 蓄电池电源 A2R43K3CG21R23KR13K蓄电池D1R5470C40.1U图3-10 蓄电池自动充电电路

D2T19014

6.设计总框图

矩阵

键盘

控制

电源电路及UPS电路

AT24C02掉电存储 串口显示电路

89S51 单片机 开锁控制电路 输入错误锁定键盘 延时报警控制电路 指示电路 图3-11总体设计框图

四、程序设计

1.模块介绍

该计程计价系统的软件设计分为以下几个模块:

(1)主程序模块

主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。主程序的流程图如下所示。

(2)键盘扫描及识别子程序

键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。其程序流程如图 所示.

-9-

电子密码锁设计

(3)调电存储服务程序

当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C02中,其程序流程如图 所示.

(4)显示子程序

由于是分屏显示数据,所以就要用到5个显示子程序,分别是:关闭状态显示子程序(DIS_A)、开锁状态显示子程序(DIS_B)、密码输入及修改状态显示子程序(DIS_C)、密码输入错误后的提示子程序(DIS_D)。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序(DIS_E).

2.程序流程图

(1)主程序流程图如图3-1所示。

开始 初始化 调用显示 N 有键按下? Y 启动定时 识别按键 比较密码 全部按完? Y 超时? N 比较密码 开门 开始 >3次? N 锁定 按F2退出 Y 自动清除 Y 调用显示 Y 调用24C02 输入密码 存入缓冲 再输入一次 N N 重新输入 按下F2 启动定时 图4-1 主程序流程图 图4-2 修改密码流程图

图3-11 密码锁中断服务程序流程图

(1)单片机资源的分配与变量的定义:

密码的输入与判断需要定义4个变量。原始密码存储在数组init_val[6]中。键盘输入的密码存储在数据show_val[6]中,变量 key_index的值表示当前按键是六位密码中的哪一位,每输入一个密码数字该变量增一。密码输入错误的次数暂存在变量error_num中。

计时功能需要5个变量。模式变量cnt_state存储计时属于什么状态,0表示待机计时,1表示密码正确的计时,2表示密码错误3次的计时。三个变量(cnt_val_15s,cnt_val_5s, cnt_val_4s)分别实现待机、密码正确和密码错误3次后的计时工作。定时器T1每250ms产生一次中断,变量T1_cnt记录定时器溢出中断的次数,当记录到4000时表示计时1秒。

-10-

电子密码锁设计

(2)设计系统软件调试方案、硬件调试方案及软硬件联合调试方案

软件调试方案:伟福软件中,在“文件\\新建文件”中,新建C语言源程序文件,编写相应的程序。在“文件\\新建项目”的菜单中,新建项目并将C语言源程序文件包括在项目文件中。

在 “项目\\编译”菜单中将C源文件编译,检查语法错误及逻辑错误。在编译成功后,产生以 “*.hex”和“*.bin” 后缀的目标文件。

硬件调试方案:在设计平台中,将单片机的P1.0-P1.7分别与8个独立式键盘通过插线连接起来,将P3.0-P3.3分别与4个发光二极管连接起来,P3.4与蜂鸣器的输入连接起来。

在伟福中将程序文件编译成目标文件后,将下载线安装在实验平台的下载线接口上,运行“MCU下载程序”,选择相应的flash 数据文件,点击“编程”按钮,将程序文件下载到单片机的Flash中。

然后,上电重新启动单片机,检查所编写的程序是否达到题目的要求,是否全面完整地完成试题的内容。

(3)程序语言设计

//晶振11.0592MHz,T1每250微秒中断,按键P1.0-P1.7,发光二极管接P3.0-P3.3,p3.4

/*变量的定义:

show_val[6]: 显示的值 init_val[6]: 密码初始值

key_val: 返回按键的值 255-表示无按键按下 key_index: 当前按键是哪一位密码 T1_cnt: 定时器计数溢出数 cnt_val_15s: 报警计时的数值 cnt_val_5s: 待机时间计时

cnt_val_4s: 输入正确,等待4秒清除开锁信号 cnt_state: 计时状态 error_num: 错误次数

led_seg_code:数码管7段码 */

#include \

/*说明key0=P1^0; key1=P1^1;key2=P1^2;

key3=P1^3;key4=P1^4;key5=P1^5;enter=P1^6;esc=P1^7;*/

sbit relay_open=P3^0; //电磁锁开锁驱动 sbit pw_error=P3^1; //密码错误信号 sbit alarm_out=P3^2; //报警输出

sbit open_lock=P3^3; //已开锁指示信号 sbit audio_out=P3^4; //有源蜂鸣器

unsigned char data cnt_val_15s,cnt_val_5s,cnt_val_4s,cnt_state; unsigned int data T1_cnt;

unsigned char data key_val,key_index,key_val_old; unsigned char data state_val,error_num; unsigned char data show_val[6]; char code init_val[6]={1,2,3,4,5,0};

-11-

电子密码锁设计

char code

led_seg_code[11]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

//led_seg_code[0-9]代表0-9 led_seg_code[10]=0x00数码管不显示任何内容 //--------延时程序---------------- void delay(unsigned int i)//延时 { while(--i); }

//--------清除输入内容---------- void init_variant() {unsigned char i; for(i=0;i<6;i++)

show_val[i]=10; //led_seg_code[10]=0x00表示数码管不显示任何内容 key_index=0; //没有任何输入或清除所有输入时,保存当前键的位置 }

//---------按键扫描--------------- unsigned char scan_key() { unsigned char i,k; i=P1;

if (i==0xff && cnt_state!=2) { k=255; } //无键按下 else //有键按下

{ delay(500); //延时去抖动 if(i!=P1) {k=255;} else

{ TR1=1; //有键按下则开定时器,启动待机计时 cnt_val_5s=0; switch (i)

{ case 0xfe: k=0; break; case 0xfd: k=1; break; case 0xfb: k=2; break; case 0xf7: k=3; break; case 0xef: k=4; break; case 0xdf: k=5; break; case 0xbf: k=6; break; case 0x7f: k=7; break; } } }

return k; }

//---------数码管显示--------------- void led_show()

{P0=led_seg_code[show_val[0]]; P2=0xdf;

-12-

电子密码锁设计

delay(500);

P0=led_seg_code[show_val[1]]; P2=0xef; delay(500);

P0=led_seg_code[show_val[2]]; P2=0xf7; delay(500);

P0=led_seg_code[show_val[3]]; P2=0xfb; delay(500);

P0=led_seg_code[show_val[4]]; P2=0xfd; delay(500);

P0=led_seg_code[show_val[5]]; P2=0xfe; delay(500); }

//--------定时器T1中断服务程序----------------- void timer1() interrupt 3 //T1中断 { T1_cnt++;

if(T1_cnt>3999) //如果计数>3999, 计时1s { T1_cnt=0;

switch (cnt_state)

{ case 0: //待机,需要计时5s if(cnt_val_5s<5) { cnt_val_5s++;} else

{ cnt_val_5s=0;

init_variant();//待机计时到5秒时,清除输入的内容 TR1=0; //停止计时 } break;

case 1://密码输入正确,需要计时4s if(cnt_val_4s<4) { cnt_val_4s++;} else

{ cnt_val_4s=0;

init_variant();//密码输入正确,计时到4秒时,清除输入的内容 open_lock=1; //已开锁信号清零 relay_open=1; //开锁信号清零 cnt_state=0;

TR1=0; //停止计时 } break;

-13-

电子密码锁设计

case 2: //密码输入错误3次,计时15s if(cnt_val_15s<15) { cnt_val_15s++;} else

{ cnt_val_15s=0;

init_variant();//三次密码错误时,计时15秒,清除输入的内容 open_lock=1; // 清除所有指示和报警 relay_open=1; alarm_out=1; pw_error=1; cnt_state=0;

TR1=0; //停止计时 } break; } } }

//--------判断键盘输入内容与密码是否一致------ unsigned char check_input_pw() { unsigned char i,k; k=1;

for(i=0;i<6;i++)

{ k=k && (show_val[i]==init_val[i]); } return k; }

//---------主程序---------------- main()

{ //初始化各变量 audio_out=1; P3=0xff;

cnt_val_15s=0; cnt_val_5s=0; cnt_val_4s=0; cnt_state=0;

//0-待机计时5s状态;1-密码正确,计时4s状态 ;2-三次密码错误,处于计时15秒状态。

T1_cnt=0; error_num=0; key_val_old=255; init_variant();

//初始化51的寄存器

TMOD=0x20; //用T1计时 8位自动装载定时模式

TH1=0x19; //500微秒溢出一次; 250=(256-x)*12/11.0592 -> x=19 TL1=0x19;

-14-

电子密码锁设计

EA=1; //开中断 ET1=1;

TR1=0; //开定时器T1 while(1)

{ key_val=scan_key(); //按键输入,有键按下key_val为0-7,无键按下key_val为255。 if (key_val!=key_val_old) { key_val_old=key_val;

if (key_val!=255&& cnt_state!=2) { audio_out=0;

delay(100); //延时去抖动 audio_out=1; switch (key_val) { case 0: case 1: case 2: case 3: case 4: case 5:

if(key_index<6) //密码为6位,超过6位视为输入无效 { show_val[key_index]=key_val; key_index++; } break;

case 6: //确认键

if(check_input_pw()) {//密码正确

error_num=0; //密码输入错误次数清零 //---------

pw_error=1; //密码错误指示灯灭 relay_open=0; //开锁驱动信号灯亮 open_lock=0; //已开锁信号灯亮 //---------

delay(50000); //两声短“滴”声 audio_out=0; delay(50000); audio_out=1; delay(50000); audio_out=0; delay(50000); audio_out=1; //---------

cnt_state=1; //下一状态处于4秒计时的状态 TR0=1; //启动定时 } else

-15-

电子密码锁设计

{ if (error_num<2)

{error_num++; //输入错误次数小于3次时,没错一次error_num增一 pw_error=0; //密码错误指示灯亮 //-----------

delay(20000);//一声长“滴”声,提示错误 audio_out=0; delay(60000); audio_out=1; //-----------

init_variant();//清除所有输入,等待下一次输入 }

else //输入错误次数超过3次 { alarm_out=0; //报警灯亮

pw_error=0; //密码错误指示灯亮

error_num=0; //密码输入错误次数清零 //----------

audio_out=0; //长鸣声报警 delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); audio_out=1; //-------------

TR1=1; //打开定时器计时

cnt_state=2; //下一状态处于15秒计时的状态 } }

break;

case 7://取消键 init_variant(); break; } } }

led_show(); }

}//-----程序结束

3.PROTEUS/KEIL仿真图

-16-

电子密码锁设计

-17-

电子密码锁设计

五、总结

一、对单片机电路的理论有了初步的、系统的了解。我了解到了单片机系统电路设计、软件系统编程的技巧。这些知识不仅在课堂上有效,对以后的专业技术课的学习有很大的指导意义,而且在日常生活中更是有着现实意义。

二、对自己的动手能力是个很大的锻炼。实践出真知,纵观古今,所有发明创造无一不是在实践中得到检验的。没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。在设计和制作中,我锻炼了自己动手技巧,提高了自己解决问题的能力。

最后,感谢在实现设计过程中所有帮助过我的老师和同学。特别感谢为辅导我们这次课程设计,一直辛苦工作的樊晓红老师。

六、参考资料

[1]李光飞,李良儿,楼然苗.单片机C程序设计实例指导.北京:北京航空航天大学出版社.2005.53-61

-18-

电子密码锁设计

[2]朱定华.单片机原理及接口技术实验.北京:清华大学出版社.北方交通大学出版社.2002.01

[3]张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1997.53-61.

[4]蔡明文,冯先成.单片机课程设计.武汉:华中科技及大学出版社.2007.03

-19-

本文来源:https://www.bwwdw.com/article/bixx.html

Top