单片机课程设计报告数字密码锁设计

上传人:仙*** 文档编号:29047009 上传时间:2021-09-24 格式:DOC 页数:28 大小:309.50KB
收藏 版权申诉 举报 下载
单片机课程设计报告数字密码锁设计_第1页
第1页 / 共28页
单片机课程设计报告数字密码锁设计_第2页
第2页 / 共28页
单片机课程设计报告数字密码锁设计_第3页
第3页 / 共28页
资源描述:

《单片机课程设计报告数字密码锁设计》由会员分享,可在线阅读,更多相关《单片机课程设计报告数字密码锁设计(28页珍藏版)》请在装配图网上搜索。

1、湖南大学电气与信息工程学院本科生课程设计题目: 数字密码锁课程:单片机原理专业:测控技术与仪器班级:09级02班学号:12345678姓名:xxxxxxx指导老师: xxxxxxx设计时间: 2012年6月目录1、前言2、实验任务及方案3、硬件原理图4、程序流程图及程序5、使用说明书6、心得体会7、教师评语一、前言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。随着单片机的问世,出现了数字密码锁,其保密性高,使用灵活性好,安

2、全系数高,故受到广大用户的青睐。数字密码锁通常使用ARM和单片机控制,单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的密码锁常使用汇编语言编写程序,数码管做显示器 。但本设计使用移植性及可读性强的C语言编写;同时采用显示清楚、功率消耗小而且寿命长的1602A液晶显示器。从经济实用的角度出发,采用ADUC848单片机设计出一种具有密码设置、报警等功能的数字密码锁,并通过Proteus软件成功地进行了仿真。二、实验任务及方案 1、方案比较方案一:以ADUC848单片机为数字密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A显示器提示程序运行过程和开

3、锁的步骤,利用AT24C02芯片实现掉电存储。方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案。2、方案选择由于利用单片机灵活的编程设计和强大的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。三、硬件原理图1、ADUC848引脚图Pin14:(P1.0P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。若P2、P3、P0口要作为输入,则应往相应引脚写1。Pin5、6:AVDD、AGND,模拟电源输入。Pin7、8:外部参考

4、电压接入,Pin7接AGND。片内DAC有2.5V内部参考,ADC有1.25V内部参考。Pin9、10:(P1.4、P1.5)两路AD输入,可做差分输入,需要设置ADC的寄存器。Pin11、12:(P1.6、P1.7)各200uA激励电流源,可配合RTD等做应用。Pin13:两路AD输入做普通输入时的电压参考端,AD输入电压不能低于此引脚电压。Pin14:片内DAC输出。Pin15:复位引脚。Pin16、17:单片机RS232接口的RXD(P3.0) TXD(P3.1)。Pin18:(P3.2) 外部中断0,用于红外接收和PS/2接口。Pin19:(P3.3)LCD1602,LCD12864A

5、的EN引脚,控制第一位数码管。Pin20、21:DVDD、DGND数字电源输入。Pin22:(P3.4)PS/2接口的data信号。Pin23:(P3.5)LCD1602和LCD12864A的RW。Pin24:(P3.6)LCD1602和LCD12864A的RS。Pin25:LCD12864A的CS1。Pin26:IIC接口时钟信号。Pin27:IIC接口data信号。Pin28:(P2.0)SPI接口时钟信号。Pin29:(P2.1)SPI接口MOSI信号、控制第6位数码管的位码。Pin30:(P2.2)SPI接口MISO信号、控制第7位数码管的位码。Pin31:(P2.3)SPI接口SS信

6、号、控制第8位数码管的位码;P2.03也作为4X4矩阵式键盘的扫描输出信号、步进电机的控制信号、数码管第数码管第6、7、8位位码。但是SPI、4X4矩阵式键盘、步进电机、数码管第6、7、8位功能不能同时实现。Pin32、Pin33:接外部32.768KHz晶振。Pin34、Pin35:DVDD、DGND。Pin36:(P2.4)LCD12864A的CS2。Pin37:(P2.5)内部PWM模块输出,控制红外LED。Pin38:(P2.6)内部PWM模块输出,控制蜂鸣器。Pin39:(P2.7)内部PWM模块的外部时钟输入(也可以用内部时钟)。Pin40:EA,低电平有效,正常使用时拉低。Pin

7、41:PSEN,在此引脚电平为低时按复位键进入debug模式,可以下载和调试程序。Pin42:ALE。Pin47、Pin48:DGND、DVDD。Pin43、44、45、46、49、50、51、52:P0口、LCD1602和LCD12864的数据总线,数码管的段码。2、电源模块原理图如图1.2所示。本学习板共有如下3种供电方式: (1)5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽)。将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第1、2脚(插针1下面两脚)接跳线帽,DVDD直接连接到电源适配器输入端,即为5V电源适配器供电模式。(2)7

8、12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽) 将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第2、3脚(插针1上面两脚)接跳线帽,DVDD连接到稳压芯片7805的输出,而7805的输入端连接到电源适配器输入端,即为712V的电源适配器经7805给学习板供电的模式。(3)USB供电(开关往下拨)。将开关sw4第1、2脚接通(开关往下拨),电源网络DVDD连接到USB电源输入端。对DVDD网络和AVDD网络设了测试点,方便调试。3、RS232串口连接原理图如图1.5所示。图1.5 RS232串口模块该模块中采用maxin公司的max23

9、2作电平转换,为方便调试硬件,对RXD,TXD信号设测试点和LED。4、LCD显示信号连接图如图1.7所示。图1.7 LCD信号连接关键网络名和引脚名解释: (1)DISCTRL04:显示控制信号。(2)D0D7、DB0DB7:数据总线。(3)E:LCD使能信号。(4)RS:数据、指令选择信号。(5)RW:读、写选择信号。(6)CS1、CS2:LCD12864由两部分组成,CS1和CS2为选择信号。板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排针和排母左对齐插入。5、按键输入模块该模块原理如图1.12所示。图1.12 按键模块由于P1口(用于行扫描)内部无上拉电阻,为

10、使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。引脚复用:P2.0P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1P2.3还复用为数码管第5、6、7位位码控制信号。参与复用的一项功能使用时,其他参与复用的功能则不能使用。插针配置: (1)插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0P1.3,列扫描信号为P2.02.3。(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0P1.3。这4个按键为4X4矩阵键盘的左边4个按键。四、程序流程图及程序1、流程图开始系统初始化调用

11、EEPROM密码显示主界面输入密码判断密码锁键盘LED灯闪烁报警开锁返回主界面2、程序模块(1)、主程序void main(void) uchar temp; init(); while(1) if(lockflag) temp=keyscan(); if(temp!=No_key) aa=0; else temp=keyscan(); if(temp!=No_key) if(temp=12) reset(); startflag=1; if(startflag) enter_code(temp);if(temp=13) if(j!=6) fail_an(); else confirm();

12、if(conflag) succeed_an(); else fail_an(); if(temp=10)dipaly_your(); temp=keyscan(); if(temp=11) confirm(); if(conflag) display_new(); enter_code(temp); resavekey(); else fail_an(); if(temp=14) delete(); if(temp=15)timeshow(); (2)、键盘扫描模块#includevoid KeyDelay(unsigned int KeyJsTime);void KeyDelayforti

13、me(unsigned int KeyJsTime);unsigned char keyscan();unsigned char keyscan()static unsigned char KeyHaveFree=1 ;static unsigned int KeyJs=0;unsigned char temp,KeyTemp=0xff;P1&=0xf0; P2&=0xf0; temp=P1&0x0f; if(KeyHaveFree) if(temp!=0x0f) KeyDelay(15000);if(temp=(P1&0x0f) P2|=0x0e; /P2.00 switch(P1&0x0f

14、) case 0x0e:KeyTemp=3;break; case 0x0d:KeyTemp=7;break; case 0x0b:KeyTemp=11;break; case 0x07:KeyTemp=15;break; case 0x0f:break; default:KeyTemp= 0x80;break; P2&=0xf0; P2|=0x0d; switch(P1&0x0f) case 0x0e:KeyTemp= 2;break; case 0x0d:KeyTemp= 6;break; case 0x0b:KeyTemp= 10;break; case 0x07:KeyTemp= 14

15、;break; case 0x0f:break; default:KeyTemp= 0x81;break; P2&=0xf0; P2|=0x0b; switch(P1&0x0f) case 0x0e:KeyTemp= 1;break; case 0x0d:KeyTemp= 5;break; case 0x0b:KeyTemp= 9;break; case 0x07:KeyTemp= 13;break; case 0x0f:break; default:KeyTemp= 0x82;break; P2&=0xf0; P2|=0x07; switch(P1&0x0f) case 0x0e:KeyTe

16、mp= 0;break; case 0x0d:KeyTemp= 4;break; case 0x0b:KeyTemp= 8;break; case 0x07:KeyTemp= 12;break; case 0x0f:break; default:KeyTemp= 0x83;break; KeyHaveFree=0; /LCDPrintNumber(6,11,5,KeyTemp); else KeyJs+; if(KeyJs70) KeyHaveFree=1; KeyJs=66; if(temp=0x0f)KeyHaveFree=1;KeyJs=0; KeyTemp=0xf0; return K

17、eyTemp;(3)、时间模块#include#include#define LCD_Set 0x38 / 0011 1000 #define LCD_Clear 0x01 / 0000 0001 #define LCD_Display1 0x0f / 0000 1111 #define LCD_Display2 0x0c / 0000 1100 #define LCD_Mode 0x06 / 0000 0110 #define LCD_1_Left 0x80 #define LCD_2_Left (0x80+0x40) sbit RS = P36; sbit RW = P35; sbit E

18、 = P33; unsigned char second =50,minite=59,hour=23 ;void Delay1()unsigned char i;for(i = 0;i 30;i+); void Check_Busy()P0 = 0xff; Delay1();RS = 0;RW = 1;E = 1;Delay1();while(P0&0X80);E = 0;RW = 0;P0 = 0X00;void delay_ms(unsigned int ms) unsigned int i,j; for(i=0;ims;i+) for(j=0;j1000;j+); void Write_

19、Command(unsigned char Command) Check_Busy(); RS = 0 ; RW = 0 ; P0 = Command ; E = 1 ; delay_ms(3); E = 0 ; void Write_Data(unsigned char Data) Check_Busy(); RS = 1 ; RW = 0 ; P0 = Data ; E = 1 ; delay_ms(3); E = 0 ; void LCD1602_Init() E = 0;RW = 0;RS = 0; Write_Command(LCD_Set); / Write_Command(LCD

20、_Clear); Write_Command(LCD_Display2); Write_Command(LCD_Mode); / void LCD1602Printfc(unsigned char line,unsigned char address,unsigned char Data) if(line) Write_Command(0xc0+address); Write_Data(Data); else Write_Command(0x80+address); Write_Data(Data); void LCD1602_Display(unsigned char *table1 ) u

21、nsigned char i; Write_Command( LCD_1_Left ); delay_ms(1); for(i=0;i12;i+) Write_Data(table1i); delay_ms(20); void time_view() if(second = 60)second=0;minite +; if(minite = 60)minite=0;hour+; if(hour = 24)hour=0; LCD1602Printfc(1,8,hour/10+0); LCD1602Printfc(1,9,hour%10+0); LCD1602Printfc(1,10,:); LC

22、D1602Printfc(1,11,minite/10+0); LCD1602Printfc(1,12,minite%10+0); LCD1602Printfc(1,13,:); LCD1602Printfc(1,14,second/10+0); LCD1602Printfc(1,15,second%10+0); void Time0Init() TMOD = 0x01; TH0 = 0x3c; TL0 = 0xb0; ET0 = 1; TR0 = 1; EA = 1; void timeshow()LCD1602_Init(); Time0Init(); while(1) time_view

23、(); void time0(void)interrupt 1 static unsigned char time = 0; TH0 = 0x3c; TL0 = 0xb0; time +; if(time = 40) time = 0;second +; 五、使用说明书012345678输入9*#确认删除时间键盘布局如上图所示,图中“#”和“*”键位作为扩展键位,将来可做他用。六、心得体会从基本方案的制定,到硬件电路的选择,最后进行程序调试在此期间我们遇到很多困难,但经过两个人的不懈努力,终于击破了各个难点,达到的所需要的效果。在这次设计中,我们深刻认识到自身的不足缺少实战经验。与此同时,也因

24、为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。由于本次设计时间有限,一些设想没有完全实现,比如说:数字密码锁的网络通信扩展,人机界面智能化等。期待以后有机会对以上设想进行进一步研究践。附录:源程序#include#define uint unsigned int#define uchar unsigned char#define No_key 20 #define lcddata P0 sbit lcden= P33;sbit lcdrs= P36;sbit lcdrw= P35;sbit light= P07;uchar j ; uchar aa; uchar code

25、table= Hello! ;uchar code table1= OK! ;uchar code table2= Enter please: ;uchar code table4= Your password: ;uchar code table5= New password: ;uchar code table6= Wrong! ;uchar code key_table16 = 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15 ;uchar password=0,0,0,0,0,0; uchar save6; uchar conflag ; uchar l

26、ockflag; uchar startflag; void delay(uint z); void wright_com(uchar com); void wright_data(uchar date) ; void init(); void delete(); uchar keyscan() ; void enter_code(uchar t); void confirm(); void succeed_an(); void fail_an(); void lockkey(); void reset(); void display_enter(); void display_your();

27、void display_new();void display_OK();void main(void) uchar temp; init(); while(1) if(lockflag) temp=keyscan(); if(temp!=No_key) aa=0; else temp=keyscan(); if(temp!=No_key) if(temp=12) reset(); startflag=1; if(startflag) enter_code(temp);if(temp=13) if(j!=6) fail_an(); else confirm(); if(conflag) suc

28、ceed_an(); else fail_an(); if(temp=10)dipaly_your(); temp=keyscan(); if(temp=11) confirm(); if(conflag) display_new(); enter_code(temp); resavekey(); else fail_an(); if(temp=14) delete(); if(temp=15)timeshow(); void display_your()uchar num;wright_com(0x80);for(num=0;num16;num+)wright_data(table4num)

29、;void display_new()uchar num;wright_com(0x80);for(num=0;num16;num+)wright_data(table5num);void display_enter() uchar num; wright_com(0x80);for(num=0;num14;num+) wright_data(table2num); void display_OK() uchar num;wright_com(0x80);for(num=0;num16;num+) wright_data(table1num); void display_wrong()ucha

30、r num;wright_com(0x80);for(num=0;num16;num+)wright_data(table6num);void delete() wright_com(0x80+0x40+j); wright_data( ); save-j=0; wright_com(0x80+0x40+j); void reset()uchar num;display_enter();wright_com(0x80+0x40); for(num=0;num6;num+) savenum=0; wright_data( ); wright_com(0x80+0x40); lockflag=0;

31、 conflag=0;j=0;void succeed_an() display_OK(); void fail_an() int a;display_wrong(); lcdrs=0; for(a=0;a=0&t10) if(j=0) wright_com(0x80+0x40) ; wright_data(*) ; else wright_data(*) ; savej+=t; void confirm() uchar k;for(k=0;k=90) aa=0; lockflag=0; void init() uchar num; TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1; TR0=1;lcdrw=0; lcden=0;wright_com(0x38) ; wright_com(0x0c) ; wright_com(0x01) ; wright_com(0x80) ;for(num=0;num0;x-) for(y=110;y0;y-) ;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!