为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于单片机密码锁课程设计

2011-09-29 15页 doc 1MB 38阅读

用户头像

is_288657

暂无简介

举报
基于单片机密码锁课程设计湖南商学院 湖南商学院 《专业实习》报告 题 目 单片机密码锁 姓 名: Gw 学 号: 007 专 业​​​​​​​​​​​​​​​​​​​: 电子信息工程 班 级: 电信0804班 指导教师: 李清峰 职 称​​​​​​​​​​​​​​​​​​​: 教授 计算机与电子工程学院 2011年9月 目 录 TOC \o "1-3" \u 1 概述 2 1.1 设计前言 2 1.2 设计要求 2 2 设计方案 2 3 硬件电路设计 3 3.1 晶振电路 3 3.2 电源电路 4 3.3 复位电路 4 3.4 上拉电阻 5 3.5 ...
基于单片机密码锁课程设计
湖南商学院 湖南商学院 《专业实习》报告  目 单片机密码锁 姓 名: Gw 学 号: 007 专 业​​​​​​​​​​​​​​​​​​​: 电子信息工程 班 级: 电信0804班 指导教师: 李清峰 职 称​​​​​​​​​​​​​​​​​​​: 教授 计算机与电子工程学院 2011年9月 目 录 TOC \o "1-3" \u 1 概述 2 1.1 前言 2 1.2 设计要求 2 2 设计 2 3 硬件电路设计 3 3.1 晶振电路 3 3.2 电源电路 4 3.3 复位电路 4 3.4 上拉电阻 5 3.5 显示电路设计 5 3.6 单片机电路 6 3.7 主要元器件 6 4 PCB板制作 6 4.1 PCB板制作流程 6 4.2 焊接及测试 7 4.2.1 焊接元器件 7 4.2.2 测试 8 5 软件设计 9 5.1 程序流程图 9 5.2 源程序 11 6 收获与总结 16 参考文献: 17 附录一 电路原理图 18 附录二 PCB电路原理图 18 《专业实习》报告评审 姓 名 郭维 学 院 计算机与电子工程学院 学 号 080910141 专业班级 电信0804班 题 目 单片机密码锁 评 审 意 见 评审成绩 指导教师签名 职称 评审时间 年 月 日 单片机密码锁设计 1 概述 1.1 设计前言 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 1.2 设计要求 设计一个四位密码锁:复位之后,自己设置一个密码之后,当再次输入密码,验证是否正确,正确就显示YES,错误就显示NO,复位之后可重新显示密码。 2 设计方案 设计思路及流程:根据上述功能介绍,密码锁系统可以分为用户密码输入、显示和控制报警3大功能,因此可以键盘模块、显示模块、报警模块、电子锁控制模块和单片机模块。系统模块图如图1所示。 图1 3 硬件电路设计 3.1 晶振电路 晶振电路由2个电容,一个晶振组成,如图2所示。 图2 单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的保持同步。单片机晶振有2个电容的作用:这2个电容叫晶振的负载电容,分别接在晶振的2个脚上和对地的电容,一般在几十皮法。它会影响到晶振的振谐频率和输出幅度。晶振的负载电容=[(Cd*Cg)/(Cd+Cg)]+Cic+C。 3.2 电源电路 图3 3.3 复位电路 复位电路由电容、电阻、复位组成,如图4所示。 图4 复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。基本功能是:系统上电时提供复位信号,制止系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定时间才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机复位参数的选定必须在振荡稳定后保证复位高电平持续时间大于2个机器周期。 3.4 上拉电阻 上拉电阻由8个电阻接在P0脚,如图5所示。 图5 P0口是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。当p0口用来驱动PNP管子的时候,就不需要上拉电阻,因为此时的低电平有效;当P0口用来驱动NPN管子的时候,就需要上拉电阻的,因为此时只有当P0为1时候,才能够使后级端导通。 3.5 键盘电路设计 按键模块采用2×5行列矩阵结构,由2条行线和5条列线构成。按键电路如图6所示。 图6 其中2根I/O接口线(P2.1~P2.2)作为行线,另外5根I/O接口线(P2.2~P2.7)作为列线,按键跨接在行线和列线上,按键按下时,行线和列线发生短路。 软件编程采用线翻转法,该方法要求行线和列线上 都有上拉电阻。由于AT89C51单片机的P2口内部集成了上拉电阻,所以系统未加。第一行按键前两个输入密码,最后一个为确认键 3.6 显示电路设计 显示电路由4个共阴极数码管构成。软件编程时采用动态显示方法,其结构图如图7所示。 图7 数码管其实是由发光二极管组成,有共阴极和共阳极之分,对于共阳极来说,一位数码管由8个二极管组成,他们的阳极接在一起接+5v电源,而各个阴极与某个端口,如p1的8个引脚相连,当某个引脚输出低电平的时候数码管对应的二极管亮。 软件编程时,按照下面的步骤显示字符: (1)首先从P0口输出共阳极字符的段码; (2)然后从位选输出低电平。 3.7 单片机电路 单片机电路主要由单片机、振荡电路和复位电路构成。由于AT89C51内部集成了12MHz的振荡电路,所以系统外部未加。单片机电路图如图8所示。 图8 AT89C51单片机的P0口用于输出显示器段码。P1口的P1.0~P1.5用于6个LED的亮与灭。P2口用于构成行列矩阵键盘。此芯片是ATMEL公司一款低功耗,高性能的CMOS 8位微控制器,具有8K在系统可编程Flash存储器,使该公司高密度非易失性存储器制造,与MCS-51兼容。AT89C51单片机的主要工作特性: ·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz. 3.8 主要元器件 AT89C51芯片、晶振、复位、电阻、电容、数码管、按键、二极管。 4 PCB板制作 4.1 PCB板制作流程 PCB板是连接各个电子元器件,其次是固定元器件。一般的PCB板都是把图纸交给工厂,工厂机器加工,这种方法对板子比较复杂而且加工工艺要求高,需要成批次生产,规模比较大。在这次做电路设计过程中,我们来到公司亲自手工制作。具体步骤如下: (1)设计:把电路原理图设计成印制电路布线图。这需要对绘图软件有非常熟练地应用,目前比较主流的绘图软件有Protel,AD等。设计完成后需要做好电气检测,看设计是否合理,若不合理,就要反复修改,直到觉得设计合格了。 (2)准备覆铜板:覆铜板就是在基板上覆了一层薄薄的铜,厚度各异,在制作过程中,1.6mm的板子就可以了。铜的厚度可以选择稍微薄一点,这样比较好腐蚀,制作起来较快。量好尺寸用切板机或者其他工具把板子剪到合适的尺寸。 (3)热转印电路图形:把设计好的PCB布线图转到覆铜板。A:用激光打印机将设计好的布线图反面打印在热转印纸上;B 处理好覆铜板表面后(就是把板子弄平整,干净,去油污之类的),可将覆铜板放入服饰液中浸泡两三秒中取出后水洗擦干;当然用其他的去污物质擦洗也是可以的。C:将打印好的图纸附到板子表面,贴好固定。D:将贴好图纸的板子放到热转印机上进行热转印。 E:板子冷却后接掉转印纸,然后检查板子上的图形是否有短线或者转印不是太好的地方,如果发现有的话,用油性笔补充好,待完善后准备腐蚀。 (4)腐蚀:首先配置腐蚀液,一般为:三氯化铁、水(1:2)、过硫酸钠、水(1:3),温度在40-50度为宜,将配好的腐蚀液放入塑料盆中,然后将PCB板(有图形面朝上)放入盆内开始腐蚀,腐蚀过程中可反复来回摆动,用毛笔轻轻耍板子,加速腐蚀,待腐蚀得可差不多了即可把板子取出洗干净,烘干。 (5)用钻孔机钻孔:板子上少不了有很多焊盘过孔之类的,这时需要打孔。孔径打下不宜过大,大概比原件管脚直径大过0.3mm左右。打孔可用台式打孔机或手钻。打孔时注意速度不要太快,以免打出毛刺。最后就是表面处理一下板子,使板子看起美观,这样自己制作的一块印制板就算完成了。 4.2 焊接及测试 4.2.1 焊接元器件 领取所需元器件焊接在板子上,焊接过程注意综合考虑各个期间的引脚及接电源的节点的情况,对接线路径进行规划,尽量避免线路的重叠,要求尽量美观实用。焊接固定座槽,注意不要短路和短路,可以准备好电压表在一边变焊接边测试,确保一步步准确无误的进行,以免后面的返工。连接各条线路不要错漏,不要重复。 焊接时,烙铁到鼻子的距离应该不少于 20cm ,由于焊锡丝中含有一定比例的铅,而铅是对人体有害的一种重金属,因此操作时应该戴手套或在操作后洗手,避免食入铅尘。电烙铁使用以后,一定要稳妥地插放在烙铁架上,并注意导线等其他杂物不要碰到烙铁头,以免烫伤导线,造成漏电等事故。 基本操作分为五步:准备施焊,左手拿焊丝,右手握烙铁,进入备焊状态。要求烙铁头保持干净,无焊渣等氧化物,并在表面镀有一层焊锡;加热焊件,烙铁头靠在两焊件的连接处,加热整个焊件全体,时间大约为 1~2 秒钟。对于在印制板上焊接元器件来说,要注意使烙铁头同时接触两个被焊接物;熔化焊料,焊件的焊接面被加热到一定温度时,焊锡丝从烙铁对面接触焊件。注意:不要把焊锡丝送到烙铁头上;移开焊锡,当焊丝熔化一定量后,立即向左上 45 度方向移开焊丝;移开烙铁,焊锡浸润焊盘和焊件的施焊部位以后,向右上 45 度方向移开烙铁,结束焊接。从第三步开始到第五步结束,时间大约也是12s。由于焊接技术的不纯熟以及工具的有限,我们焊接的电路板存在一系列问题。 4.2.2 测试 测试时注意接上电源,不上CPU,电压调为2-2.5V,尽量低点,测电阻。数码管接低电压,大约为2.5V 由于接上拉电阻。 检查焊接是否牢固,是否存在虚焊非线。 焊接完毕检查无误后,装上下载好程序的芯片,接通电源,测试。 测试时要求必须耐心、细心,目标是尽可能早一些找出电路板的缺陷,然后改正,最后达到测试成功的目的。每当遇到不懂的地方就会更进一步认识到自己的不足与知识的欠缺,于是要虚心请教,一切都得从头开始 5 程序设计 #include #define uchar unsigned char #define uint unsigned int sbit p20=P2^0; sbit p21=P2^1; sbit p22=P2^2; sbit p23=P2^3; sbit p24=P2^4; sbit p25=P2^5; sbit p26=P2^6; uchar num[4]={0}; uchar num2[4]={0}; uchar mima[4]={0}; uchar flag=0; uint temp; sbit bell=P3^7; void delay(int n) { uchar j=0; uint k=0; for(j=0;j<100;j++) for(k=n;k>0;k--); } uchar code seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D, 0x07,0x7F,0x6F,0x77,0x7b,0x39,0x5e,0x79,0x73}; void main() { uchar i; p21=0; while(1) { P1=0xfe; P0=seg[num[0]]; delay(5); P1=0xfd; P0=seg[num[1]]; delay(5); P1=0xfb; P0=seg[num[2]]; delay(5); P1=0xf7; P0=seg[num[3]]; delay(5); if(!p22) { delay(10); //延时一段时间,来消去抖动 if(!p22) num[3]++; while(!p22);// 消去抖动 } if(!p23) { delay(10); //延时一段时间,来消去抖动 if(!p23) num[2]++; while(!p23);// 消去抖动 } if(!p24) { delay(10); //延时一段时间,来消去抖动 if(!p24) num[1]++; while(!p24);// 消去抖动 } if(!p25) { delay(10); //延时一段时间,来消去抖动 if(!p25) num[0]++; while(!p25);// 消去抖动 } if(!p26) { delay(10); //延时一段时间,来消去抖动 if(!p26) { for(i=0;i<4;i++) mima[i]=num[i]; } while(!p26);// 消去抖动 flag=1; break; } } if(flag==1) { while(1) { P1=0xfe; P0=seg[num2[0]]; delay(5); P1=0xfd; P0=seg[num2[1]]; delay(5); P1=0xfb; P0=seg[num2[2]]; delay(5); P1=0xf7; P0=seg[num2[3]]; delay(5); if(!p22) { delay(10); //延时一段时间,来消去抖动 if(!p22) num2[3]++; while(!p22);// 消去抖动 } if(!p23) { delay(10); //延时一段时间,来消去抖动 if(!p23) num2[2]++; while(!p23);// 消去抖动 } if(!p24) { delay(10); //延时一段时间,来消去抖动 if(!p24) num2[1]++; while(!p24);// 消去抖动 } if(!p25) { delay(10); //延时一段时间,来消去抖动 if(!p25) num2[0]++; while(!p25);// 消去抖动 } if(!p26) { delay(10); //延时一段时间,来消去抖动 if(!p26) { for(i=0;i<4;i++) { if(num2[i]!=mima[i]) { bell=1; delay(100); break; } } if(i==4) { while(1) { P1=0xfe; P0=seg[5]; delay(5); P1=0xfd; P0=seg[15]; delay(5); P1=0xfb; P0=seg[4]; delay(5); P1=0xf7; } } while(!p26);// 消去抖动 } } } } } 6 收获与总结 通过本密码锁的设计,使我对单片机有了更深的了解。特别是键盘扫描方法,以前只是理论上知识,而本次设计让我有机会去实践了这一知识。本设计只是一个简单的密码锁,还有很多功能可以添加上去,如密码不必必须是5位,少于5位也可以;密码的明码显示等单片机是一门实用很强的技术,要完全掌握它很难,也需要花很多时间。而单片机课程设计不仅是对单片机掌握程度的一个测试,也对单片机的了解有很大作用。我对单片机及附属电路及PCB板子的制作流程有一定了解。提高了自己的动手能力,也深刻明白了自己的不足。我意识到实践的重要性,同时也学到了很多书本上学不到的知识。 这次课程设计的完成,是一个从无到有的过程,经历了兴奋、自信、失落、奋发、所悟、完成几个过程。刚开始做时,以为很难,但后面一步一步下来,查阅资料,老师教导,慢慢懂得一些。一分耕耘,一分收获,有付出才有回报,就在这样的痛苦与快乐的交换中,我学到了知识。 参考文献: 【1】《51单片机C语言应用开发技术大全》龙脉工作室刘坤、宋戈、赵红波、张宪栋编著,人民邮电出版社 【2】《51单片机应用设计与仿真——基于Keil与Proteus》丁明亮、唐前辉 主编,北京航空航天大学出版社 【3】《单片机原理与应用及C51程序设计》唐颖主编,北京大学出版社 附录一 电路原理图 附录二 PCB电路原理图
/
本文档为【基于单片机密码锁课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索