简单六位数字密码锁
- 格式:doc
- 大小:8.98 MB
- 文档页数:24
简易电子密码锁设计&我的设计思想联想到日前在安全技术防范领域,具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,并结合近期的学习过程和一些参考书籍,完成了简易的电子密码锁设计学习。
电子密码控制是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
电子密码控制不论性能还是安全性都已大大超过了机械类结,具有良好的应用前景。
一、设计目的与内容设计了一个简易电子密码锁,可按要求从矩阵键盘输入6位数密码如“080874”,输入过程中有按键音提示。
当密码输入正确并按下确认键(“OK”键)后,发光二极管被点亮。
二、工作原理与基本操作过程介绍采用80C51为核心的单片机控制。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
(1)键盘的人工编码给每个按键指定一个按键值,报告设定按键S1~S9对应的按键值分别为“1~9”,S10为数字“0”,S11为“OK”,S12~S16对应的按键值分别为12~16。
(2)根据按键值,指定每个按键对应的输入数字和信息。
如下表为每个按键代表的数字和输入信息。
当键盘扫描程序扫描到S10键被按下时,将其代表的按键值“0”通知CPU,CPU根据事先的规定,就会知道输入的数字是“0”。
矩阵键盘中每个按键所代表的数字和输入信息(3)输入数字和密码对比。
先将设定的密码用一个数组保存,报告中用的密码“080874”和“OK”确认信息可以用如下数组保存:Unsigned char D[ ]={0,8,0,8,7,4,11};在主程序接收到数字和信息后,通过逐位对比的方法进行判断。
输入的数字经对比正确时,程序才会继续顺序执行,否则,程序拒绝继续执行。
(4)执行预期功能。
如果输入密码正确,执行预期功能,报告设计为点亮P3.0口引脚LED。
三、电路图设计(Proteus绘制)四、程序设计(C语言)矩阵式键盘实现的电子密码锁程序#include<reg51.h> //包含51单片机寄存器定义的头文件sbit P14=P1^4; //将P14位定义为P1.4引脚sbit P15=P1^5; //将P15位定义为P1.5引脚sbit P16=P1^6; //将P16位定义为P1.6引脚sbit P17=P1^7; //将P17位定义为P1.7引脚sbit sound=P3^7; //将sound位定义为P3.7unsigned char keyval; //储存按键值/************************************************************** 函数功能:延时输出音频**************************************************************/ void delay(void){unsigned char i;for(i=0;i<200;i++);}/************************************************************** 函数功能:软件延时子程序**************************************************************/ void delay20ms(void){unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<60;j++);}/************************************************************** 函数功能:主函数**************************************************************/ void main(void){unsigned char D[ ]={0,8,0,8,7,4,11}; //设定密码EA=1; //开总中断ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式1TH0=(65536-500)/256; //定时器T0的高8位赋初值TL0=(65536-500)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0keyval=0xff; //按键值初始化while(keyval!=D[0]) //第一位密码输入不正确,等待;while(keyval!=D[1]) //第二位密码输入不正确,等待;while(keyval!=D[2]) //第三位密码输入不正确,等待;while(keyval!=D[3]) //第四位密码输入不正确,等待;while(keyval!=D[4]) //第五位密码输入不正确,等待;while(keyval!=D[5]) //第六位密码输入不正确,等待;while(keyval!=D[6]) //没有输入“OK”,等待;P3=0xfe; //P3.0引脚输出低电平,点亮LED}/**************************************************************函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位**************************************************************/void time0_interserve(void) interrupt 1 using 1 //定时器T0的中断编号为1,使用第一组寄存器{unsigned char i;TR0=0; //关闭定时器T0P1=0xf0; //所有行线置为低电平“0”,所有列线置为高电平“1”if((P1&0xf0)!=0xf0) //列线中有一位为低电平“0”,说明有键按下delay20ms(); //延时一段时间、软件消抖if((P1&0xf0)!=0xf0) //确实有键按下{P1=0xfe; //第一行置为低电平“0”(P1.0输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=1; //可判断是S1键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=2; //可判断是S2键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=3; //可判断是S3键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=4; //可判断是S4键被按下P1=0xfd; //第二行置为低电平“0”(P1.1输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=5; //可判断是S5键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=6; //可判断是S6键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=7; //可判断是S7键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=8; //可判断是S8键被按下P1=0xfb; //第三行置为低电平“0”(P1.2输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=9; //可判断是S9键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=0; //可判断是S10键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=11; //可判断是S11键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=12; //可判断是S12键被按下P1=0xf7; //第四行置为低电平“0”(P1.3输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=13; //可判断是S13键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=14; //可判断是S14键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=15; //可判断是S15键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=16; //可判断是S16键被按下for(i=0;i<200;i++) //让P3.7引脚电平不断取反输出音频{sound=0;delay();sound=1;delay();}}TR0=1; //开启定时器T0TH0=(65536-500)/256; //定时器T0的高8位赋初值TL0=(65536-500)%256; //定时器T0的高8位赋初值}五、用Proteus软件进行仿真利用Keil软件进行编译通过后,生成hex文件。
2 数字密码锁教学内容教材第51~52页,数字密码锁教学提示《数字密码锁》是冀教版第十二册探索乐园中的一节实践活动课,主要是向学生渗透一些重要的数学思想方法,是通过日常生活中的一些事例,使学生初步体会数字编码方法在解决实际问题中的应用,并通过观察、比较、猜测来探索数字编码的简单方法,让学生学会运用数字进行编码,初步培养学生的抽象、概括能力。
《标准》中指出,第二学段要让学生“进一步体会数在日常生活中的作用,会运用数表示事物,并能进行交流”。
在日常生活中,数有着非常广泛的应用,在第一学段学生已经有了初步体会,特别是在一年级上册认数的时候,教材在“生活中的数”版块中就已经出现了像邮政编码、门牌号、车牌号这样的数在生活中的应用实例。
数可以用来表示数量和顺序,这一知识点学生是已经知道的,而数还可以用来编码,这对学生来说是不大熟悉的,本节课就是在学生的生活经验和已有知识的基础上,进一步体会数字编码在日常生活中的应用,并通过实践活动进行简单的数字编码,培养学生的数学思维能力。
教学目标教学目标:1.结合具体事例,经历探索数字密码的组成规律的过程。
2.掌握数字密码的组成规律,知道数字密码的一些用处。
3.体验数学活动充满着探索性和创造性,体会数字的价值。
重点、难点重点1、初步体会数字编码思想在解决实际问题中的应用,了解用符号和数字组合进行编码的方法。
难点1、尝试用数学的方法来解决实际生活中的简单问题。
教学准备教师准备:实物投影仪;多媒体课件;钥匙。
教学过程²(一)新课导入一、问题情境1.教师拿出自己的钥匙,并引出密码锁。
分别说一说在什么地方或物品见过密码锁,见过几个数字的密码锁。
师:同学们,看老师手里拿的是什么?生:钥匙。
师:对,这些都是用来开锁的钥匙。
现实生活中,还有一种锁是不用钥匙的,你们知道是什么锁吗?生:密码锁师:谁知道什么地方或物品上经常用密码锁?学生可能说出:保险柜、保险箱、旅行箱,等等。
师:看来同学们知道的不少,那谁来说一说你在什么东西上见过几个数字的密码锁学生可能会说:●我在旅行箱上见过三位数的密码锁。
VHDL密码锁(6位串行输入)《电子设计自动化》课程设计题目:数字密码锁电路(1.1)院(系)信息科学与工程学院专业 15通信工程届别班级学号姓名任课老师数字密码锁电路,难度系数1.1实验要求设计一个密码锁,有6位十进制数字密码,串行输入;能设置密码;有开锁和错误指示(LED);如果连续输错三次,则一刻钟内不能再开锁。
本设计的各个模块由相应的VHDL程序具体实现,并在Quartus Ⅱ9.0环境下进行了整体电路的模拟仿真,最终实现“密码锁设计”的要求。
实验设计要求6位串行输入,并且由于实验板输入键位的有限,还同时增加了输入密码与设置密码键位的重叠,使密码锁电路输入输出形成一个反馈,通过对输出的判断,让电路自动识别输入的数字是设置的密码还是输入的密码。
在程序初始载入实验板时,还要让密码锁的初始设置密码和输入密码相同,从而达到能够初始设置密码的逻辑要求。
同时因为实验板输出的LED灯有限,还要求设计的密码锁电路的显示能够在输入密码、设置密码和倒计时之间灵活智能选择,从而达到满足使用的要求。
密码锁在输入三次错误密码后需要开始一个一刻钟即900秒的倒计时,则需要设计一个逻辑电路使电路能够在输入和错误倒计时之间自由变化。
此为本实验设计的主要难点和创新。
目录1.系统设计 (4)2.单元电路设计 (7)3.软件设计 (12)4.系统测试 (23)5.结论 (24)6.参考文献 (24)7.附录 (25)8.其他 (26)系统设计设计要求:设计一个密码锁,有6位十进制数字密码,串行输入;能设置密码;有开锁和错误指示(LED);如果连续输错三次,则一刻钟内不能再开锁。
系统设计方案:先设计1.0难度的密码锁,此时不需要一刻钟计时模块。
该电路首先需要一个输入模块,由于实验板的限制,安排两个键位作为输入,分别实现6个密码位的选择和对确定位密码的输入,所以在输入模块之前,还需要通过计数器来分别得到两个输入;之后设计一个密码合成及选择模块,将得到的6个4位的密码相加得到一个24位的密码,方便之后的比较,同时需要在输入模块添加一个选择,分别确定此时的输入信息是设置密码还是输入密码;将得到的24位设置密码和输入密码分别放到一个确认模块,起到输入确认并且使初始信息清零的作用;最后将两个24位数据放入比较模块,确定密码锁的状态,状态的显示由LED灯实现;输出显示LED模块从输入模块之前接出,显示当前电路的输入;同时,在计数器之前需要加入消抖模块,使实验板能够稳定输入;在LED模块之前需要添加译码器,以输出正确显示。
6位密码锁课程设计一、课程目标知识目标:1. 学生能够理解密码锁的基本原理,掌握6位密码锁的构造和功能。
2. 学生能够运用数学逻辑思维,分析密码的组合方式和可能性。
3. 学生能够运用所学知识,解释日常生活中类似密码锁的加密技术应用。
技能目标:1. 学生能够运用逻辑推理和数学方法,设计出具有较高安全性的6位密码锁。
2. 学生能够运用所学知识,解决与密码锁相关的实际问题,提高解决问题的能力。
3. 学生能够通过小组合作,进行有效沟通与协作,共同完成密码锁的设计与验证。
情感态度价值观目标:1. 培养学生对密码学及信息安全领域的兴趣,激发学生的求知欲和探索精神。
2. 培养学生严谨、细心的学习态度,提高学生对安全意识的认识。
3. 培养学生团队协作精神,学会尊重他人意见,共同为达成目标而努力。
本课程针对六年级学生的认知特点,以实际生活中的密码锁为载体,结合数学和逻辑思维,引导学生掌握密码锁的基本原理和设计方法。
课程注重培养学生的实践能力和创新意识,同时强化学生的安全意识,提升综合素质。
通过本课程的学习,学生能够将所学知识应用于实际生活,为未来的学习和发展奠定基础。
二、教学内容1. 密码锁原理介绍:讲解密码锁的基本工作原理,包括密码的设置、存储和比对过程。
- 教材章节:第三章《数据的表示与加密》- 内容列举:数字编码、加密算法初步介绍2. 6位密码锁设计:分析6位密码的组合方式和可能性,探讨如何设计出安全性高的密码。
- 教材章节:第四章《简单的加密技术》- 内容列举:排列组合、概率统计在密码设计中的应用3. 实践操作:分组进行密码锁设计实践,让学生亲身体验设计过程,提高实际操作能力。
- 教材章节:第五章《实践活动》- 内容列举:动手制作简易密码锁、分析密码锁的破解方法4. 密码锁应用与拓展:介绍密码锁在现实生活中的应用,激发学生学习兴趣,拓展知识面。
- 教材章节:第六章《密码学在日常生活中的应用》- 内容列举:密码锁在银行、手机等领域的应用案例教学内容按照上述安排,注重理论与实践相结合,逐步引导学生掌握密码锁相关知识。
目录第1章绪论 01.1 设计任务 01.2 设计要求 0第2章系统方案设计 (1)2.1 硬件设计思想 (1)2.2软件设计思想 (2)第3章电路设计 (3)3.1 电路原理 (3)3.2 电路原理图 (3)第4章程序设计 (4)4.1流程图 (4)4.2 算法描述 (4)第5章程序清单与仿真结果 (5)5.1 程序清单 (5)5.2 仿真结果 (13)第6章设计总结 (16)6.1 设计体会 (16)参考文献 (17)致谢 (18)实物展示..................................... 错误!未定义书签。
第1章绪论1.1 设计任务(1)设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示〔设通电状态为红灯亮〕。
(2)在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁〔如输入非6位或输入6位与预设密码不同的数字〕。
(3)输入密码时,数码管同步显示输入的数字。
(4)输入正确后,有解锁提示〔设为绿灯亮〕,输入错误后也有提示〔设为红灯闪烁和鸣笛警告〕(5)输入错误后可以重输,要有复位功能。
1.2 设计要求利用AT89S52单片机的P2端口的连接到7个按键开关上,分别是输入键数字1,数字2,数字3,数字4,数字5,数字6和确认键,接蜂鸣器。
启动时,按下电源开关,红色指示灯长亮,输入密码,而数码管显示输入的相应数字,然后按下确认键,假设密码正确,绿灯亮,数码管熄灭,弱密码错误,红灯闪烁,蜂鸣器响,发出警报。
第2章系统方案设计2.1 硬件设计思想.1 键盘设计本设计使用7按键,从上到下,从左至右依次设为确认键,数字1,数字2,数字3,数字4,数字5,数字6,用来输入密码,如下列图图2.1 键盘仿真图.2 数字显示设计使用共阳极七段数码管来显示输入的数字,图如下:图2.2 显示仿真图.3 检验密码电路设计使用LED灯和蜂鸣器来提示输入的密码是否正确,假设密码正确,绿灯亮,假设密码错误,红灯闪烁,蜂鸣器响,电路如图:图2.3 密码验证系统仿真图电子密码锁工作的主要过程是从键盘开始输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
课程名称:可编程控制器技术及应用设计题目:基于PLC的六位密码锁设计院系:电气工程系专业:电子信息工程年级:20 09级*名:**指导教师:***西南交通大学峨眉校区2012 年 4 月13 日课程设计任务书专业电子信息工程姓名李垚学号20098157开题日期:2012 年 3 月 1 日完成日期:2012 年 6 月15 日题目基于PLC的六密码锁设计一、设计的目的1) 设计出PLC控制的密码锁程序;2) 掌握PLC的编程软件编程平台、定时器、计数器、传送指令、主子程序等有关指令的编程方法;3)熟悉PLC与上机通讯、软件调试的方法;4)培养大学生的综合设计能力、分析问题与解决问题的能力。
二、设计的内容及要求1)设计内容:用PLC设计一个6位密码锁,实现对重要场所的安全门控。
2)设计要求:A、输入密码正确时,执行开门信号。
B、输入密码错误3次以上时报警,密码输入正确后取消报警。
C、重设密码。
三、指导教师评语四、成绩指导教师(签章)年月日摘要:本设计是采用西门子PLC来设计密码程序的,程序中应用到了近20 个计数器。
设计的密码锁外观图类似于银行取款机台上的键盘。
给人感觉就和那种输入密码的过程一样。
其实不然,本设计中采用了计数器控制的特点,每个计数器的次数设定为几次那么所对应的按键就要按几次。
本设计分为开锁环节和解锁环节,开锁环节设定六个按键有效,解锁环节设定了七个按键有效,这样一来设定的开锁密码位数就大于等于六位了,解锁密码位数就大于等于七位。
要看计数器设定的次数而定。
如果密码锁报警的话必须先输入解锁密码,后输入开锁密码方能开锁。
设计背景:随着人们生活水平的提高,如何实现家庭放到这一问题也变得尤其的突出,传统的机械锁由于其结构的简单,被撬的事件屡见不鲜,同时,季节所一般配有金属钥匙,带起来太重,万一弄丢了,所可能就没用了。
电子锁保密性高,密码泄露了,换个密码,锁照样能用;使用灵活性好,安全系数高,能够防止不法分子多次试探密码;性价比好,因此,密码锁受到了广大用户的青睐。
#include "reg51.h"sbit buzzer=P3^1;sbit relay=P3^2;void key_scan();//声明按键扫描函数void key_compare();//声明按键比较函数void LCD_PutString(unsigned char x,unsigned char y,unsigned char code *s); void ClrScreen();//清屏函数void LCD_flag(); //闪烁函数unsigned char table[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15},} ; unsigned char store_secret[3]={4,6,8};unsigned char store_temp[10];unsigned char h,l,i=0;unsigned char Error_time=0; //输入密码错误次数sbit RS=P2^2;sbit RW=P2^1;sbit EN=P2^0;sbit PSB=P2^4;/*------------------------------------------延时函数-------------------------------------------*/void delay(unsigned int z){unsigned int i,j;for(i=0;i<z;i++)for(j=0;j<123;j++);}/*------------------------------------------12864的设置-------------------------------------------*/bit LCD12864_ReadBusy(){bit result;RS = 0;RW = 1;EN = 1;delay(5);result = (bit)(P0&0x80);EN = 0;return(result);}void LCD12864_write_com(unsigned char com){RS=0;delay(5);RW=0;P0=com;delay(5);EN = 1;delay(5);EN = 0;}void LCD12864_write_data(unsigned char dat){RS = 1;delay(5);RW=0;P0=dat;delay(5);EN = 1;delay(5);EN = 0;}/*------------------------------------------12864的初始化-------------------------------------------*/void Init_LCD(){PSB = 1;LCD12864_write_com(0x01);LCD12864_write_com(0x0c);LCD12864_write_com(0x01);LCD12864_write_com(0x30);}/*------------------------------------------------显示字符串x:横坐标值,范围0~8y:纵坐标值,范围1~4------------------------------------------------*/void LCD_PutString(unsigned char x,unsigned char y,unsigned char code *s) {switch(y){case 1: LCD12864_write_com(0x80+x);break;case 2: LCD12864_write_com(0x90+x);break;case 3: LCD12864_write_com(0x88+x);break;case 4: LCD12864_write_com(0x98+x);break;default:break;}while(*s>0){LCD12864_write_data(*s);s++;// delay(50);}}/*------------------------------------------------清屏------------------------------------------------*/void ClrScreen(){LCD12864_write_com(0x01);delay(5);}/*********************************************************闪烁函数*********************************************************/ void LCD_flag(){LCD12864_write_com(0x08);delay(400);LCD12864_write_com(0x0c);delay(400);LCD12864_write_com(0x08);delay(400);LCD12864_write_com(0x0c);delay(400);LCD12864_write_com(0x08);delay(200);LCD12864_write_com(0x0c);delay(5);LCD12864_write_com(0x01);delay(5);}/*------------------------------------------按键比较函数-------------------------------------------*/void key_compare(){ClrScreen();delay(20);if(store_secret[0]==store_temp[0]&&\store_secret[1]==store_temp[1]&&\store_secret[2]==store_temp[2]){LCD_PutString(2,2,"恭喜您!");LCD_PutString(1,3,"身份已验证!");delay(3000);ClrScreen();LCD_PutString(0,2,"主人欢迎您回家!");relay=1;delay(10000);relay=0;delay(5000);}else{Error_time++;if(Error_time==1){LCD_PutString(2,1,"对不起!");LCD_PutString(0,2,"您的密码有误!");LCD_PutString(0,3,"您还有2 次机会!");delay(3000);}else if(Error_time==2){LCD_PutString(2,1,"对不起!");LCD_PutString(0,2,"您的密码有误!");LCD_PutString(0,3,"您还有1 次机会!");delay(1000);}else if(Error_time==3){LCD_PutString(2,1,"对不起!");LCD_PutString(1,2,"您已输错3 次!");LCD_PutString(2,3,"键盘已锁!");LCD_PutString(1,4,"请稍后再试...");buzzer=1;delay(20000);Error_time=0;buzzer=0;}}ClrScreen();}void key_scan(){while(1){LCD_PutString(2,1,"密码锁");LCD_PutString(0,2,"请您输入密码:");P1=0xf0;//根据开发板原理图,先进行列扫描,高位全部为1,低位为0 if(P1!=0xf0){delay(5);if(P1!=0xf0){switch(P1&0xf0){case 0xe0:l=0;break;case 0xd0:l=1;break;case 0xb0:l=2;break;case 0x70:l=3;break;}}P1=~P1;//进行行扫描switch(P1&0x0f){case 0x07:h=0;break;case 0x0b:h=1;break;case 0x0d:h=2;break;case 0x0e:h=3;break;}while(P1!=0x0f);if(table[h][l]==10){key_compare();}else if(table[h][l]==11){if(i==0)i=3;i=i-1;store_temp[i]=0; //把之前那个值清零LCD12864_write_com(0x88+i);LCD12864_write_data(' '); //显示一个空的位置}else{store_temp[i]=table[h][l];LCD12864_write_com(0x88+i); //按键值LCD12864_write_data('*');store_temp[i]=table[h][l];i++;if(i>2)i=0;}}}}void main(){buzzer=0;relay=0;Init_LCD();LCD12864_write_com(0x80);key_scan();}。
2 数字密码锁教学内容教材第51~52页,数字密码锁教学提示《数字密码锁》是冀教版第十二册探索乐园中的一节实践活动课,主要是向学生渗透一些重要的数学思想方法,是通过日常生活中的一些事例,使学生初步体会数字编码方法在解决实际问题中的应用,并通过观察、比较、猜测来探索数字编码的简单方法,让学生学会运用数字进行编码,初步培养学生的抽象、概括能力。
《标准》中指出,第二学段要让学生“进一步体会数在日常生活中的作用,会运用数表示事物,并能进行交流”。
在日常生活中,数有着非常广泛的应用,在第一学段学生已经有了初步体会,特别是在一年级上册认数的时候,教材在“生活中的数”版块中就已经出现了像邮政编码、门牌号、车牌号这样的数在生活中的应用实例。
数可以用来表示数量和顺序,这一知识点学生是已经知道的,而数还可以用来编码,这对学生来说是不大熟悉的,本节课就是在学生的生活经验和已有知识的基础上,进一步体会数字编码在日常生活中的应用,并通过实践活动进行简单的数字编码,培养学生的数学思维能力。
教学目标教学目标:1.结合具体事例,经历探索数字密码的组成规律的过程。
2.掌握数字密码的组成规律,知道数字密码的一些用处。
3.体验数学活动充满着探索性和创造性,体会数字的价值。
重点、难点重点1、初步体会数字编码思想在解决实际问题中的应用,了解用符号和数字组合进行编码的方法。
难点1、尝试用数学的方法来解决实际生活中的简单问题。
教学准备教师准备:实物投影仪;多媒体课件;钥匙。
教学过程²(一)新课导入一、问题情境1.教师拿出自己的钥匙,并引出密码锁。
分别说一说在什么地方或物品见过密码锁,见过几个数字的密码锁。
师:同学们,看老师手里拿的是什么?生:钥匙。
师:对,这些都是用来开锁的钥匙。
现实生活中,还有一种锁是不用钥匙的,你们知道是什么锁吗?生:密码锁师:谁知道什么地方或物品上经常用密码锁?学生可能说出:保险柜、保险箱、旅行箱,等等。
师:看来同学们知道的不少,那谁来说一说你在什么东西上见过几个数字的密码锁学生可能会说:●我在旅行箱上见过三位数的密码锁。
/**************************************************************** WYDZ-51实验板 ** 六位数电子密码锁4*4键盘(密码可改) ** 通电显示------,密码由TABLE读取132888 ** 为内定密码这样可以防止停电后无密码用 ** 按*清除为000000欲改密码先按密码再按# ** 输入密码后按D若密码相同P2.3反转一次 ** 否则显示为------ * * 要显示密码按住C即可放开后显示000000 ** SW1 = 1 | SW2= 2 | SW3= 3 | SW4 = A未定义 ** SW6 = 4 | SW7= 5 | SW8= 6 | SW9 = B未定义 ** SW11 = 7 | SW12= 8 | SW13= 9 | SW14= C显示密码 ** SW16 =*清除 | SW17= 0 | SW18= 重设密码 | SW19= D开锁 ** 程序制作:LBQ691477940** 26/10/08 00:41 * ***************************************************************/; 主程序DULA BIT P2.6WELA BIT P2.7ORG 0000HMOV R7,#00H ;时DJNZ R7,$MOV R7,#16 ;内定密码在表格的起始地址为第16个开始MOV R6,#06H ;内定六个密码MOV R1,#35H ;内定密码取码指针L1: MOV A,R7 ;MOV DPTR,#TABLE ;MOVC A,@A+DPTR ;MOV @R1,A ;六个密码分别存入35H-30H单元DEC R1 ;存下一个地址INC R7 ;取下一个DJNZ R6,L1START: ;SETB P2.0 ;置P2.0口MOV R4,#06H ;清除显示器存放地址40H-45HMOV R0,#40H ;CLEAR: MOV @R0,#16 ;显示------INC R0 ;DJNZ R4,CLEAR ;;4*4&4*3键盘子程序;将pn.0-pn.3作out4横,pn.4-pn.7作in4竖L2: MOV R3,#0F7H ;扫描初值(Pn.3=0)MOV R1,#00H ;取码指针初值L3: MOV A,R3 ;开始扫描MOV P3,A ;将扫描值out Pn口MOV A,P3 ;读入Pn口值,判断是否有键按下?MOV R4,A ;存入R4,以判断是否放开了SETB C ;C=1MOV R5,#04H ;扫描Pn.4-Pn.7;若为4*3则mov r5,#03h并pn.4不用L4: RLC A ;将按键值带c左移一位JNC KEYIN ;判断C=0?是则有键按下转KEYININC R1 ;C=1则无键按下,将取码指针加1DJNZ R5,L4 ;4竖扫描完了?CALL DISPMOV A,R3 ;扫描值载入SETB C ;C=1RRC A ;扫描下一横(Pn.3-Pn.0)MOV R3,A ;存回扫描寄存器JC L3 ;C=1?是则未扫完JMP L2 ;C=0则4横已扫描完KEYIN: MOV A,R1 ;将键值送AXRL A,#04H ;是否按C=SW14键JZ X3 ;是则显示密码MOV A,R1 ;XRL A,#00H ;是否按D=SW19键JZ X4 ;是则比较密码,正确开门MOV R7,#30 ;消除抖动D1: MOV R6,#248DJNZ R6,$DJNZ R7,D1D2: MOV A,P3 ;读入P3口值XRL A,R4 ;与上次读入值比较相同A=0JZ D2 ;ACC=0则相等,表示键未放开MOV A,R1 ;己放开,取码指针载入AMOV DPTR,#TABLE ;数据指针到TABLEMOVC A,@A+DPTR ;到TABLE取码MOV R7,A ;取得的键值迸R7XRL A,#0FH ;是否按#=SW18JZ SET0 ;是则设定新密码MOV A,R7 ;键值送AXRL A,#0EH ;是否按*JZ START ;是则清除MOV A,R7 ;键值送AXRL A,#0AH ;A=SW4键未设定键JZ L2 ;MOV A,R7 ;键值送AXRL A,#0BH ;B=SW9键未设定键JZ L2 ;MOV A,R7 ;键值送AXCH A,40H ;现按键值存入(40H)XCH A,41H ;旧(40H)值存入(41H)XCH A,42H ;旧(41H)值存入(42H)XCH A,43H ;旧(42H)值存入(43H)XCH A,44H ;旧(43H)值存入(44H)XCH A,45H ;旧(44H)值存入(45H)CALL DISP ;调用显示子程序JMP L2 ;X3: JMP DISP2 ;X4:JMP COMP ;调用比较子程序SET0: MOV R2,#06H ;六个密码MOV R0,#40H ;按键显示地址MOV R1,#30H ;密码存放地址E1: MOV A,@R0 ;40H存入30H....45H存入35HXCH A,@R1 ;INC R0 ;INC R1 ;DJNZ R2,E1 ;CALL DELAY ;时E2: JMP START ;COMP:MOV R1,#45H ;按键显示地址MOV R0,#35H ;密码存放地址MOV R2,#06H ;六个密码C1: MOV A,@R1 ;XRL A,@R0 ;JNZ C3 ;不同则清除DEC R1 ;相同比较下一个密码DEC R0 ;DJNZ R2,C1 ;CLR P2.3 ;使其OUT高电平令电子锁打开MOV R2,#255 ;时0.1秒C2: MOV R6,#255DJNZ R6,$DJNZ R2,C2SETB P2.3 ;将本行去掉将所有已注释行去掉{;逗号C3: JMP START ;;欲显示密码值DISP2: MOV R0,#35H ;密码存放地址CALL DISP1 ;调用显示子程序1MOV A,P3 ;C键放开否?没有继续显示XRL A,R4 ;JZ DISP2 ;CALL DELAY ;JMP STARTDELAY: MOV R7,#03 ;显示器扫描时间D3: MOV R6,#248DJNZ R6,$DJNZ R7,D3RETDISP: MOV R0,#45H ;显示地址指针45HDISP1: MOV A,@R0 ;载入D6显示值MOV DPTR,#TABMOVC A,@A+DPTRSETB DULAMOV P0,ACLR DULASETB WELAMOV P0,#1CLR WELACALL DELAYDEC R0MOV A,@R0 ;载入D5显示值MOV DPTR,#TABMOVC A,@A+DPTRSETB DULAMOV P0,ACLR DULASETB WELAMOV P0,#2CLR WELACALL DELAYDEC R0MOV A,@R0 ;载入D4显示值MOV DPTR,#TABMOVC A,@A+DPTRSETB DULAMOV P0,ACLR DULASETB WELAMOV P0,#4CLR WELACALL DELAYDEC R0MOV A,@R0 ;载入D3显示值MOV DPTR,#TABMOVC A,@A+DPTRSETB DULAMOV P0,ACLR DULASETB WELAMOV P0,#8CLR WELACALL DELAYDEC R0MOV A,@R0 ;载入D2显示值MOV DPTR,#TABMOVC A,@A+DPTRSETB DULAMOV P0,ACLR DULASETB WELAMOV P0,#10HCLR WELACALL DELAYDEC R0MOV A,@R0 ;载入D1显示值MOV DPTR,#TABMOVC A,@A+DPTRSETB DULAMOV P0,ACLR DULASETB WELAMOV P0,#20HCLR WELACALL DELAYRET ;TABLE: DB 0DH,0FH,00H,0EH ; 1 /2 / 3 /ADB 0CH,09H,08H,07H ; 4 / 5 / 6 /BDB 0BH,06H,05H,04H ; 7 / 8 / 9 /显示密码DB 0AH,03H,02H,01H ;清除 / 0 /重设密码/开锁DB 01H,03H,02H,08H,08H,08H ;内定密码;其实TABLE中的值可以不这样安排;只要和键盘相对应即可;若按的是键盘上的Pn.3与Pn.7组成的开关一定是TABLE中的第1个值 ;若按的是键盘上的Pn.3与Pn.6组成的开关一定是TABLE中的第2个值 ;若按的是键盘上的Pn.3与Pn.5组成的开关一定是TABLE中的第3个值 ;如此类推Pn.1与Pn.7组成的开关一定是TABLE中的第9个值;如此类推Pn.0与Pn.7组成的开关一定是TABLE中的第13个值;若按的是键盘上的Pn.0与Pn.4组成的开关一定是TABLE中的第16个值 ;Pn.3与Pn.7或.6或.5或.4接开关分别为;Pn.2与Pn.7或.6或.5或.4接开关分别为;Pn.1与Pn.7或.6或.5或.4接开关分别为;Pn.0与Pn.7或.6或.5或.4接开关分别为TAB: ;显示表格DB0C0H;0DB0F9H;1DB0A4H;2DB0B0H;3DB099H;4DB092H;5DB082H;6DB0F8H;7DB080H;8DB090H;9DB088H;ADB083H;bDB0C6H;CDB0A1H;dDB086H;EDB08EH;FDB 0BFH ;-END。
6位好记的拼音数字组合号摘要:一、引言二、拼音数字组合号的定义与特点三、六个好记的拼音数字组合号1.1234562.6789013.2581364.4567895.1357926.345678四、拼音数字组合号的实际应用五、总结正文:一、引言随着社会的发展和科技的进步,人们在生活中对数字的依赖越来越强。
为了方便记忆和使用,人们将数字与拼音相结合,形成了独特的拼音数字组合号。
本文将介绍什么是拼音数字组合号,以及六个好记的拼音数字组合号。
二、拼音数字组合号的定义与特点拼音数字组合号是将数字与拼音相结合的一种编码方式。
它的特点是以数字为基础,通过拼音赋予数字特定的含义,使其更易于记忆和使用。
拼音数字组合号可以应用于各种场景,如电话号码、车牌号、门牌号等。
三、六个好记的拼音数字组合号1.123456这个拼音数字组合号源于一个流行的手机解锁密码,由于其简单易记,被广泛应用于各种场景。
这个组合号的拼音含义为“一、二、三、四、五、六”,简单明了,便于记忆。
2.678901这个拼音数字组合号为“六、七、八、九、零、一”,它的特点是将数字0 也融入其中,使其更具有代表性。
这个组合号在生活中也较为常见,易于记忆。
3.258136这个拼音数字组合号为“二、五、八、一、三、六”,它是由数字和拼音组合而成,具有较高的代表性。
这个组合号在生活中较为常见,易于记忆和使用。
4.456789这个拼音数字组合号为“四、五、六、七、八、九”,它的特点是将数字1-9 都融入其中,使其更具有全面性。
这个组合号在生活中较为常见,易于记忆。
5.135792这个拼音数字组合号为“一、三、五、七、九、二”,它是由数字和拼音组合而成,具有较高的代表性。
这个组合号在生活中较为常见,易于记忆和使用。
6.345678这个拼音数字组合号为“三、四、五、六、七、八”,它是由数字和拼音组合而成,具有较高的代表性。
这个组合号在生活中较为常见,易于记忆和使用。
四、拼音数字组合号的实际应用拼音数字组合号在生活中有着广泛的应用,如电话号码、车牌号、门牌号等。
目录第1章绪论 (1)1.1 设计任务 (1)1.2 设计要求 (1)第2章系统方案设计 (2)2.1 硬件设计思想 (2)2.2软件设计思想 (3)第3章电路设计 (4)3.1 电路原理 (4)3.2 电路原理图 (4)第4章程序设计 (5)4.1流程图 (5)4.2 算法描述 (5)第5章程序清单与仿真结果 (6)5.1 程序清单 (6)5.2 仿真结果 (14)第6章设计总结 (17)6.1 设计体会 (17)参考文献 (18)致谢 (19)实物展示.................................... 错误!未定义书签。
第1章绪论1.1 设计任务(1)设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示(设通电状态为红灯亮)。
(2)在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)。
(3)输入密码时,数码管同步显示输入的数字。
(4)输入正确后,有解锁提示(设为绿灯亮),输入错误后也有提示(设为红灯闪烁和鸣笛警告)(5)输入错误后可以重输,要有复位功能。
1.2 设计要求利用AT89S52单片机的P2端口的P2.0--P2.6连接到7个按键开关上,分别是输入键数字1,数字2,数字3,数字4,数字5,数字6和确认键,P2.7接蜂鸣器。
启动时,按下电源开关,红色指示灯长亮,输入密码,而数码管显示输入的相应数字,然后按下确认键,若密码正确,绿灯亮,数码管熄灭,弱密码错误,红灯闪烁,蜂鸣器响,发出警报。
第2章系统方案设计2.1 硬件设计思想2.1.1 键盘设计本设计使用7按键,从上到下,从左至右依次设为确认键,数字1,数字2,数字3,数字4,数字5,数字6,用来输入密码,如下图图2.1 键盘仿真图2.1.2 数字显示设计使用共阳极七段数码管来显示输入的数字,图如下:图2.2 显示仿真图2.1.3 检验密码电路设计使用LED灯和蜂鸣器来提示输入的密码是否正确,若密码正确,绿灯亮,若密码错误,红灯闪烁,蜂鸣器响,电路如图:图2.3 密码验证系统仿真图2.2软件设计思想电子密码锁工作的主要过程是从键盘开始输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
密码的设定,在此程序中密码是固定的,预设的密码为"532416"共6位密码。
在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)输入密码时,数码管要在单片机的控制下同步显示输入的数字。
3.1 电路原理单片机最小系统。
一个AT89S52单片机做为控制电路,运用其P2口来实现密码的输入和蜂鸣器的报警,通过P0口给数码显示管高低不同电平信号,来实现输入密码的显示,P1接指示灯。
3.2 电路原理图图3.2 电路原理图4.1流程图图4.1 系统流程图4.2 算法描述1、设计一个延时子程序void delayms(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=114;j>0;j--);}2、主程序void init()void delayms(unsigned int t)void main()第5章程序清单与仿真结果5.1 程序清单#include<reg52.h>sbit mm1=P2^0;//密码按键1-8sbit mm2=P2^1;sbit mm3=P2^2;sbit mm4=P2^3;sbit mm5=P2^4;sbit mm6=P2^5;sbit mmok=P2^6;sbit l1=P1^0;sbit l2=P1^2;sbit fmq=P2^7;void init(){P0=0xff;//禁止数码管显示mm1=1;mm2=1;mm3=1;mm4=1;mm5=1;mm6=1;mmok=1;fmq=1;l1=1;l2=1;}void delayms(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=114;j>0;j--);}void main(){unsigned char mmsr,bn,bn1,bn2,bn3,bn4,bn5;mmsr=0;bn=0;bn1=0;bn2=0;bn3=0;bn4=0;bn5=0;mmsr=1;init();while(1){if(mmsr==1){if(mm5==0) //系统8位程序密码532416 {delayms(10);if(mm5==0){bn=1;P0=0xff;//消隐P0=0x92;//显示5}}if((mm3==0)&(bn==1)){delayms(10);if((mm3==0)&(bn==1)){bn1=1;P0=0xff;//消隐P0=0xb0;//显示3}}if((mm2==0)&(bn1==1)){delayms(10);if((mm2==0)&(bn1==1)){bn2=1;P0=0xff;//消隐P0=0xa4;//显示2}}if((mm4==0)&(bn2==1)) {delayms(10);if((mm4==0)&(bn2==1)) {bn3=1;P0=0xff;//消隐P0=0x99;//显示4}}if((mm1==0)&(bn3==1)) {delayms(10);if((mm1==0)&(bn3==1)){bn4=1;P0=0xff;//消隐P0=0xf9;//显示1}}if((mm6==0)&(bn4==1)) {delayms(10);if((mm6==0)&(bn4==1)) {bn5=1;P0=0xff;//消隐P0=0x82;//显示6}}if(mm1==0) {delayms(10);if(mm1==0){P0=0xff;//消隐P0=0xf9;//显示1}}if(mm2==0){delayms(10);if(mm2==0){P0=0xff;//消隐P0=0xa4;//显示2}}if(mm3==0){delayms(10);if(mm3==0){P0=0xff;//消隐P0=0xb0;//显示3}}if(mm4==0){delayms(10);if(mm4==0){P0=0xff;//消隐P0=0x99;//显示4}}if(mm5==0){delayms(10);if(mm5==0){P0=0xff;//消隐P0=0x92;//显示5}}if(mm6==0){delayms(10);if(mm6==0){P0=0xff;//消隐P0=0x82;//显示8}}if(mmok==0){delayms(10);if(mmok==0){if((bn==1)&(bn1==1)&(bn2==1)&(bn3==1)&(bn4==1)&(bn5==1)) //密码成功{while(1){P0=0xff;l2=0;delayms(100);}}else{while(1){P0=0xff;fmq=0;l1=0;delayms(100);l1=1;delayms(100);}}}}}}}{unsigned char mmsr,bn,bn1,bn2,bn3,bn4,bn5;mmsr=0;bn=0;bn1=0;bn2=0;bn3=0;bn4=0;bn5=0;mmsr=1;init();while(1){if(mmsr==1){if(mm5==0) //系统8位程序密码532416{delayms(10);if(mm5==0){bn=1;P0=0xff;//消隐P0=0x92;//显示5}}if((mm3==0)&(bn==1)) {if((mm1==0)&(bn3==1)) {delayms(10);if((mm1==0)&(bn3==1)){bn4=1;P0=0xff;//消隐P0=0xf9;//显示1}}if((mm6==0)&(bn4==1)) {delayms(10);if((mm6==0)&(bn4==1)){bn5=1;P0=0xff;//消隐P0=0x82;//显示6 }}if(mm1==0){delayms(10);if(mm1==0){P0=0xff;//消隐P0=0xf9;//显示1P0=0x92;//显示5 }}if(mm6==0){delayms(10);if(mm6==0){P0=0xff;//消隐P0=0x82;//显示8}}if(mmok==0){delayms(10);if(mmok==0){if((bn==1)&(bn1==1)&(bn2==1)&(bn3==1)&(bn4==1)&(bn5==1)) //密码成功{while(1){P0=0xff;l2=0;delayms(100);}}else{while(1)P0=0xff;}5.2 仿真结果1,开始仿真,按下开关,红灯亮图5.1 仿真图2,输入正确的密码(532416),数码管显示相应的数字图5.2 输入数字“5”图5.3 输入数字“3”图5.4 输入数字“2”图5.5 输入数字“4”图5.6 输入数字“1”图5.7 输入数字“6”3,(正确密码)按下确认键,绿灯亮图5.8 输入正确密码状态图4,若输入错误密码,则红灯闪烁,蜂鸣器响(图内为导通状态)图5.9 输入错误密码状态图第6章设计总结6.1 设计体会通过这次课程设计和设计中遇到的问题,我积累了一定的经验,刚开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译才能得到正确的程序。
这说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。
设计中要求有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确。
对错误的检查要求我要有足够的耐心,这对以后从事集成电路设计工作会有一定的帮助。
本次课程设计是我到目前为止觉得受益匪浅也是收获最大的一次实习。
身为通信专业的学生,设计是我们将来必需具备的技能。
而这次课程设计恰恰给我们提供了一个应用自己所学知识去勇于创新和实践的平台。
从通过理论设计,到仿真软件仿真,再到确定具体方案,再到安装实际电路,最后到调试电路、成型。
整个过程都需要我充分利用所学的知识进行思考、借鉴。