微机原理课题设计实验报告之矩阵式键盘数字密码锁

合集下载

矩阵密码锁的制作

矩阵密码锁的制作

数字电路课程设计设计报告课题名称:密码锁设计成员1:王家口设计成员2:张清海设计成员3:王海鹏密码锁目录1、设计项目综述 (2)1.1设计任务 (2)1.2任务和要求 (2)2、设计方案及分析 (3)2.1设计方案及方案比较 (3)2.2程序框图 (4)2.3实际电路图 (4)3、总结 (5)3.1设计中遇到的问题及解决方法 (5)3.2设计方案中需要改进的地方 (6)3.3这次设计中的收获和教训 (5)简易电子密码锁的设计一、设计项目综述:1、1、设计任务设计一个六位密码的数字密码锁。

1、2、任务和要求(1)重置密码功能:能实现密码锁重新设置新密码。

(2)密码开锁功能:模拟出输入正确密码后,密码锁能顺利打开,可利用指示灯或声音来表示。

(3)警报功能:要求实现密码开锁时,连续输入3次错误密码后,开启警报。

二、设计方案及分析2、1设计方案及方案比较数电1、第一方案用JK触发器和双联开关组成,要按顺序输入密码,但其密码修改电路机械化,且开关过多,连线较多,操作较繁琐。

2、第二方案用74HC573锁存器为密码设定电路和修改电路,这方案可以便捷地设定密码和修改密码,但密码的输入要用到8个控制开关且密码输入不分顺序。

3、第三方案用74ls194芯片接成的移位寄存器,但用到脉冲信号。

考虑到复杂程度、密码锁的精确性和器材配置单片机4、第四方案设计方案:本设计采用10f04xe单片机作为核心,包括矩阵键盘接口电路、密码锁的控制电路和输出显示电路等三部分。

键盘部分包括键盘扫描时序产生电路;键盘扫描;弹跳消除;键盘译码;按键存储。

程序控制包括数字按键的数字输入;存储及清除;功能按键的功能设计;移位寄存器的设计与控制;密码清除、变更、存储;激活开锁电路;密码核对;解除电锁电路。

输出显示电路的设计:LCD显示。

(1)密码数据输入:每按一个数字键,在显示器上显示一个“-”最多可设置6位密码。

(2)密码设置:每按一个数字键,就输入一个数值,并在显示器上的最右方显示出该数值,并将先前已经输入的数据依序左移一个第3页共6页数字位置。

微机原理课程设计++多功能密码锁

微机原理课程设计++多功能密码锁

微机原理课程设计++多功能密码锁第一篇:微机原理课程设计++多功能密码锁微机原理课程设计报告学院:专业:班级:姓名:指导老师:设计任务:多功能密码锁目录一、设计目标二、设计要求三、整体功能描述四、硬件设计功能模块 1.键盘 2.中断控制 3.计时 4.按键响应 5.报警 6.储存器及片选 7.整机电路五、程序流程图六、程序清单七、设计总结一、设计目标1.密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同显示O字样。

2.当输入密码错误时,发出错误警告声音,同时显示C字样。

3.当六次误码输入的条件下,产生报警电平报警。

4.还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。

二、设计要求1、选用8088和适当的存储器及接口芯片完成相应的功能。

2、用LED显示器显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出地址分配表。

6、给出所有程序清单并加上必要注释。

7、完成设计说明书(列出参考文献,所用器件型号)。

三、整体功能描述本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。

工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。

在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示O字样。

开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“O”闪烁三次提示修改密码成功。

当输入密码错误时,发出错误警告声音,同时显示FF字样,当输入密码错误次数累积够6次后,蜂鸣器会产生90秒的报警声响进行报警。

四、硬件设计功能模块本设计使用了8088、8259A、8255、8253、A28F512、74LS138、74LS148、地址锁存器、数码管以及74系列逻辑门、蜂鸣器、开关等芯片与元器件,实现了键盘输入、中断控制、计时、按键响应、开锁及报警等功能模块。

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

单片机矩阵键盘实验实验报告一、实验目的本次实验的目的是掌握原理和方法,利用单片机识别矩阵键盘并编程实现键码转换功能,控制LED点亮显示。

二、实验原理矩阵键盘是一种由多路单向控制器输入行选择信号与列选择信号连接而形成的一一对应矩阵排列结构。

它广泛应用于电子游戏机、办公自动化设备、医疗仪器、家电控制及书籍检索机器等方面。

本次实验采用的矩阵键盘是一个4 x 4矩阵,用4段数码管显示按键编码,每个按键都可以输入一个代码,矩阵键盘连接单片机,实现一个软件算法来识别键码转化。

从而将键盘中的按键的按下信号转换成程序能够识别的代码,置于相应的输出结果中,控制LED点亮,从而可以实现矩阵键盘按键的转换功能。

三、实验方法1.硬件搭建:矩阵键盘(4行4列)与单片机(Atmel AT89C51)相连,选择引脚连接,并将数码管和LED与单片机相连以实现显示和点亮的功能。

2.程序设计:先建立控制体系,利用中断服务子程序识别和码值转换,利用中断服务子程序实现从按键的按下信号转换为程序能够识别的代码,然后将该代码段编写到单片机程序中,每次按下矩阵键盘按键后单片机给出相应的按键编码输出,用数码管显示,控制LED点亮。

四、实验结果经过实验,成功实现了矩阵键盘与单片机之间的连接,编写了中断服务子程序,完成了按键编码输出与LED点亮的功能。

实验完成后,数码管显示各种按键的编码,同时LED会点亮。

本次实验介绍了矩阵键盘的原理,论述了键码转换的程序设计步骤,并实验完成矩阵键盘与单片机的连接,实现用LED点亮以及数码管显示按键的编码。

通过本次实验,受益匪浅,使我对使用单片机编写算法与程序有了更深入的认识,同时丰富了课堂学习的内容,也使我更加热爱自己所学的专业。

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

操作方完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的1. 掌握矩阵式键盘的工作原理及电路设计方法。

2. 熟悉单片机与矩阵键盘的接口连接及编程技巧。

3. 提高动手实践能力,培养创新意识。

二、实验设备1. 单片机实验平台2. 矩阵键盘模块3. 数字多用表4. 编译器(如Keil51)5. 连接线三、实验原理矩阵键盘是一种常用的键盘设计方式,通过行列交叉点连接按键,从而实现多个按键共用较少的I/O端口。

矩阵键盘通常采用逐行扫描的方式检测按键状态,当检测到按键按下时,根据行列线的电平状态确定按键位置。

四、实验内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘测试与调试五、实验步骤1. 电路设计(1)根据矩阵键盘的规格,确定行线和列线的数量。

(2)将行线和列线分别连接到单片机的I/O端口。

(3)在行线上串联电阻,防止按键抖动。

(4)连接电源和地线。

2. 编程(1)初始化单片机的I/O端口,将行线设置为输出,列线设置为输入。

(2)编写逐行扫描程序,逐行拉低行线,读取列线状态。

(3)根据行列线状态判断按键位置,并执行相应的操作。

3. 测试与调试(1)将编写好的程序下载到单片机中。

(2)连接矩阵键盘,观察按键是否正常工作。

(3)使用数字多用表检测行列线电平,确保电路连接正确。

(4)根据测试结果,对程序进行调试,直到矩阵键盘正常工作。

六、实验结果与分析1. 电路连接正确,按键工作正常。

2. 逐行扫描程序能够正确检测按键位置。

3. 按键操作能够触发相应的程序功能。

七、实验总结1. 通过本次实训,掌握了矩阵式键盘的工作原理及电路设计方法。

2. 熟悉了单片机与矩阵键盘的接口连接及编程技巧。

3. 提高了动手实践能力,培养了创新意识。

八、心得体会1. 在实验过程中,遇到了电路连接错误和程序调试困难等问题,通过查阅资料、请教老师和同学,最终成功解决了问题。

2. 本次实训让我深刻体会到理论知识与实际操作相结合的重要性,同时也认识到团队合作的重要性。

九、改进建议1. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。

课程设计报告矩阵键盘控制[1](1)

课程设计报告矩阵键盘控制[1](1)

忻州师范学院《EDA技术综合性设计》课程设计报告报告题目:矩阵键盘控制接口设计所在系部:电子系所在专业:电子信息科学与技术所在班级:电本0803班姓名:徐丽娜200807211163闫爱红 200807211164武艳红200807211165贺吉盛200807211166指导教师姓名:任国凤完成时间:2011.05.26目录一概述 (3)二方案设计与论证 (3)三单元电路设计 (4)1.键盘接口消抖动元件 (4)2.时钟产生电路 (5)3.键盘扫描电路 (5)4.键盘译码电路 (5)5.寄存器_选择器模块电路 (5)6.译码模块电路 (6)四器件编程与下载 (6)五性能测试与分析 (7)六实验设备 (8)七心得体会 (8)八参考文献 (8)九附录 (9)一、概述本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并且能够保持直到下一个按键被按下。

首先,构思一个8×4的矩阵键盘控制顶层电路的模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中。

正确的将脉冲源、FLEX10K \ EPF10K10LC84-4芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。

再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。

如:当按下5时,数码管显示05。

本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。

在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。

汇编实验之矩阵 键盘

汇编实验之矩阵 键盘

计算机原理实验室实验报告课程名称:姓名学号班级成绩设备名称及软件环境实验名称矩阵键盘实验日期一.实验内容掌握4×4矩阵式键盘程序识别原理及4×4矩阵式键盘按键的设计方法。

二.理论分析或算法分析用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。

4×4矩阵式键盘识别电路原理图:键盘中对应按键的序号排列:电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。

(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。

三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)1、4×4矩阵键盘识别处理。

2、每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

3、程序流程图:4、汇编源程序:;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100H START: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START ;;;;;;;;;;初始化程序;;;;;;;;;;CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;;PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW1LCALL DELAY10MSJZ SW1MOV A,P3ANL A,#0FHCJNE A,#0EH,K1MOV COUNT,#0LJMP DKK1: CJNE A,#0DH,K2MOV COUNT,#4LJMP DKK2: CJNE A,#0BH,K3MOV COUNT,#12 K4: NOPLJMP DKSW1: MOV P3,#0FFHCLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW2LCALL DELAY10MS JZ SW2MOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1 LJMP DKK5: CJNE A,#0DH,K6MOV COUNT,#5 LJMP DKK6: CJNE A,#0BH,K7MOV COUNT,#9 LJMP DKK7: CJNE A,#07H,K8MOV COUNT,#13 K8: NOPLJMP DKSW2: MOV P3,#0FFHCLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW3LCALL DELAY10MS JZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2 LJMP DKK9: CJNE A,#0DH,KAMOV COUNT,#6 LJMP DKKA: CJNE A,#0BH,KBMOV COUNT,#14 KC: NOPLJMP DKSW3: MOV P3,#0FFHCLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ SW4LCALL DELAY10MS JZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KD MOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KEMOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KFMOV COUNT,#11 LJMP DKKF: CJNE A,#07H,KGMOV COUNT,#15 KG: NOPLJMP DKSW4: LJMP PANDUANDK: RET;;;;;;;;;;显示程序;;;;;;;;;;XIANSHI: MOV A,COUNTMOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;;;;;;;;;;结束标志;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table[]={0x3f,0x66,0x7f,0x39,0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71};void main(void){ unsigned char i,j,k,key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个// { case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有,显示相应的按键//{ case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)五.结论报告提交日期(注意:内容写不下时允许表格添加新行。

矩阵键盘设计实验报告

矩阵键盘设计实验报告

矩阵键盘设计实验报告
矩阵键盘是一种特殊的电子输入设备,其特殊性在于每个按键可以仅由几根线连接而成。

这可以将按键尺寸缩小,同时也减少了接線复杂度。

在本次实验中,我们设计了一个4*4的矩阵键盘。

矩阵键盘的外型是4 *4的按键,其中每个按键由一个PIN组成,连接起来分别连接在一个不同的ROW与COL上。

在使用矩阵键盘时,我们将其连接到一台电脑上,通过电脑程序监视每行每列的通断状态,当一行或者一列被按下,程序会自动捕捉,来表示一个字符或者code.
首先,我们先准备一台电脑,再连接矩阵键盘的各个PIN,用8个信号线将矩阵键盘连接到单片机,再用USB线将单片机连接到电脑上,使用PL 2303驱动链接矩阵键盘和电脑终端。

单片机负责捕获ROW和COL的信号,计算并识别矩阵键盘的按键,将计算出的字符发送至电脑终端,进行小程序的检测。

在电脑端,我们使用Apple系统的终端运行.bash,编写简单的shell脚本实现对矩阵键盘信号识别。

脚本将不断检测矩阵键盘信号状态,根据捕捉到的ROW和COL信号,将其映射出字符信息,在一定时间内输出至终端。

在实验的最后,我们检验了所设计的矩阵键盘是否符合预期效果。

通过代码发送进行按键操作,能检测到正确的字符,表明矩阵键盘的设计及实现满足要求。

本次实验可以作为以后矩阵键盘的参考,深入研究程序软件,提高实验效率。

实验七 矩阵式键盘

实验七   矩阵式键盘

实验七矩阵式键盘一、实验目的1.掌握矩阵式键盘处理的方法。

二、实验内容1.用4×4键盘的键值定义为0~15,并在二位LED数码管上动态显示出来。

三、实验步骤说明用4×4键盘的键值定义为0~15,并在二位LED数码管上动态显示出来。

1) 硬件P0口为字形码,P2口为字选码。

P1控制键盘,其中P1.0~P1.3为输出扫描码,P1.4~P1.7为回复码。

2)程序框架定义函数和数组void DelayMS(uchar x) ;// 延时子程序void Display(uchar y); // 显示子程序uchar keys();// 求键值子程序uchar keyno();//判断是否有键按下uchar code DSY_CODE[] = {0x28, 0x7e, 0xa2, 0x62, 0x74, 0x61, 0x21, 0x7a, 0x20, 0x60};uchar key_value=99;//按键键值//-----------------------------------------------------------------// 主程序//-----------------------------------------------------------------void main(){while(1){设置P1.0~P1.3为输入口全1,P1.4~P1.7为列值,置全0。

调显示函数,显示键值key_value如果有键按下调键值函数并赋给key_value}}//-----------------------------------------------------------------// 延时子程序//-----------------------------------------------------------------void DelayMS(uchar x){}//-----------------------------------------------------------------// 显示子程序//-----------------------------------------------------------------void Display(uchar y){显示黑屏;显示十位延时显示黑屏;显示个位延时}//-----------------------------------------------------------------// 判断是否有键按下子程序,没有返回0,有返回1//-----------------------------------------------------------------uchar keyno(){}//-----------------------------------------------------------------uchar keys();// 求键值子程序,返回键值//-----------------------------------------------------------------uchar keys(){设置P1.0~P1.3为输入口全1,P1.4~P1.7为列值,置全0。

简易密码锁设计实验报告

简易密码锁设计实验报告

简易密码锁设计实验报告
密码锁作为一种常见的安全锁具,广泛应用于各种安全场合。

在本次实验中,我们将设计一个简易的密码锁,并通过实验验证其功能和安全性能。

原理
密码锁主要由以下几个部分组成:输入设备、控制器和输出设备。

输入设备通常是键盘或按键开关,控制器用于接收输入信号并判断是否正确,输出设备可以是电子门锁、LED 指示灯或蜂鸣器等。

在本次实验中,我们将采用单片机作为控制器,用矩阵键盘作为输入设备,用LED灯和蜂鸣器作为输出设备。

具体原理如下:
输入设备
矩阵键盘是一种常见的数字输入设备,在本次实验中我们将使用4*4矩阵键盘。

该键盘由16个按键组成,分别对应09数字和AF字母共16个字符。

控制器
我们将使用STM32F103C8T6单片机作为控制器。

该单片机具有较高的性能和丰富的外设资源,在密码锁设计中可以充分发挥其优势。

控制器主要工作流程如下:
(1) 初始化:对单片机进行初始化,并定义好输入输出引脚。

(2) 输入密码:从矩阵键盘读取用户输入的密码。

(3) 判断密码:将读取到的密码与预设的正确密码进行比较,如果相同则解锁,否则报警。

(4) 解锁/报警:如果密码正确,则点亮LED灯并发出解锁提示音;否则点亮红色LED灯并发出警示音。

输出设备
我们将使用两个LED灯和一个蜂鸣器作为输出设备,用于提示用户解锁状态。

其中绿色LED灯表示解锁成功,红色LED灯表示解锁失败,蜂鸣器用于发出提示音。

矩阵键盘实验报告

矩阵键盘实验报告

矩阵键盘实验报告矩阵键盘实验报告引言:矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。

本实验旨在通过对矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中的潜力。

本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。

实验目的:1. 理解矩阵键盘的工作原理;2. 掌握矩阵键盘的接线方法;3. 通过实验验证矩阵键盘的可靠性和稳定性。

实验步骤:1. 准备实验材料:矩阵键盘、电路板、导线等;2. 连接电路:将矩阵键盘与电路板通过导线连接;3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;4. 烧录程序:将编写好的程序烧录到单片机中;5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。

实验结果:经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。

在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。

讨论:1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线和列线相连。

当按下某个按键时,对应的行线和列线会短接,从而使得电流流过该按键,被检测到。

2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到单片机的4个输出引脚上。

3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠性和稳定性。

即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。

4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。

它具有结构简单、成本低廉、易于集成等优点,因此在电子产品设计中具有广阔的应用前景。

结论:通过本次实验,我们对矩阵键盘的工作原理和接线方法有了更深入的了解,并验证了其可靠性和稳定性。

矩阵键盘作为一种常见的输入设备,在电子产品设计中具有重要的地位和潜力。

矩阵式键盘实验报告

矩阵式键盘实验报告

矩阵式键盘实验报告矩阵键盘设计实验报告南京林业大学实验报告基于AT89C51单片机4x4矩阵键盘接口电路设计课程院系班级学号姓名指导老师机电一体化设计基础机械电子工程学院杨雨图2013年9月26日一、实验目的1、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。

2、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。

3、掌握利用Keil51软件对程序进行编译。

4、用Proteus软件绘制“矩阵键盘扫描”电路,并用测试程序进行仿真。

5、会根据实际功能,正确选择单片机功能接线,编制正确程序。

对实验结果能做出分析和解释,能写出符合规格的实验报告。

二、实验要求通过实训,学生应达到以下几方面的要求:素质要求1.以积极认真的态度对待本次实训,遵章守纪、团结协作。

2.善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立工作能力。

能力要求1.模拟电路的理论知识2.脉冲与数字电路的理念知识3.通过模拟、数字电路实验有一定的动手能力4.能熟练的编写8951单片机汇编程序5.能够熟练的运用仿真软件进行仿真三、实验工具1、软件:Proteus软件、keil51。

2、硬件:PC机,串口线,并口线,单片机开发板四、实验内容1、掌握并理解“矩阵键盘扫描”的原理及制作,了解各元器件的参数及格元器件的作用。

2、用keil51测试软件编写AT89C51单片机汇编程序3、用Proteus软件绘制“矩阵键盘扫描”电路原理图。

4、运用仿真软件对电路进行仿真。

五.实验基本步骤1、用Proteus绘制“矩阵键盘扫描”电路原理图。

2、编写程序使数码管显示当前闭合按键的键值。

3、利用Proteus软件的仿真功能对其进行仿真测试,观察数码管的显示状态和按键开关的对应关系。

4、用keil51软件编写程序,并生成HEX文件。

5、根据绘制“矩阵键盘扫描”电路原理图,搭建相关硬件电路。

6、用通用编程器或ISP下载HEX程序到MCU。

矩阵式键盘实验报告范文

矩阵式键盘实验报告范文

矩阵式键盘实验报告学生:何绍金学号:8专业班级:自动化1202指导老师:杨东勇2014年12月一、实验目的1.学习矩列式键盘工作原理;2.学习矩列式接口的电路设计和程序设计。

二、实验设备统一电子开发平台。

三、实验要求要求实现:在矩阵式键盘中的某个键被按下时,8 位LED 动态显示器上最低位显示该键对应的字符。

注意,在进行该项实验之前,请先进行实验三“定时器实验” 。

四、实验原理1.工作原理:矩阵式由行线和列线组成,按键位于行、列的交叉点上。

如图所示,一个4*4 的行、列结构可以构成一个由16 个按键的键盘。

很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/0 口。

(1)矩阵式键盘工作原理按键设置在行、列交节点上,行、列分别连接到按键开关的两端。

行线通过下拉电阻接到GND 上。

平时无按键动作时,行线处于低电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。

列线电平如果为低,行线电平为高,列线电平如果为高,则行线电平则为低。

这一点是识别矩阵式键盘是否被按下的关键所在。

因此,各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。

(2)按键识别方法下面以3 号键被按下为例,来说明此键是如何被识别出来的。

前已述及,键被按下时,与此键相连的行线电平将由与此键相连的列线电平决定,而行线电平在无键按下时处于高电平状态。

如果让所有列线处于高电平那么键按下与否不会引起行线电平的状态变化,始终是高电平,所以,让所有列线处于高电平是没法识别出按键的。

现在反过来,让所有列线处于低电平,很明显,按下的键所在行电平将也被置为低电平,根据此变化,便能判定该行一定有键被按下。

但我们还不能确定是这一行的哪个键被按下。

所以,为了进一步判定到底是哪—列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处于高电平。

当第1 列为低电平,其余各列为高电平时,因为是键 3 被按下,所以第 1 行仍处于高电平状态;当第 2 列为低电平,其余各列为高电平时,同样我们会发现第1 行仍处于高电平状态,直到让第 4 列为低电平,其余各列为高电平时,因为是3 号键被按下,所以第 1 行的高电平转换到第 4 列所处的低电平,据此,我们确信第1 行第 4 列交叉点处的按键即3 号键被按下。

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

单片机矩阵键盘实验实验报告
实验名称:单片机矩阵键盘实验
实验目的:掌握单片机矩阵键盘的原理和应用,能够使用单片机按键输入
实验内容:利用Keil C51软件,采用AT89C51单片机实现一个4x4的矩阵键盘,当按下任何一个按键时,将相应的键值传输到液晶显示屏上进行显示。

实验步骤:
1、搭建实验电路,将矩阵键盘与单片机相连,连接好电源正负极,然后将电路焊接成一个完整的矩阵键盘输入电路。

2、打开Keil C51软件,新建一个单片机应用工程,然后编写代码。

3、通过代码实现对矩阵键盘输入的扫描功能,当按下任何一个按键时,将相应的键值传输到液晶显示屏上进行显示。

4、编译代码,生成HEX文件,下载HEX文件到单片机中,将单片机与电源相连,然后就可以测试了。

5、测试完成后,根据测试结果修改代码,重新编译生成HEX 文件,然后下载到单片机中进行验证。

实验结果:
经过测试,实验结果良好,能够准确地输入按键的值,显示在液晶屏上。

实验感想:
通过这次实验,我深深地认识到了矩阵键盘技术的重要性以及应用价值,同时也更加深入了解单片机的工作原理和应用技术,这对我的学习和工作都有很好的帮助。

矩阵键盘实验报告

矩阵键盘实验报告

自主学习用实验矩阵键盘识别实验
一、实验目的
1、掌握 4×4 矩阵键盘的工作原理和键盘的扫描方式。

2、掌握键盘的去抖方法和键盘应用程序的设计。

二、实验设备
1、PC 机一台;
2、开放式模块化单片机教学实验箱一台;
3、USB 下载线一根。

三、实验内容
自行编制程序,用 51 单片机实现 4×4 矩阵键盘扫描,采用线反转法;并实现当S11按下时在数码管上显值“0”,当S12按下时在数码管上显值“1”……,即依次将 S11 至S26按下,在数码管上依次显示十六进制数“0-F”,矩阵键盘原理图如图1-1 所示。

单片机与数码管接口电路原理图如图 1-2 所示。

图 1-1 矩阵键盘接口电路
图 1-2 数码管接口电路原理图
四、思考题
1.画出所编程序的流程图;
2.若要实现2×4 矩阵键盘,软硬件作如何修改。

答:将行线P2^3, P2^4接线去掉。

程序对应部分P2=0xfd; P2=0xfe;删掉。

3.实验中有何故障、问题出现,是否得到解决?如何解决的?问题:显示值对应出错。

原来是共阳段码和共阴段码弄相反了。

矩阵键盘密码锁实训报告

矩阵键盘密码锁实训报告

一、实训背景随着科技的不断发展,电子产品的安全性越来越受到重视。

矩阵键盘密码锁作为一种常见的电子安全设备,具有操作简单、可靠性高、成本低等优点,在众多领域得到了广泛应用。

为了提高学生对电子技术及单片机应用的理解和实践能力,我们开展了矩阵键盘密码锁的实训。

二、实训目的1. 熟悉矩阵键盘的工作原理及按键扫描方法;2. 掌握单片机在密码锁系统中的应用;3. 培养学生动手实践能力和团队合作精神;4. 提高学生对电子产品的安全性认识。

三、实训内容1. 硬件设计(1)主控芯片:选用STC89C52单片机作为核心控制单元;(2)矩阵键盘:采用4x4矩阵键盘,共16个按键;(3)显示屏:选用1602LCD液晶显示屏,用于显示密码及提示信息;(4)其他元件:按键、蜂鸣器、电阻、电容等。

2. 软件设计(1)按键扫描:采用逐行扫描法,对矩阵键盘进行扫描,检测按键状态;(2)密码设置与验证:设置四位密码,用户输入密码后,系统进行验证;(3)开锁与上锁:当密码正确时,系统解锁;当密码错误时,蜂鸣器报警;(4)定时器:设置一个定时器,用于控制密码输入错误次数,若连续输入错误三次,则锁定系统。

3. 系统实现(1)搭建电路:按照设计图纸,将各元件焊接在电路板上;(2)编写程序:使用C语言编写程序,实现矩阵键盘扫描、密码设置与验证、开锁与上锁等功能;(3)下载程序:将编写好的程序下载到单片机中;(4)调试与测试:对系统进行调试,确保各功能正常。

四、实训过程1. 电路搭建:按照设计图纸,将各元件焊接在电路板上,注意焊接质量,确保电路的可靠性;2. 程序编写:使用C语言编写程序,实现矩阵键盘扫描、密码设置与验证、开锁与上锁等功能,并进行调试;3. 系统调试:将编写好的程序下载到单片机中,对系统进行调试,确保各功能正常;4. 功能测试:测试密码设置、密码验证、开锁与上锁等功能,验证系统性能。

五、实训结果与分析1. 矩阵键盘扫描:通过逐行扫描法,成功实现了对矩阵键盘的扫描,并能准确检测按键状态;2. 密码设置与验证:成功实现了四位密码的设置与验证,当密码正确时,系统解锁;当密码错误时,蜂鸣器报警;3. 开锁与上锁:成功实现了开锁与上锁功能,当密码正确时,系统解锁;当密码错误时,蜂鸣器报警,并锁定系统;4. 定时器:成功设置了定时器,当连续输入错误三次密码时,系统锁定,直至系统复位。

基于AT89C51单片机的矩阵键盘电子密码锁设计

基于AT89C51单片机的矩阵键盘电子密码锁设计

摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用数字密码代替钥匙的单片机控制的电子密码锁应运而生。

在这次毕业设计中我采用AT89C51单片机为核心4*4矩阵键盘作为输入器件,LCD1602字符型液晶作为显示电路来制作基于单片机的电子密码锁。

该密码锁具有可更改密码、密码掉电保护、输入密码错误报警、输入密码错误三次锁定键盘的功能。

该密码锁具有操作人性化、低功耗、高保密性等一系列优点。

本文详细地介绍了系统硬件与软件的设计,以及仿真调试的详细过程。

关键词:4*4矩阵键盘, AT89C51, 1602LCD显示器,密码锁AbstractIn our daily life, the security of house, company department, documents and finance forms, also some personal information always used the lock to protect them. If use the normal keys to lock out the door, we should taken many keys with us . That is so difficult to use. And if we lost the keys with careless, the security looks very easy to break out. As the developing of the technology people ask for high security machines. For satisfy this request, the cipher lock is appeared. The cipher has higher security, lower cost, lower power and easy to use.At the graduation design I AT89C51 microcontroller as the core 4 * 4 matrix as input devices, LCD1602 keyboard type LCD display circuit as a character based on single chip to make the electronic combination lock. This combination lock has may change your password, password off electricity protection, input password mistake alarm, input password mistake three times the function of lock the keypad. This combination lock have operation humanization, low power consumption, high confidentiality and so on a series of advantages. This paper introduced in detail the system hardware and software design, and the detailed process simulation debugging.Keywords: matrix keyboards, AT89C51, 1602LCD, combination lock河南城建学院本科毕业设计(论文)目录目录第1章概论 (1)1.1 设计意义 (1)1.2背景知识介绍 (1)1.3 本文主要工作以及内容安排 (2)第2章系统总体方案设计 (3)2.1 总体方案设计 (3)2.1.1 实现功能: (3)2.1.2 4*4键盘说明 (4)2.2 AT89C51单片机介绍 (4)2.3硬件设计 (6)2.3.1 时钟电路的设计 (6)2.3.2 复位电路的设计 (7)2.3.3 密码存储电路的设计 (8)2.3.4 键盘电路设计 (9)2.3.5 显示电路的设计 (11)2.3.6 报警电路 (14)2.3.7 开锁电路 (15)第3章软件设计 (16)3.1 编程工具介绍 (16)3.2 编程语言介绍 (17)3.3 软件编程 (18)3.3.1软件设计原则 (18)3.3.2 软件设计方案 (18)3.3.3 4*4矩阵键盘的编程方法 (19)3.3.4液晶显示子程序 (21)3.3.5 密码比较和报警程序 (22)3.3.6 密码重置程序设计 (23)第4章软件仿真以及调试 (26)4.1 仿真软件简介 (26)4.2 仿真程序基本工作界面 (27)4.3 仿真过程 (27)总结 (30)参考文献 (31)致谢 (32)附录A:程序主函数 (33)附录B:总电路图 (36)第1章概论1.1 设计意义单片机的应用是具有高度现实意义的。

微机原理课题设计实验报告之矩阵式键盘数字密码锁

微机原理课题设计实验报告之矩阵式键盘数字密码锁
新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接 进入初始状态。
3.实验基本任务
1)具有开锁、修改用户密码等基本的密码锁功能。
2)对于超过3次密码密码错误,锁定键盘5秒,系统报警。5秒后解除锁
^定。
4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。
5) 用户密码为6位数字,显示采用“*”号表示。
选择开锁或修改密码:
如果选择开锁就按“OpeS键,系统提示输入密码,输入用户密码+“#” 键后,如果密码正确,就打开锁(绿灯亮),系统等待10秒,然后重新关闭密 码锁,若密码错,提示重新输入,连续三次错误,提示警告词同时报警(黄灯 闪),锁定键盘5秒,然后重新进入初始状态;
如果选择修改密码就按”Modify Secret”键,系统提示输入旧密码,输入 旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,
2.实验内容
矩阵式键盘数字密码锁设计,根据设定好的密码,采用4x4矩阵键盘实现 密码的输入功能。当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁
自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时 发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。
数字密码锁操作键盘参考上面设定,也可以自行设计键盘。用户初始密码 为“123456”,系统加电运行后,密码锁初始状态为常闭(红灯亮),用户可以
如下图的接线设置
8255模块
LED
PB0—PB3
JS18(1-3)
8、8253的OUT0同JS7的B0连接。
9、8253的GATE0同JS3的K7连接。(高电平选通)
六.程序流程图
其中软硬件初始化流程如图
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机系统与应用课程设计报告班级:学号:姓名:实验地点:E楼Ⅱ区311实验时间:2013.3.4-3.9矩阵式键盘数字密码锁设计一 . 实验目的1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。

2.初步掌握键盘扫描,密码修改和计时报警程序的编写方法。

3.掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。

二.实验内容矩阵式键盘数字密码锁设计,根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。

当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。

数字密码锁操作键盘参考上面设定,也可以自行设计键盘。

用户初始密码为“123456”,系统加电运行后,密码锁初始状态为常闭(红灯亮),用户可以选择开锁或修改密码:如果选择开锁就按“Open”键,系统提示输入密码,输入用户密码+“#”键后,如果密码正确,就打开锁(绿灯亮),系统等待10秒,然后重新关闭密码锁,若密码错,提示重新输入,连续三次错误,提示警告词同时报警(黄灯闪),锁定键盘5秒,然后重新进入初始状态;如果选择修改密码就按”Modify Secret”键,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。

三.实验基本任务1)具有开锁、修改用户密码等基本的密码锁功能。

2)对于超过3次密码密码错误,锁定键盘5秒,系统报警。

5秒后解除锁定。

4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。

5)用户密码为6位数字,显示采用“*”号表示。

6)码锁键盘设计合理,功能完善,方便用户使用。

本次实验还做了附加的任务( 1)增加了管理员(Admin)功能,如果用户忘记密码可向管理员求助。

管理员密码为8位数字(系统内预先已设定),管理员按“Admin”键后,系统提示输入管理员密码,输入管理员密码+“#”键后,如果正确,系统自动恢复用户初始密码为“123456”;如果错误,程序停止运行,系统退出。

2)增加了输入清除功能(*),在输入密码过程中,如果中途按下“*”键,则清除前面的输入,开始重新输入密码。

(2)增加组合键(Shift )功能,使系统的密码选择范围除数字外,另外增加3)a,b,c,d,e,f,g,h,i,j 等10个字母。

数字直接输入,字母“Shift ”+“字母”。

四 . 实验设计方案实验用到8255作为并行接口设备,用以ISA 总线与外设的连接,本次用的是8255的A 口作为输出口,C 口的高4位与B 口是输入,C 口低4位是输出口,所以控制住设置为ox8a ,8253作为时钟器,作为控制提示灯的时间闪烁,8255的A 口接键盘的rom ,B 口接col ,地址线都连接在总线下面的芯片上接口,其他的读写控制线都接入ISA 总线上。

如下图的接线设置灯,4x41、 2、 3、 4、 5、 6、 8255和TRL 7、 时钟源的/64同8253的CLK0连接。

8、 8253的OUT0同JS7的B0连接。

9、 8253的GATE0同JS3的K7连接。

(高电平选通)六. 程序流程图其中软硬件初始化流程如图1所示图1. 初始化流程图密码锁程序运行流程如图2所示图2 密码锁程序流程图其中密码输入模块详细流程如图3图3. 输入模块流程图七.主要代码unsigned char kbscan()//键盘扫描{i nt row_va[4]={0x0e,0x0d,0x0b,0x07}; //选中每一行时的A口值u nsigned char data;u nsigned char data_tmp;S leep(200); //第一次消除抖动--每次键盘扫描的时间间隔至少为200毫秒f or(int i=0;i<4;i++,i%=4){int tmp=row_va[i];OutByte(0xde00, tmp); //循环扫描第一到四行InByte(0xde01,&data);if(data==NULL) //扫描不到的情况排除掉{}else if((data&0x0f)!=0x0f) //检测这一行是否有按键被按下{Sleep(10);//第二次消除抖动--如果10ms之后还是相同的按键就执行下面的。

InByte(0xde01,&data_tmp);data_tmp=data_tmp&0x0f;if(data_tmp!=data) continue; //否则不执行下面的while(data_tmp==data)//第三次消除抖动--判断按键是否弹起。

弹起则结束循环{InByte(0xde01,&data);data=data&0x0f;Sleep(10);if(data==0x0f){Sleep(100);InByte(0xde01,&data);data=data&0x0f;}}switch(data_tmp){case 0x0e: return value[i][0];case 0x0d: return value[i][1];case 0x0b: return value[i][2];case 0x07: return value[i][3];}}}r eturn NULL;}void displayOnLcd()//在LCD上显示*号.{u nsigned char stmp[2]="*";f or (int i=0;i<1;i++) OutByte(0xde09, stmp[i]);}int main(int argc, char* argv[]) //主函数{init8255(); //初始化8255i nit8253();I nitLCD(); //初始化LCDS leep(100);u nsigned char temp;O utByte(0xde02,0xFE); //红灯亮t emp = '\0'; //指令符号p rintf("please input Open!");w hile(1){ int j=0;temp = kbscan(); //获取在键盘中得到的数字printf("the key:%c\n",temp);if(temp=='O'){Mimasum=0;Clear(); //清空屏幕while(1){temp = kbscan();j++;printf("第%d次键盘扫描:%c\n",j,temp);if(isnum(temp)){if(Mimasum<6){Wodemima[Mimasum]=temp;Mimasum++;displayOnLcd(); //上屏幕LCD一个*号}}else if(isoper(temp)){if(temp=='#') //密码匹配{if(Mimasum==6){if(Newmima==true) //修改密码标志为true且原密码正确--修改密码{int i;for(i=0;i<6;i++)Mimachar[i]=Wodemima[i];Newmima=false;printf("新密码为:");for(i=0;i<6;i++){printf("%c",Mimachar[i]);}printf("\n");}else if(Equal(Mimachar,Wodemima)){if(Modify==true) //Modify为true--修改密码{Newmima=true; //把修改密码标志赋值为trueModify=false;Mimasum=0;Clear(); //清空屏幕printf("输入新密码:\n"); //提示:输入新密码}else{printf("密码正确!\n");OutByte(0xde02,0x7f); //绿灯亮Sleep(10000); //绿灯亮10SOutByte(0xde02,0xFE); //红灯亮&&绿灯灭Mimasum=0;Errorcount=0;goto Start_Position; //回到最前面}}else{Errorcount++;printf("密码错误次数%d次!!\n",Errorcount);if(Errorcount>=3) //提示重新输入的显示{OutByte(0xde02,0xFD); //黄灯亮Sleep(1000);OutByte(0xde02,0xFF); //黄灯灭Sleep(1000);OutByte(0xde02,0xFD); //黄灯亮Sleep(1000);OutByte(0xde02,0xFF); //黄灯灭Sleep(1000);OutByte(0xde02,0xFD); //黄灯亮Sleep(1000);OutByte(0xde02,0xFE); //红灯亮&&绿灯灭Mimasum=0; //初始Errorcount=0;Clear(); //清空屏幕goto Start_Position;}else{printf("请重新输入密码:\n");}}}}else if(temp=='*'){Mimasum=0; //重新输入密码Clear(); //清空屏幕}else if(temp=='A'){Guanlisum=0;Clear(); //清空屏幕printf("请输入管理员密码:\n");while(1) //输入管理员密码{temp = kbscan();printf("one次键盘扫描:%c\n",temp);if(isnum(temp)){if(Guanlisum<8){Guanlichar[Guanlisum]=temp;Guanlisum++;displayOnLcd(); //上屏幕LCD*号}}else if(isoper(temp)){if(temp=='#'&& Guanlisum==8){int i;for(i=0;i<8;i++){i f(Guanlikey[i]!=Guanlichar[i]) return 0;}Mimachar[0]='1';Mimachar[1]='2';Mimachar[2]='3';Mimachar[3]='4';Mimachar[4]='5';Mimachar[5]='6';printf("密码初始化完成.\n");Guanlisum=0;Mimasum=0;Errorcount=0;Modify=false;Newmima=false;goto Start_Position; //回到开始}else if(temp=='*'){Guanlisum=0;Clear(); //清空屏幕}}}}else if(temp=='M'){Modify=true;Mimasum=0;Clear();printf("请输入原密码:\n");}}}}}c out<<endl;e nd8255();// CloseDevice();r eturn 0;}八. 实验心得通过这次微机课题设计实验,使我学到了不少实用的知识,更重要的是做实验的过程,思考问题的方法,这与其他的实验师通用的,真正使我受益匪浅。

相关文档
最新文档