多功能密码锁单片机课程综合实训报告

上传人:公**** 文档编号:509881572 上传时间:2023-01-19 格式:DOC 页数:25 大小:4.64MB
返回 下载 相关 举报
多功能密码锁单片机课程综合实训报告_第1页
第1页 / 共25页
多功能密码锁单片机课程综合实训报告_第2页
第2页 / 共25页
多功能密码锁单片机课程综合实训报告_第3页
第3页 / 共25页
多功能密码锁单片机课程综合实训报告_第4页
第4页 / 共25页
多功能密码锁单片机课程综合实训报告_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《多功能密码锁单片机课程综合实训报告》由会员分享,可在线阅读,更多相关《多功能密码锁单片机课程综合实训报告(25页珍藏版)》请在金锄头文库上搜索。

1、单片机课程综合实训报告 项目名称: 多功能密码锁 系别: 信息系 班级: 电子3111 组别: 28号 组员: 朱煜荣 指导教师: 林志谋 报告日期: 2013 年 5 月23 日 一. 内容要求:1. 预期功能 (1)在没输入密码时显示万年历,并可调.(2)、通过按键来确定输入密码,实现密码锁功能,正确输入密码后有开锁提示;2. 设计方案(1)采用1602液晶 LM016L, AT98C51,行列式键盘。(2)采用1602液晶 LM016L。(3)选用单片机作为系统的核心部件,实现控制与处理的功能。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只读存储器(

2、ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标1,3. 硬件部分: 3.1 电路图:主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。其中矩阵键盘用于输入数字密码,独立按键用于实现可调万年历。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。各模块功能如下: (1)键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能 (2)显示模块:用于完成对系统状态显示及操作提示功能。(3) 复位电

3、路:完成系统的复位。(4) 独立键盘:用于完成可调万年历功能.(5)开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。键盘电路:用P1口组成4*4的矩阵键盘,各键的定义一次为:0、1、2、3、4、5、6、7、8、9、*、#、enetr、del(当密码按错时可以按下该键删除)、unclock(解锁键即三次密码都错了只能按下它进行解锁)调整时间的电路:Tiao是位功能选择,通过选择位来决定万年历的调整,+1、-1是调节功能键。3.2 电路原理说明:开始仿真时,一开始现实年月份时间。本设计主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。开锁电路控制着继电器发光二级管的开锁。程序中

4、设计只有eneter键按下才能进行密码输入等操作。当输出密码正确时,解锁并且红灯亮。当连续按三次错误会被锁定,并且发出警报。此时按下unclock(解锁键,即三次密码都错了只能按下它进行解锁)4.软件部分4.1程序流程图 : 开始初始化Tiao按下否?Enter按下否?NY第几次按下?“+”功能键按下否“-”功能键按下否3秒到否NNYYYNYNY位选择被调数加一被调数减一输入密码密码输入错误?OK!YN显示调后万年历第八次按下结束N 4.2程序设计说明#include#define lcd P2 #define uchar unsigned char #define uint unsigned

5、 int#define no_key 20 /无按键时的返回值sbit rs=P30;sbit rw=P31;/lcd数据命令选择端sbit e=P32;/lcd使能信号端sbit key1=P33; sbit key2=P34; sbit key3=P35; sbit A=P36; sbit key=P37;/开锁信号控制端sbit enter=P13;/该键按下后才能进行输入密码等操作uchar conflag,keyflag=3;uchar jz=20;/键值变量uchar temp1;/用此变量来存储键盘扫描的返回值,以便判断是否有键按下uchar code table06=3,0,3

6、,0,3,0;/初始密码uchar code table96=3,1,3,1,3,1;/初始密码uchar code table1=2013-05-23 w-4;uchar code table2= Time-00:00:00;uchar code table3=Enter please:;uchar code table4=OK!;uchar code table6=ERRO!;uchar code table7=Enter again:;uchar code table8=LOCKED!;uchar code table10=UNLOCKED!;uchar code table11=Can

7、t open!;unsigned char m;uchar num,t0,keynum,hour,min,sec,year,month,day,week; uchar table56;/定义输入密码值存储数组/*函数名称:delay*函数功能:软件延时,时间为z毫秒*入口参数:z延时控制值,值越大,延时越长*出口参数:无*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*函数名称:write_com*函数功能:1602写命令函数,可以用此函数写不同的指令*入口参数:com*出口参数:无*/void write_com(uc

8、har com)rs=0;rw=0;e=0;P2=com;delay(5);e=1;delay(5);e=0;/*函数名称:write_date*函数功能:1602写数据函数,可以用此函数写不同的数据,程序对应的硬件1602的数据口为P2口*入口参数:date*出口参数:无*/void write_date(uchar date)rs=1;rw=0;e=0;P2=date;delay(5);e=1;delay(5);e=0; /*显示位*/ void write_week(uchar dte) uchar shi,ge; shi=dte/10; ge=dte%10; write_com(0x8

9、0+13); write_date(0x30+ge);void write_clock(uchar add,uchar dat) uchar first,second; second=dat/10; first=dat%10; write_com(0x80+0x40+add); write_date(0x30+second); write_com(0x80+0x40+add+1); write_date(0x30+first); void write_nyr(uchar add,uchar dte) uchar shi,ge; shi=dte/10; ge=dte%10; write_com(

10、0x80+add); delay(5); write_date(0x30+shi); write_com(0x80+add+1); delay(5); write_date(0x30+ge); /*函数名称:init*函数功能:初始化函数*入口参数:无*出口参数:无*/void init()uchar hour=3,min=3,year=11,month=5,day=7,week=6; uchar num; e=0;write_com(0x38);/设置16*2显示,5*7点阵,8位数据接口write_com(0x0c);/开显示,不显示光标write_com(0x06);/当读或写一个字符后

11、地址指针加1,且光标加1write_com(0x01);/显示清屏:数据指针、所有显示清0write_com(0x80);/设置数据地址指针for(num=0;num15;num+)write_date(table1num);/LCD显示初始设置时间;delay(5);write_com(0x80+0x40);for(num=0;num14;num+)write_date(table2num);/LCD显示初始设置时间;delay(5);/*定时器初始化*/ TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) if(key1=0) /时钟设置/key1按下 delay(5); if(key1=0) /key1真的按下了 keynum+; while(!key1) /去键抖 TR0=0; /时钟暂停 if(keynum=1) /key1按下第一次 write_com(0x80+0x40+13); write_com(0x0f); if(keynum=2) /key1按下第二次

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号