单片机电子密码锁课程设计
基于单片机的电子密码锁设计课件
3.5 晶振部分
根据实际情况,本设计中采用12MHZ做为系统的外部晶振,电容取值为20pF。
图3-6 晶振电路原理图
3、硬件电路
3.6 显示部分
为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示LCD1602取代普通的数码管来完成。其显示部分引脚接口如图3-8所示:
基于单片机的电子密码锁设计
1、系统结构分析
图1-1 系统结构框图
本设计系统主要由单片机芯片、电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分显示部分、报警部分、开锁部分组成。
AT 89S51
键盘输入
复位电路
密码存储电路
晶振电路
电源输入
显示电路
报警电路
开锁电路
选用单片机AT89S51作为本设计的主控芯片。 采用矩阵键盘进行功能按键的输入。 外接AT24C02芯片用于密码的存储与修改。 利用LCD1602液晶显示器进行显示。 利用蜂鸣器进行报警工作。
图3-3 键盘输入原理图
3.3 电源输入部分
3、硬件电路
密码锁主控制部分电源需要用5V直流电源供电,其电路如图3-5所示:
图3-4 电源输入电路原理图
3.4 复位部分 根据实际情况选择如图3-6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键。
3、硬件电路
图3-5 电源输入电路原理图
2、方案设计
3.1 存储芯片AT24C02
3、硬件电路
图3-1 AT24C02的电路接线图
3.2 矩阵键盘 采用4*4矩阵式键盘实现密码输入功能。 4*4键盘不但能完成密码的输入,还能作特别功能键使用,比如修改密码功能等。
3、硬件电路
图3-2 矩阵键盘
单片机 电子密码锁设计(全)
《单片机原理及应用》课程设计报告课题名称电子密码锁学院自动控制与机械工程专业电气工程及其自动化班级x x x x学号x x x x x姓名x x x x x时间x x x x x x x x x x x x x x x目录摘要 (2)一、设计任务及要求............... 错误!未定义书签。
1.1、设计任务 ....................... 错误!未定义书签。
1.2、设计要求 ....................... 错误!未定义书签。
二、系统总体结构及工作原理....... 错误!未定义书签。
2.1系统总体结构..................... 错误!未定义书签。
2.2 系统总体结构及电路图............. 错误!未定义书签。
三、各模块电路设计............... 错误!未定义书签。
3.1 AT89C51简介..................... 错误!未定义书签。
3.2 模块电路 ........................ 错误!未定义书签。
四、软件设计..................... 错误!未定义书签。
4.1 主程序流程图 .................... 错误!未定义书签。
4.2、子程序代码 ..................... 错误!未定义书签。
五、调试说明..................... 错误!未定义书签。
六、总结......................... 错误!未定义书签。
七、参考文献..................... 错误!未定义书签。
八、附录源程序源代码清单…………………………错误!未定义书签。
摘要本次设计介绍了基于单片机电子密码锁的设计,该设计硬件主要由AT89C51最小系统、矩阵电路、LCD显示电路、电源电路和报警电路等几部分组成。
软件主要由C语言编程。
该密码锁由单片机技术,通过矩阵电路设置、修改密码、保护密码,并由LCD显示密码输入,从而实现对密码的设置、保护。
单片机电子密码锁设计
单片机电子密码锁设计一、设计背景随着科技的不断发展,传统的机械锁已经不能满足人们对于安全性和便捷性的需求。
电子密码锁具有保密性好、操作方便等优点,逐渐取代了传统机械锁。
单片机作为一种集成度高、功能强大的微控制器,为电子密码锁的设计提供了良好的硬件基础。
二、系统总体设计本电子密码锁系统主要由单片机控制模块、键盘输入模块、显示模块、存储模块和开锁控制模块等部分组成。
单片机控制模块是整个系统的核心,负责处理输入信息、控制各个模块的工作以及进行密码的验证和存储。
键盘输入模块用于用户输入密码,通常采用 4×4 矩阵键盘,可实现数字 0 9 以及确认、取消等功能按键的输入。
显示模块用于显示系统的相关信息,如输入的密码、提示信息等。
常见的显示方式有液晶显示屏(LCD)和数码管显示。
存储模块用于存储设置的密码,以便系统在断电后仍能保存密码信息。
EEPROM 存储器具有掉电不丢失数据的特点,适合用于密码存储。
开锁控制模块在密码验证通过后,控制电磁锁或电机等执行机构完成开锁动作。
三、硬件设计1、单片机选型选择一款合适的单片机是系统设计的关键。
常用的单片机有 51 系列、STM32 系列等。
51 系列单片机价格低廉、开发简单,适合本设计的需求。
2、键盘接口电路采用行列式扫描的方式实现 4×4 矩阵键盘的接口电路。
通过单片机的 I/O 口依次扫描行线和列线,判断按键的按下状态。
3、显示电路如果选择液晶显示屏(LCD),则需要通过单片机的并行接口或串行接口与 LCD 控制器进行通信,实现字符和图形的显示。
数码管显示则相对简单,通过单片机控制数码管的段选和位选信号即可。
4、存储电路EEPROM 存储器通过 I2C 总线与单片机连接,单片机通过发送特定的指令和数据来实现对 EEPROM 的读写操作。
5、开锁控制电路使用继电器或三极管驱动电磁锁或电机,单片机输出高电平或低电平来控制开锁电路的通断。
四、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机内部资源的初始化、显示模块的初始化、存储模块的初始化等。
单片机课程设计报告电子密码锁完整版
单片机课程设计报告电子密码锁HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间:—课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日目录3.总体设计 (2)4密码比较模块 (6) (6) (8) (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。
在keil4软件中编程,系统可实现6位密码的处理,并通过控制步进电机控制密码箱门的电子锁,同时还可以修改改密码。
利用单片机系统制作的密码箱安全性能更高,更易操作且体积小。
关键词:单片机、密码锁、修改密码1.设计要求本实验将实现六位数的电子密码锁。
要求使用4X4 行列式键盘作为输入,并用LCD 实时显示。
具体要求如下:1. 开机时LCD显示“welcome to use”,初始化密码为“123456”,密码可以更改。
2. 按下“10”,开始则显示“Enter Please:”。
3. 随时可以输入数值,并在LCD上实时显示‘*’。
当键入数值时,为了保密按从左到右依次显示‘*’,可键入值为0~9。
4. 按下“13”键,则表示确定键按下,进行密码对比。
如相符则在LCD第一行显示“Open the door!”,同时指示灯亮起并且步进电机旋转一定的角度;如不符,则LCD第一行显示“Wrong password!”,并且蜂鸣器同时提示一下。
单片机课程设计 电子密码锁
第1章设计目的1.利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
2.我们这次的课程设计是以单片机为基础,设计出一个具有一定功能的电子密码锁。
3.掌握一些重要芯片的功能特性及使用方法,并能运用其组合成一个简单的单片机机应用系统。
4.锻炼同学们的动手能力和独立思考的能力,巩固理论知识,加深对课堂内容的理解。
5.培养同学们对单片机的兴趣,通过课程设计调动同学们的积极性,使更多的人将来能在单片机领域有所建树。
第2章设计要求及总体思路2.1设计要求1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密“12345”共5位密码。
2、密码的输入:采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。
在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
3、按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。
2.2 总体思路系统总体设计方案框图如下:图2-1一般而言,要实现相同的功能,硬件复杂的系统其软件一般较简单,而软件复杂的系统其硬件一般相对简单,本着经济性的原则,我们应该尽可能少用硬件,根据这个设计理念和设计要求,本单片机系统的设计思路如下:1)电子密码锁所用的数据的存储和运算用单片机来完。
2)因为没有专用的输入键盘,所以按键输入用计算器输入键盘代替。
按键密码从P3口输入。
3)用六位显示器显示五位密码,显示器选择动态扫描,用P0口作段控,用P2口作位控。
4)开锁信号从P1.1口输出,报警信号从P1.0口输出。
5) 按键分为功能键和数字键,具体如表2-1。
6)输入五位密码后按确认键,系统验证密码是否正确,若密码正确,则产生开锁信号,若接连三次输入错误密码,则产生报警信号。
7) 当错误输入某位密码时,可按删除键进行删除,也可按清零键对所输入的数进行整体清除。
单片机课程设计密码锁设计
单片机课程设计密码锁设计在当今社会,安全问题越来越受到人们的重视,密码锁作为一种常见的安全防护设备,在保护个人财产和隐私方面发挥着重要作用。
本次单片机课程设计的任务就是设计一款基于单片机的密码锁。
一、设计要求本次设计的密码锁需要具备以下功能:1、能够设置和修改 4 位数字密码。
2、输入密码正确时,锁打开,并有相应的指示灯提示。
3、输入密码错误时,有错误提示,且错误次数超过 3 次则报警。
4、具备密码重置功能。
二、系统方案设计1、硬件设计单片机选型:选择 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
输入模块:采用 4×4 矩阵键盘作为密码输入设备,可方便地输入数字和功能按键。
显示模块:选用 1602 液晶显示屏,用于显示密码输入状态、提示信息等。
存储模块:使用 EEPROM 芯片 AT24C02 来存储密码,以保证断电后密码不丢失。
报警模块:当密码输入错误次数超过 3 次时,通过蜂鸣器发出报警声音。
2、软件设计主程序:负责系统的初始化、键盘扫描、密码输入处理、密码验证、显示控制等。
键盘扫描程序:检测矩阵键盘上的按键动作,并将按键值返回给主程序。
密码处理程序:包括密码设置、修改、存储和验证等功能。
显示程序:控制 1602 液晶显示屏的显示内容。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振为单片机提供时钟信号,复位电路用于系统的初始化。
2、矩阵键盘电路由16 个按键组成 4×4 矩阵,通过行线和列线的扫描来确定按键值。
3、显示电路1602 液晶显示屏通过数据总线和控制总线与单片机相连,实现数据的传输和显示控制。
4、存储电路AT24C02 通过 I2C 总线与单片机进行通信,用于存储密码数据。
5、报警电路蜂鸣器通过三极管驱动,当单片机输出高电平时,蜂鸣器发声报警。
四、软件程序设计1、主程序流程系统初始化,包括单片机端口初始化、液晶显示屏初始化、EEPROM 初始化等。
单片机课程设计之电子密码锁
课程设计(综合实验)报告( 2009 -- 2010 年度第二学期)名称:微处理器系统课程设计题目:电子密码锁设计院系:电子与通信工程系班级:电子0702班学号: 0201学生姓名:白羽峰指导教师:张宁设计周数: 1周成绩:日期: 2010 年 7 月单片机课程设计之电子密码锁一、课程设计要求1.通过键盘输入密码。
密码正确与错误进行相应的音乐提示,与液晶显示提示。
3次按下错误密码则锁死,禁止信号输入。
2.通过超级密码(长度为16位)进入密码修改模式,进行密码修正,用户密码长度为8位。
二、实验目的进一步的掌握使用ICC进行编程以及程序调试,熟悉并掌握AVR单片机片上外设功能及其使用,熟练掌握单片机学习板上矩阵键盘、1602液晶、蜂鸣器、EEPROM (AT24C02)等外设的使用以及和单片机间的通信。
三、设计思路利用EEPROM(AT24C02)掉电不丢失的特性设计电子密码锁,先向AT24C02中写入一组数据作为密码(密码设定),然后进入密码输入界面,输入密码并进行密码真伪判别,密码真伪有不同对应的提示,表现在液晶显示和蜂鸣器鸣响上,出现三次密码输入错误则锁死,不能进行任何操作,只能关闭电源重新开始。
四、实验源程序代码如下:#include <>#include <>#include <>#define uchar unsigned char#define uint unsigned int#define LCD_EN BIT(PC3)#define LCD_RS BIT(PC2)//EEPROM控制寄存器位定义:#define EERE 0 //读#define EEWE 1 //写#define EEMWE 2 //总写入#define WWRIE 3 //中断uint add[8]={0x0100,0x0101,0x0110,0x0111,0x1000,0x1001,0x1010,0x1011};uchar sc[16]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38}; uchar title[]={"Code:"};uchar title1[]={"Hint:"};uchar title2[]={"Error!"};uchar title3[]={"OK!"};uchar title8[]={"Hello!I like AVR"};uchar title4[]={"Warnning!"};uchar title5[]={"Super Code:"};uchar title6[]={"Input New Code:"};uchar title7[]={"Set Code:"};uint xians[]={0};uchar key_flag;unsigned data_temp;void_init(void){DDRB=0xff; //定义B口输出PORTB=0xff;}void eeprom_w(uint eeadd, uchar eedata){while(EECR&(1 << EEWE)); //写等待EEAR=eeadd; //设置写入地址EEDR=eedata; //设置写入数据EECR|=(1<<EEMWE); //总写入允许EECR|=(1 << EEWE); //开始写入}char eeprom_r(uint eeadd){while(EECR&(1 << EEWE)); //写等待EEAR=eeadd; //设置读入地址EECR|=(1<<EERE); //读命令return EEDR; //返回数据}void delay_1ms(void){uint i;for (i=0;i<1140;i++);}void delay(uint n){uint i=0;for (i=0;i<n;i++)delay_1ms();}void LCD_Write_half_char(void){PORTC &= 0x0F; //portc0~3=0PORTC |= (data_temp<<4)&0xF0; //send LOW 4bitPORTC |= LCD_EN; //EN端产生一个由低电平变高电平,写LCD delay(2);PORTC &= ~LCD_EN; //EN端产生一个由高电平变低电平,写LCD PORTC &= 0X0F;delay(2);}void LCD_write_char(uint command,uint data){PORTC &= ~LCD_EN;if (command == 0)PORTC &=~LCD_RS; //RS=0 发送命令elsePORTC |=LCD_RS; //RS=1 发送数据data_temp = data;data_temp=data_temp >>4;LCD_Write_half_char();data_temp = data;LCD_Write_half_char();delay(1);}void LCD_init(void)LCD_write_char(0,0x38);delay(1);LCD_write_char(0,0x02);delay(1);LCD_write_char(0,0x28); // 显示模式设置(不检测忙信号) delay(1);LCD_write_char(0,0x08); // 显示关闭delay(1);LCD_write_char(0,0x01); // 显示清屏delay(1);LCD_write_char(0,0x06); // 显示光标移动设置delay(1);LCD_write_char(0,0x0c); // 显示开及光标设置delay(5);}uchar key_read(void){ uchar i;DDRA = 0x0E; //获取列地址PORTA = 0x0E;i = PINA;DDRA = 0xf0; //获取行地址PORTA = 0xf0;i |= PINA;DDRA = 0x00; //输出复位switch (i) //将按键码转换成键值{case 0x7d: return 0x31;case 0xbd: return 0x32;case 0xdd: return 0x33;case 0xed: return 0x34;case 0x7b: return 0x35;case 0xbb: return 0x36;case 0xdb: return 0x37;case 0xeb: return 0x38;case 0x77: return 0x2a;case 0xb7: return 0x39;case 0xd7: return 0x30;case 0xe7: return 0x23;default : return 0x00;delay(10);}}void chush(void){uchar i=0,k,j,temp=0x00,m,n;uchar x[8]={0};uint add1[8]={0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c};DDRC=0xff;PORTC=0x00;LCD_init();LCD_write_char(0,0x80);for(k=0;k<5;k++)LCD_write_char(1,title[k]);LCD_write_char(0,0x80+0x40);for(j=0;j<5;j++)LCD_write_char(1,title1[j]);}void main(void){uchar i=0,k,j,temp=0x00,m,n,l,w=0,y=0,z,v,t=0,dkz;uchar x[8]={0},dec[8]={0},p[16]={0},c[8]={0};uint add1[8]={0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c};uint add2[16]={0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9, 0xca,0xcb,0xcc,0xcd,0xce,0xcf};DDRD=0xFF;PORTD=0xF0;DDRC=0xff;PORTC=0x00;LCD_init();LCD_write_char(0,0x80);for(k=0;k<9;k++)LCD_write_char(1,title7[k]);while(i<8){c[i]=key_read();if(c[i]!=0&&c[i]!=temp){LCD_write_char(0,add2[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}/*delay(2);dkz=PIND;if(dkz==0x70){i=8;}*/}if(i==8){ temp=0;i=0;for(m=0;m<8;m++){void_init();eeprom_w(add[m],c[m]); //将数据写入EEPROM中的单元 PORTB=eeprom_r(add[m]);//读取EEPROM中的数据,送显dec[m]=eeprom_r(add[m]);delay(20);}}while(1){delay(2);dkz=PIND;if(dkz==0xE0){LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(k=0;k<5;k++)LCD_write_char(1,title[k]);LCD_write_char(0,0x80+0x40);for(j=0;j<5;j++)LCD_write_char(1,title1[j]);}x[i]=key_read();if(x[i]!=0&&x[i]!=temp){LCD_write_char(0,add1[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}if(i==8){ temp=0;i=0;for(m=0;m<8;m++){if(x[m]==dec[m]){w++;}}if(w==8){LCD_write_char(0,0x80+0x45);for(n=0;n<3;n++)LCD_write_char(1,title3[n]);PORTD^=BIT(5);delay(100);PORTD^=BIT(5);w=0;delay(200);LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(k=0;k<16;k++)LCD_write_char(1,title8[k]);}else{LCD_write_char(0,0x80+0x45);for(n=0;n<6;n++)LCD_write_char(1,title2[n]);for(l=0;l<6;l++){PORTD^=BIT(5);delay(50);}y++;}}if(y==3){y=0;LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(z=0;z<9;z++)LCD_write_char(1,title4[z]);dkz=PIND;while(dkz==0xF0||dkz==0x70);}delay(2);dkz=PIND;if(dkz==0x70){chush();}else if(dkz==0xB0){LCD_write_char(0,0x01); // 显示清屏 LCD_write_char(0,0x80);for(z=0;z<11;z++)LCD_write_char(1,title5[z]);while(i<16){p[i]=key_read();if(p[i]!=0&&p[i]!=temp){LCD_write_char(0,add2[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}}if(i==16){ temp=0;i=0;for(m=0;m<16;m++){if(p[m]==sc[m]){t++;}}}if(t==16){LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(z=0;z<15;z++)LCD_write_char(1,title6[z]);while(i<8){c[i]=key_read();if(c[i]!=0&&c[i]!=temp){LCD_write_char(0,add2[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}}if(i==8){ temp=0;i=0;for(m=0;m<8;m++){void_init();eeprom_w(add[m],c[m]); //将数据写入EEPROM中的0x0100单元PORTB=eeprom_r(add[m]);//读取EEPROM中0x0100单元的数据,送显dec[m]=eeprom_r(add[m]);delay(20);}}}}}}五、实验心得通过本次课程设计,我对使用ICC进行编程以及程序调试有了进一步的掌握,并且对AVR单片机片上外设功能及其使用有了一个清晰的了解,较熟悉的掌握了单片机学习板上矩阵键盘、1602液晶、蜂鸣器、EEPROM(AT24C02)等外设的使用以及和单片机间的通信。
单片机电子密码锁课程设计
单片机电子密码锁课程设计一、设计要求和条件1.1 设计要求依照单片机开发板所提供的元件特性和硬件电路,编写相关的程序,通过实验开发板实现电子密码锁在LCD1602上显示的功能。
1.搭建proteus仿真电路图平台,模拟单片机要实现的功能;2.焊接单片机系统开发板;3.编写程序,实现密码锁相关功能;4.下载并调试程序,实现密码锁的具体功能。
1.2 设计目的1.熟练把握KEIL软件的使用方法;2.熟练把握PROTEUS软件的使用方法;3.把握单片机I/O接口的工作原理;4.把握中断系统的工作原理;5.把握液晶LCD1602的工作原理及编程方法;6.把握蜂鸣器的编程使用;7.把握行列式键盘的工作原理及编程使用方法;8.把握单片机的ISP下载使用方法。
1.3 功能概述本设计是基于单片机的密码锁设计方案,依照要求,给出了该单片隐秘码锁的硬件电路和软件程序,同时给出了硬件设计方案、软件流程图、C 语言源程序及详细注释等内容,由于单片机实验板上的矩阵键盘为3*3的,那么规定0-5号键为数字键,6-8号键为功能键,其中该密码锁的具体功能介绍如下:(1)按〝8〞号键那么输入密码,初始密码为012345,在LCD1602上显示密码值为〝******〞〔密码是保密的〕,输完6位后键盘就锁定,在LCD1602上显示密码是否正确,假设输入的密码长度小于6位,那么1602等待密码输入。
(2)假设密码输入正确后,那么绿色的发光二极管亮表示开锁,同时1602上显示〝you are right!〞,等待是否修改密码。
(3)密码输入错误时显示〝code is wrong〞,接着会给你第二、第三次机会输入密码,假如三次密码都错误时,发出〝叮咚〞的报警声,且红色报警指示灯不停闪耀,按复位键清除报警。
(4)按〝7〞号键表示假设密码不小心输入时,能够删除输入错误的密码。
(5)按〝6〞修改密码,要求输入原密码是正确的,然后按该键后,蓝色密码修改指示灯会亮,同时1602上会显示〝Input new code〞,输入正确要求再次输入,两次输入一致提示〝Modify right!!!〞并返回主菜单。
单片机电子密码锁课程设计
单片机电子密码锁课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握电子密码锁的基本工作原理。
2. 使学生掌握电子密码锁设计中涉及的编程知识,如C语言基础、寄存器操作等。
3. 帮助学生了解电子密码锁电路的组成,熟悉相关电子元器件的使用。
技能目标:1. 培养学生运用所学知识设计并实现一个简单的单片机电子密码锁的能力。
2. 提高学生动手实践能力,学会使用编程软件、烧录器和相关调试工具。
3. 培养学生团队协作和问题解决能力,学会分析电子密码锁故障并找出解决办法。
情感态度价值观目标:1. 激发学生对电子制作的兴趣,培养创新意识和动手能力。
2. 培养学生严谨的科学态度,注重实验数据和实验结果的准确性。
3. 引导学生关注单片机技术在日常生活中的应用,提高对科技的认识和热爱。
本课程针对高年级学生,他们在之前的学习中已经具备了一定的电子和编程基础。
因此,课程设计将注重实践操作,以项目为导向,让学生在动手实践中巩固知识,提高技能。
通过本课程的学习,学生将能够独立设计并实现一个具有实用价值的单片机电子密码锁,提升解决实际问题的能力。
二、教学内容1. 单片机基础原理:回顾单片机的组成、工作原理,重点讲解51单片机的内部结构、时钟电路和复位电路。
教材章节:第三章《单片机原理与接口技术》2. C语言编程基础:介绍C语言在单片机编程中的应用,讲解数据类型、运算符、控制语句等基本语法。
教材章节:第四章《单片机C语言编程》3. 电子密码锁原理:讲解电子密码锁的基本工作原理,分析锁体的电路组成和功能。
教材章节:第七章《单片机应用实例》4. 硬件设计:学习并设计电子密码锁的硬件电路,包括键盘输入、显示模块、锁驱动电路等。
教材章节:第五章《单片机接口技术》5. 软件设计:编写电子密码锁的控制程序,实现密码输入、校验、开锁等功能。
教材章节:第四章《单片机C语言编程》6. 系统调试与优化:学习使用调试工具,对电子密码锁系统进行调试和优化。
(整理)单片机课程设计密码锁设计
1 设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
1.2 总体方案介绍及工作原理说明(1)原始密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“888888”共6位密码。
(2)密码的输入:采用按键来完成密码的输入,输入时密码处于显示保密状态,输入六位密码后,自动结束输入,并判断其正确性(3)密码若输入错误,显示输入错误提示信息,密码输入正确后,可以用键盘任意输入数字,若按下第八个按键,则进入修改密码(4)密码修改:可以任意输入“1-7”中的六位数字作为密码,密码输入时处于保密显示状态,六位密码输入结束确认后显示P.。
图1 设计总框图2 密码锁硬件系统的设计2.1 密码锁硬件系统各模块功能简要介绍此次课程设计是基于单片机控制的电子密码锁,结合主要设计条件,本设计由单片机系统、独立式键盘、LED显示和报警系统组成,系统能完成开锁、错误报警、密码修改功能等功能,设计硬件系统如下:(1)单片机系统:此次课题采用一种是用以AT89S52为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
此次课题用单片机P1口与键盘相连,做输入口,P0口与显示器段控相连,输入段控码,P2口输入位控码。
(2)独立式键盘接口电路:此次课程设计采用独立式键盘,与P1口相连,键按下则会使该端口变成低电平,单片机读P1口,通过对P1口数据的判断来确定哪一个键按下。
(3)数码管显示模块:此次课程设计采用的是共阴数码管,P0口段控,P2口送位控,八个数码管共用八根段控,由位控决定在哪一位显示。
单片机课程设计密码锁
单片机课程设计密码锁一、课程目标知识目标:1. 理解单片机的基础知识,掌握其基本原理和编程方法;2. 学习并掌握密码锁的原理与设计,能够运用单片机实现密码锁功能;3. 了解并掌握相关传感器和执行器的使用,实现密码锁的输入和输出控制。
技能目标:1. 能够运用所学知识,设计并编写出实现密码锁功能的单片机程序;2. 掌握使用相关调试工具,对单片机程序进行调试和优化;3. 提高学生的动手能力,培养实际操作中解决问题的能力。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养创新意识和实践精神;2. 培养学生团队协作精神,学会与他人共同解决问题;3. 引导学生关注科技发展,了解单片机在现实生活中的应用,增强社会责任感。
课程性质:本课程为实践性较强的课程,旨在通过单片机实现密码锁的设计与制作,让学生在动手实践中掌握单片机知识。
学生特点:学生处于高年级阶段,已具备一定的单片机基础,对实际应用有较高的兴趣。
教学要求:结合学生特点和课程性质,注重实践操作,强调理论知识与实际应用相结合。
通过课程学习,使学生能够独立完成一个具有实际应用价值的单片机项目。
在教学过程中,关注学生的学习进展,及时调整教学策略,确保课程目标的实现。
将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 单片机基础知识回顾:C语言编程基础,单片机工作原理,I/O口编程。
教材章节:第一章单片机基础。
2. 密码锁原理与设计:- 密码锁的组成和工作原理;- 矩阵键盘原理与编程;- 密码比对算法;教材章节:第三章输入输出接口,第六章矩阵键盘。
3. 单片机与外部设备接口:- 传感器与执行器的应用;- 单片机与继电器、电磁锁等执行器的连接;教材章节:第四章传感器与执行器,第五章单片机与外部设备接口。
4. 程序设计与调试:- 程序结构设计;- 程序编写与调试;- 优化程序性能;教材章节:第七章程序设计与调试。
5. 实践操作:- 搭建电路,连接硬件;- 编写程序,实现密码锁功能;- 调试与优化;教材章节:实践操作部分。
单片机密码锁课程设计
单片机密码锁课程设计一、课程目标知识目标:1. 学生能够理解单片机的基本原理,掌握密码锁设计的硬件组成和工作原理。
2. 学生能够运用C语言编写简单的程序,实现密码锁的功能。
3. 学生了解密码锁的安全性,掌握基本的安全防护措施。
技能目标:1. 学生能够独立完成单片机密码锁的硬件连接,具备实际操作能力。
2. 学生能够运用所学知识,编写和调试程序,实现密码锁的开锁和关锁功能。
3. 学生能够通过小组合作,分析问题,解决问题,提高团队协作能力。
情感态度价值观目标:1. 学生培养对单片机及电子制作的兴趣,激发创新精神。
2. 学生树立安全意识,认识到技术在实际应用中的重要性。
3. 学生在团队协作中,学会尊重他人,提高沟通表达能力。
课程性质:本课程为实践性课程,结合理论知识,培养学生的动手操作能力和实际应用能力。
学生特点:学生处于初中阶段,对新鲜事物充满好奇,具备一定的逻辑思维能力,但实践经验不足。
教学要求:教师需注重理论与实践相结合,引导学生主动探究,关注学生的个体差异,提高学生的实践操作能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
1. 理论知识:- 单片机原理与结构:介绍单片机的基本组成、工作原理及功能。
- C语言基础:讲解C语言的基本语法、数据类型、运算符、控制结构等。
- 密码锁原理:分析密码锁的硬件组成、工作原理及安全性。
2. 实践操作:- 硬件连接:指导学生完成单片机、键盘、显示模块等硬件的连接。
- 程序编写:教授学生编写密码锁程序,实现开锁、关锁等功能。
- 调试与优化:引导学生分析程序运行过程中出现的问题,并进行调试和优化。
3. 教学大纲:- 第一周:单片机原理与结构学习,C语言基础学习。
- 第二周:密码锁原理学习,讨论密码锁的安全性。
- 第三周:硬件连接,小组合作进行程序编写。
- 第四周:程序调试与优化,总结与反思。
4. 教材章节:- 单片机原理与结构:教材第1章。
- C语言基础:教材第2章。
单片机电子密码锁课程设计
单片机技术及应用综合训练(设计报告)前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。
在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。
本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。
它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。
用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。
关键词:电子密码锁、报警、液晶显示目录一、选题要求 (1)二、硬件电路设计 (1)2.1 51单片机 (2)2.2 键盘电路 (2)2.3 液晶显示电路 (2)2.4 警报电路 (3)2.5 密码储存电路 (3)2.6 晶振、复位及关锁 (3)三、软件设计 (4)四、软硬件调试结果 (9)4.1 电路总原理图 (9)4.2 调试结果 (10)五、总结 (11)一、选题要求本文从经济实用的角度出发,设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共6位密码,每位的取值范围为0~9,用户可以自行设定和修改密码。
用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警,期间输入密码无效,以防窃贼多次试探密码。
6位密码同时输入正确,锁才能打开。
锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的,因此保密性强、灵活性高。
其特点如下:1) 保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
基于单片机的电子密码锁设计
基于单片机的电子密码锁设计在平时生活中,密码锁是一种常见的安全设备,被广泛应用于家庭、办公室等场所。
随着科技的进步,传统的机械密码锁已经不能完全满足人们对安全性和便捷性的需求。
为了提高密码锁的安全性和好用性,许多基于单片机的电子密码锁被设计出来。
本文将介绍一种,并详尽说明其工作原理和实现过程。
1. 设计思路基于单片机的电子密码锁的设计目标是提高安全性和便捷性。
传统的机械密码锁容易被暴力破解,而且若果密码被泄露,需要更换整个锁体。
因此,接受电子密码锁可以提供更高的安全性和便利的密码管理功能。
2. 系统组成基于单片机的电子密码锁主要由以下几个部分组成:(1)输入模块:用于输入密码的设备,可以是键盘、触摸屏等。
(2)单片机控制模块:使用单片机作为核心控制器,接收输入密码并进行验证。
(3)驱动模块:通过驱动模块对电子锁进行控制开关。
(4)显示模块:以LED或LCD等形式显示相关信息。
(5)电源模块:为电子密码锁系统提供电能供应。
3. 工作原理基于单片机的电子密码锁的工作原理如下:(1)初始状态下,用户可以通过输入密码进行解锁或锁定。
输入模块接收用户输入的密码。
(2)输入模块将密码发送给单片机控制模块。
(3)单片机控制模块使用事先设定的密码进行比对。
若果密码匹配,单片机控制模块将发出控制信号给驱动模块。
(4)驱动模块接收到控制信号后,将依据信号的指示打开或关闭电子锁。
(5)同时,单片机控制模块会发出指令给显示模块,将结果显示给用户。
4. 实现过程基于单片机的电子密码锁的实现过程如下:(1)选择合适的单片机,如AT89C51。
(2)设计电路板,将输入模块、单片机控制模块、驱动模块、显示模块和电源模块毗连在一起。
(3)编写单片机的控制程序,实现密码验证和控制信号的生成。
(4)制作密码锁外壳,将电子密码锁系统组装在一起。
(5)测试电子密码锁的各个功能是否正常。
5. 应用和进步基于单片机的电子密码锁由于其高安全性和便捷性已经得到广泛应用。
单片机电子密码锁课程设计
(设计报告)
刖言
随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。在科学技 术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。
本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E2PROM
AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、
开锁等电路模块。它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况 下,报警;密码可以根据用户需要更改。用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码, 具有报警功能的电子密码控制系统。
本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高 等特点,具有一定的推广价值。
P2 7/A15
P3.0UTW
P1.1;T2EX
p a.vrxD
Pl.2
P3.2;1n7d
P1.3
P3.a/iN7T
P1.4
P3.4/T0
P1.5 P16
P3.5/T1
P3 6^
Pl.7
P3.T帝
_3£
35
34
35
_21
q
q
25
2SnK
zS
.12
.13
14
15—Li _Li
ATegc52
AT89C52单片机有4组8位的可编程 位(8根引脚),共32根⑹。
实验中采用的是LM016L液晶显示,
LCD
A
33
*
TH
32
RP1
2.4
下图是警报电路连接图,警报触发为: 间延迟,延迟时间内任何操作都是无效的, 连续三次输错密码,警报触发后会有一个时 过后通过关锁按钮可解除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:本系统由单片机系统、矩阵键盘、LED 显示和报警系统组成。
系统能完成开锁、超时报警、密码错误报警基本的密码锁的功能。
除上述基本的密码锁功能外,还具有LED显示功能,本系统成本低廉,功能实用。
关键词:AT89C51,LCD, 电子密码锁,矩阵键盘,报警器第1章系统概述1系统功能随着科技的发展和人们生活水平的提高,如何实现保密防盗这一问题变的尤其的突出,传统的机械锁由于其构造的简单,失效的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲昵。
AT89C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)设置8位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2)状态指示、报警、LCD显示。
密码输入正确时有very good!,welcome to you ^_^等提示信息、密码输入错误数码显示器会出现错误提示,显示“the code is flase!”电子密码锁的设计主要由三部分组成:键盘接口电路、密码锁的控制电路、输出LCD显示电路。
报警蜂鸣器等。
第2章硬件电路方案(系统框图)论证分析设计的要求是要实现密码固定在ROM中,设计的基本思路是,将密码固化,放入表中,在得到按键后,查表比较密码,如果正确,显示”very good!, welcome to you ^_^ ”提示,如果密码错误,打开报警,同时屏幕闪烁以提示密码错误“the code is flase!”。
下图2-1是电子密码锁的总体框架图:电路分为五个部分,显示,键盘输入,报警输出等。
2.1单片机系统:此次课题采用一种是用以80C51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
此次课题用单片机P1口与键盘相连,做输入口,P0口与显示器相连,做显示,P2口做显示器扫描。
系统总框图图2—12.2键盘接口电路:此次课程设计采用I/O键盘,与P1口相连,采用扫描法。
设有0——9十个数字密码,和一个确认键。
开机显示input code,等待密码输入,输入8个密码,按确认键后,密码比较。
2.3 LCD显示:此次课程设计8密码LCD显示器,按键后即显示,液晶显示。
P0口送示数据,P2口显示扫描,根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此8位显示器显示第8次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,提示重新输入。
2.4报警系统:此次课程设计,当输入密码或密码错误时,系统报警,报警装置由一扬声器实现,从P3.7口输出脉冲,使扬声器鸣报警。
第3章硬件设计3.1按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。
如图3-2图 3-23.2指示灯及报警蜂鸣器的电路设计指示灯及报警蜂鸣器的电路如下图所示,当输入的密码正确时,灯亮图3-33.3显示电路设计将P0与显示的数据端相连,使其它能动态的传输要显示的数据,将P3的第六位与位选通端相连,选通相应的位。
接线如图3-4所示图3-4第四章程序代码设计分析(程序流程图与源代码)4.1 主程序初始化主程序主要完成初始化、检查有无按键按下、以及调用显示、指示灯等等。
具体模块包括:1、按键识别与编码设计2、显示程序设计3、密码正确返回程序设计4.2按键识别与编码设计当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
对照图4.2所示的43键盘,说明扫描法原理。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
比如说扫描码送入11101111,前面的1110是代表此时扫描第三行P1.0列,而后面的1111是让读取的4列接脚先设高,若此时第三行的第一列按键被按下,那读取的结果就会变成11101110(注意1111变成1110),其中LSB的第三个bit会由1变成0,这是因為这个按键被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉到0,此即为扫描原理。
由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,防抖动;为了避免让89C51误判为多次输入同一按键,要加入按键是否松开,就可以让键盘的输入稳定。
按键的操作面板如下图所示。
共计数字键10个,功能键1个。
如图,10个数字键用来输入密码,ENTER键用来进行输入密码的确认.图4-2按键操作电路4.3整体流程图设计4.3.1开始等待流程系统开始一直显示提示“input code”,并判断有否按键,当有键按下跳出等待4.3.2密码比较及对错处理:密码输入完成之后,进行密码比较,即将设定密码单元40H-48H 的密码与输入密码31H-39H 的密码进行一一比较,如果相同,则密码正确,P3.2置高电平,LED 亮,同时LCD 显示very good!,welcome to you ^_^,如果密码错误,则显示器显示the code is flase!,同时蜂鸣器报警。
4.4源程序代码;===================================================RS BIT P2.7RW BIT P2.6 E BIT P2.5ENTER BIT 22H.0 OPEN BIT P3.6 SPEAK BIT P3.7 PASSBUF EQU 40HKEYNUMBER EQU 41H ;存放识别后的按键号 ORG 0000H AJMP MAIN ORG 0003H JMP KEY_INT ORG 000BHAJMP INTT0ORG 001BHAJMP INTT1ORG 0030H;========== 主程序开始==============MAIN: MOV 30H,#08H ;输入密码为8位MOV 42H,#200 ;设定报警的时间,42H单元里的数*50MSMOV 43H,#250 ;设定启动时间14的倍数(实际上液晶显示器执行指令占用了时间,开门时间会比14*250MS大)MOV 44H,#00H ;44H号单元存放输入错误的次数MOV 45H,#00H ;45H为定时器0中断次数MOV 46H,#00H ;46H为定时器1中断次数MOV 47H,#250 ;输入密码时间设定,50MS倍数MOV SP,#60HCLR OPENCLR SPEAK ;初始化输出设备CLR ENTER ;标志位初始化MOV TMOD,#11H ;定时器工作方式2MOV TH0,#3CH ;初值50MSMOV TL0,#0BHMOV TH1,#3CHMOV TL1,#0BHSETB EASETB ET0SETB ET1MOV TCON,#00000000B ;电平触发START: MOV R0,30HMOV R1,#31HSS1: MOV @R1,#00HI NC R1DJNZ R0,SS1 ;将输入密码缓冲单元清零MOV P1,#0FH ;初始化按键口MOV R1,#31H ;从31号单元开始存放按建输入的密码CLR 20H ;报警标志清零CLR 21H ;密码超时标志MOV 46H,#00H ;超时后对定时器中断次数清零,便于下一轮重新计时INIT: ACALL SELLCD ;设定液晶工作方式ACALL LINE1 ;在第一行显示MOV DPTR,#MES_P ;显示请输入密码ACALL DISPLAYSETB EX0 ; 开中断,允许键盘输入KEYIN: JB 21H,ERR ;超时转到错误程序JNB ENTER,KEYIN ;等待ENTER按下CLR ENTERCLR EX0 ;密码输入完后锁定键盘;当使用边沿触发时用上面的指令为什么禁止不了中断???;========== 密码判断程序============COMP:MOV DPTR,#PASSMOV R4,30H ;密码的长度MOV A,#0MOV R1,#31HLOOP: MOV R5,AMOVC A,@A+DPTRMOV PASSBUF,A ;取出系统设定的密码MOV A,@R1 ;从31号单元开始取出输入的密码CJNE A,PASSBUF,ERR ;比较MOV A,R5INC AINC R1 ;取下一位DJNZ R4,LOOP;正确MATCH: MOV A,#01HACALL ENABLE ;清屏,光标复位ACALL LINE1 ;从第一行开始显示MOV DPTR,#MES_CACALL DISPLAY ;显示"请进"ACALL LINE2MOV DPTR,#TAB_1ACALL DISPLAYSETB OPEN ;开门MOV 44H,#00H ;输入错误次数清零MOV R6,43HACALL DELAYCLR OPEN ;复位JMP START;错误ERR: ACALL BACKMOV R6,#03HACALL DELAYACALL BACK ;输错提示音,鸣两下MOV A,#01HACALL ENABLEACALL LINE1MOV DPTR,#MES_EACALL DISPLAY ;显示错误MOV R6,#40HACALL DELAYINC 44HMOV A,44HCJNE A,#03H,EE0EE0: JC ERROUT ;输错不到三次返回MOV 44H,#00H ;清零ACALL WRANING ;报警ERROUT: JMP START=========== 按键中断服务程序==========KEY_INT: PUSH ACCPUSH PSWCLR EX0ACALL DELAY10ms ;延时消抖SETB TR1 ;启动定时器ACALL SMKEY ;按键识别MOV A,KEYNUMBER ;返回按键号ACALL BACK ;按键发声MOV R3,ACJNE R3,#0BH,K1 ;ENTER是否按下SETB ENTERCLR TR1 ;按下确认后关毕定时器MOV 446H, JMP KEY_RTNK1: ADD A,#30H ;将按键号转换为ASCⅡ码MOV @R1,A ;将输入的密码存入缓冲单元INC R1 ;修改地址ACALL WRDA TAKEY_RTN: POP PSWPOP ACCSETB EX0RETI=========== 按键识别程序==========SMKEY:MOV A,P1ANL A,#0FHWKEY: MOV B,A ;反转法查询MOV P1,#0F0HNOPMOV A,P1ANL A,#0F0HORL A,BMOV P1,#0FH ;还原P1口初态CJNE A,#0EEH,WKEY1MOV KEYNUMBER,#00HAJMP RETURNWKEY1: CJNE A,#0EDH,WKEY2MOV KEYNUMBER,#01HAJMP RETURNWKEY2: CJNE A,#0EBH,WKEY3MOV KEYNUMBER,#02HAJMP RETURNWKEY3: CJNE A,#0E7H,WKEY4MOV KEYNUMBER,#03HAJMP RETURNWKEY4: CJNE A,#0DEH,WKEY5MOV KEYNUMBER,#04HAJMP RETURNWKEY5: CJNE A,#0DDH,WKEY6MOV KEYNUMBER,#05HAJMP RETURNWKEY6: CJNE A,#0DBH,WKEY7MOV KEYNUMBER,#06HAJMP RETURNWKEY7: CJNE A,#0D7H,WKEY8MOV KEYNUMBER,#07HAJMP RETURNWKEY8: CJNE A,#0BEH,WKEY9MOV KEYNUMBER,#08HAJMP RETURNWKEY9: CJNE A,#0BdH,WKEY10MOV KEYNUMBER,#09HAJMP RETURNWKEY10: CJNE A,#0BbH,WKEY11MOV KEYNUMBER,#0AHAJMP RETURNWKEY11: CJNE A,#0B7H,RETURNMOV KEYNUMBER,#0BH ;判断哪个键按下,返回相应按键号码RETURN: MOV P1,#0FHNOPNOPMOV A,P1CPL AANL A,#0FHJNZ RETURN ;等待按键松开RET;========== 液晶工作方式设置============SELLCD: MOV A,#01H ;清屏,光标复位ACALL ENABLEMOV A,#38H ;设置显示模式,8位两行,5*7点阵ACALL ENABLEMOV A,#0DH ;显示器开,允许内烁ACALL ENABLEMOV A,#06H ;文字不动,光标右移ACALL ENABLERET;========== 液晶执行指令============ENABLE: CLR RSCLR RW ;RS,RW同为低电平时写入指令MOV P0,ACLR E ;E由高变低时执行指令ACALL W AITSETB ERET;========== W AIT ============;判断液晶是否忙的子程序W AIT: MOV P0,#0FFHCLR RSSETB RW ;RW为高,RS为低时可读忙信号CLR ENOPSETB EJB P0.7,WAITRET;========== 显示的起始地址============;在第一行LINE1: MOV A,#80HACALL ENABLERET;在第二行LINE2: MOV A,#0C0HACALL ENABLERET=========== 显示程序============DISPLAY: MOV R7,#00HNEXT: MOV A,R7MOVC A,@A+DPTRCJNE A,#10H,DSPRETDSP: ACALL WRDATAINC R7AJMP NEXT;========== 将A里面的数据写入液晶============WRDATA: SETB RSCLR RWMOV P0,ACLR EACALL W AITSETB ERET;=========== 报警程序============WRANING: SETB TR0ACALL BACKMOV R4,#00HACALL D2JB 20H, WRANINGRET;=========== 发声程序============BACK: MOV R0,#100KK1: CPL SPEAKLCALL DELAY2MSDJNZ R0,KK1 ;不断取反P3.7使其产生一定频率的方波推动扬声器RET ;延时的长短可以改变输出的频率;=========== INTT0 ============;报警时间设定INTT0: PUSH ACCPUSH PSWMOV TH0,#3CHMOV TL0,#0BHINC 45HMOV A,45HCJNE A,42H,INTT0OUTMOV 45H,#00HSETB 20H ;置标志位CLR TR0 ;关闭定时器INTT0OUT:POP PSWPOP ACCRETI;=========== INTT1 ============;输入超时INTT1: PUSH ACCPUSH PSWINC 46HMOV A,46HCJNE A,47H,INTT1OUTCLR TR1 ;关闭定时器SETB 21H ;时间到置标志位MOV 47H,#00H ;中断次数清零INTT1OUT:POP PSWPOP ACCRETI;=========== 延时程序============DELAY: MOV R4,#38HD1: MOV R5,#0F9HDJNZ R5,$DJNZ R4,D1DJNZ R6,DELAY ;14*R6毫秒RETDELAY2MS: MOV R4,#02HD2: MOV R5,#0F0HDJNZ R5,$DJNZ R4,D2RETDELAY10ms: MOV R4,#20D3: MOV R5,#248DJNZ R5,$DJNZ R4,D3RETPASS: DB "08353028"MES_P: DB "input code",10HMES_C: DB "very good!",10HMES_E: DB "the code is flase!",10HTAB_1: DB "welcome to you ^_^",10hEND第五章仿真电路图与效果图5.1仿真电路图原理图5.2 仿真效果图输入正确密码图输入正确密码显示图输入错误密码图输入错误密码显示图第六章PCB图与3D视图6.1PCB图6.2 3D视图6.3 元器件清单:第七章总结时间过得真快,转眼间,一周的单片机课程设计就结束了。