数字式密码电子锁电路课程设计任务书.doc_第1页
数字式密码电子锁电路课程设计任务书.doc_第2页
数字式密码电子锁电路课程设计任务书.doc_第3页
数字式密码电子锁电路课程设计任务书.doc_第4页
数字式密码电子锁电路课程设计任务书.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学protel应用课程设计 课程设计任务书学生姓名: 柯一凡 专业班级: 通信1102 指导教师: 许建霞 工作单位: 信息工程学院 题 目: 数字式密码电子锁电路设计 初始条件:protel软件、pc机和相关的参考书籍如:1. protel99 入门与提高.赵品编著.人民邮电出版社.2000.112. protel99 高级应用.赵品编著.人民邮电出版社.2000.113. protel 99 se电路设计与仿真应用要求完成的主要任务: 1、绘制具有一定规模、一定复杂程度的电路原理图*.sch(自选)。可以涉及模拟、数字、高频、单片机、或者一个具有完备功能的电子电路系统。(注意:电路选择不可过分简单,元件种类(包括电源和信号源)少于5种;或者元件个数少于10个将导致不及格。)2、 绘制相应电路原理图的双面印刷版图*.pcb3、对电路原理图进行仿真,给出仿真结果(如波形*.sdf、数据)并说明是否达到设计意图。(注意:仿真提倡对所绘制的原理图*.sch进行全面仿真,如果不能做到全面仿真成功,则要说明原因,但要完成局部电路的仿真。)时间安排: 序号设 计 内 容所 用 时 间1选择合适的电路1天2用protel绘制相应的电路双面印刷版图,并仿真3天3总结编写课程设计报告1天合 计1周指导教师签名: 2014年 6 月 10 日系主任(或责任教师)签名: 2014年 6 月 10 日 目录 目录 i摘要iabstractii1 设计任务与要求11.1 设计任务11.2 设计要求12 原理分析22.1单片机控制原理22.2模块硬件电路分析22.2.1单片机最小系统22.2.2键盘矩阵32.2.3 lcm1602液晶显示42.2.4声光显示43 电路原理图绘制63.1 dxp绘制电路原理图63.2 dxp绘制pcb图93.2.1 加载网络表93.2.2 pcb板的排版103.2.3 pcb板的布线103.3.4 pcb板的覆铜114 电路仿真及分析135 心得体会156 参考文献16附录17数字式密码电子锁程序源代码(仿真)18 摘要 本系统以stc89c52单片机最小系统为核心,结合矩阵键盘、1602lcd和报警系统组成。系统能完成锁闭状态显示、密码输入错误超次(大于三次)异常,系统锁定声光告警、初始化设置用户密码等基本的密码锁的功能。除上述基本的密码锁功能外,依据实际的情况还可以添加通过超级密码重置密码、键盘背光与通过背光显示密码、系统产生随机密码等扩展空间。protel dxp 6将项目管理方式、原理图和pcb图的双向同步技术、多通道技术、自动布线技术以及强大的电路仿真的技术完美的融合在一起。protel dxp提供了丰富的元件库,包括原理图符号。pcb封装、si模型及仿真模型,可以方便地进行同步修改。这次课程设计主要要求掌握原理电路图设计、pcb设计和仿真。关键词:protel dxp,pcb设计,电子密码锁,stc89c52,液晶显示 abstractthe system stc89c52 microcomputer as the core, combined with matrix keyboards, 1602lcd and alarm system components. system can complete the lock status display, the password input error and ultra (more than three times) abnormal sound and light alarm system lock, initialized to set user passwords, and other basic lock function. in addition to the basic lock function, based on the actual situation can also be added through super password reset your password, keyboard backlight and password through the backlit display, the system generates random passwords for expansion.protel dxp 6 combine project management, the pcb and schematic map of the two-way synchronization technology, multi-channel technology, automatic routing technology and a strong circuit simulation technology together perfectly. protel dxp provides a rich library, including the principle of symbols. pcb package, si model and simulation model can easily synchronize edits. the main demands of the curriculum design master principle circuit design, pcb design and simulation.keywords: protel dxp,pcb design tools,electronic code lock,stc89c52, liquid crystal displayi1 设计任务与要求1.1 设计任务 设计一个以单片机at89c52为主控芯片,结合外围电路,组成电子密码锁。用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。完成密码锁的功能。1.2 设计要求(1) 使用protel制作数字式密码电子锁的电路原理图(2) 使用protel制作数字式密码电子锁的pcb图(3) 使用protuse对数字式密码电子锁电路进行仿真2 原理分析2.1单片机控制原理 本次设计选用单片机stc89c52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的i/o端口,及其控制的准确性,实现基本的密码锁信号判断、状态保存、电平控制的功能。设计从总体可以分为硬件和软件两个部分。在硬件部分中,由单片机最小系统、矩阵键盘、1602液晶显示、声光显示这几个部分,其相关控制如图2-1;在软件部分中,由矩阵键盘键值读取、1602液晶显示函数、延时模块、密码读取模块、密码设置模块、密码比较模块、声光状态模块等几部分组成。单片机最小系统声光显示模块1602液晶显示模块矩阵键盘 图2-1 硬件模块关系2.2模块硬件电路分析2.2.1单片机最小系统此为一个单片机最小系统,其有p0p3 四组i/o口,可以进行相关的电平状态读取与控制操作。开关sw_rst为复位开关,当其接通,单片机rst9复位端至于高电位,满足一定时长后,单片机会进行复位操作,重新开始工作。y1、c1.2、c1.3组成了单片机的振荡电路,为单片机系统提供稳定可靠地时钟信号,协助单片机完成相关操作。header9为一组排阻,座位上拉电阻。由于stc89c52使用串口方式下载程序,因此需要使用max232完成程序下载的处理工作。 图2-2 单片机最小系统原理图 图2-3 串口电路 2.2.2键盘矩阵设计准备使用44键盘,对应的电路如图2-4所示。09输入相应的数字。在输入密码是lr分别实现输入位置的左右移动,b为退格键,c为清除键,清楚当前所有的输入字符,s为功能扩展键,暂时未定义,e为确认键。由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多i/o口。 图2-4 44键盘矩阵2.2.3 lcm1602液晶显示图2-5为1602液晶的引脚分布。1,2为液晶显示供电,3接滑动变阻器改变3的相对电位,调节显示对比度。4,5,6为液晶的控制端,调节工作状态。714为液晶的数据输入端,15、16为液晶背光的电源接口。17,18可以悬空不接。 图2-5 lcm1602液晶显示2.2.4声光显示光显示有红绿两种颜色的发光二极管组成,负极接单片机引脚,正极结一个限流电阻后接地。当单片机输出高电平,其不亮,当单片机输出低电平,二极管点亮。声信号告警有长鸣蜂鸣器与一个三极管、电阻组成,三极管在单片机的控制下驱动蜂鸣器正常工作。长鸣蜂鸣器,在给予有效电平时可以不间断的以一定的频率发出蜂鸣。 图2-6 蜂鸣器工作电路3 电路原理图绘制3.1 dxp绘制电路原理图进入protel dxp 2004后,依次点击工具栏上的file/new/pcb project,新建一个后缀名为prjpcb的工程文件。图3-1 新建prjpcb工程文件接下来在刚建立的prjpcb的工程文件下点击file/new/schematic新建一个后缀名为schdoc的原理图,建立原理图与工程的关联。图3-2 新建原理图在绘制原理图时,protel dxp 2004在工具栏上提供了常用元件的快捷方式,例如电阻、电解电容、瓷片电容以及常用的与、或、非等组合逻辑门,使用起来很方便。如果要使用其他元件则可以使用place/part命令打开元件选择窗口。若使用的是比较基本的元件可以在protel dxp 2004默认提供的元件库miscellaneous devices.lntlib中直接浏览。protel dxp 2004将元件的原理图符号,元件描述、封装号以及si仿真模型都集中在一起显示,使用起来很方便,也在一定程度上避免了protel 99 se中不知道元件封装号的问题。如果需要修改,可以在model name框中自行修改。图3-3 添加元件 如果是寻找不那么常用的元件可以在元件库管理器中选择libraries/search/search libraries命令,再输入元件名称查找。根据电路要求可以在dxp中加载相应的元件库,dxp中带有非常丰富的元件库,并且按照芯片的生产公司的名称分开放置,便于查找。如果没有相应的元件,还可以通过pcb库文件编辑器来自己编辑。图3-4 加载元件库 在依照电路安放好所有元件之后再开始连线。点击工具栏上的place wire图标进行连线操作,将各元件的引脚连接起来。在连线时需要注意导线交叉时是否导通的问题。如图3.5所示,第一条水平导线与竖直导线导通,但在绘图时经常忽略这一点,处理成第二条水平线。所以在画图时应该在连接处用place菜单下的manualjunction工具添加一个电气结点。 图3-5 连线时的结点处理完成所有连线之后,选择file/new/textdocument命令,开启一个数据库文本;再选择project/project options命令设置工程检查参数,在执行project/compile document检查系统错误。如果提示错误则返回修改原理图,如果没有错误,则选择design/netlist for document/protel命令生成网络表。 图3-6 数字式密码电子锁原理图3.2 dxp绘制pcb图3.2.1 加载网络表生成网络表之后,就进入了pcb板绘制的阶段。选择file/new/pcb生成一个后缀为pcbdoc的文件。pcb板分为很多层,主要有top-layer、bottom-layer、mechanical、top overlay、keep-out-layer和multi-layer。按步骤设置pcb板的mechanical物理边界以及keep-out layer电气边界。先执行design/board sharp/redefine board sharp命令,此时光变变成十字形。然后在mechanical层面上划定pcb板的物理边界,最后在禁止布线层(keep-out layer)上面划定电器边界。在正确设置完成pcb板之后,在pcbdoc文件下选择design/import changes from命令加载网络表(或者在schdoc文件下选择design/update pcb document命令),屏幕上显示详细的网络连接信息。点击validate changes按钮可以检查装入的元件封装、电器规则以及元件的网络连接是否正确,如果正确,屏幕上将显示绿色打勾标记。再点击execute changes按钮完成元件网络表的加载。 3.2.2 pcb板的排版 网络表加载完成之后,pcb根据网络表产生预拉线,在屏幕上会出现排列整齐的所有元件以及设置过的pcb板,然后pcb根据预拉线一条一条变为铜膜走线。选定所有的元件拖至pcb板上,执行tools/auto placement/auto placer/cluster placer命令,dxp开始自动排版。一般来说dxp的自动排版后的pcb板已经比较理想了,但是仍然可以手动排版进行进一步美化。 图3-7 pcb手动排版3.2.3 pcb板的布线 在元件排版完毕之后,就可以进入到最后的布线阶段。protel dxp 2004沿袭了protel99 se强大的自动布线功能,不仅布线快速而且合理,通过率很高。我们可以执行auto route/all命令,选择default 2 layer board选项,再点击route all完成双层pcb板的布线。 图3-8 dxp自动布线后的pcb板dxp在完成自动布线之后显示一共布线总数,并且全部成功,至此基于dxp的pcb板设计全部制作完成。3.3.4 pcb板的覆铜选择工具栏上的按钮,将弹出一个对话框,如图3-9所示,在connect to net中选择gnd点击ok,鼠标将变成光标,用光标将需要覆铜的区域圈起来,则得到覆铜后的顶层图,如图3-9所示,在设计工作区的板层标签选中bottomlayer,执行以上相同步骤,得到覆铜后的底层图,如图3-9。 图3-9 覆铜参数设置 图3-10 覆铜后的顶层图4 电路仿真及分析(1) 密码锁开始菜单 图4-1 密码锁开始菜单(2) 密码锁设置初始密码 图4-2 设置初始密码(3) 成功设置密码 图4-3 设置密码成功提示(4) 输入错误提示 图4-4 密码输入错误提示 结论:由此可以看出,此设计的矩阵键盘键值读取,1602液晶显示模块,密码读取模块,密码设置模块比较模块,声光状态模块都能正常工作,设计成功。5 心得体会作为电路设计必须使用的软件,protel dxp被现代电子设计者们广泛的使用,我们作为电子信息工程专业的学习者,理应熟练掌握这种实用性好、专业性强的软件。经过对protel dxp一周的学习和应用,从开始的无法上手,到现在的马马虎虎,虽然不能说做的很好,但是自己看到了自己的进步,从这点上还是很高兴的。本设计从经济实用的角度出发,采用美国atmel公司的单片机at89c52作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路并用c编写主控芯片的控制程序,研制了一款可以多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目的。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点。可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电路,控制报警电路,修改密码等多种功能。可在意外泄密的情况下随时修改密码。保密性强,灵活性高,特别适用于家庭、办公室、学生宿舍及宾馆等诸多场所。与此同时本次课程设计也使我学到了关于protel软件的安装、电子线路原理图的设计、电路原理图元件库文件的设计、电子线路pcb电路板设计、pcb元件封装库设计。但是这些内容对于我们今后的所用是远远不够的。为此,在以后的时间里要进一步的去学习和思考,对protel要有近一步的认识,更好能熟练地掌握各种操作此软件。6 参考文献1 伍时和等数字电子技术基础北京:清华大学出版社,2009.42 张天凡等51单片机c语言开发详解北京:电子工业出版社,2008.63 李东生,许四毛. protel电路设计教程. 北京:电子工业出版社,2010.4 朱定华,蔡苗. protel原理图和印制板设计.北京:清华大学出版社,2011. 5 陈汝全电子技术常用器件应用手册2版北京:机械工业出版社,2006.6 余孟尝数字电子技术基础简明教程.2版北京:高等教育出版社,2007.7 谢自美.电子线路设计.实验.测试.武汉:华中科技大学出版,2006.附录名称型号数量备注单片机芯片stc89c521石英晶振12m1瓷片电容3321054电解电容4.7uf1电位器10k1电阻1k410k110k排阻1led红色1绿色1长鸣蜂鸣器1三极管85501lcd显示模块16021按键开关17自锁开关1排针若干导线若干万用表1电工工具1套数字式密码电子锁程序源代码(仿真)#includereg52.h#include string.h#define lcd_data p0 /lcd的数据口/输入方式设置#define lcd_ac_auto_increment0x06 /数据读、写操作后,ac自动增一#define lcd_ac_auto_decrease0x04 /数据读、写操作后,ac自动减一#define lcd_move_enable0x05 /数据读、写操作,画面平移#define lcd_move_disenable 0x04 /数据读、写操作,画面不动/设置显示、光标及闪烁开、关#define lcd_display_on 0x0c /显示开#define lcd_display_off 0x08 /显示关#define lcd_cursor_on 0x0a /光标显示#define lcd_cursor_off 0x08 /光标不显示#define lcd_cursor_blink_on 0x09 /光标闪烁#define lcd_cursor_blink_off 0x08 /光标不闪烁/光标、画面移动,不影响ddram#define lcd_left_move 0x18 /lcd显示左移一位#define lcd_right_move 0x1c /lcd显示右移一位#define lcd_cursor_left_move 0x10 /光标左移一位#define lcd_cursor_right_move 0x14 /光标右移一位/工作方式设置#define lcd_display_double_line0x38 /两行显示#define lcd_display_single_line 0x30 /单行显示unsigned char code tab44=1,2,3,c, 4,5,6,b, 7,8,9,s, l,0,r,e; /键盘键值表unsigned char input_password9=0,0,0,0,0,0,0,0,0; /临时读入密码数组unsigned char normal_password9=12345678; /密码存储数组unsigned char temp_normal_password9=12345678;/临时设定密码数组unsigned char lock=0,miss=0,key=0;/系统环境变量 分别为锁状态、连续错误次数、读入键值sbit beep=p32;/蜂鸣器控制变量sbit ledr=p34;/开锁指示灯控制变量sbit lede=p36;/闭锁指示灯控制变量sbit lcd_busy=lcd_data7; /lcd忙信号位sbit lcd_rw=p20; /lcd读写控制sbit lcd_rs=p21; /lcd寄存器选择sbit lcd_en=p22; /lcd使能信号*/void lcd_cls(void);void lcd_write_data(unsigned char);void lcd_initial(void);void lcd_set_position(unsigned char);void lcd_prints(unsigned char *);void lcd_printc(unsigned char); voiddidi();/蜂鸣报警模块函数voidverify_password ();/开锁判断模块函数void load();/初始化函数void first();voidread_password ();/读入密码模块函数voidset_password();/设定密码模块函数void delay(unsigned char a);/毫秒延时模块函数unsigned char kbscan(); /键盘扫描模块函数void lcd_check_busy(void) /检测lcd状态 while(1) lcd_en=0; lcd_rs=0; lcd_rw=1; lcd_data=0xff; lcd_en=1; if(!lcd_busy)break; lcd_en=0;void lcd_cls(void) /lcd清屏 lcd_check_busy(); lcd_rs=0; lcd_rw=0; lcd_data=1; lcd_en=1; lcd_en=0; void lcd_write_instruction(unsigned char lcd_instruction) /写指令到lcd lcd_check_busy(); lcd_rs=0; lcd_rw=0; lcd_data=lcd_instruction; lcd_en=1; lcd_en=0; void lcd_write_data(unsigned char lcd_data) /输出一个字节数据到lcd lcd_check_busy(); lcd_rs=1; lcd_rw=0; lcd_data=lcd_data; lcd_en=1; lcd_en=0; void lcd_set_position(unsigned char x) /lcd光标定位到x处 lcd_write_instruction(0x80+x);/*void lcd_go_home(void) /lcd光标归位 lcd_write_instruction(lcd_go_home);*/void lcd_printc(unsigned char lcd_data) /输出一个字符到lcd lcd_write_data(lcd_data);void lcd_prints(unsigned char *lcd_string) /输出一个字符串到lcd unsigned char i=0; while(lcd_stringi!=0x00) lcd_write_data(lcd_stringi); i+; void lcd_initial(void) /初始化lcd lcd_write_instruction(lcd_ac_auto_increment|lcd_move_disenable); lcd_write_instruction(lcd_display_on|lcd_cursor_off); lcd_write_instruction(lcd_display_double_line); lcd_cls();/*function:delay(unsigned char t)*input variables:t0;i-);/*function:kbscan()*input variables:none*return variables:key*usage:将读出的按键保存在全局变量key,并将其当做函数值返回*notes: none*/unsigned char code kbscan() /键盘扫描模块函数 unsigned char hang,lie;if(p1!=0x0f)delay(5);/软件消抖if(p1!=0x0f)/判断是否有按键switch(p1&0x0f)case 0x0e:hang=0;break;case 0x0d:hang=1;break;case 0x0b:hang=2;break;case 7:hang=3;break;/扫描行p1=0xf0;p1=0xf0;switch(p1&0xf0)case 0xe0:lie=0;break;case 0xd0:lie=1;break;case 0xb0:lie=2;break;case 0x70:lie=3;break;/扫描列p1=0x0f;while(p1!=0x0f);key=tabhanglie;/确定按键键值elsekey=0;/无按键return (key);/*function:load()*input variables:none*return variables:none*usage:系统初始化*notes: none*/void load()/初始化函数unsigned char i;beep=1;ledr=0;lede=1;key=0;p1=0xf0;p0=0xff;for(i=0;i9;i+)input_passwordi=0;/系统变量数组清零normal_password9=0;lcd_initial();lcd_set_position(1);lcd_prints(whys electron);lcd_set_position(0x40);lcd_prints( cipher lock);/提示信息lcd显示while(kbscan()=0);/按任意值返回return;/*function:first()*input variables:none*return variables:none*usage:等待清屏函数*notes: none*/void first()while(kbscan()=0);lcd_cls();return;/*function:read_password()*input variables:none*return variables:none*usage:读入通过键盘输入的密码*notes: none*/void read_password()/读入密码模块函数unsigned char i=0;lcd_set_position(0x40);lcd_prints( );for(i=0;i9;i+)input_passwordi=0;/读入密码数组初始化for (i=0;i=0&key0)i-;break; /读入位置左移case r:if(i0;i-)input_passwordi=0;input_passwordi=0;break;/清空读入内容case b:if(i0)i-;input_passwordi=0;lcd_set_position(0x44+i);lcd_printc( );/进行退格操作break;case s: break; /功能键处理default: input_passwordi=key;/有效数字密码保存lcd_set_position(0x44+i);lcd_printc(input_passwordi+);key=0;/键值清零/*function:void set_password()*input variables:none*return variables:none*usage:设置密码锁系统的密码*notes: none*/void set_password()/设定密码模块函数unsigned char i,j;/局部循环、判断变量while(1)lcd_cls();lcd_set_position(1);lcd_prints(set password);lcd_set_position(0x40);lcd_prints( );/提起信息显示read_password();/读入密码strncpy(temp_normal_password,input_password,9);/读入密码保存在临时设定密码数组for(i=0;i9;i+)input_passwordi=0;/读入密码数组初始化lcd_set_position(0x44);while(kbscan()=0);lcd_cls();lcd_set_position(1);lcd_prints(input again);read_password(); /进行设定密码确认j=strcmp(input_password,temp_normal_password)=0;/判断两次密码是否相同for(i=0;i9;i+)input_passwordi=0;if(j)lcd_cls();lcd_set_position(2);lcd_prints(set password);lcd_set_position(0x42);lcd_prints(successfully);strncpy(normal_password,temp_normal_password,9);for(i=0;i9;i+)temp_normal_passwordi=0;

温馨提示

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

评论

0/150

提交评论