目录
1 设计方案 ...................................................................................................................... 1
1.1 设计目的 ........................................................................................................... 1
1.2 设计任务 ........................................................................................................... 1
2 设计总体框图 . ............................................................................................................. 1
2.1 系统设计方框图.................................................................................................. 1
2.2 程序流程图 ........................................................................................................ 2
3 设计单元电路 . ............................................................................................................. 3
3.1 ATC51 的时钟电路 . ...................................................................................... 3
3.2 ATC51 的复位电路设计 ................................................................................ 4
3.3 ATC51 的显示电路设计 ................................................................................ 4
3.4 ATC51 的按键电路设计 ................................................................................ 5
4 电路原理说明 . ............................................................................................................. 6
4.1 ATC51 芯片管脚及其功能 . ......................................................................... 6
4.2 电路总原理及硬件原理图 ................................................................................... 8
4.3 软件设计 ........................................................................................................... 9
5 参考文献 . ....................................................... 20 6 设计心得 . ....................................................... 20 附录: . ........................................................................................................................ 21
附录 1:调试报告 . ................................................................................................. 21
附录 2:元器件清单 ............................................................................................... 22
定时闹铃的设计
1 设计方案
1.1 设计目的
本设计是一个定时闹钟,它仅使用单片的
20 引脚单片机完成闹钟的全部功能。设计
目的是为了学习和巩固单片机知识,使对已学过的基础知识能有更深入的理解,学会
思考、思考、工作,以及提高对所学应用基本理论分析和解决实际问题的能力。
1.2 设计任务
本设计是一个定是闹钟,它仅使用单片
40 个引脚单片机 ATC51完成闹钟的全部功
能,包括时钟显示, 时钟设置,闹钟设定和闹钟报时。 设计目的是学习和巩固单片机知识,
使用学习过的关于 ATC51的基础知识能有更深入的理解,学会思考,工作,以
及提高对所学习的应用基本理论分析和解决实际问题的能力。
2 设计总体框图
2.1 系统设计方框图
限流
晶振
电阻
及复位
单片机
ATC51
6 位共阳
数码管
显示
按钮
LED 指示
图 1 系统设计框图
. . .
2.2 程序流程图
开 始
有关变量的初始化
启动走时
显示时间
判断是否闹钟
时间到
Y
LED亮
N
N
S4 是否按下
S3 是否按下
Y
按 S4?
Y
调 整 时 钟 时
按 S2?
N N
按 S2?
Y
设 置 闹 钟 分
N
N
Y
按 S3?
Y
调 整 时 钟 分
Y
设 置 闹
钟 时
N
按 S1?
Y
N
按 S1?
Y
按 S1?
Y
按 S1?
Y
图 2 程序流程图
. . .
3 设计单元电路
3.1 ATC51 的时钟电路
ATC51系列的单片机时钟方式分为内部和外部方式,外部方式是把外部已经有的时
钟信号引入到单片机内部。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个
单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信
号,主要有晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;而是指
系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片
机内部的可编程定时 / 计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;
二是用专门的时钟芯片实现。
本设计的采用内部时钟方式。
时钟电路如图 3 所示。
图 3 时钟电路
. . .
3.2 ATC51 的复位电路设计
复位是单片机的初始化操作,起主要功能是把
PC初始化为 0000H,使单片机从 0000H
单元开始执行程序。除进入系统的正常初始化之外,当由于程序运行出错祸操作错误使系
统处于死锁状态时,为摆脱困境,可以使复位键以重新启动,也可以通过监视定时器来强
迫复位。 RET引脚是复位信号的输入端,如图 4 所示。
图 4 复位电路
3.3 ATC51 的显示电路设计
分段式显示器( LED数码管)由 7 条线段围成 8 字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显
示各种字形或符号。 LED数码管有共阳、共阴之分。图是共阳式、共阴式
LED数码管的原
理图和符号,如图 5 所示。
显示电路显示模块需要实时显示当前的时间
, 即时、分、秒,因此需要 6 个数码管。
LED 显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多
位 LED显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如图
6 所示,时
. . .
的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第三个和第四个数码管,秒的十位和个位分别显示在第五个和第六个数码管。
定时时间到后, P3.7 被置位,二极管发光,提醒闹钟时间到。
图 5 共阳式、共阴式 LED数码管的原理图和数码管的符号图
图 6 数码管硬件连接图
3.4 ATC51 的按键电路设计
S1按键接在 P2.0 口,用于切换正常走时、 调时间、设定闹钟; S2 按键接在 P2.1 .
.
.
口,
用于调整时间分加一和设置闹铃分加一功能键;
S3 按键接在 P2.2 口,按下后进入闹钟设
7 所示。
置状态; S4 按键接在 P2.3 口,按下后进入时间调整状态。按键连接如图
图 7 按键硬件连接图
4 电路原理说明
4.1 ATC51 芯片管脚及其功能
ATC51是一种带
4K 字节闪烁可编程可擦除只读存储器的低电压,可稳定地工作于
5V 的电源下 . 该器件采用 ATMEL高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。 由于将多功能 8 位 CPU和闪烁存储器组合在单个芯片中, ATMEL 的 ATC51是一种高效微控制器。 ATC51芯片引脚图如图 8 所示。
. . .
图 8 ATC51芯片引脚图
ATC51管脚说明:
VCC :供电电压。
GND:接地。
P0 口: P0口为一个 8位漏级开路双向 I/O 口,每脚可吸收 8TTL门电流。当 P1口
的管脚第一次写 1时,被定义为高阻输入。 P0能够用于外部程序数据存储器,它可以被定义
为数据 / 地址的第八位。在 FIASH编程时, P0 口作为原码输入口,当 FIASH进行校验时, P0 输出原码,此时 P0外部必须被拉高。
P1口: P1口是一个内部提供上拉电阻的 8位双向 I/O 口, P1口缓冲器能接收输
出4TTL门电流。 P1口管脚写入 1后,被内部上拉为高,可用作输入, P1口被外部下拉为低电
平时,将输出电流,这是由于内部上拉的缘故。在 FLASH编程和校验时, P1口作为第八位地址接收。
P2口: P2口为一个内部上拉电阻的 8位双向 I/O 口, P2口缓冲器可接收,输出 4
个 TTL门电流,当 P2口被写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作
为输入时, P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。
P2口当用于
外部程序存储器或 16位地址外部数据存储器进行存取时,
P2口输出地址的高八位。在给出
P2口输
地址“ 1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,
出其特殊功能寄存器的内容。 P2口在 FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是 8个带内部上拉电阻的双向 I/O 口,可接收输出 4个 TTL门电
流。当 P3口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉
. . .
为低电平, P3口将输出电流( ILL )这是由于上拉的缘故。
P3 口也可作为 ATC51的一些特殊功能口:
管脚 备选功能
P3.0 RXD (串行输入口) P3.1 TXD (串行输出口) P3.2 /INT0 P3.3 /INT1 P3.4 T0 P3.5 T1
(外部中断 0) (外部中断 1)
(记时器 0外部输入) (记时器 1外部输入)
P3.6 /WR (外部数据存储器写选通) P3.7 /RD
(外部数据存储器读选通)
P3 口同时为闪烁编程和编程校验接收一些控制信号。
RST :复位输入。当振荡器复位器件时, 要保持 RST脚两个机器周期的高电平时间。
ALE/PROG :当访问外部存储器时, 地址锁存允许的输出电平用于锁存地址的地位字节。
在 FLASH编程期间,此引脚用于输入编程脉冲。在平时, ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6 。因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。如想禁止 ALE的输出可在 SFR8EH地址上置 0。此时, ALE只有在执行 MOVX,MOVC指令是 ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE禁止,置位无效。
/PSEN :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器
周期两次 /PSEN有效。但在访问外部数据存储器时,这两次有效的 /PSEN信号将不出现。
/EA/VPP:当 /EA保持低电平时,则在此期间外部程序存储器(
0000H-FFFFH),
不管是否有内部程序存储器。注意加密方式
1时, /EA将内部锁定为 RESET;当 /EA端保持高
电平时,此间内部程序存储器。 在FLASH编程期间,此引脚也用于施加 12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2 :来自反向振荡器的输出。
4.2 电路总原理及硬件原理图
电路总原理:
.
.
.
将软件 .hex 文件添加到芯片后, 就可开始仿真。 此设计中数码管显示时分秒, 时为 24
进制,分和秒都为 60 进制。
当按下 S3 时进入闹钟设置状态,此时再按下 S3 则设置闹钟时,每按一下闹钟时加一,
到 23h 时回到 0h,接着按下 S2 则设置闹钟分,每按一下闹钟分加一,之后按下
S1 回到时
间显示状态;当按下 S4 时进入时钟调整状态,此时再按下
S4 则调整时钟时,每按一下时
钟时加一,到 23h 时回到 0h,接着按下 S2 则设置时钟分,每按一下时钟分加一,之后按
下 S1 回到时间显示状态。
电路总原理图如图 9 所示。
图 9 电路总原理图
4.3 软件设计
设计程序如下:
ORG 0000H
LJMP START
ORG 000BH
LJMP TIME
START:MOV SP,#51H
MOV 20H,#00H ;
.
.
.
定义秒
MOV 21H,#00H ; MOV 22H,#00H ; MOV 23H,#00H ; MOV 24H,#00H ; MOV 25H,#00H MOV 26H,#00H
定义分 定义时 定义闹钟分 定义闹钟时
MOV 30H,#00H ;BCD MOV 31H,#00H
显示时间秒
MOV 32H,#00H ;BCD MOV 33H,#00H
显示时间分
MOV 34H,#00H ;BCD MOV 35H,#00H
显示时间时
MOV 36H,#00H ;BCD MOV 37H,#00H
闹钟分
MOV 38H,#00H ;BCD MOV 39H,#00H
闹钟时
MOV 50H,#00H ; MOV TMOD,#01H MOV TH0,#03CH MOV TL0,#0B0H MOV IE,#82H SETB TR0; MOV R2,#14H MOV P2,#0FFH
按键次数
;
中断允许 启动 T0
CLR P3.7
MAIN: LCALL TIMEPRO ; 判断是否为闹钟
GB: LCALL DISPLAY1 ;
显示时间
JB P1.3,M1
.
.
.
LCALL SETTIME
LJMP MAIN
M1: JB P1.2,M2
LCALL SETATIME
LJMP MAIN
M2: JB P1.0,M4
LCALL LOOKATIME
M4: LJMP MAIN
DELAY:MOV R4,#030H DL00: MOV R5,#0FFH
DL11: MOV R6,#09H
DL12: DJNZ R6,DL12
DJNZ R5,DL11
DJNZ R4,DL00
RET
SETTIME:
; L0: LCALL DISPLAY1
MM1: JB P1.3,L1
;MOV C,P1.3
JC MM1
LCALL DELAY1
JC MM1
MSTOP1: MOV C,P1.3
JNC MSTOP1
LCALL DELAY1
MOV A,50H
INC 50H
CJNE A ,#00H,HJ1
LJMP L0
.
.
.
延时子程序
设置时间
进入时间设置状态; 设置时钟时
;
HJ1: MOV C,P1.3
JNC MSTOP1
INC 22H
MOV A,22H
CJNE A,#18H,GO12 ;
MOV 22H,#00H
MOV 34H,#00H
MOV 35H,#00H
LJMP L0
L1:
JB P1.1,L2 MOV C,P1.1 JC L1
LCALL DELAY1
JC L1
MSTOP2: MOV C,P1.1
JNC MSTOP2
LCALL DELAY1
MOV C,P1.1
JNC MSTOP2
INC 21H
MOV A,21H
CJNE A,#3CH,GO11 MOV 21H,#00H
MOV 32H,#00H
MOV 33H,#00H
LJMP L0
GO11: MOV B,#0AH
DIV AB
MOV 32H,B
.
.
.
时为 24h 时清零
; 设置时钟分
分为 60s 时清零
;
MOV 33H,A
LJMP L0
GO12: MOV B,#0AH
DIV AB
MOV 34H,B
MOV 35H,A
LJMP L0
L2:
JB P1.0,L0 MOV C,P1.0 JC L2
LCALL DELAY1
MOV C,P1.0
JC L1
STOP1: MOV C,P1.0
; 回到时间显示
JNC STOP1
LCALL DELAY1
MOV C,P1.0
JNC STOP1
MOV 50H,#00H
LJMP MAIN
SETATIME:LCALL DISPLAY2 ;设置闹钟
N0:
LCALL DISPLAY2
MM2: JB P1.2,N1
MOV C,P1.2
JC MM2
LCALL DELAY1
JC MM2
MSTOP3: MOV C,P1.2
.
.
.
; 设置闹钟时
JNC MSTOP3
LCALL DELAY1
MOV A,50H
INC 50H
CJNE A,#00H,HJ2
LJMP N0
HJ2: MOV C,P1.2
JNC MSTOP3
INC 24H
MOV A,24H
CJNE A,#18H,GO22
;MOV 24H,#00H
MOV 38H,#00H
MOV 39H,#00H
LJMP N0
N1:
JB P1.1,N2 MOV C,P1.1
JC N1
LCALL DELAY1
MOV C,P1.1
JC N1
MSTOP4: MOV C,P1.1
; JNC MSTOP4
LCALL DELAY1
MOV C,P1.1
JNC MSTOP4
INC 23H
MOV A,23H
CJNE A,#3CH,GO21 ;
.
.
.
时为 24h 时清零
分为 60s 时清零
设置闹钟分
MOV 23H,#00H
MOV 36H,#00H
MOV 37H,#00H
LJMP N0
GO21: MOV B,#0AH
DIV AB
MOV 36H,B
MOV 37H,A
LJMP N0
GO22: MOV B,#0AH
DIV AB
MOV 38H,B
MOV 39H,A
LJMP N0
N2:
JB P1.0,N0 MOV C,P1.0 JC N2
LCALL DELAY1
MOV C,P1.0
JC N1
STOP2: MOV C,P1.0
JNC STOP2
LCALL DELAY1
MOV C,P1.0
JNC STOP2
MOV 50H,#00H
LJMP MAIN
TIMEPRO:MOV A,21H
MOV B,23H
.
.
.
回到时间显示
; 判断是否为闹钟
;
CJNE A,B,BK
MOV A,22H
MOV B,24H
CJNE A,B,BK
SETB 25H.0
MOV C,25H.0
LCALL TIMEOUT
JMP BK1
BK:
CLR P3.7 BK1:
RET
TIMEOUT:
SETB P3.7
RET
LOOKATIME: LCALL DISPLAY2 闹钟
MM: JNB P1.0,LOOKATIME LCALL DELAY1 LJMP MAIN
DELAY1: MOV R4,#14H
DL001: MOV R5,#0FFH
DL111: DJNZ R5,DL111
DJNZ R4,DL001
RET
TIME:
PUSH ACC
; 定时PUSH PSW
MOV TH0,#0E0H
MOV TL0,#0B0H
DJNZ R2,RET0
.
.
.
判断S1 是否按下,若按下则显示时间,否则显示
;
MOV R2,#14H MOV A,20H CLR C INC A
;
秒自加 1
; ;
秒计数循环 复位
CJNE A,#3CH,GO1 MOV 20H,#00H MOV 30H,#00H MOV 31H,#00H MOV A,21H
INC A
;
CJNE A,#3CH,GO2 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H MOV A,22H
INC A
;
CJNE A,#18H,GO3 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H MOV A,21H
AJMP RET0
GO1:
MOV 20H,A MOV B,#0AH DIV AB
MOV 31H,A ; MOV 30H,B ;
AJMP RET0
GO2:
MOV 21H,A
.
.
.
分自加 1
; 分计数循环
复位
时自加 1
; 时计数循环
复位
秒高位 秒低位
;;
MOV B,#0AH
DIV AB
MOV 3H,A
; MOV 32H,B
;
AJMP RET0
GO3:
MOV 22H,A MOV B,#0AH
DIV AB
MOV 35H,A
; MOV 34H,B
;
AJMP RET0
RET0:
POP PSW
POP ACC RETI
DISPLAY1:MOV R0,#30H
MOV R3,#01H
PLAY1: MOV A,R3
MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1MOV C A,@A+DPTRMOV P0,A
LCALL DL1
MOV A,R3
RL A
MOV R3,A
MOV C,ACC.6
JC LD1
INC R0
.
.
.
分高位 分低位
时高位 时低位
显示子程序
;
LJMP PLAY1
LD1:
RET
DISPLAY2: PUSH ACC
PUSH PSW
MOV R0,#36H
MOV R3,#04H
PLAY2: MOV A, R3
MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1
MOV A,R3
; ;
判断是否显示到最低位 左移一位
RL A
MOV R3,A
MOV C,ACC.6
JC LD2
INC R0
; 缓存器地址加一
LJMP PLAY2
LD2:
POP PSW POP ACC RET
DL1:
MOV R7,#20H MOV R6,#20H DJNZ R6,$ DJNZ R7,DL
DL:
DL6:
RET
DSEG1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
.
.
.
END
5 参考文献
[1] 高峰 . 单片微型计算机原理与接口技术(第二版) . 北京:科学出版社, 2007 [2] 王建校 .51 系列单片机及 C51程序设计 . 北京:科学出版社, 2002
[3] 孙涵芳.MCS-51系列单片机原理及应用 [M] .北京:北京航空航天大学出版社, 1996.4
[4]. 李朝青 . 单片机原理及接口技术(修订版) . 北京:北京航空航天大学出版社, 1998 [5]. 谭浩强 . 单片机课程设计 . 北京:清华大学出版社, 19
6 设计心得
这次设计做的很成功,从设计方案确定到硬件的设计、软件的设计,到最后的调试,我基本上思考,完成。整个过程中我学会了如何发现问题和解决问题,尤其是软件设计过程中,各种问题的出现促使我对过去所学的有关知识重新温故,而且很多当时没掌握的部分,或是没注意的细节,或是忘记了的知识都巩固了,而且对单片机原理课外知识也的到了拓展。同时因前一周也是在做单片机课程实验让我对汇编语言的编程有了基本的了解,这次程序我自己编写程序,然后进行改正,虽然遇到了麻烦的问题,但最后也通过和同学讨论解决了。
通过本次课程设计是我懂得了理论与实际相结合的重要新性只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,才能提该自己的实际动手能力和思考能力。
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在,作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。相信这次的经验会在我以后的学习和工作中起到很大的作用。
. . .
附录:
附录 1:调试报告
电路结果仿真如下:
. . 图 10 闹钟设置 6:13
图 11 时间设置 3:12:10
.
图 12 时间显示 17:00:04
图 13 闹钟定时到
附录 2:元器件清单
所用所有元器件及其数量如表 1 所示。
. . .
表 1 各元器件及其数量
. .器件名 数量 ATC51芯片
1 个 LED 1 个 电解电容 1 个 定值电阻 100
1 个 晶振 1 个 定值电阻 1K 2 个 上拉电阻 2 个 电容 30pF
2 个 按键 5 个 数码显示管
6 个 反相器
6 个
.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务