微机系统综合课程设计超市密码箱的设计与实现_第1页
微机系统综合课程设计超市密码箱的设计与实现_第2页
微机系统综合课程设计超市密码箱的设计与实现_第3页
微机系统综合课程设计超市密码箱的设计与实现_第4页
微机系统综合课程设计超市密码箱的设计与实现_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:微机系统综合课程设计微机系统综合课程设计 课程设计题目:超市密码箱的设计与实现 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要 求;数据不实求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。不予通过。报告和电子数据必须作为实验现象重复的关键依据。 学术诚信声明 本人声明本人声明:所呈交的报告(含

2、电子版及数据文件)是我个人在导师指导 下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以 标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写 过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的 同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢 意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不 及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 年 月 日 目 录 1 系统概述系统概述1 1.1 系统总体设计目标功能及要求系统总体设计目标功能及要求1 2 系统系统总体设计总体设计1 21 系统系统原理简介原理简

3、介1 22 系统设计方案系统设计方案2 3 系统系统硬件电路硬件电路设计设计2 31 系统硬件电路2 32 单片机简述单片机简述3 33 键盘电路键盘电路3 4 系统系统的软件设计的软件设计5 41 软件设计思想软件设计思想5 42 程序各模块设计程序各模块设计5 43 各模块的软件程序设计各模块的软件程序设计5 44 密码验证方案比较密码验证方案比较7 45 实物连实物连线图线图8 5 系统调试系统调试8 5.1 硬件硬件问题调试问题调试9 5.2 软件软件问题调试问题调试9 结结 论论10 参考文献参考文献11 附录附录 系统程序系统程序12 系统概述系统概述 1 1 系统总体设计目标系统

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

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

6、器,用于显示相应的信息;mcs-51 单片机是整个电路的核心部分,其中振荡电路为 cpu 产生赖以工作的时序,复位电路使 cpu 与系统中的其他部件处于一个确定的初 始状态;还有键盘部分,键盘由 lab8000 实验箱提供,以及电源部分。 2 22 2 系统设计方案系统设计方案 在电子存包柜电路的设计中,控制方法是核心技术。 方案一:采用数字电路控制。采用数字密码锁电路的好处就是设计简单。用以 74ls112 双 jk 触发器构成的数字逻辑电路作为密码锁的核心控制,共设了 12 个用 户输入键,其中只有 10 个是有效的密码按键,一个确定键和一个清除键;如果用户 输入密码的次数超过指定次数(若

7、用户觉得不便,还可以修改)电路将在 10 秒后发 出报警声,电路将锁定键盘,防止他人继续非法操作。 方案二:采用一种是用以 mcs-51 单片机为核心的单片机控制方案。利用单片机 灵活的编程设计和丰富的 io 端口,及其控制的准确性,不但能实现基本的密码锁功 能,还能添加调电存储甚至添加遥控控制功能。 存包柜电路包含:键盘输入、密码检测、开锁电路、执行电路、显示电路。 相比较及要求规定,本次题目采用方案二设计实现 3 3 系统硬件电路设计系统硬件电路设计 3 31 1 系统硬件电路系统硬件电路 硬件电路以 mcs-51 单片机为核心,矩阵键盘作为输入,显示屏为 led 显示器, 发光二极管模拟

8、存包箱柜。 硬件电路的系统方框图,如图 1 所示: mcs-51 矩阵键 盘 led 显示 器 发光二极管 pc 控制电路 图1 系统方框图 3 32 2 单片机概述单片机概述 8051 单片机: 8051 单片机最早由 intel 公司推出,其后,多家公司购买了 8051 的内核,使得以 8051 为内核的 mcu 系列单片机在世界上产量最大,应用也最广泛,有 人推测 8051 可能最终形成事实上的标准 mcu 芯片. 3 33 3 键盘电路键盘电路 键盘按结构的不同可分为独立式按键键盘和行列式键盘两类,每类按译码方式 的不同又分为编码式和非编码式两种。单片机中一般使用的都是用软件来识别和产

9、 生键代码的非编码键盘。行列式键盘的编码方式有静态和动态两种。静态接口主要 由一个行编码器和一个列编码器构成;动态接口可用计数器、译码器和数据选择器 来构成。 一般在小型仪器仪表和控制系统中,使用较多的是行列式和独立式的非编码键 盘;如果系统要求实现多键同时按下的处理,则用非编码独立方式较为合适。 本系统主要是采用了常用的矩阵式键盘,工作方式采用的是外部中断扫描,所 中断式键盘扫描原理是:当有键按下将会触发一个中断源,提醒处理器进行键值扫 描查询。键盘的中断方式一般有定时中断和外部中断两种,本系统采用的是外部中 断 int0。单片机先让行线输出低电平,当有键按下时列线电平不全为高,四输入与 门

10、输出端产生下降沿,将触发外部中断 int0,单片机进入中断后先延时去抖动,再 扫描查寻键盘,读出键值,然后处理相应的键值处理子程序,无键按下则不进入中 断,单片机不扫描,从而节约了大量的资源。 键盘电路设计流程图及键盘电路图如下: 开始 软件延时10ms 返回 是否有键闭合 是否有键闭合 确定按键位置 闭合键是否释放开 输入键号a y n y n y n 图 2 键盘输入子程序流程图 图 3 键盘电路连线路 4 4 系统的软件设计系统的软件设计 4.14.1 软件设计思想:软件设计思想: 系统运行时,主程序调度 led 显示器先进行程序初始化,若有人按下“存包键” 时先由随机数模块产生一个随机

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

12、模块的软件程序设计各模块的软件程序设计 (1)密码设定:下图为随机模块的程序框架。 开始 设定密码 保存密码 返回 图 4 随机模块程序框图 (2)led 显示模块 开始 延时 40ms 功能设置 显示开关控 制 延时 1ms 延时 1ms 清显示 延时 10ms 进入模式设 置 初始化结束 图 5 led 工作框图 (3)存包过程 无键按下 返回主程序 并保存箱号 返回主程序 并保存密码 y 有键按下 开始 lcd 初始 化 键盘扫描 存包键按下? 主程序 设定密码 打开箱子 显示箱号 显示正 常信息 (4)取包过程 箱子打 开后 提示信 息过后 返回主程序并 删除密码和对 应的箱号 y n

13、四位密码输入 有键按下 无键按下 主程序 键盘扫描 密码正确? 打开对应箱子 led 显示器提 示打开信息 显示正 常信息 图 7 取包流程图 4 44 4 密码验证方案比较密码验证方案比较 当键盘输入密码时,输入的数如何与内部产生的密码进行比较是一个需要解决 的问题。因为内部产生的是一个 4 位数密码。这也就有了两种方案来解决这个问题。 (1)先将内部生成的 4 位数密码转化成 4 个个位数的数字密码,并将其保存在 数组 中。将输入的密码保存在另一个数组中。最后再对这两个数组的元素进行比 较,如有错误返回主程序进行错误提示,若是正确的就将执行后续的程序。 (2)将输入的四个数进行乘计算得到一

14、个四位数密码。与系统产生的四位数密 码进行比较,如有错误返回主程序进行错误提示,若正确就执行后续的程序。 4.54.5 实物连线图实物连线图 图 8 lab8000 连线图 注释:key/led 连接 cs0; p1.0-p1.7 连接 l0-l7. 系统调试系统调试 本系统的调试主要分为硬件调试、软件调试等两大部分。经过初步的分析设计 后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决, 不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以 节约大量的调试时间。软件编程中,首先完成单元功能模块的调试,然后进行系统 调试,整体上与硬件调试的方法差不多。联

15、机调试是最重要的一部分,同时也是本 设计成功的关键。 首先应对电路板表面进行检查,对焊接后的电路板的所有连接线仔细检查。通 过目测查出一些明显的安装及连接错误并及时排除。 其次用万用表测量,主要是测量目测是怀疑通断的情况,尤其是要测量电源与 地之间是否短路。 再次是加电检查。开启电源后,检查芯片的电源电压是否正确,也可用手触摸, 是否有明显发烫,所遇芯片均未发现异常,可进入下一步调试。 调试中遇到的问题及解决方法调试中遇到的问题及解决方法 51 硬件 (1)led 显示器无法显示:把复位脚误接在地端而使 led 显示器一直不停的在 复位,把接线改过来从而使显示屏正常工作。 (2)在电路的调试过

16、程中,发现 led 显示器能正常发光,而在有按键按下时, 显示屏上却没有显示相应的信息,发光二极管也不能正常工作,后通过仔细检查电 路,发现单片机与键盘连接线路有问题,随即改正过来后,电路工作正常。 52 软件 (1)定义出错: 产生的现象是有密码产生但无法检测到输入密码。经过仔细检查曾变量定义错 误(误将存储密码变量 unsigned int 定义成 unsigned char ):因为 unsigned int 无符号短整型数说明。简写为 unsigned int, 字长为 2 字节共 16 位二进制数, 数的范围是 0 65535。而 unsigned char 字符在计算机中以其 as

17、cii 码方式表示, 其长度为 1 个字节, 有符号字符型数取值范围为-128127, 无符号字符型数到值范 围是 0255。因此在 turbo c 语言中,字符型数据在操作时将按整型数处理, 如果某 个变量定义成 char, 则表明该变量是有符号的, 即它将转换成有符号的整型数。使 输入的数字无法转换为一个 4 位数。使得无法与内部存储的数进行密码验证,故无 法打开箱子。 (2)led 显示器无法显示: 初始化程序出错:按初始化顺序时延时时间没有达到要求。因为延时时间还没 达到内部初始化需求,上一步的初始化过程还没有结束就进行了下一步初始化过程, 这样即跳过了上一步的初始化程序,这样必然导致

18、系统初始化失败。 结结 论论 在本系统中,基本模拟了超市存包的功能。用 mcs-51 单片机为核心 cpu 进 行系统任务调度,内部的随机数模块、led 显示器液晶模块、箱子模拟模块和键 盘输入模块通过系统主程序来调度实现系统所需要的功能。通过本次设计了解了 51 系列单片机的具体使用,比如寄存器、定时器、ram、rom。加深了对 led 显示 器的使用,特别是在调试 led 显示器的初始化程序时,具体了解了初始化程序有 哪些步骤且延时也对初始化有着相当重要的关系。也加深了对发光二极管、矩阵 键盘等常规元件的使用。由于时间等各个因素的影响本系统也有着一些缺点,比 如安全性有待加强。 参考文献参

19、考文献 1 谢维成.单片机原理与应用及c51程序设计m.北京:清华大学出版社. 2006:169-181 2 求是科技.单片机典型模块设计实例导航m.北京:人民邮电出版社. 2004:117-135 3 马家辰.mcs-51单片机原理及接口技术m.哈尔滨:哈尔滨工业大学出版社, 1998:112-154 4 马鸿文.基于at89c51单片机的自动存取柜的设计与实现b.单片机开发与应 用,2005.9 5 卢敏生、卢恽.一个廉价的存包柜电脑控制装置b.苏州大学工学院、苏州 职业大学,1999 6 黄石红.双子系统在电子存取柜中的应用b.微计算机信息,2003.9 7 常喜.微型打印机在单片机系统

20、中的应用b.吉林师范大学信息技术学院. 2004 8 黄湖剑,梁楚樵.单片机与微型打印机的接口设计a.武汉理工大学信息工程 学院.2006 9 梁金千,张跃.在计算机上产生真随机数的探讨d.计算机工程.2003 10 李少芳.在 c/ c + + 语言中如何自动生成随机密码d.福建电脑.2003 11 赵雪峰.一种伪随机数生成算法的研究与实现a. 电脑学习.2005 12 刘西玲.mcs-51 系列单片机与微型打印机的接口设计d.天水师范学院学报. 2004 附录(系统程序) #include #include #define uchar unsigned char xdata unsigne

21、d char dat _at_ 0 x8004; xdata unsigned char key _at_ 0 x8001; xdata unsigned char led _at_ 0 x8002; 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 count; uchar success; unsigned int

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

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

24、6; pos=0 x20; do led=pos; pos=1; k=key while(-i!=0) if(k!=0) i*=4; if(k else if(k else if(k led=0; do delay(4);while(testkey(); return(keytablei); else return(0 xff); void setpassword() unsigned char i; for(i=0;i16;i+) passi=getkey(0,0); if(passi=0 xff) break; void delay(int a) int i=0,j=0,q=0; for(

25、;ia;i+) for(;ja;j+) for(;qa;q+) void ledoff() led=0 x02; dat=ledmapsuccess/10; delay(8); led=0 x01; 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=0 xff) break; q=0; while(swordq!=0 xff q+; if(

26、swordq=0 xff) 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=0 x00; /从 0 开始累计中断次数 f1=f2=f3=f4=f5=f6=f7=f8=0; aa: while(1) memset(0,pass,sizeof(

27、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;j4j+) if(passj!=pasword1j) ff=0; if(ff) l1=0; f1=0; num+; else goto aa; break; case 2: if(f2) success=2; setpassword(); ff

28、=1; for(j=0;j4j+) 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;j4j+) if(passj!=pasword3j) ff=0; if(ff) l3=0; f3=0; num+; else goto aa; break; case 4: if(f4) success=4; setpassword(); ff=1; for(j=0;j4j+) if(passj!=pasw

29、ord4j) 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;j4j+) 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;j4j+) 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;j4j+) 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;j4j+) if(passj!=pasword8j) ff=0; if(ff) l8=0; f8=0; num+; else goto aa; break; el

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论