单片机课程设计多功能数字电子时钟

单片机课程设计多功能数字电子时钟


2024年2月3日发(作者:)

目 录

第1章 系统总体方案与说明 .................................... 1

1.1系统总体方案 ........................................................................................ 1

1.2 系统设计说明 ....................................................................................... 1

1.3系统设计目的 ........................................................................................ 2

1.4系统设计要求 ........................................................................................ 3

第2章 硬件电路设计 ............................................ 4

2.1总原理图 ................................................................................................ 4

2.2各个模块设计 ........................................................................................ 4

2.3 器件清单 ............................................................................................... 8

第3章 软件设计 ................................................ 9

3.1 硬件框图 ............................................................................................... 9

3.2 程序流程图 ........................................................................................... 9

第4章 心得体会 ............................................... 12

第5章 附件 ................................................... 15

附录A. 源程序清单 .................................................................................. 15

附录B.硬件原理图 .................................................................................... 25

附件C 参考文献 ........................................................................................ 27

电气信息学院课程设计评分表 .................................... 28

第1章 系统总体方案与说明

1.1系统总体方案

该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计的一个单片机电子时钟,6位LED数码显示,分别显示“小时:分钟:秒”。该作品主要用于24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。

使用方法:开机后时钟在00:00:00起开始计时。

(1)长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。

2)按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。

(3按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。

1.2 系统设计说明

(1)系统由AT89C51、LED 数码管、按键、电容、电阻等部分构成,能实现时间的调整、输出、调时间等功能。系统中按钮BUTTON能对时间进行调整功能的按钮,采用单键控制调时功能,运用软件去抖判断按键的时间从而选择完成相对应的功能

(2)时间调整:该设计需要校对时间,所以用三个按键来实现。按hour来调节小时的时间,按 minute来调节分针的时间,按 scoend来调节秒的时间。按键处理是先检测秒按键是否按下, 1

秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。

(3)中断:中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。关于中断的概念有下列几个名词:(1)程序A称为主程序,(2)处理事件B的程序称为中断服务程序,(3)主程序中转向中断服务程序的地方称为断点,(4)引起中断的原因即事件B称为中断源,(5)转去执行中断服务程序称为中断响应。关于中断的概念可以打个如下的比喻。领导(CPU)在自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源)。

1.3系统设计目的

通过课程设计的教学实践,巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、内容及步骤。提高动手实践能力、提高科学的思维能力。

2

1.4系统设计要求

1.掌握单片机最小系统的电路原理图;

2.硬件的焊接、连接;

3.独立编辑、编译软件;

4.调试要求:

(1)上电以后自动进入计时状态,起始于00:00:00。

(2)设计键盘调整时间,完成时间设计,并设置闹钟。

(3)定时时间为1/20秒,采用定时器实现。

(4)采用LED数码管显示,时、分,秒采用数字显示。

(5)采用24小时制,具有方便的时间调校功能。

(6)具有时钟和秒表的切换功能。

3

第2章 硬件电路设计

2.1总原理图

如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块、电源模块、晶振模块、按键模块等组成。

图2-1电子时钟原理图

2.2各个模块设计

1、单片机最小系统

AT89S52概述:是一款非常适合单片机初学者学习的单片机, 4

它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。

AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止„„

详述:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器。一个6向量2级中断结构,全双工串行口及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.

5

2、显示模块

LED数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。若按规定使某些笔段上的发光二极管发光,就能显示从0~9的„系列数字。同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。+、-分别表示公共阳极和公共阴极。a~g是7个笔段电极,DP为小数点。另有一种字高为7.6mm的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。

本系统利用6位LED数码管显示时间,共阴极结构。LED数码管由7段发光二极管组成,当要显示某个数字时只要将数字所对应的引脚送入低电平。

3.按键模块

本设计中主要有三个控制按键,按键功能为:

(1)P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。

图2-2

(2)按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。

(3)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂 6

停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。

4.晶振模块

下图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图2-3晶振电路

7

2.3 器件清单

元件名

CRYSTAL

VOLTREG

TRANS4

VSIN

CAP

CAP

TRANSISTOR

TRANSISITOR

SPEAKER

LED

SW-PB

RES2

DPY_7-SEG_DP

单片机

封装名

XTAL-1

TO-220

FLY4

RB.2/.4

RAD-0.1

TO18

TO92A

SIP-2

DIODE-0.4

AXIAL0.3-1.0

DIP8

表一 元件器件清单

型号

MC7805T

10TO1

CAPACITOR POL

CAP

PNP

NPN

AT89S52

8

第3章 软件设计

3.1 硬件框图

根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块、晶振模块、电源模块与按键模块等,模块之间的关系图如下面得方框电路图所示。

图3-1

3.2 程序流程图

(1)总体流程图

图3-2

9

(2)时钟调整模式

开始

系统初始化

是否按下设置键

Y

时间调整模式

N

是否退出调整模式

Y

是否跟闹钟时间一

Y

启动闹铃

图3-3

N

N

显示时间

10

(3)秒表模式

开始

系统初始化

是否按功能切换键

Y

切换秒表

N

显示时间

是否按秒表启动键

N

Y

秒表计时

是否按秒表暂停键

Y

暂停秒表

N

是否按秒表清零键

N

Y

图3-4

11

第4章 心得体会

本次课程设计是用AT89S52单片机CPU及接口电路设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到了多种芯片,程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。

随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。

通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了89S52定时器的使用和中断处理器程序的编程方法。开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的目的。在调试电路的过程中也积累了一些宝贵的经验,比如说,在I/O口要保证标准的高电平”1”的产生,一般要上拉电阻5.1k,在一些需要高电平的地 12

方,不能用悬空来模拟,必须严格的按照“+5v”来连接,特别是调试过程中的分部分进行很重要。

此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了很多的东西。同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。

设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

单片机课程设计虽然结束了,但通过设计所学到的东西将长久存在。相信这次设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。

单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。

在做本次课程设计的过程中,我感触最深的当属查阅大量的 13

设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。

其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:CAD制图、汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。另外,这次课程设计让我感到了团队合作的重要性。在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。

14

第5章 附件

附录A. 源程序清单

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; AT89S52时钟程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

********************************************************定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁及秒表定时用,P3.2、P3.3、P3.4为调整按钮,P0口为字符输出口,P2为扫描口,P1.2为蜂呜器口,采用共阳显示管。50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。03H标志=0时钟闪烁,=1秒表,

05H=0,不闹铃,=1要闹铃. 07H每秒改变一次,用作间隔呜叫.

********************************************************

DISPFIRST EQU 30H ;显示首址存放单元

BELL EQU P1.2

CONBS EQU 2FH ;存放报时次数

CLOCK EQU 2DH

****************************************

中断入口程序

****************************************

ORG 0000H ;程序执行开始地址

LJMP START ;跳到标号START执行

ORG 0003H ;外中断0中断程序入口

RETI ;外中断0中断返回

15

ORG 000BH ;定时器T0中断程序入口

LJMP INTT0 ;跳至INTTO执行

ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回

ORG 001BH ;定时器T1中断程序入口

LJMP INTT1 ;跳至INTT1执行

ORG 0023H ;串行中断程序入口地址

RETI ;串行中断程序返回

****************************************

以下程序开始 ;;

****************************************

整点报时用

QQQQ: MOV A,#10H

MOV B,79H

MUL AB

ADD A,78H

MOV CONBS,A

BSLOOP: LCALL DS21MS

LCALL DL1S

LCALL DL1S

LCALL DL1S

DJNZ CONBS,BSLOOP

CLR 08H ;清整点报时标志

AJMP START1

****************************************

主程序开始 ;;

****************************************

16

START: LCALL ST ;上电显示00:00:00

MOV R0,#00H ;清00H-7FH内存单元

MOV R7,#80H ;

CLEARDISP: MOV @R0,#00H ;

INC R0 ;

DJNZ R7,CLEARDISP ;

MOV 20H,#00H ;清20H(标志用)

MOV 55H,#1

MOV 54H,#2

MOV 7AH,#0AH ;放入"熄灭符"数据

MOV TMOD,#11H ;设T0、T1为16位定

MOV TL0,#0B0H ;50MS定时(T0计时用)

MOV TH0,#3CH ;50MS定时初值

MOV TL1,#0B0H ;50MS定时初值

MOV TH1,#3CH ;50MS定时初值

SETB EA ;总中断开放

SETB ET0 ;允许T0中断

SETB TR0 ;开启T0定时器

MOV R4,#14H ;1秒定时用计数值

MOV DISPFIRST,#70H ;显示单元为70-75H

;以下主程序循环

START1: LCALL DISPLAY ;调用显示子程序

JNB P3.2,SETMM1 ;P3.2口为0时转时间

JNB P3.3,TSFUN ;定时闹铃设定

JNB P3.4,FUNPT ;秒表功能

JB 08H, QQQQ

AJMP START1 ;P3.2口为1时跳回START1

FUNPT: LJMP FUNPTT

START12: LJMP START1

以下闹铃时间设定程序,按P3.3进入设定

TSFUN: LCALL DS20MS

JB P3.3,START1 ;

WAIT113: JNB P3.3,WAIT113 ;等待键释放

JB 05H,CLOSESP ;闹铃已开的话,关闹铃

MOV DISPFIRST,#52H ;进入闹铃设定程序,显示52-55H闹钟定时单元

17

DSWAIT: SETB EA

LCALL DISPLAY

JNB P3.4,DSFINC ;分加1

JNB P3.2,DSDEC ;分减1

JNB P3.3,DSSFU ;进入时调整

AJMP DSWAIT

CLOSESP: CLR 05H ;关闹铃标志

CLR BELL

AJMP START1

DSSFU: LCALL DS20MS ;消抖

JB P3.3, DSWAIT

LJMP DSSFUNN ;进入时调整;

SETMM1: LJMP SETMM;转到时间调整程序SETMM

DSFINC : LCALL DS20MS ;消抖

JB P3.4, DSWAIT

DSWAIT12: LCALL DISPLAY ;等键 释放

JNB P3.4, DSWAIT12

CLR EA

MOV R0,#53H ;

LCALL ADD1 ;闹铃设定分加1

MOV A,R3 ;分数据放入A

CLR C ;清进位标志

CJNE A,#60H,ADDHH22 ;

ADDHH22: JC DSWAIT ;小于60分时返回

ACALL CLR0 ;大于或等于60分

AJMP DSWAIT

DSDEC : LCALL DS20MS ;消抖

JB P3.2, DSWAIT

DSWAITEE: LCALL DISPLAY ;等键 释放

JNB P3.2, DSWAITEE

CLR EA

MOV R0,#53H ;

LCALL sub1 ;闹铃设定分减1

LJMP DSWAIT

;;以下键等待释放时显示不会熄灭用

WAIT21: LCALL DISPLAY

AJMP WAIT22

WAIT31: LCALL DISPLAY

18

AJMP WAIT33

WAIT41: LCALL DISPLAY

AJMP WAIT44

WAIT51: LCALL DISPLAY

AJMP WAIT55

WAIT61: LCALL DISPLAY

AJMP WAIT66

WAIT81: LCALL DISPLAY

AJMP WAIT88

WAIT91: LCALL DISPLAY

AJMP WAIT99

;****************************************

;; 闪动调时程序秒表功能程序 ;;

;****************************************

;T1中断服务程序,用作时间调整时调整单元闪烁指示或秒表计时

INTT1: PUSH ACC ;中断现场保护

PUSH PSW

JB 03H, MMFUN ;=1时秒表

MOV TL1, #0B0H ;装定时器T1定时

MOV TH1, #3CH ;

DJNZ R2,INTT1OUT ;

MOV R2,#06H ;

CPL 02H ;

JB 02H,FLASH1 ;

MOV 72H,76H ;

MOV 73H,77H ;

MOV 74H,78H ;

MOV 75H,79H ;

INTT1OUT: POP PSW ;恢复现场

POP ACC ;

RETI ;中断退出

FLASH1: JB 01H,FLASH2 ;

MOV 72H,7AH ;

MOV 73H,7AH ;

MOV 74H,78H ;

MOV 75H,79H ;

AJMP INTT1OUT ;转中断退出

;***************************************

19

;; 显示程序 ;;

;***************************************

; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段码数据,P2口作

; 扫描控制,每个LED数码管亮1MS时间再逐位循环。

DISPLAY: MOV R1,DISPFIRST ;指向显示数据首址

MOV R5,#0FEH ;扫描控制字初值

PLAY: MOV A,R5 ;扫描字放入A

MOV P2,A ;从P2口输出

MOV A,@R1 ;取显示数据到A

MOV DPTR,#TAB ;取段码表地址

MOVC A,@A+DPTR ;

MOV P0,A ;段码放入P1口

MOV A,R5 ;

JB ACC.2,LOOP5 ;小数点处理

CLR P0.7 ;

LOOP5: JB ACC.4,LOOP6 ;小数点处理

CLR P0.7 ;

LOOP6: LCALL DL1MS ;显示1MS

INC R1 ;指向下一地址

MOV A,R5 ;扫描控制字放入A

JNB ACC.5,ENDOUT ;

RL A ;A中数据循环左移

MOV R5,A ;放回R5内

MOV P0,#0FFH

AJMP PLAY ;跳回PLAY

ENDOUT: MOV P2,#0FFH ;

MOV P0,#0FFH ;P0口复位

RET ;子程序返回

TAB:

;共阴段码表 "0""1""2" "3""4""5""6""7" "8""9""不亮“"A”“-”

;

;****************************

; SDISPLAY ,上电显示子程序

;****************************

;不带小数点显示,有“A”“-”显示功能

SDISPLAY: MOV R1,DISPFIRST

20

MOV R5,#0FEH ;扫描控制字初值

SPLAY: MOV A,R5 ;扫描字放入A

MOV P2,A ;从P2口输出

MOV A,@R1 ;取显示数据到A

MOV DPTR,#TABS ;取段码表地址

MOVC A,@A+DPTR ;

MOV P0,A ;段码放入P1口

MOV A,R5 ;

LCALL DL1MS ;显示1MS

INC R1 ;指向下一地址

ENDOUTS: MOV P2,#0FFH ;

MOV P0,#0FFH ;P0口复位

RET ;子程序返回

TABS:DB

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0C6H,0BFH,88H

; 显示数 "0 1 2 3 4 5 6 7

8 9 不亮 C - A "

; 内存数 "0 1 2 3 4 5 6 7

8 9 0AH 0BH 0CH 0DH "

STAB:DB

0AH,0AH,0AH,0AH,0AH,09H,06H,04H,02H,00H,00H,06H,00H,01H,03H,0AH

DB

0AH,09H,01H,0CH,06H,00H,0CH,09H,00H,00H,02H,0AH,0AH,0AH,0AH,0AH

; 注:0A不亮,0B显示“A”,0C显示“-”

;*************************************

;以下是闹铃时间设定程序中的时调整程序

;*************************************

DSSFUNN: LCALL DISPLAY ;等待键释放

JNB P3.3, DSSFUNN

WAITSS: SETB EA

LCALL DISPLAY

JNB P3.4,FFFF ;时加1键

JNB P3.2,DDDD ;时减1

JNB P3.3,OOOO ;闹铃设定退出键

AJMP WAITSS

21

OOOO: LCALL DS20MS ;消抖

JB P3.3,WAITSS

DSSFUNNM: LCALL DISPLAY ;键释放等待

JNB P3.3, DSSFUNNM

MOV DISPFIRST,#72H

LJMP START1

FFFF: LCALL DS20MS ;消抖

JB P3.4, WAITSS

DSSFUNMM: LCALL DISPLAY ;键释放等待

JNB P3.4, DSSFUNMM

CLR EA

MOV R0,#55H

LCALL ADD1

MOV A,R3 ;

CLR C ;

CJNE A,#24H,ADDHH33N ;

ADDHH33N: JC WAITSS ;

ACALL CLR0 ;

AJMP WAITSS

DDDD : LCALL DS20MS ;消抖 ;

JB P3.2, WAITSS

DSSFUNDD: LCALL DISPLAY ;键释放等待

JNB P3.2, DSSFUNDD

CLR EA

MOV R0,#55H

LCALL SUBB1

LJMP WAITSS

;*********************

;以下是闹铃判断子程序

;*********************

BAOJ: MOV A,79H ;

CJNE A,55H,BBAO

MOV A,78H

CLR C

BB3: CJNE A,54H,BBAO

MOV A,77H

CLR C

CJNE A,53H,BBAO

22

MOV A,76H

CLR C

; CJNE A,52H,BBAO

; CLR C

; CLR BELL

; RET

BB2: CJNE A,52H,BBAO

JNB 07H,BBAO ;07H在1秒到时会取反

CLR BELL ;时分相同时

RET

BBAO: SETB BELL ;不相同或闹铃

RET

;********************************************************

上电显示程序

;********************************************************

ST: MOV R0,#40H ;

MOV R2,#20H ;

MOV R3,#00H ;

CLR A ;

MOV DPTR,#STAB ;

SLOOP: MOVC A,@A+DPTR ;

MOV @R0,A ;

MOV A,R3 ;

INC A ;

MOV R3,A ;

INC R0 ;

DJNZ R2,SLOOP ;移入完毕

MOV DISPFIRST,#40H ;

SSLOOP: MOV R2,#50 ;控制移动速度

SSLOOP1: LCALL SDISPLAY ;

DJNZ R2,SSLOOP1 ;

INC DISPFIRST

MOV A,DISPFIRST

CJNE A,#5AH, SSLOOP ;

MOV DISPFIRST,#5AH ;以下程

MOV R3,#1BH ;显示27

SSLOOP12: LCALL SDISPLAY ;

DJNZ R2,SSLOOP12 ;

23

DEC DISPFIRST

DJNZ R3,SSLOOP2 ;

RET

;*******************************************

;; 延时程序 ;;

;*******************************************

;1MS延时程序,LED显示程序用

DL1MS: MOV R6,#14H

DL1: MOV R7,#19H

DL2: DJNZ R7,DL2

DJNZ R6,DL1

RET

;延时程序,采用调用显示子程序以改善LED的显示闪烁现象

DS20MS: ;CLR BELL

LCALL DISPLAY

LCALL DISPLAY

LCALL DISPLAY

; SETB BELL

RET

DS21MS: CLR BELL

LCALL DISPLAY

LCALL DISPLAY

LCALL DISPLAY

SETB BELL

RET

;延时程序,用作按键时间的长短判断

DL1S: LCALL DL05S

LCALL DL05S

RET

DL05S: MOV R3,#20H ;8毫秒*32=0.196秒

DL05S1: LCALL DISPLAY

DJNZ R3,DL05S1

RET

;********************************************************

END ;程序结束

24

附录B.硬件原理图

附一 原理图

25

附二 仿真图一

附三 仿真图二

26

附件C 参考文献

[1] 许立梓.微型计算机原理及应用[M].北京. 机械工业出版社,

2002

[2] 刘乐善.微型计算机接口技术及应用[M].华中理工大学出版社,

2000

[3] 邹逢兴.计算机硬件技术基础试验教程[M]. 高等教育出版社 , 2000

[4] 周佩玲.16位微型计算机原理接口及其应用[M].中国科学技术大学出版社, 2000

[5] 吴秀清.微型计算机原理与接口技术[M].中国科学技术出版社 , 2001

[6] 邓亚平.微型计算机接口技术[M].清华大学出版社 , 2001

[7] 王迎旭.单片机原理及及应用[M].机械工业出版社 , 2001

[8] 周航慈.单片机应用程序设计技术[M].北京航空航天大学出版社, 2002

[9] 谢宜仁.单片机实用技术问答[M].人民邮电出版社 , 2002

27

电气信息学院课程设计评分表

评 价

项 目

设计方案合理性与创造性(10%)

中 及格

开发板焊接及其调试完成情况*(10%)

硬件设计或软件编程完成情况(20%)

硬件测试或软件调试结果(10%)

设计说明书质量(20%)

答辩情况(10%)

完成任务情况(10%)

独立工作能力(10%)

出勤情况(10%)

*

综 合 评 分

指导教师签名:________________

日 期:________________

注:①表中标*号项目是硬件制作或软件编程类课题必填内容;

②此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。

28


发布者:admin,转转请注明出处:http://www.yc00.com/news/1706956056a1470098.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信