单片机任务书.docx
- 文档编号:27789757
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:24
- 大小:355.60KB
单片机任务书.docx
《单片机任务书.docx》由会员分享,可在线阅读,更多相关《单片机任务书.docx(24页珍藏版)》请在冰豆网上搜索。
单片机任务书
单片机系统
课程设计
成绩评定表
设计课题:
基于89C51的电子密码锁设计
学院名称:
电气工程学院
专业班级:
自动F1202
学生姓名:
张春雷
学号:
201223910418
指导教师:
李攀峰
设计地点:
31-517
设计时间:
2014-12-29~2015-01-09
指导教师意见:
成绩:
签名:
年月日
单片机系统
课程设计
课程设计名称:
基于89C51的电子密码锁设计
专业班级:
自动F1202
学生姓名:
张春雷
学号:
201223910418
指导教师:
李攀峰
课程设计地点:
31-517
课程设计时间:
2014-12-29~2015-01-09
单片机系统课程设计任务书
学生姓名
张春雷
专业班级
自动F1202
学号
201223910418
题目
基于89C51的电子密码锁设计
课题性质
工程设计
课题来源
自拟
指导教师
李攀峰
主要内容
(参数)
基于AT89C51的电子密码锁,具有按键提示、密码显示、密码出错报警、控制开锁等功能,具体功能如下:
1.密码输入:
用户通过键盘输入正确的密码后,系统自动锁。
2.提示报警:
系统使用不同的声音作为用户不同操作的提示。
3.数码管显示:
系统使用6位字符表示有关信息。
4.电子锁控制:
当用户输入正确密码后,系统开锁;否则,系统闭锁。
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
实验室调试。
第9-10天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
审查意见
系(教研室)主任签字:
年月日
目录
1绪论4
1.1电子密码锁概述4
1.2设计思路及功能4
2总体方案设计5
3硬件电路设计6
3.1电源电路设计6
3.2键盘电路设计7
3.3显示器电路设计8
3.4报警电路设计9
3.5电子锁控制电路设计10
3.6单片机电路设计10
4软件电路设计11
4.1系统主程序设计12
4.2显示子程序设计13
4.3报警子程序设计13
4.4键盘子程序设计13
5调试15
5.1硬件调试15
5.2软件调试15
6总结16
7参考文献17
8附录18
8.1附录1源程序18
8.2附录2电路图25
1绪论
1.1电子密码锁概述
随着科技的发展和社会生活水平的提高,人们对日常生活中安全保险器件的要求越来越高,电子安全密码锁是基于这一要求的保险器件。
目前使用的密码锁种类繁多,如指纹密码锁、红外密码锁、GPS密码锁等,各具特色。
着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。
(如指纹、眼底视网膜等)来控制锁的开启当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。
1.2设计思路及功能
基于AT89C51单片机的电子密码锁,它具有按键提示、输入错误提示、密码显示、密码出错报警、控制开锁等功能,具体功能如下:
Ø密码输入:
用户通过键盘输入正确的密码后,系统自动锁。
Ø提示报警:
系统使用不同的声音作为用户不同操作的提示。
短叫一声表示有按键输入,长叫一声表示密码正确,长叫5s表示密码错误,长叫3min表示连续5次密码出错。
Ø数码管显示:
系统使用6位字符白哦是有关信息。
第一个字符表示功能,P表示等待用户输入开锁密码;O表示系统已经开锁;显示A表示密码多次出错告警。
Ø电子锁控制:
当用户输入正确的密码后,系统开锁;否则系统闭锁,当系统处于开锁状态时,可以通过按键操作,使系统闭锁。
2总体方案设计
根据功能介绍,密码锁系统要完成用户密码输入、显示和控制报警3大功能,因此可分为键盘模块、显示模块、报警模块、电子锁控制模块、电源模块和单片机模块。
系统模块图如图2.1所示。
图2.1系统模块图
各模块设计思路如下:
Ø用户通过键盘模块输入密码和其他功能。
密码键有10个,功能键有3个,一共需要13个按键。
因此,系统键盘采用4x4行列式键盘,可安装16个按键,能够满足需要。
Ø系统只需要显示0~9共10个数字和若干字符,不用显示汉字等信息,所以采用6位LED数码管显示器。
第一个数码管用来显示功能字符,其余5位用于显示密码。
为了简化电路设计,系统采用动态显示方法。
Ø报警模块用来产生报警或提示声音,可以有蜂鸣器构成。
Ø电子锁控制模块用于控制开锁或闭锁。
系统通过继电器控制电子锁,方便用户使用。
本设计电子所部分采用发光二极管代替,当发光二极管亮,表示系统闭锁;当发光二级光灭,表示系统闭锁。
Ø单片机模块采用AT89C51,用于接收键盘输入、控制显示、报警、电子锁等模块。
Ø电源部分接收外部9v输入,产生5v输出,为单片机及其他模块供电。
3硬件电路设计
根据系统各模块的功能,选择合适的集成电路芯片,然后就可进行硬件电路设计。
密码锁硬件电路较为简单,按照系统功能模块分为电源电路、显示电路、报警电路、电子锁电路及单片机电路。
单片机电路是主控电路,接收键盘电路的按键输入,并送显示电路显示;根据输入的按键,控制报警电路是否报警及电子锁电路的开、闭锁。
下面对个电路逐一加以介绍。
3.1电源电路设计
整个电路的芯片使用5v电压,所以电源电路将外部9v的输入电压,稳压后形成5v电压供系统使用。
稳压芯片种类繁多,系统采用线性稳压芯片LM7805CT。
LM7805CT是美国国家半导体公司生产的降压式三端稳压芯片,输入电压范围是7.5~30v,最大输出电流为1A,内部有过热、短路保护电路,需要较少的外接元件,方便使用。
整个系统需要电流不大,系统电源电路图如图3.1所示。
图3.1系统电源电路图
说明:
外部9v电源通过二极管D2接LM7805的1号脚,+5v电源通过3号脚输出,2号脚是地引脚。
输入端和输出端通常接两个电容,一个大电容用于低频滤波,一个小电容用于高频滤波。
本设计C5、C4采用电解电容,容量是25v/100uF。
C6、C7采用0.1uF的独石电容。
D2用于防止外接电源极性接反。
J1用于制作PCB板时预留电源接线端子。
3.2键盘电路设计
按键模块采用4x4行列矩阵结构,由4条行线和4条列线构成。
行线和列线共有你16个交叉点,每个交叉点可放置一个按键,这样共可放置16个按键。
按键电路图如图3.2所示。
图3.2按键电路图
说明:
KEYL0-KEYL3是行线,分别接单片机的P2.0~P2.3;KEYR0~KEYR3是列线,分别接单片机的P2.4~P2.7。
软件编程采用线反转法,但是该方法要求行线和列线都要有上拉电阻。
由于8C51单片机的P2口内部集成上拉电阻,所以系统未加。
S1~S10分别表示0~9数字键,S14表示退格键,S15表示闭锁键,S16表示确认键。
线反转个工作原理。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方法是:
向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。
如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。
方法是:
依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
3.3显示器电路设计
显示电路由6个共阳极LED数码管构成。
软件编程时,采用动态显示的方法,显示电路图如图3.3所示。
图3.3显示电路图
说明:
系统使用PNP三极管Q1~Q6控制LED数码管轮流点亮。
由于单片机复位期间,I/O引脚输出高电平,使用PNP三极管可避免在复位时显示乱码。
R1~R6是三极管的基极电阻,取值1kΩ,R8~R15是LED数码管的限流电阻,取值320Ω.系统使用74LS07驱动LED数码管。
由于有8个引脚要驱动,每个74LS07能驱动6个,所以系统使用2片74LS07(U2,U3)。
动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
3.4报警电路设计
报警电路主要由PNP三极管和蜂鸣器构成。
报警电路图如图3.4所示。
图3.4报警电路图
LS1是一个5v的压电蜂鸣器,当对其1、2号引脚施加5v电压时,便会鸣叫。
由图3.4可知,当ALARMCON输出低电平时,三极管Q7饱和导通,蜂鸣器响;输出高电平时,Q7截止,蜂鸣器停止鸣叫。
通过控制ALARMCON输出低电平的时间长短来控制蜂鸣器长叫或短叫。
蜂鸣器在此设计主要是为了提供按键提醒,通过一个三极管来提供驱动,
蜂鸣器一端接高电平,一端接三极管的发射极,三极管的基极通过一个电阻接
I/O口的P2.3,集电极接地。
当P2.3口送出低电平时,三极管接通,蜂鸣器接通,
发出响声。
3.5电子锁控制电路设计
电子锁控制电路主要由继电器、三极管和发光二极管组成。
电子锁控制电路如图3.5所示。
图3.5电子锁控制电路
继电器线圈的一个接线端接VCC,另一端接NPN三极管Q8的集电极。
Q8的基极通过电阻R17接单片机的引脚。
当LOCKCON输出高电平时,Q8导通,继电器线圈得点,触点闭合,DS1发光,相当于电子锁闭锁;当LOCKCON输出低电平时,Q8截止,继电器线圈失电,触点释放,DS1熄灭,相当于电子锁开锁。
D1是线圈的续流二极管,为感应电动势提供回路,以免损坏三极管。
3.6单片机电路设计
单片机电路主要由单片机、振荡电路和复位电路组成,电路图如图3.6所示。
AT89C51的P0口用于输出显示器段码。
P1口的P1.1~P1.5用于控制LED0~LED5的亮灭。
P2口用于构成行列矩阵键盘。
P3.3用于控制蜂鸣器的鸣叫。
P3.5用于控制电子锁的开闭。
31号引脚接VCC,使得单片机执行片内程序。
4软件电路设计
软件设计主要是对键盘进行扫描,根据按键控制报警电路、电子锁电路,并将结果显示。
因此,整个软件分为按键子程序、显示子程序、报警子程序、电子锁控制子程序及主程序。
Ø按键子程序针对硬件电路中的按键电路,扫描键盘返回用户按键值。
Ø显示子程序针对硬件电路中的显示电路,实现数据的显示。
Ø报警子程序针对硬件电路中的报警电路,实现蜂鸣器鸣叫。
Ø电子锁控制子程序针对硬件电路中的电子锁控制电路,通过控制继电器通断实现LED的亮灭。
Ø主程序通过调用各个子程序,实现系统功能。
4.1系统主程序设计
函数main是系统主程序,调用其他子程序实现系统功能。
主程序流程图如图4.1所示。
函数main调用Ini_System对系统进行初始化,其后程序是一个无限循环程序。
在循环体中,当TimerBit值为1时,即每隔20ms执行一次显示、报警、按键扫描、按键处理等子程序。
图4.1主程序流程图
4.2显示子程序设计
显示子程序通过控制LED数码管电路显示DispBuf[]缓冲区的内容,主要包括填充子程序和显示子程序。
填充子程序负责将显示内容写入DispBuf、PassInBuf缓冲区中,分为以下几个子程序。
Ø函数Fill_Buf:
使用特定字符填充DispBuf、PassInBuf。
Ø函数Fill_Buf_P:
将系统闭锁时的显示信息写入缓冲区。
Ø函数Fill_Buf_O:
将系统开锁时的显示信息写入缓冲区。
Ø函数Fill_Buf_A:
将系统报警时的显示信息写入缓冲区。
填充区子程序显示信息填好后,由缓冲区显示子程序通过LED数码管将其显示,主要包括以下主程序。
Ø函数Disp_led_Sin:
在某个LED数码管上显示一个字符。
Ø函数Disp_led_OFF:
关闭数码管显示。
Ø函数Disp_led_ALL:
将DispBuf缓冲区的内容显示。
具体程序请查看附录1.
4.3报警子程序设计
报警子程序通过控制蜂鸣器鸣叫,实现按键提示音及密码锁错误报警提示音,包括以下子程序。
Ø函数Sys_Speaker:
设置报警时间及报警标志位。
Ø函数Sys_Alarm:
控制蜂鸣器鸣叫。
具体程序请参照附录1.
4.4键盘子程序设计
按键检测子程序负责扫描键盘,生成按键值以及按键去抖动等操作,由以下函数构成。
Ø函数Find_Key:
扫描一次键盘返回按键值。
Ø函数Scan_Key:
负责按键去抖等操作。
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
其程序流程如图4.4所示。
.图4.4键盘扫描流程图
5调试
5.1硬件调试
单片机应用系统的硬件调试和软件调试是分不开的.许多硬件故障只有通过软、硬件联调才能发现,但一般是先排除系统中比较明显的硬件故障后才和软件一起联调。
(1)元器件错误
元器件错误的原因有器件损坏或性能不符合要求,电解电容、二极管的极性接反或集成块装反等。
(2)可靠性差
应用系统可靠性差的原因很多,如内部和外部的干扰、电压纹波系数过大、器件负载过重等均会造成系统的可靠性差。
(3)电源故障
电源故障包括:
电压值不符合设计要求、电源功率不足、负载能力差、纹波太重等。
硬件调试办法:
脱机调试是在加电前,先用万用表等工具,按图纸仔细核对线路是否正确,并对元器件的安装、型号、规格等进行仔细检查,特别是有无走线之间相互短路等。
5.2软件调试
伟福软件中,在“文件\新建文件”中,新建C语言源程序文件,编写相应的程序。
在“文件\新建项目”的菜单中,新建项目并将C语言源程序文件包括在项目文件中。
在 “项目\编译”菜单中将C源文件编译,检查语法错误及逻辑错误。
在编译成功后,产生以 “*.hex”和“*.bin” 后缀的目标文件。
对于模块结构程序.要一个个子程序分别调试。
调试时,一定要符合入口条件和出口条件,调试可用单步运行和断点运行方式,通过检查用者系统的CPU现场情况、RAM的内容和I/O口的状态,检测程序执行结果是否符合设计要求,有无循环错误、有无机器码错误以及转移地址的错误,同时,还可以发现系统中存在的硬件设计错误和软件算法错误。
6总结
通过对该课题的研究,加深对所学知识的理解,提高对课外知识的学习力增强知识的应用能力,提高解决实际问题的能力,培养自我创新意识。
积累实践经验,为以后的发展打下基础,也为以后我们自己在这方面的发展打下基础,并能够在这方面培养自己的兴趣在设计中我们必须首先熟悉和掌握单片机的结构及工作原理,单片机的接口技术及相关外围芯片的外特性,控制方法。
以单片机核心的电路设计的基本方法和技术了解表关电路参数的计算方法。
单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机了解计算机原理与结构的最佳选择。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
随着单片机的广泛应用,将大大促进各领域的技术更新,向自动化、小型化、智能化方向迈进。
而对于我们来说,我们这代人的目标和任务是把这些高科技产品更升一个层次。
7参考文献
【1】:
张迎新.单片微型计算机原理,应用及接口技术.北京:
国防工业出版社。
【2】:
伟福LAB6000系列单片机仿真实验系统使用说明书。
【3】:
阎石.数字电子技术基础.北京:
高等教育出版社。
8附录
8.1附录1源程序
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit buzzer=P3^0;
sbit relay=P3^1;
uchar code table[2]={0x40,0x00 };
ucharkeyword[4]={1,1,1,1}; uchar keycmp[4];
uchar key=0,num=0,flg=0;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
uchar i,j,cs=0x7f;
for(i=num;i>0;i--)
{
P0=table[0];
cs=_crol_(cs,1);
P2=cs;
delay(10);
}
for(j=4-num;j>0;j--)
{
P0=table[1];
cs=_crol_(cs,1);
P2=cs;
delay(10);
}
}
void set()
{
num=0;
display();
flg=1;
}
//==============================
确认键程序
void ok()
{
uchar i=0;
display();
P0=(flg+1);
delay(1000);
if(flg==0)
{
for(i=0;i<4;i++)
if(keyword[i]!
=keycmp[i])
{
alarm();break;
}
if(num==4)
{
relay=0;num=0;
}
}
if(flg==2)
{
num=0;
for(i=0;i<4;i++)
keyword[i]=keycmp[i];
flg=0;
}
if(flg==1)
{
for(i=0;i<4;i++)
if(keyword[i]!
=keycmp[i])
{
alarm();break;}
if(num==4)
{
num=0;
display();//P0=0x07;delay(1000);
flg=2;
}
}
}
//==============================键盘扫描程序
voidkeyscan()
{
uchartemp1,temp2;
P1=0xfe;//令第一列为低电平,检测第1列
temp1=P1;
if(temp1!
=0xfe)
{
delay(5);//去抖
temp2=P1;
if(temp1==temp2)
{
switch(temp2)
{
case0xf6:
if(num<4)
{
key=1;
keycmp[num]=key;num++;display();
}
elsealarm();
break;
case0xee:
if(num<4)
{key=4;keycmp[num]=key;num++;display();}
elsealarm();
break;
case0xde:
if(num<4){key=7;keycmp[num]=key;num++;display();}
elsealarm();
break;
case0xbe:
set();break;
}
}
}
while(temp1!
=0xfe)
temp1=P1;//等待按键释放
P1=0xfd;//检测第2列
temp1=P1;
if(temp1!
=0xfd)
{
delay(5);//去抖
temp2=P1;
if(temp1==temp2)
{
switch(temp2) {
case 0xf5:
if(num<4)
{key=2;keycmp[num]=key;num++;display();}
else alarm();
break;
case 0xed:
if(num<4)
{key=5;keycmp[num]=key;num++;display();}
else alarm();
break;
case 0xdd:
if(num<4)
{key=8;keycmp[num]=key;num++;display();}
else alarm();
break;
case 0xbd:
if(num<4)
{key=0;keycmp[num]=key;num++;display();}
else alarm();
break;
}
}
}
while(temp1!
=0xfd)
temp1=P1;//等待按键释放
P1=0xfb;//检测第3列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 任务书