单片机课程设计报告模板_第1页
单片机课程设计报告模板_第2页
单片机课程设计报告模板_第3页
单片机课程设计报告模板_第4页
单片机课程设计报告模板_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计任务书河南科技大学课程设计报告课程名称单片机系统设计题目名称智能门禁系统设计学生学院信息工程学院专业班级自动化134班学 号 131404010410学生姓名生理指导教师 刘磊坡2016 年5月25日第ii页课程设计任务书(指导教师填写)课程设计名称 单设机系统设计 学生姓名 华科 专业班级 自动化134班 设计题目智能门禁系统设计一、课程设计目的1 .培养学生单片机开发应用能力,如何利用键盘输入密码,开启门禁系统。2 .培养学生综合分析问题、发现问题和解决问题的能力。3 .培养学生综合运用知识的能力和工程设计的能力。4 .培养学生理论联系实际的能力。5 .提高学生课程设计报告撰

2、写水平。二、设计内容、技术条件和要求1设计内容智能门禁系统设计主要功能是用单片机实现通过矩阵键盘输入密码,密码正确开门,并led上显示“欢迎光临",密码错误led上提示“密码错误请重新输 入”,三次输入错误报警。(1)设计矩阵键盘模块、定时器模块;(2)设计中断、lcd真块(3) eeprom (at24cxx)的使用2设计要求设计单片机最小系统(包括复位按钮、晶振电路等);绘制实现本设计内容的硬件电路(原理图),系统的组成框图。相应的控制状态表;编写本课程设计内容的软件设计(包含程序流程图和对程序注释)。3总体设计思想(供参考)利用矩阵键盘实现输入;第iii页单片机课程设计任务书i

3、ic通信协议;采用lcd12864乍为显示屏。4设计参考智能门禁系统设计主要包含单片机主控电路、显示电路、键盘电路、 iic通 信协议模块电路等组成。5知识点准备:+5v电源原理及设计;单片机复位电路工作原理及设计(元件选择的依据);单片机晶振电路工作原理及设计(元件选择的依据);lcd显示特性、驱动设计及应用;单片机引脚资源、引脚分配等;单片机汇编语言及程序设计(中断、延时子程序的设计)。三时间进度安排按教学计划规定,单片机原理课程设计总学时为1周,其进度安排和时间大 致分配如下:1 .十二周周一至周二 查阅资料、进行软、硬件初步设计;2 .十二周周三至周四 上机调试,发现问题,解决问题,完

4、善课程设计; 十二周周五3 . 1、何立民.单片机高级教程.总结设计过程,编写课程设计报告书。四 主要参考文献第1版.北京:北京航空航天大学出版社,20012、徐爱钧keil cx v7.0单片机高级语言编程与uvision2应用实践,北京,电子工 业出版社,20043、李全利、仲伟峰、徐军,单片机原理及应用,北京:清华大学出版社,2006五、设计分组及选题安排自动化134班所有学生及自动化133班部分学生。指导教师签字:第iv页2015年05月5日单片机系统设计报告单片机系统设计报告一、设计项目简介随着现代化经济建设和管理的发展,各种酒店、宾馆、写字楼、智能大厦、 政府机关和企事业单位、高级

5、物业管理部门等,对门禁系统的需求正发生着重大 的变化,其核心是对门锁及其开启、关闭实现智能化管理。最近几年随着感应卡技术,生物识别技术的发展,门禁系统得到了飞跃式的 发展,进入了成熟期,出现了感应卡式门禁系统,指纹门禁系统,虹膜门禁系统, 面部识别门禁系统,乱序键盘门禁系统等各种技术的系统, 它们在安全性,方便 性,易管理性等方面都各有特长。在现今社会,随着人们对门禁系统各方面要求 的不断提高,门禁系统的应用范围越来越广泛,因此门禁系统的研发已成为现代 科技领域的一个热门课题。通过本论文的研究,我不仅了解门禁系统的相关知识,还掌握了at89s52系列单片机的性能特点及连接使用,编程方法,以及一

6、些外围芯片的使用及模拟 电路的设计。1.2 门禁系统的现状和发展趋势电子门锁是近几年随着电子计算机技术的提高发展起来的,随之而产生的接触式智能ic卡和密码键盘门禁系统也越来越被人们重视和使用。它改变了以往 如闭路监控、防盗报警等安防产品被动的安防模式,以主动控制替代了被动监视。 从而便构成一个现代化的门禁系统。在安全技术防范领域,具有防盗报警功能的电子密码锁为主的门禁系统逐渐 代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点, 使密码锁无论在技术上还是在性能上都大大提高一步。 随着大规模集成电路技术 的发展,特别是单片机的问世,出现了带微处理器的智能密码锁, 它除具有电子

7、密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具 有很高的安全性、可靠性,应用日益广泛。随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、ic卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡, 只能适用于保密要求的箱、柜、门等。而且指纹识别器若在公共场所使用存在容 易机械损坏,ic卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度 上限制了这类产品的普及和推广。 鉴于目前的技术水平与市场的接收程度, 电子 密码锁是这类电子防盗产品发展趋势的主流。1.3 论文主要设计内容本设计的目的是利用单片机对门禁系统进行控制。 本设计所采用的控制芯片

8、 为at89s52单片机,此芯片功能强大,能够满足设计要求。通过对电路的设计, 对芯片的外围扩展,使得单片机作为控制器核心,对门禁系统的工作过程进行控 制,并用声音将门禁系统的一些工作过程进行提示,使控制过程更人性化。智能 门禁系统设计主要功能是用单片机实现通过矩阵键盘输入密码,密码正确开门, 并led上显示“欢迎光临",密码错误led上提示“密码错误请重新输入”,三次 输入错误报警。二、总体设计co * -23456 7laevcpo.po,po,po,po,po,po,po.)alpse p2.0氾3 口二4 np。i iip£6p2.72.1、 cpu勺选择力3 pl

9、i p12pl 3 pa pj.5 p1.6p1jrsip3.3/rxrp3 1/txdp32/ejp3 3/tntt p3 4/70 p3.5/i1 p3.6/vp3.7/ xiil? xtll vss出 2-1 at89s52 %图第3页单片机系统设计报告姗口厂回.置第一功能区第二功能区符号功能符号功能p039飞2p0. 0"po. 7通用i/o ad0ad7土也址/数据总线(低位)p1npl. 0p1. 7通用i/o p22t28p2. op2,7通用i/o 口a8a15地址总线(高位)p310p3. 0通用i/o rxd串行通信发送口11p3. 1txo串行通信接收口12p3

10、. 2into外部中断013ps. 3iht1外部中断114f3.4to计数器。输入端口15p3. 5t1计数器1输入端口iep3. 6wr外部储存器写使能17p3. 7rd外部储存器读使能我们在这个课题的设计上采用了 at89s52单片机系统,之所以采用单片机系 统是由于成本较低,功能完全可以满足,发展也比较成熟且完善。而 dsp arm 系统虽然科技含量高于51单片机系统,但是其价格昂贵并且发展尚未成熟。因 此,根据我们学的知识和市面上的应用, 经过比较我们选择了技术成熟、 价格便 宜、设计简单、使用方便的单片机平台。2.2、 系统总体设计方案门禁系统主要组成框图如2-2所示:单片机系统设

11、计报告第18页门禁系统主要组成:由cpu复位电路、振荡电路、蜂鸣器电路、门控锁电 路、出门按钮、a/d转换模块模块、感应模块、显示模块等组成。门禁系统的工作原理:智能门禁系统设计主要功能是用单片机实现通过矩阵 键盘输入密码,密码正确开门,并led上显示“欢迎光临",密码错误led上提 示“密码错误请重新输入”,三次输入错误报警。三、硬件设计3.1 时钟电路时钟电路用于产生单片机工作所需的时钟信号, 时序是指令执行中各信号之 间的相互关系。单片机本身就如同一个复杂的同步时序电路, 为了保证同步工作 方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在at89s52单片机内部

12、带有时钟电路,因此,只需要在片外通过xtal1和xtal2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激 振荡器。在at89s52k片内部有一个高增益反相放大器,而在芯片的外部,xtal1 和xtal2之间跨接晶体振荡器和微调电容。at89s52的时钟电路如图3-1所示:c1 30pfclxtal1xtal2用晶振和电容构成谐振电路。电容c1、c2容量在1540pf之间,大小与晶 振频率和工作电压有关。但电容的大小影响振荡器的稳定性和起振的快速性, 为 了提高精度,本实验板采用30pf的电容作为微调电容。在设计电路板时,晶振、 电容等均应尽可能靠近芯片,以减小分布电容,保证振

13、荡器振荡的稳定性。3.2 复位电路复位是单片机的初始化操作,其主要功能是使单片机从0000h单元开始执行 程序。除了进入系统的正常初始化以外,当由于程序运行出错或操作错误使系统 处于死锁状态时,为摆脱困境也需按复位键以重新启动。at89s52e片内部有复位电路,rst引脚是复位信号的输入端高电平有效,复位方式有自动复位和手动 复位两种。本单片机系统采用手动复位方式复位。at89s52的复位电路如图3-2所示:3.3 蜂鸣器报警电路电路组成如图3-4:以q6的基级作为蜂鸣器控制信号的输入端与 p2.6 口相连,主要由蜂鸣器、 三极管9012以及10k的偏置电阻组成。工作原理:当p2.6输出高电平

14、时,q6®止,蜂鸣器电路断开,蜂鸣器不发出声响。当p2.6输出低电平时,q6导通,蜂鸣器电路闭合,蜂鸣器发出声响。若蜂 鸣器发出声响表示密码输入错误。3.4 显示模块陷3-7就借宣泉小电路数码管的八段显示通过200q的电阻外接单片机的p0口,用四个9015的三极管的基极作为控制数码管位显的输入端与p2.0到p2.3相连。主要由四位共阳数码管、四个9015的三极管以及200q的电阻组成。工作原理:由p0 口控制数码管显示数。由p2 口的高低电平控制数码管位显,当p2 口输出低电平时三极管导通,这 时位为高电平即选中显示。3.5 输入模块为了减少按键与单片机接口时所占用的 i/o线的数目

15、,本设计采用矩阵键 盘。在按键比较多的时候,通常采用这样方法。其原理如图3-8:每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键 来连通,利用这种矩阵结构只需要 n条行线和n条列线,即可组成具有nx n个 按键的键盘。在这种矩阵键盘非键盘编码的单片机系统中, 键盘处理程序首先执 行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有 两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。逐行扫描查询法工作原理:1、判断键盘中有无键按下:将全部行线置低电平,然后检测列线的状态。 只要有一列的电平为低,则表示键盘中有键

16、被按下,而且闭合的键位于低电平线 与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按 下。2、判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键 的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为 高电平。在确定某根行线位置为低电平后, 再逐行检测各列线的电平状态。 若某 列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。四、软件设计软件设计分为5个模块,lcd显示屏模块,按键模块,密码模块,延时子程 序模块,比较子程序模块。按键模块主要负责键入用户名,还有密码,密码模块 就是可以设置密码的地方,通过比较模块的对比,判别用户名与

17、密码是否一致,一致则在显示屏上显示“ open,如果用户名与密码不一致则显示“ error如果连输入三次错误密码则延时程序将把门禁系统在30秒内无法再次输入。结束流程图y初始化1吊指示灯 >|密码 |予 open >t 一二. error五、程序清单主函数#include "reg52.h"#include "lcd12864.h”#include "zi.h"#include "key.h"#include "mj.h"int main()init_lcd(); /12864显示屏初始化pp

18、1:clr_scr();show_logo();while(1)user_load();goto pp1;门禁运行程序#include <reg52.h>#include <string.h>#include "key.h"#include "lcd12864.h”#include "zi.h"#include "mj.h"uchar mj_user口 = "1906"uchar mj_mima口 = "123456”;/延时函数static void delay(uns

19、igned int t)for(;t!=0;t-);产* 函数名称:void user_load(void)* 函数功能:用户登录一* 入口参数:无* 出口参数:无返回* */void show_inputnum(uchar *disbuffer,ucha门enth).uchar get_key;uchar counter = 0;uchar i = 0;while(1)get_key = get_key();if(get_key != 0xff) if(get_key = 'c') 后退键if(counter > 0)counter-;disbuffercounter=

20、'' 修改输入的数else if(get_key = 'e')确认键 break; else/放入缓冲区if(counter < lenth)disbuffercounter+=get_key;保存按键值.for(i=0;i<lenth;i+)if(disbufferi='')disp8_16(6,40+8*i,&zf(10)*16);elsedisp8_16(6,40+8*i,&zf(disbufferi-'0')*16);void show_logo(void)显示主页面 loge.uchar i;

21、cs1 = 1;cs2 = 0;for(i=0;i<5;i+)fh_disp_x_y(16,16,3,20+i*16,i,hz);关b 州信盈达void user_load(void).uchar user_buffer5=""uchar password7=""uchar i = 0;/输入用户for(i=0;i<2;i+)disp16_16(6,0+16*i,&hz_useri*32);disp8_16(6,33,&zf11*16);show_inputnum(user_buffer,4);clear_buffer();/

22、输入密码for(i=0;i<2;i+)disp16_16(6,0+16*i,&hz_mimai*32);disp8_16(6,33,&zf11*16);show_inputnum(password,6);clear_buffer();比较用户名和密码0)if(strcmp(user_buffer,mj_user) = 0) && (strcmp(password,mj_mima)=clr_scr();for(i=0;i<4;i+) disp8_16(1,48+i*8,&zf_openi*16);) else(clr_scr();for(i=0

23、;i<5;i+)disp8_16(1,48+i*8,&zf_errori*16);)delay(60000);delay(60000);)void clear_buffer(void)(.uchar i =0;for(i=0;i<6;i+) (disp8_16(6,40+8*i,&zf(10)*16);)密码模块函数#include <reg52.h>#include "lcd12864.h"sbit y0=p1a4;/y 轴sbit y1=p1a5;sbit y2=p1a6;sbit y3=p1a7;/static void del

24、ay(unsigned int t)/ 延时函数(for(;t!=0;t-);)/= unsigned char key_scan(void)/获得按键值(.uchar a, key;p1=0xf0;if(!(y0&&y1&&y2&&y3)(delay(200);p1=0xf0;if(!(y0&&y1&&y2&&y3)p1=0xfe; / 0xff;if(!(y0&&y1&&y2&&y3)a=p1;goto ppi;p1=0xfd;if(!(y0&am

25、p;&y1&&y2&&y3)a=p1;goto ppi;p1=0xfb;if(!(y0&&y1&&y2&&y3)a=p1;goto ppi;p1=0xf7;if(!(y0&&y1&&y2&&y3)a=p1;goto ppi;else a=0xff;else a=0xff;ppi: key=a;return key;/uchar get_key(void).uchar k, key;key=0xff;k=key_scan();if(k!=0xff)while(k

26、=key_scan();switch(k)case 0x7e: key='3'break;case 0x7d: key='7'break;case 0x7b: key='b'break;case 0x77: key='f'break;case 0xbe: key='2'break;case 0xbd: key='6'break;case 0xbb: key='a'break;case 0xb7: key='e'break;case 0xde: key='i&#

27、39;break;case 0xdd: key='5'break;case 0xdb: key='9'break;/获得按键编码值/松手检测/ 键码/ 3/ 7/ b/ f/ 2/ 6/ a/ e/ 1/ 5/ 9/ dcase 0xd7: key='d'break;/ 0/ 4/ 8/ c/ 无键按下case 0xee: key='0'break;case 0xed: key='4'break;case 0xeb: key='8'break;case 0xe7: key='c'br

28、eak;default: key=0xff;break;return key;12864显示屏模块程序#include <reg52.h>#include <lcd12864.h>#define uchar unsigned char#define uint unsigned int/*define the register command code*/#define disp_on 0x3f#define disp_off 0x3e#define col_add 0x40#define page_add 0xb8#define start_line 0xc0#defi

29、ne lcdbus p0/打开显小/关闭显示/y轴那一列/总计8行/那一行/mcup0<>lcm产*函数功能:延时函数*参数:unsigned int t代表要延时的时间*/ static void delay(uint t)for(;t>0;t-);/*函数功能:往112864中写操作指令*参数:unsigned char cmdcod次表要显示的8位数据*/void write_com(uchar cmdcode) .rs=0;rw=0;lcd_bus=cmdcode;delay(1);e=1;delay(2);e=0;/*函数功能:往112864中写显示指令*参数:un

30、signed char cmdcod次表要显示的8位数据*/ void write_data(uchar dispdata).rs=1;rw=0;lcd_bus=dispdata;delay(1);e=1;delay(2);e=0;/*函数功能:将112864初始化参数:*/ void init_lcd() .delay(100);cs1=1;cs2=1;delay(100);writ,e_c,om(pisp_off);writ,e_c,om(page_a<dd+0); write_com(start_line+0); writ.e_cfom(col_a,dd+0); writ,e_c,

31、om(pisp_on);clr_scr(); /?2 g delay(1000);产*函数功能:清屏 参数:void clr_scr() */ void clr_scr()uchar j,k;cs1=1;cs2=1;whte_com(page_add+0);write_com(col_add+0);for(k=0;k<8;k+)write_com(page_add+k); for(j=0;j<64;j+) write_data(0x00);/*函数功能:打印一个数组中包含多个16*16的字符*参数:pag代表那页开始;col哪行开始;temp显示的数组*/void disp16_1

32、6(uchar pag,uchar col,uchar temp).uchar j=0,i=0;for(j=0;j<2;j+)for(i=0;i<16;i+)if(col+i) < 64)cs1 = 1;cs2 = 0; elsecs1 = 0;cs2 = 1;write_com(page_add+pag+j); write_com(col_add+(col+i)%64); write_data(temp16*j+i);./*函数功能:打印一个数组中包含多个8*16的字符 *参数:pag代表那页开始;col哪行开始;temp显示的数组*void disp8_16(uchar

33、pag,uchar col,uchar temp口).uchar j=0,i=0;for(j=0;j<2;j+)for(i=0;i<8;i+)if(col+i) < 64)cs1 = 1;cs2 = 0; elsecs1 = 0;cs2 = 1;whte_com(page_add+pag+j);write_com(col_add+(col+i)%64); write_data(temp出*j+i);./x显示宽度/y显示高度void disp_x_y(uchar x,uchar y,uchar page,uchar col,uchar temp口) 一一uchar j=0,i=0;for(j=0;j<y/8;j+)for(i=0;i<x;i+)if(col+i)<64) cs1 = 1;cs2 = 0; else cs1 = 0;cs2 = 1;whte_com(page_add+page+j);write_com(col_add+(col+i)%64);write_data(tempx*j+i);void fh_disp_x_y(uchar x,uchar y,uchar page,uchar col,uint ss,uchar temp)-uchar j=0,i=0;ss = ss*x*y/8;for(j=0;j<y/8;j+)f

温馨提示

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

评论

0/150

提交评论