电子钟密码锁设计.docx

上传人:b****6 文档编号:4771623 上传时间:2022-12-08 格式:DOCX 页数:35 大小:24.82KB
下载 相关 举报
电子钟密码锁设计.docx_第1页
第1页 / 共35页
电子钟密码锁设计.docx_第2页
第2页 / 共35页
电子钟密码锁设计.docx_第3页
第3页 / 共35页
电子钟密码锁设计.docx_第4页
第4页 / 共35页
电子钟密码锁设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

电子钟密码锁设计.docx

《电子钟密码锁设计.docx》由会员分享,可在线阅读,更多相关《电子钟密码锁设计.docx(35页珍藏版)》请在冰豆网上搜索。

电子钟密码锁设计.docx

电子钟密码锁设计

单片机课程设计报告

设计题目:

电子钟、密码锁

学生姓名:

专业:

班级:

学号:

同组人:

指导老师:

摘要

◆数字电子时钟

在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。

为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。

钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表.即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已.

本次课程设计之一------电子时钟设计,基于D8255AC芯片和LED数码管为核心,辅以必要的电路,并以汇编为程序设计为基础,构成一个简单的单片机数字电子时钟。

由5.0V直流电源供电,通过数码管能够准确显示时间,时、分、秒,并且可以通过键盘进行校时。

本报告主要介绍了数字电子时钟的软、硬件部分及在设计调试过程中遇到的问题及解决方案。

关键字:

D8255AC芯片数字电子时钟校时

◆简易电子计算器

随着社会的发展,计算器的用途越来越广泛,不断可以进行简单的加、减、乘、除,还可以用来做所有简单的计算,一些复杂的科学计算,单位换算,以及提供各种物理常数。

本次课程设计之二的选做实验,作者选择的就是简易电子计算器的设计。

主要利用键输入数据和运算符号,用LED显示运算过程和结果,实现简单的加、减运算。

关键字:

电子计算器LED加、减运算

前言…………………………………………………………………

第一章数字电子时钟

§1.1.设计要求…………………………………

§1.2设计思路………………………………….

§1.3设计框图………………………………………

§1.4硬件设计原理图及说明…………

§1.5软件设计……………………………………

1.5.1.设计流程图…………………………

1.5.2.调试过程与说明…………………

§1.6小结……………………………………

第二章简易计算器

§2.1.设计要求……………………………………

§2.2.设计思路………………………………….

§2.3.设计框图………………………………………………

§2.4.硬件设计原理图及说明……………………………

§2.5.软件设计………………………………………

2.5.1.设计流程图…………………………

2.5.2.程序模块设计……………………

2.5.3调试过程与说明……………………

§2.6.小结……………………………………

第三章总结与体会………………………………………

参考文献…………………………………………………

附录一数字电子时钟程序清单…………………

附录二简易计算器程序清单………………………………

前言

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

单片机是智能仪器、计算机外部设备、生产过程控制的控制核心。

单片机已经是一项十分成熟的技术,因其具有小型化、廉价、简单可靠和稳定性好等优点,在工业测控、电子仪器、汽车电子系统、日用家电、电子通信、办公自动化设备和尖端武器(如雷达、火炮的控制系统)等方面都有广泛的应用。

在本次设计中使用的是STC89C52单片机,它是一种新型的价格便宜而性能优良的单片机系统,结构简单,布局合理,适用于多种程序功能调试和模拟。

本次设计用单片机开发系统来模拟密码锁的各种功能,在开发系统中输入编译好的程序,使用其键盘作为数字输入键和各功能键.

通过这次课程设计,进一步掌握了如何利用接口电路进行硬件系统的设计,如何进行软件的设计,同时增强了学习兴趣及动手能力。

在报告中,详细地记述了整个设计过程的各个环节,其中的不足欢迎师生们指出或给予更好的建议。

第一章数字电子时钟

§1.1设计任务

1.1.1设计要求

用单片机开发系统,设计一个电子时钟,从左到右依次以时分秒的顺序显示时间。

并且可以在程序代码中修改时间初始值。

提高要求:

1、可以加入闪烁显示,每过一秒使时和分,分和秒间的两点闪烁一次。

2、应用键盘扫描程序,能随时在键盘上修改时钟的初始值。

1.1.1 设计思路

本课题的数字电子时钟设计采用单片机定时器产生100MS的时,并开定时中断。

设计出一个1S的定时程序。

每进入一个定时中断,在其中断服务程序中计算分钟,时钟、钞钟。

预先资源定义:

时分秒的存放空间

  

§1.2设计框图及简要说明

主程序

数码动态扫描模块

当前时间计时模块

当前时间调整模块

数值转换模块

计时单元由单片机内部的定时器来实现;时间显示采用LED数码管动态扫描方式;LED数码管的段码输入,由并行口P1低四位输入。

§1.3硬件设计原理图及说明

一、原理图

图1.3.1数字电子时钟设计原理图

二、应用原理

该原理图以8255为接口芯片。

8255是intel公司生产的可编程输入输出接口芯片,它是具有3个8位的并行I/O端口,具有三种工作方式,被广泛地使用于单片机的并行I/O端口。

●工作方式0:

基本输入输出方式

●工作方式1:

选通输入输出方式

●工作方式2:

双向传送方式

8255的读/写控制逻辑电路接受CPU发来的控制口号RD、WR、RESET和地址信号A1~A0。

然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU或者将CPU送来的数据写入端口,各端口的工作状态。

如表1所示。

AI

A0

RD

WR

CS

工作状态

1

0

0

1

0

A口数据送入数据总线

0

1

0

1

0

B口数据送入数据总线

1

0

0

1

0

C口数据送入数据总线

0

0

1

1

0

数据总线送入A口

0

1

1

0

0

数据总线送入B口

1

0

1

0

0

数据总线送入C口

1

1

1

0

0

数据总线送入控制字寄存器

表1-1

§1.4软件设计

1.4.1程序设计流程图(主程序、中断服务子程序及修改时间)

一、主程序框图

开始

设计初始化

初始化显示(调显)

调键盘扫描子程序

有键按下否

修改初值

按键错误

开始计时

定时中断

开定时中断

显示错误

调键扫

修改键否?

调修改子程序

返回

图1.4.1数字电子时钟主程序流程图

二、中断服务子程序框图

中断入口

中断保护

秒+1

调显示程序

秒>59

秒清零送显缓

分+1

分>59

分清零送显缓

时+1

时清零送显缓

时>23

时的数量存进显缓

秒的数量存进显缓

中断返回

分的数量存进显缓

图1.4.2数字电子时钟中断服务子程序流程图

三、修改时间子程序

开始

设计初始化

初始化显示(调显)

调键盘扫描子程序

有键按下否

修改初值

按键错误

开始计时

定时中断

开定时中断

显示错误

调键扫

修改键否?

调修改子程序

返回

图1.4.3数字电子时钟修改时间子程序流程图

1.4.2调试过程与说明

在调试数字电子时钟程序时出现了数码管所显示时间重叠模糊的情况。

通过对程序代码和对数码管显示原理的分析,得出了出现上述情况的原因是由于8个数码管显示的数码变化速度很快,受人眼视觉暂留的影响,人眼无法分辨前后两次所显示的数码。

为解决这个问题所采取的措施是,在每显示一个数码管的内容后加一个延迟程序来减缓所显示数码的变换速度。

改进后再调试程序时8个数码管所显示的时间十分清晰。

§1.5小结

在本次课程设计中遇到的最大的困难是如何利用软、硬件配合的方式产生中断,对中断向量表的装载还比较模糊,对中断的初始化、具体设置、中断返回还不是很清楚,程序设计一度陷入停滞状态,最后在指导老师和同学们的帮助下,作者这个小组一起共同完成了该实验,实现了数字电子时钟的基本功能。

第二章简易电子计算器

§2.1设计要求

设计一个可以进行简易加减运算的计算器,

要求:

1、键输入数和运算符号;

2、LED显示运算过程和结果(十进制数);

3、有清零和复位功能;

◢提高要求

能显示2位输入和3位输出。

§2.2设计思路

显示设备采用八片七段共阴极LED显示器,共设置16个键,其中数字键0~9共十个,接下来依次是加号键、减号键、等于号键、清除键。

利用C52的定时器中断以给定的时间间隔扫描键盘,检测出键盘输入的信号,然后送至单片机进行处理,完成简单的加减的计算器功能,然后将结果送至LED的显示器,显示输出结果

§2.3设计框图及简要说明

§2.4硬件设计原理图及说明

由于本次课程设计以软件设计部分为主,简易电子计算器是继数字电子时钟的训练和巩固。

所以在应用硬件方面的原理和设计和数字电子时钟相同。

详细工作原理请见第一章1.3节硬件设计原理图及说明

§2.5.软件设计

2.5.1程序设计流程图

开始

初始化

提示输入一个数

调键盘子程序

保存该数据

提示输入另

一个数

键盘子程序

保存该数据

提示输入运算符

加法子程序

减法子程序

判断运算符类型

图2.5.1简易电子计算器程序流程图

2.5.2程序模块设计

1、主程序的设计

主程序主要是用来进行初始化的,调用自检程序,清空各个标志位,清空缓存区,给定定时器0工作方式。

在等待定时器0中断时主程序在以下程序段内循环:

LP1:

MOVPCON,#01H

SJMPLP1

2、中断模块的程序设计

进入定时器0的中断程序后,首先重新付初值,然后调用读键程序,如果有键按下,则判断按键是否与上次按键相同,如果相同则判断按键相应位是否为一,如果不为一,说明这不是持续按键导致的按键相应,并且进行相应的程序。

如果不是则退出中断程序。

3、显示模块的程序设计

由于使用的是静态显示,故先要对SCON进行相关设置,让串口工作在方式0下,使用指令MOVSCON,#00H就可以了。

首先从高位开始进行灭零显示,并将最后一个灭零的位,标志为负号位,然后判断负数标志位是否为一,是则将标志为负号位的送出显示负号(笔形码0FEH),否则直接送出显示

2.5.3调试过程与说明

在上机实践中,作者发现运算结果与实际结果不相符合,经过单步运行发现,原来是调用BCD码转二进制码子程序错误,于是作者调用成了二进制转BCD码子程序,原因是因为两个子程序的标号很接近,一不小心就会调用错误,说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。

在编程时,充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块进行调适就可以了,充分体现了结构化编程的优势。

一开始,设计只支持正整数的运算,并没有加入负数运算,因为时间问题,只是大概想了思路,并没实现。

最后在班上同学的帮助下。

终于实现了计算器的基本功能。

§2.6小结

由于简易电子计算器是继数字电子时钟的练习和巩固,大多数模块都已经熟悉。

虽然在编程的过程中遇到了一些问题,但在同组人的共同努力下。

完成了本次课程设计的基本要求

第三章总结与体会

经过这次单片机专业课程设计,训练了作者的动手能力和理论实践相结合的能力,从中还体会到了团队的合作精神,因为一个人的能力毕竟有限,惟有善于合作的团队才能发挥出最大的能量。

在这次课程设计中,作者真正体会到了合作的重要性,作者这个班级在这次程序设计中总在一起,从要实现的功能到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚了我们班级的力量。

在遇到棘手的问题时,大家总是一起讨论,一起把问题解决;在作者遇到不很明白的程序时,是同学们耐心地帮助讲解;在面对有错的程序不知所措时,也是同学们帮助作者一步步地调试,耐心的指导,直至程序能正常运行。

总的来说,这次单片机课程设计对我们来说是很有意义的,以往在老师讲课时不是很明白的问题在这次课程设计中通过大家一起学习,一起动手,很多问题都迎刃而解。

而且加强了作者班级同学之间的凝聚力

参考文献

[1]于海生.微型计算机控制技术[M].清华大学出版社.1999-6

[2]孙涵芳.MCS-51系列单片机原理及应用[M].北京航空航天大学出版社.1996-4

[3]黄正谨.综合电子设计与实践[M].东南大学出版社.2002-3

[4]杨欣等.电子设计从零开始[M].清华大学出版社.2005-10

附录一:

数字电子时钟程序清单

DEDAEQU33H;50MS记数常数,满200次为1S(T0)

NUMEQU34H;0.3S记数常数,满6次为0.3S(T1)

SECEQU30H;秒数据存储区

MINEQU31H;分数据存储区

HOUEQU32H;时数据存储区

SEC0EQU40H;秒显缓区低位

SEC1EQU41H;秒显缓区高位

MIN0EQU42H;分显缓区低位

MIN1EQU43H;分显缓区高位

HOU0EQU44H;时显缓区低位

HOU1EQU45H;时显缓区高位

SSEC0EQU60H;秒显缓区低位字型码

SSEC1EQU61H;秒显缓区高位字型码

SMIN0EQU62H;分显缓区低位字型码

SMIN1EQU63H;分显缓区高位字型码

SHOU0EQU64H;时显缓区低位字型码

SHOU1EQU65H;时显缓区高位字型码

GWBIT06H;个位标志

SWBIT07H;十位标志

HALEQU47H

FUNCKEYEQU0E7H

HOUKEYEQU0C7H

MINKEYEQU077H

SECKEYEQU87H

KEYEQU52H

;-----------------------------------------------------------

ORG0000H

LJMPMAIN

ORG000BH

LJMPINTT0;T0中断程序

ORG001BH;定时器T1中断程序入口

LJMPINTT1;跳至INTT1执行

;-----------------------------------------------------------

;主程序;

;-----------------------------------------------------------

MAIN:

MOVSEC,#0

MOVHOU,#23

MOVMIN,#59

MOVDEDA,#00H

MOVNUM,#06H;0.3秒定时用初值

MOVSP,#0F0H

MOVTMOD,#11H;定时器0为方式1

MOVTH0,#50H;赋初值

MOVTL0,#0C3H

MOVTL1,#50H;装定时器T1定时初值

MOVTH1,#0C3H

SETBTR0;启动T0

MOVIE,#82H

LCALLROLL

MOVSEC,#0

MOVHOU,#23

MOVMIN,#59

S:

LCALLDISP

LCALLKEY_SCAN;键扫

LCALLDISP

SJMPS

;--------------------------------------------------------

;显示程序

;--------------------------------------------------------

DISP:

MOVA,SEC

MOVB,#10;S转换送显缓区

DIVAB

MOVSEC0,B

MOVSEC1,A

MOVA,MIN

MOVB,#10;MIN转换送显缓区

DIVAB

MOVMIN0,B

MOVMIN1,A

MOVA,HOU

MOVB,#10;H转换送显缓区

DIVAB

MOVHOU0,B

MOVHOU1,A

MOVR5,#6

MOVR0,#40H

MOVR1,#60H

LOOP:

MOVA,@R0

MOVDPTR,#TAB;

MOVCA,@A+DPTR

MOV@R1,A

INCR0

INCR1

DJNZR5,LOOP

JBCSW,LOPP0

MOV59H,#00H;""

MOV58H,#00H;""

SJMPDISP0

LOPP0:

MOV59H,#09H;"--"

MOV58H,#09H;"--"

DISP0:

MOVA,#80H;写8255显示状态字

MOVDPTR,#0A003H

MOVX@DPTR,A

MOVA,#0FEH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,SHOU1;HOURH

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#0FDH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,SHOU0;HOURL

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#0FBH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,58H;"-"

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#0F7H

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,SMIN1;MINATEH

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#0EFH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,SMIN0;MINSTEL

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#0DFH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,59H;"-"

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#0BFH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,SSEC1;SECONDH

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

MOVA,#7FH

MOVDPTR,#0A001H;输出片选信号

MOVX@DPTR,A

MOVA,SSEC0;SECONDL

MOVDPTR,#0A000H

MOVX@DPTR,A

LCALLDE10MS

RET

DELAY:

PUSH02H

DELAY1:

PUSH02H

DELAY2:

PUSH02H

DELAY3:

DJNZR2,DELAY3

POP02H

DJNZR2,DELAY2

POP02H

DJNZR2,DELAY1

POP02H

DJNZR2,DELAY

RET

DE10MS:

;延时子程序

DL1:

MOVR7,#14H;

DL2:

MOVR6,#17H

DL3:

DJNZR6,DL3

DJNZR7,DL2

RET

TAB:

;共阴0-9字行码

DB3FH;0

DB06H;1

DB5BH;2

DB4FH;3

DB66H;4

DB6DH;5

DB7DH;6

DB07H;7

DB7FH;8

DB6FH;9

DB00H;熄灭符

SEG:

;--------------------------------------------------------

;键盘扫描程序

;--------------------------------------------------------

KEY_SCAN:

MOVDPTR,#0A003H;设置状态字

MOVA,#89H

MOVX@DPTR,A

LP51:

MOVDPTR,#0A001H;设置端口B

MOVA,#00H

MOVX@DPTR,A

MOVDPTR,#0A002H

MOVXA,@DPTR

ANLA,#0FH

CJNEA,#0FH,XD

AJMPOVER

XD:

MOVR7,#80

DEL1:

MOVR6,#123

DEL2:

DJNZR6,DEL2

DJNZR7,DEL1

MOVXA,@DPTR

ANLA,#0FH

CJNEA,#0FH,JKEY

AJMPLP

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

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1