微机系统综合课程设计超市密码箱的设计与实现.doc

上传人:仙人指路1688 文档编号:2882079 上传时间:2023-03-01 格式:DOC 页数:34 大小:589KB
返回 下载 相关 举报
微机系统综合课程设计超市密码箱的设计与实现.doc_第1页
第1页 / 共34页
微机系统综合课程设计超市密码箱的设计与实现.doc_第2页
第2页 / 共34页
微机系统综合课程设计超市密码箱的设计与实现.doc_第3页
第3页 / 共34页
微机系统综合课程设计超市密码箱的设计与实现.doc_第4页
第4页 / 共34页
微机系统综合课程设计超市密码箱的设计与实现.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《微机系统综合课程设计超市密码箱的设计与实现.doc》由会员分享,可在线阅读,更多相关《微机系统综合课程设计超市密码箱的设计与实现.doc(34页珍藏版)》请在三一办公上搜索。

1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:微机系统综合课程设计课程设计题目:超市密码箱的设计与实现 院(系): 计算机学院专 业: 计算机科学与技术班 级: 学 号: 姓 名:指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。

2、与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 年 月 日 目 录1 系统概述11.1 系统总体设计目标功能及要求12 系统总体设计121 系统原理简介122系统设计方案23 系统硬件电路设计231系统硬件电路232 单片机简述333键盘电路34系统的软件设计541软件设计思想542程序各模块设计543各模块的软件程序设计544 密码验证方案比较745实物连线图85系统调试85.1硬件问题调试95.2软件问题调试9结 论10参考文献

3、11附录 系统程序12 系统概述1 系统总体设计目标功能及要求本次课设由MCS-51单片机构成核心控制系统,整个系统由主控部分、键盘显示控制部分、执行部分三部分组成,通过密码的核对完成自动存包取包过程。第一部分:CPU核心控制部分,由单片机MCS-51、复位电路、时钟电路等构成,是整个系统的核心。第二部分:键盘显示控制部分。用2个LED显示器和24个按键进行管理,LED数码管用于显示柜的号码和当前状态,24个按键分别为16个数字键和8个功能键。通过这些键盘,用户就可以完成所有的操作。第三部分:执行机构部分。它是通过MCS-51单片机的并行口控制8个发光二极管的状态(亮灭)来模拟柜子的存包取包的

4、过程。软件部分主要采用我们自己设定的一种与柜的号码相关联的算法由顾客输入密码并存储,而密码的设置、核对过程就对应存包、取包的过程。 本系统具有如下特色:(1)操作简单。(2)顾客可以自行输入4位密码(3)利用软件设定密码而不是硬件,使得硬件更为简洁、可靠、稳定。2 系统总体设计21 系统原理简介电子存包柜由电子电路和机械两部分组成。本设计的存包柜主要实现电子电路方面的功能,它可以通过单片机完成密码的设定、密码的确认以及用发光二极管模拟柜子的开闭状态等功能。从硬件上看,它由部分组成,分别是:LED数码管显示器,用于显示相应的信息;MCS-51单片机是整个电路的核心部分,其中振荡电路为CPU产生赖

5、以工作的时序,复位电路使CPU与系统中的其他部件处于一个确定的初始状态;还有键盘部分,键盘由LAB8000实验箱提供,以及电源部分。22 系统设计方案在电子存包柜电路的设计中,控制方法是核心技术。方案一:采用数字电路控制。采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了12个用户输入键,其中只有10个是有效的密码按键,一个确定键和一个清除键;如果用户输入密码的次数超过指定次数(若用户觉得不便,还可以修改)电路将在10秒后发出报警声,电路将锁定键盘,防止他人继续非法操作。方案二:采用一种是用以MCS-51单片机为核心的单片机控制方

6、案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储甚至添加遥控控制功能。存包柜电路包含:键盘输入、密码检测、开锁电路、执行电路、显示电路。相比较及要求规定,本次题目采用方案二设计实现3系统硬件电路设计31 系统硬件电路硬件电路以MCS-51单片机为核心,矩阵键盘作为输入,显示屏为LED显示器,发光二极管模拟存包箱柜。硬件电路的系统方框图,如图1所示:MCS-51矩阵键盘LED显示器发光二极管PC控制电路图1 系统方框图32 单片机概述 8051单片机:8051单片机最早由Intel公司推出,其后,多家公司购买了8051的内核,使得以80

7、51为内核的MCU系列单片机在世界上产量最大,应用也最广泛,有人推测8051可能最终形成事实上的标准MCU芯片.33键盘电路键盘按结构的不同可分为独立式按键键盘和行列式键盘两类,每类按译码方式的不同又分为编码式和非编码式两种。单片机中一般使用的都是用软件来识别和产生键代码的非编码键盘。行列式键盘的编码方式有静态和动态两种。静态接口主要由一个行编码器和一个列编码器构成;动态接口可用计数器、译码器和数据选择器来构成。一般在小型仪器仪表和控制系统中,使用较多的是行列式和独立式的非编码键盘;如果系统要求实现多键同时按下的处理,则用非编码独立方式较为合适。本系统主要是采用了常用的矩阵式键盘,工作方式采用

8、的是外部中断扫描,所中断式键盘扫描原理是:当有键按下将会触发一个中断源,提醒处理器进行键值扫描查询。键盘的中断方式一般有定时中断和外部中断两种,本系统采用的是外部中断INT0。单片机先让行线输出低电平,当有键按下时列线电平不全为高,四输入与门输出端产生下降沿,将触发外部中断INT0,单片机进入中断后先延时去抖动,再扫描查寻键盘,读出键值,然后处理相应的键值处理子程序,无键按下则不进入中断,单片机不扫描,从而节约了大量的资源。键盘电路设计流程图及键盘电路图如下:图2 键盘输入子程序流程图 图3 键盘电路连线路4 系统的软件设计4.1软件设计思想: 系统运行时,主程序调度LED显示器先进行程序初始

9、化,若有人按下“存包键”时先由随机数模块产生一个随机数保存在单片机内部数组中,并将产生的密码显示在LED显示器上,一段时间后显示数据消失,密码显示的同时系统也将所要打开的箱子号显示在LED并发一个触发信号使对应的箱子号打开。存包的过程也就此结束。当有取包时必然先要输入存包时所显示的密码,输入密码时运行键盘扫描模块扫描所输入的按键值并按下“取包键”,假如输入的密码是正确的,系统将通过LED显示所输入的密码是正确的并且系统将打开你存包时所打开的箱子。42程序各模块设计本系统由四个程序模块和一个主程序组成,四个程序模块分别为密码设定模块、存取模块、LED显示模块、键盘扫描模块组成。43各模块的软件程

10、序设计(1)密码设定:下图为随机模块的程序框架。开始设定密码保存密码返回 图4随机模块程序框图 (2)LED显示模块 开始延时40ms功能设置显示开关控制延时1ms延时1ms 清显示延时10ms进入模式设置初始化结束 图 5 LED工作框图(3) 存包过程无键按下返回主程序并保存箱号返回主程序并保存密码Y有键按下开始LCD初始化键盘扫描存包键按下?主程序设定密码打开箱子显示箱号显示正常信息(4)取包过程箱子打开后提示信息过后返回主程序并删除密码和对应的箱号YN四位密码输入有键按下无键按下主程序键盘扫描密码正确?打开对应箱子LED显示器提示打开信息显示正常信息图7取包流程图44密码验证方案比较当

11、键盘输入密码时,输入的数如何与内部产生的密码进行比较是一个需要解决的问题。因为内部产生的是一个4位数密码。这也就有了两种方案来解决这个问题。(1)先将内部生成的4位数密码转化成4个个位数的数字密码,并将其保存在数组 中。将输入的密码保存在另一个数组中。最后再对这两个数组的元素进行比较,如有错误返回主程序进行错误提示,若是正确的就将执行后续的程序。 (2)将输入的四个数进行乘计算得到一个四位数密码。与系统产生的四位数密码进行比较,如有错误返回主程序进行错误提示,若正确就执行后续的程序。4.5 实物连线图图8 LAB8000连线图注释:KEY/LED连接CS0;P1.0-P1.7连接L0-L7.系

12、统调试本系统的调试主要分为硬件调试、软件调试等两大部分。经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本设计成功的关键。首先应对电路板表面进行检查,对焊接后的电路板的所有连接线仔细检查。通过目测查出一些明显的安装及连接错误并及时排除。其次用万用表测量,主要是测量目测是怀疑通断的情况,尤其是要测量电源与地之间是否短路。再次是加电检查。开启电源

13、后,检查芯片的电源电压是否正确,也可用手触摸,是否有明显发烫,所遇芯片均未发现异常,可进入下一步调试。调试中遇到的问题及解决方法51硬件 (1)LED显示器无法显示:把复位脚误接在地端而使LED显示器一直不停的在复位,把接线改过来从而使显示屏正常工作。(2)在电路的调试过程中,发现LED显示器能正常发光,而在有按键按下时,显示屏上却没有显示相应的信息,发光二极管也不能正常工作,后通过仔细检查电路,发现单片机与键盘连接线路有问题,随即改正过来后,电路工作正常。52 软件(1)定义出错:产生的现象是有密码产生但无法检测到输入密码。经过仔细检查曾变量定义错误(误将存储密码变量unsigned int

14、定义成unsigned char ):因为 unsigned int 无符号短整型数说明。简写为unsigned int, 字长为2字节共16位二进制数, 数的范围是0 65535。而 unsigned char 字符在计算机中以其ASCII码方式表示, 其长度为1个字节, 有符号字符型数取值范围为-128127, 无符号字符型数到值范围是0255。因此在Turbo C语言中,字符型数据在操作时将按整型数处理, 如果某个变量定义成char, 则表明该变量是有符号的, 即它将转换成有符号的整型数。使输入的数字无法转换为一个4位数。使得无法与内部存储的数进行密码验证,故无法打开箱子。 (2)LED

15、显示器无法显示:初始化程序出错:按初始化顺序时延时时间没有达到要求。因为延时时间还没达到内部初始化需求,上一步的初始化过程还没有结束就进行了下一步初始化过程,这样即跳过了上一步的初始化程序,这样必然导致系统初始化失败。结 论在本系统中,基本模拟了超市存包的功能。用MCS-51单片机为核心CPU进行系统任务调度,内部的随机数模块、LED显示器液晶模块、箱子模拟模块和键盘输入模块通过系统主程序来调度实现系统所需要的功能。通过本次设计了解了51系列单片机的具体使用,比如寄存器、定时器、RAM、ROM。加深了对LED显示器的使用,特别是在调试LED显示器的初始化程序时,具体了解了初始化程序有哪些步骤且

16、延时也对初始化有着相当重要的关系。也加深了对发光二极管、矩阵键盘等常规元件的使用。由于时间等各个因素的影响本系统也有着一些缺点,比如安全性有待加强。 参考文献1 谢维成.单片机原理与应用及C51程序设计M.北京:清华大学出版社.2006:169-1812 求是科技.单片机典型模块设计实例导航M.北京:人民邮电出版社.2004:117-1353 马家辰.MCS-51单片机原理及接口技术M.哈尔滨:哈尔滨工业大学出版社,1998:112-1544 马鸿文.基于AT89C51单片机的自动存取柜的设计与实现B.单片机开发与应用,2005.95 卢敏生、卢恽.一个廉价的存包柜电脑控制装置B.苏州大学工学

17、院、苏州职业大学,19996 黄石红.双子系统在电子存取柜中的应用B.微计算机信息,2003.97 常喜.微型打印机在单片机系统中的应用B.吉林师范大学信息技术学院.20048 黄湖剑,梁楚樵.单片机与微型打印机的接口设计A.武汉理工大学信息工程学院.20069 梁金千,张跃.在计算机上产生真随机数的探讨D.计算机工程.200310 李少芳.在C/ C + + 语言中如何自动生成随机密码D.福建电脑.200311 赵雪峰.一种伪随机数生成算法的研究与实现A. 电脑学习.200512 刘西玲.MCS-51系列单片机与微型打印机的接口设计D.天水师范学院学报.2004附录(系统程序)#includ

18、e#include #define uchar unsigned char xdata unsigned char dat _at_ 0x8004;xdata unsigned char key _at_ 0x8001;xdata unsigned char led _at_ 0x8002;sbit L1=P10;sbit L2=P11;sbit L3=P12;sbit L4=P13;sbit L5=P14;sbit L6=P15;sbit L7=P16;sbit L8=P17;int ff,f1,f2,f3,f4,f5,f6,f7,f8;uchar a1,a2,a3,a4,a5,a6;int

19、 count;uchar success;unsigned int K=240;code unsigned char ledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;code unsigned char keytable= 0x16,0x15,0x14,0xff, 0x13,0x12,0x11,0x10, 0x0d,0x0c,0x0b,0x0a, 0x0e,0x03,0x06,0x09, 0x0f,0x02,0x05,0x08, 0x00,0x01,0x04,0x07;unsigned char pass16;unsigned

20、char passbuf16;code unsigned char sword16=0x00,0x01,0x02,0x03,0xff;uchar pasword94;void delay(int a); /键盘void ledoff();void system();unsigned char testkey() led = 0; return (key&0x0f);unsigned char getkey(int test,int success) int pos; int i; int k; if(test=0) while(!testkey() ledoff(); i=6; pos=0x2

21、0; do led=pos; pos=1; k=key&0x0f; while(-i!=0)&(k=0); if(k!=0) i*=4; if(k&2) i+=1; else if(k&4) i+=2; else if(k&8) i+=3; led=0; do delay(4);while(testkey(); return(keytablei); else return(0xff);void setpassword() unsigned char i; for(i=0;i16;i+) passi=getkey(0,0); if(passi=0xff) break; void delay(in

22、t a) int i=0,j=0,q=0; for(;ia;i+) for(;ja;j+) for(;qa;q+) void ledoff() led=0x02; dat=ledmapsuccess/10; delay(8); led=0x01; dat=ledmapsuccess%10; delay(8); void system()int q,x;x=0;K=240;while(!testkey() ledsys();for(;1;)for(q=0;q16;q+) passbufq=getkey(1,0); if (passbufq=0xff) break;q=0;while(swordq

23、!=0xff&q16) if(swordq!=passbufq) break; q+;if(swordq=0xff) K=240; break; void delay2() /延时int i,j;for(i=0;i100;i+)for(j=0;j500;j+);void main(void)int ffff; int i,j; int num; success=0; num=8; EA=1; /开总中断 EX0=1; /允许使用外中断 IT0=1; /选择负跳变来触发外中断 a1=30; a2=30; P1=0x00; /从0开始累计中断次数 f1=f2=f3=f4=f5=f6=f7=f8=0

24、;AA: while(1) memset(0,pass,sizeof(pass);success=num; setpassword();success=0; switch(pass0) case 1: /取 if(num!=8) success=11;setpassword(); switch(pass0) case 1: if(f1) success=1; setpassword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasword1j) ff=0; if(ff) L1=0; f1=0; num+; else goto AA; break; case 2:

25、 if(f2) success=2; setpassword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasword2j) ff=0; if(ff) L2=0; f2=0; num+; else goto AA; break; case 3: if(f3) success=3; setpassword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasword3j) ff=0; if(ff) L3=0; f3=0; num+; else goto AA; break; case 4: if(f4) success=4; setpa

26、ssword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasword4j) ff=0; if(ff) L4=0; f4=0; num+; else goto AA; break; case 5: if(f5) success=5; setpassword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasword5j) ff=0; if(ff) L5=0; f5=0; num+; else goto AA; break; case 6: if(f6) success=6; setpassword(); ff=1; for(j=0;

27、j4&ff;j+) if(passj!=pasword6j) ff=0; if(ff) L6=0; f6=0; num+; else goto AA; break; case 7: if(f7) success=7; setpassword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasword7j) ff=0; if(ff) L7=0; f7=0; num+; else goto AA; break; case 8: if(f8) success=8; setpassword(); ff=1; for(j=0;j4&ff;j+) if(passj!=pasw

28、ord8j) ff=0; if(ff) L8=0; f8=0; num+; else goto AA; break;else goto AA; break;case 2: /存 if(num!=0) success=22; setpassword(); switch(pass0) case 1: if(!f1) success=1; setpassword(); for(i=0;i4;i+) pasword1i=passi; f1=1; L1=1; num-; else goto AA; break; case 2: if(!f2) success=2; setpassword(); for(

29、i=0;i4;i+) pasword2i=passi; f2=1; L2=1; num-; else goto AA; break; case 3: if(!f3) success=3; setpassword(); for(i=0;i4;i+) pasword3i=passi; f3=1; L3=1; num-; else goto AA; break; case 4: if(!f4) success=4; setpassword(); for(i=0;i4;i+) pasword4i=passi; f4=1; L4=1; num-; else goto AA; break; case 5:

30、 if(!f5) success=5; setpassword(); for(i=0;i4;i+) pasword5i=passi; f5=1; L5=1; num-; else goto AA; break; case 6: if(!f6) success=6; setpassword(); for(i=0;i4;i+) pasword6i=passi; f6=1; L6=1; num-; else goto AA; break; case 7: if(!f7) success=7; setpassword(); for(i=0;i4;i+) pasword7i=passi; f7=1; L7=1; num-; else goto AA; break; case 8: if(!f8) success=8; setpassword(); for(i=0;i4;i+) pasword8i=passi; f8=1; L8=1; num-; else goto AA; break; else goto AA;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号