51单片机数字密码锁课程设计.docx

上传人:b****8 文档编号:13063304 上传时间:2023-06-10 格式:DOCX 页数:54 大小:802.25KB
下载 相关 举报
51单片机数字密码锁课程设计.docx_第1页
第1页 / 共54页
51单片机数字密码锁课程设计.docx_第2页
第2页 / 共54页
51单片机数字密码锁课程设计.docx_第3页
第3页 / 共54页
51单片机数字密码锁课程设计.docx_第4页
第4页 / 共54页
51单片机数字密码锁课程设计.docx_第5页
第5页 / 共54页
51单片机数字密码锁课程设计.docx_第6页
第6页 / 共54页
51单片机数字密码锁课程设计.docx_第7页
第7页 / 共54页
51单片机数字密码锁课程设计.docx_第8页
第8页 / 共54页
51单片机数字密码锁课程设计.docx_第9页
第9页 / 共54页
51单片机数字密码锁课程设计.docx_第10页
第10页 / 共54页
51单片机数字密码锁课程设计.docx_第11页
第11页 / 共54页
51单片机数字密码锁课程设计.docx_第12页
第12页 / 共54页
51单片机数字密码锁课程设计.docx_第13页
第13页 / 共54页
51单片机数字密码锁课程设计.docx_第14页
第14页 / 共54页
51单片机数字密码锁课程设计.docx_第15页
第15页 / 共54页
51单片机数字密码锁课程设计.docx_第16页
第16页 / 共54页
51单片机数字密码锁课程设计.docx_第17页
第17页 / 共54页
51单片机数字密码锁课程设计.docx_第18页
第18页 / 共54页
51单片机数字密码锁课程设计.docx_第19页
第19页 / 共54页
51单片机数字密码锁课程设计.docx_第20页
第20页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

51单片机数字密码锁课程设计.docx

《51单片机数字密码锁课程设计.docx》由会员分享,可在线阅读,更多相关《51单片机数字密码锁课程设计.docx(54页珍藏版)》请在冰点文库上搜索。

51单片机数字密码锁课程设计.docx

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

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

 

本科生课程设计

 

题   目:

数字密码锁

课   程:

 单片机课程设计

专   业:

 电子信息工程

 

一、任务及要求

1.1设计一多位电子密码锁,输入密码用“*”表示,输入密码正确或错误,LED和蜂鸣器有不同显示

1.2连续输入三次错误密码,报警电路动作,键盘锁定

1.3具有密码重置、修改功能

1.4具有密码输入等待操作时间限制功能,超过限定时间报警

1.5可利用蜂鸣器添加提示音

二、系统原理框图

2.1功能菜单原理框图

 

2.2输入密码子程序原理图

 

 

2.3重置密码原理图

 

三、硬件原理图

本单片机学习板集成多个基础硬件资源模块,各个资源模块可以相互组合使该板实现不同的功能。

因此,本学习板既可用于51单片机的教学实验,又可用于做功能比较强的单片机课程设计,是51单片机初学者的好帮手。

3.1板上资源分布

单片机学习板板上资源如下图所示:

1、2、3:

单片机P0、P2、P3口引出接口(有限流保护电阻);

4:

上排图形点阵LCD12864的接口、下排LCD1602的接口;

5、6:

两路16位ADC输入、可作差分输入;

7、8:

12位DAC输出、对DAC输出进行比例放大或者跟随的运放;

9:

单片机AduC848;

10:

无源蜂鸣器、由单片机PWM模块输出信号控制;

11:

8位数码管;

12、13:

LCD亮度调节口;

14:

USB接口(通过USB接口供电、在线下载、单步、断点、运行到某一行等方式调试程序);

15:

8路LED,从左至右为LED7~0,分别被P0.7~P0.0控制;

16:

步进电机(5V、70欧姆、6线4相)接口;

17:

UART接口;

18:

复位按键和下载按键;

19、20:

IIC总线上的EEPROMAT24C08和RTCDS1307;

21:

IIC接口;

22:

PS/2接口;

23:

红外接收头;

24:

功能选择和配置插针;

25:

4X4矩阵式键盘或4个独立按键;

26:

SPI接口;

27:

直流电源输入;

此外还有红外二极管(由单片机PWM模块输出信号控制)。

3.2单片机ADuC848

3.2.1ADuC848的简要介绍(针对本设计所选择的型号)

详细情况请参考芯片手册。

1、8051-basedcore、5V供电电压;

2、可以通过串口在线下载程序和单步、断点、运行到某一行等方式调试程序;

3、16位8通道Σ-ΔADC,片内有1.25V参考电压、buffer和PGA;

4、12位电压输出DAC、Dual16-BITΣ-ΔDAC;

5、32kbyte程序存储器、4kbyte用户信息Flash存储器、256RAM+2048XRAM(byte);

6、PLL(12.58MHzmax)(片外只需接32.768kHz晶振);

7、3×16位定时/计数器、看门狗定时器;

8、11中断源(2优先级)、11位堆栈指针;

9、24I/O+8模拟或数字输入;

10、UART、SPI和I2C、高速115200波特率发生;

11、Powersupplymonitor、上电复位、Dual200μA激励电流源。

3.2.2单片机引脚分布

详见原理图。

Pin1~4:

(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。

若P2、P3、P0口要作为输入,则应往相应引脚写1。

Pin5、6:

AVDD、AGND,模拟电源输入。

Pin7、8:

外部参考电压接入,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的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信号、控制第8位数码管的位码;P2.0~3也作为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,低电平有效,正常使用时拉低。

Pin41:

PSEN,在此引脚电平为低时按复位键进入debug模式,可以下载和调试程序。

Pin42:

ALE。

Pin47、Pin48:

DGND、DVDD。

Pin43、44、45、46、49、50、51、52:

P0口、LCD1602和LCD12864的数据总线,数码管的段码。

3.3电源模块

电源模块原理图如图1.2所示。

本学习板共有如下3种供电方式:

(1)5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽)。

将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第1、2脚(插针1下面两脚)接跳线帽,DVDD直接连接到电源适配器输入端,即为5V电源适配器供电模式。

(2)7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽)

将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第2、3脚(插针1上面两脚)接跳线帽,DVDD连接到稳压芯片7805的输出,而7805的输入端连接到电源适配器输入端,即为7~12V的电源适配器经7805给学习板供电的模式。

(3)USB供电(开关往下拨)。

将开关sw4第1、2脚接通(开关往下拨),电源网络DVDD连接到USB电源输入端。

对DVDD网络和AVDD网络设了测试点,方便调试。

测试点具体位置参见附图1。

 

3.4显示模块

本系统共有四种显示模式可供选择,这四种模式分别是:

LCD12864、LCD1602、数码管、8路LED。

引脚复用:

四种显示模式复用数据总线,控制总线,故用户只可选择其中一种使用。

我们选用了LCD12864显示。

3.4.1LCD显示

LCD显示信号连接图如图1.7所示。

图1.7LCD信号连接

关键网络名和引脚名解释:

(1)DISCTRL0~4:

显示控制信号。

(2)D0~D7、DB0~DB7:

数据总线。

(3)E:

LCD使能信号。

(4)RS:

数据、指令选择信号。

(5)RW:

读、写选择信号。

(6)CS1、CS2:

LCD12864由两部分组成,CS1和CS2为选择信号。

板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排针和排母左对齐插入。

切勿插错。

3.4.28路LED

该模块原理如图1.9所示。

图1.98路LED

8个LED接P0口,低电平时LED亮,这样不会影响P0口逻辑电平。

LED限流电阻取4.7K,通过LED电流约为0.8mA,在P0口驱动能力范围之内。

该部分可以用于做跑马灯等实验、帮助用户更好的了解和熟练对端口的操作、还可以用于观测P0口的状态。

插针配置:

(1)若要使用该模块,可以接通插针2,为减少功耗,不用请断开。

3.5蜂鸣器

该模块原理图如图1.10所示。

图1.10蜂鸣器和红外发送

本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制,红外二极管由PWM0(P2.5)控制。

PWM1和PWM0均为片内PWM模块的输出。

蜂鸣器和红外LED的驱动均采用普通NPN三极管。

为方便调试,对该模块中的信号设了测试点,具体位置参见附图1。

插针配置:

(1)若要使用蜂鸣器,可以接通插针3,为减少功耗,不用请断开。

(2)若要使用红外二极管,可以接通插针4,为减少功耗,不用请断开。

3.6按键输入

该模块原理如图1.12所示。

图1.12按键模块

由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。

引脚复用:

P2.0~P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。

参与复用的一项功能使用时,其他参与复用的功能则不能使用。

插针配置:

(1)插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0~P1.3,列扫描信号为P2.0~2.3。

(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0~P1.3。

这4个按键为4X4矩阵键盘的左边4个按键。

 

3.7复位与下载

复位与下载电路如图1.14所示。

图1.14复位与下载

进入下载或调试模式的步骤为:

(1)按住BTN1(downordebug按键)不要放开;

(2)按下BTN2(reset按键),然后放开BTN2(reset按键);

(3)放开BTN1(downordebug按键)。

这样单片机就进入了调试模式,可以下载或调试程序。

四、程序

4.1主程序main()

#include

#include

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

#defineulongunsignedlong

voidinputkey();//输入密码子程序

voidsetkey();//重置密码子程序

voidLED(unsignedintx);//LED标志显示程序

//voiddisplay0();//显示子程序

voiddelay_0(intnumb);//延时子程序

voidbee(unsignedintb);//蜂鸣器子程序

unsignedchargetkey();//密码锁主键盘程序

inttimecount=1500,alarmcount=0,sjflag;//报警时用的变量

intrealkey;//正确密码

intyourkey=0;//用户输入密码

intkeynum=0;//输入密码的位数

ucharokflag;//输入密码正确标志

ucharkey;

unsignedcharpmdeng;//跑马灯

ucharkbflag=0,purrentlock=0,mimaflag;//键盘锁定标志,KB是总的键盘锁定标志,PURR是暂时锁定主键盘,MIMA是决定是否释放后有效

bitchange=0;

bitchange1=0;

voidinit(void);//初始化

voidI2CWR(ucharDATA,ucharADDR);//写IIC

ucharFUNSEL=0;//功能选择

ucharkeyscan();//按键扫描

ucharkeyNO=16;//按键返回值。

设置初值

voiddelayms(uintn);//1ms延时

voidxianshi0(void);//显示菜单

voidmain()

{

realkey=888888;

init();

PLLCON&=0xf8;//设置频率为12.58MHz

okflag=0;//输入密码正确标识

LCD_init();//屏幕初始化

LCD_Write_Sentence(2,0,"欢迎使用密码锁");

while

(1)

{

PT0=1;//定时中断0为优先

TR0=1;TR1=0;//开启定时中断0和定时中断1

key=16;

if(kbflag==0)

key=keyscan();

if(key==10)

{

inputkey();//密码输入

}

elseif(key==13)//13键确认

{

if(okflag==1)

{

setkey();

change=1;

}

}

if(change==1)

{

LCD_init();

PT1=1;TR0=0;TR1=1;

PLLCON&=0x01;//设置频率为6.291456MHz

FUNSEL=0;

while(change)

{

keyNO=keyscan();

if(FUNSEL==0&&keyNO==15){FUNSEL=0;keyNO=16;}

if(FUNSEL==0&&keyNO==1){FUNSEL=1;LCD_init();keyNO=16;}

if(FUNSEL==0&&keyNO==2){FUNSEL=2;LCD_init();keyNO=16;}

if(FUNSEL==0)//显示菜单

{xianshi0();}

if(FUNSEL==1)//输入密码

{

change=0;

okflag=0;

LCD_Write_Sentence(2,3,"密码输入");

}

if(FUNSEL==2)//重置密码

{change=0;

LCD_Write_Sentence(2,3,"密码重置");

}

}

}

}

}

//******************密码输入子程序************************

voidinputkey()

{inti,j,m;

intyourkey=0;

intkeyv;//读取键号值

keynum=0;//输入密码位数

LCD_init();

LCD_Write_Sentence(2,3,"请输入密码");

LCD_write_fuhao(2,13,0);

for(i=0;i<3;i++)

{

yourkey=0;

if(okflag!

=0)//是否跳出最外循环标志

{

break;

}

for(j=0;j<9;j++)

{

timecount=1500;

sjflag=0;

if(alarmcount==1)

{

sjflag=2;//作为关闭定时器的标志

okflag=1;

alarmcount=0;

break;

}

do//扫描键盘

{

if(kbflag==0)

keyv=keyscan();//keyv为键值

if(sjflag==0)

{sjflag=1;TR0=1;}

if(alarmcount==1)

break;

}while(keyv>=14);

TR0=0;//关闭定时

if(keyv==11)

{//j=j-keynum;

j--;keynum=0;break;}

elseif(keyv<10&&keyv>=0)

{

keynum++;

yourkey=yourkey*10+keyv;

}

if(keynum==1)

LCD_write_fuhao(4,13,1);

if(keynum==2)

{

LCD_write_fuhao(4,12,1);

LCD_write_fuhao(4,13,1);

}

if(keynum==3)

{

LCD_write_fuhao(4,11,1);

LCD_write_fuhao(4,12,1);

LCD_write_fuhao(4,13,1);

}

if(keynum==4)

{

LCD_write_fuhao(4,10,1);

LCD_write_fuhao(4,11,1);

LCD_write_fuhao(4,12,1);

LCD_write_fuhao(4,13,1);

}

if(keynum==5)

{

LCD_write_fuhao(4,9,1);

LCD_write_fuhao(4,10,1);

LCD_write_fuhao(4,11,1);

LCD_write_fuhao(4,12,1);

LCD_write_fuhao(4,13,1);

}

if(keynum==6)

{

LCD_write_fuhao(4,8,1);

LCD_write_fuhao(4,9,1);

LCD_write_fuhao(4,10,1);

LCD_write_fuhao(4,11,1);

LCD_write_fuhao(4,12,1);

LCD_write_fuhao(4,13,1);

}

}

if(yourkey==realkey)//密码输入成功

{

P3&=0x17;

LED

(1);//密码正确,LED左右四位闪烁

bee

(1);//蜂鸣器短鸣

LCD_init();

LCD_Write_Sentence(2,5,"恭喜你");

LCD_Write_Sentence(4,6,"成功");

delayms(3000);

okflag=1;//成功标志

change=1;//成功后显示主菜单

break;

}

elseif(i==0)

{

LCD_init();

LCD_Write_Sentence(0,4,"密码错误一次");

LCD_Write_Sentence(2,4,"请重新输入");

LCD_write_fuhao(2,14,0);

LED(0);

}

elseif(i==1)

{

LCD_init();

LCD_Write_Sentence(0,4,"密码错误二次");

LCD_Write_Sentence(2,4,"请重新输入");

LCD_write_fuhao(2,14,0);

LED(0);

}

}

if(i>=3)

{

kbflag=1;

P3&=0x17;

LCD_init();

LCD_Write_Sentence(2,4,"密码错误");

LCD_Write_Sentence(4,4,"锁定屏幕");

LED(4);

bee

(2);

}

}

//**************密码重置子程序******************

voidsetkey()

{

intyourkey1=0,yourkey2=0,keyv0,yourkey=0;

inti,j;

for(j=0;j<2;j++)

{

yourkey=0;

keynum=0;//密码的位数

if(j==0)

{LCD_init();

LCD_Write_Sentence(2,2,"请输入新密码");

LCD_write_fuhao(2,14,0);}

if(j==1)

{LCD_init();

LCD_Write_Sentence(2,4,"请再次输入");

LCD_write_fuhao(2,14,0);

}

for(i=0;i<8;i++)//第一次输入新密码

{

timecount=1500;//定时中断,在1500个时间单位内按键有效

sjflag=0;

if(alarmcount==1)

{

sjflag=2;//作为关闭定时器的标志

okflag=1;

alarmcount=0;

break;

}

do{

if(kbflag==0)

keyv0=keyscan();

if(sjflag==0)

{sjflag=1;TR0=1;}

if(alarmcount==1)

break;

}while(keyv0>=15);

if(keyv0==12)

{if(i==1)

{

okflag=1;//第二次密码不用输入,直接返回

break;

}

else

{

i--;

--keynum;

yourkey=yourkey/10;

continue;

}

}

elseif(keyv0==11)//重置密码确认

{

i=0;

break;

}

elseif((keyv0<10)&&(keyv0>=0))

{

keynum++;

yourkey=yourkey*10+keyv0;

}

if(keynum==1)

LCD_write_fuhao(4,13,1);

if(keynum

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2