您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页单片机课程设计——定时闹钟的设计

单片机课程设计——定时闹钟的设计

来源:华佗养生网


电子技术基础课程设计报告

定 时 闹 钟

2014年12月24日

摘要

本设计是一个定时闹钟,它仅使用单片的40引脚单片机完成闹钟的全部功能。设计目的是为了学习和巩固单片机知识,使对已学过的基础知识能有更深入的理解,学会思考、思考、工作,以及提高对所学应用基本理论分析和解决实际问题的能力。

本文设计的定时闹钟采用80c51芯片,用汇编语言进行编程,时、分、秒用6位LED数码管显示。在电路中通过四个按键S1、S2、S3和S4来进行定时和调时,定时时间到通过喇叭发出报警声。 设计系统的主要功能

· 能显示 时时-分分-秒秒。 · 能够设置定时时间、 修改定时时间。 · 到定时时间能发出报警

1 系统总体方案及硬件设计

1.1 系统总体方案

1)由于要显示数字时间,所以需要6位数码管。

2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。

3)80c51单片机加上外围器件(2个3位共阳数码管,8个限流电阻和一个蜂鸣器)和应用程序(ISIS 7 Professional软件和KEIL编译软件),构成相应的应用系统。 1.2系统设计方框图

1.3硬件设计 1.3.1芯片:80c51

80c51芯片内不包含一个8位处理器cpu,4kb程序存储器ROM,128B随机存取存储器,RAM,4个8位并行I/O接口,1个全双工串行通信接口,2个16 位定时器、计数器级及21个特殊功能寄存器。

由先进CMOS 工艺制造并带有非易失性Flash 程序存储器 全部支持12 时钟和6 时钟操作 PC51X2 和PC52X2/54X2/58X2 分别包含128 字节和256 字节RAM 32 条I/O 口线 3 个16 位定时/计数器 6 输入4 优先级嵌套中断结构 1 个串行I/O 口 可用于多机通信 I/O 扩展或全双工UART以及片内振荡器和时钟电路。此外,由于器件采用了静态设计,可提供很宽的操作频率范围,频率可降至0 。可实现两个由软件选择的节电模式,空闲模式和掉电模式,空闲模式冻结CPU但RAM定时器,串口和中断系统仍然工作掉电模式保存RAM的内容 但是冻结振荡器 导致所有其它的片内功能停止工作。由于设计是静态的时钟可停止而不会丢失用户数据 运行可从时钟停止处恢复。

按钮 蜂鸣器 晶振 及复位 单片机 80c51 8个 限流 电阻 选位 6位共阳 数码管显 示 图1系统设计方框图

.1.3.2蜂鸣器

由P3.7口控制蜂鸣器,使其定时时间到能发出报警声。

1.3.3时钟电路

单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz~12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF~100pF之间取值。

单片机的时钟电路:如图所示

限流电阻:8个10k电阻

控制按键:本系统要进行时间的调整和定时,因此用4个手动按键对其进行控制。

1.3.4显示器模块的设计

利用2个七段数码管6个选位引脚连接C51单片机 P2.5 –P2.0接口,其他8个引脚分别通过限流电阻与C51单片机的P0.0 - P0.7和共阳极数码管连接。

数码管:

单片机中通常使用7段LED,LED是发光二极管显示器的缩写。LED显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。 如图所示

2软件设计

2.1划分模块

根据设计要求,定时闹钟程序可分为以下几个模块: 1)显示时间的设置; 2)闹钟时间的设置: 4)定时时间的响应。

3.2程序流程图

程序流程图

开始 初始化主程序 响铃判断 Y N 响铃 显示时间 时间调整 S4按下? Y N 闹钟调整 S3按下? Y N N S1按下? Y 显示闹钟 2.3汇编程序 ORG 0000H LJMP START ORG 000BH LJMP TIME ;;;;;;;;初始化;;;;;;;; START: MOV SP, #50H MOV 20H,#00H ;

MOV 21H,#00H ; MOV 22H,#00H ; MOV 23H,#01H ; MOV 24H,#01H MOV 25H,#00H

MOV 26H,#01H

MOV 30H,#00H ;BCD SECOND MOV 31H,#00H

MOV 32H,#00H ;BCD MINUTE MOV 33H,#00H

MOV 34H,#00H ;BCD HOUR MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H

MOV 50H,#00H ; MOV TMOD,#01H ;16 MOV TH0, #03CH ; MOV TL0, #0B0H

MOV IE, #87H ; SETB TR0 ; MOV R2,#14H

定义秒 定义分

定义时 定义闹钟分钟 ;定义闹钟小时

按键次数

位计数器 赋初值 中断允许 启动T0

MOV P2,#0FFH

CLR P3.7

;;;;;;;;主程序;;;;;;;;; MAIN: LCALL TIMEPRO GB:

LCALL DISPLAY1

;调用闹钟判断

;调用时间显示

JB P1.3,M1 ;P1.3=1时转移 S4没有按下 LCALL SETTIME ;调用SETTIME调时子程序 LJMP MAIN

M1: JB P1.2,M2 ;P1 g.2=1时转移 S3 LCALL SETATIME ;调用SETATIME子程序 LJMP MAIN

M2: JB P1.0,M4 ;P1.0=1时转移 S1

LCALL LOOKATIME ;调用LOOKATIME显示闹钟子程序 M4: LJMP MAIN

;;;;;;;;延时子程序 ;;;;;; DELAY: MOV R4,#030H DL00: MOV R5,#0FFH DL11: MOV R6,#9H DL12: DJNZ R6,DL12 DJNZ R5,DL11 DJNZ R4,DL00 RET

;;;;;;;时间调整;;;;;;;

;设置时间

SETTIME:

L0: LCALL DISPLAY1

MM1: JB P1.3,L1 ;P1.3=1时转移 MOV C,P1.3 JC MM1

LCALL DELAY1 ;延时 JC MM1

MSTOP1: MOV C,P1.3

;P1.3为0时转移

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 ;P1.1=1 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

小时自加一 小时计数循环复位 时转移 延时

;P1.1=0时转移

延时 分钟加一 分钟计数循环复位 LJMP L0 GO11: MOV B,#0AH DIV AB

MOV 32H,B ; 将A的低4位存入32单元 MOV 33H,A ; 将A的高4位存入33单元 LJMP L0 GO12: MOV B,#0AH DIV AB

MOV 34H,B ;将A的低4位存入34单元 MOV 35H,A ; 将A的高4位存入35单元 LJMP L0

L2: JB P1.0,L0 ; P1.0=1时转移 MOV C,P1.0 JC L2

LCALL DELAY1 ;延时 MOV C,P1.0 JC L2

STOP1: MOV C,P1.0 ; P1.0=0时转移 JNC STOP1 LCALL DELAY1 ;延时 MOV C,P1.0 JNC STOP1

MOV 50H,#00H

LJMP MAIN ;;;;;; 设置闹钟;;;;;;;;

SETATIME:LCALL DISPLAY2 ; 调用DISPLAY2显示闹钟 N0: LCALL DISPLAY2

MM2: JB P1.2,N1 ;P1.2=1时转移 MOV C,P1.2 JC MM2

LCALL DELAY1 ; 延时

JC MM2 MSTOP3: MOV C,P1.2

; P1.2=0时转移

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,#24,GO22 ; MOV 24H,#00H ; MOV 38H,#00H MOV 39H,#00H LJMP N0

N1: JB P1.1,N2 ;P1.1 MOV C,P1.1 JC N1

LCALL DELAY1 ; JC N1 MSTOP4: MOV C,P1.1

JNC MSTOP4 LCALL DELAY1 ; MOV C,P1.1 JNC MSTOP4

INC 23H ; MOV A,23H

CJNE A,#60,GO21 ; MOV 23H,#00H ;小时加一 小时计数循环 复位 =1时转移延时 ;P1.1=0时转移

延时 分钟加一 分钟计数循环 复位

MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21: MOV B,#0AH DIV AB

MOV 36H,B ;将A的低4位存入36单元 MOV 37H,A ; LJMP N0 GO22: MOV B,#0AH DIV AB

MOV 38H,B ; MOV 39H,A ; LJMP N0

N2: JB P1.0 ,N0 ;P1.0 MOV C,P1.0 JC N2

LCALL DELAY1 ; MOV C,P1.0 JC N2 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

将A的高4位存入37单元 将A的低4位存入38单元 将A的高4位存入39单元 =1时转移 延时 判断定时闹钟的分钟 CJNE A,B,BK ;判断定时闹钟的小时 SETB 25H.0 MOV C,25H.0

LCALL TIMEOUT ;调用TIMEOUT BK:RET TIMEOUT:

X1: LCALL BZ ;调用喇叭响应程序 LCALL DISPLAY2 ;延时

CLR 25H.0 ;调用喇叭响应程序结束 JB P1.0, X1 ;P1.0=1时转移 LCALL DELAY CLR 25H.0

LJMP DISPLAY1 BZ: CLR P3.7

MOV R7,#250 ;喇叭响应时间 T2: MOV R6,#124 T3: DJNZ R6,T3 DJNZ R7,T2 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,#03CH ;初值

MOV TL0,#0B0H

DJNZ R2,RET0 MOV

R2,#14H

MOV A,20H CLR C

INC A ; CJNE A,#3CH,GO1 ; MOV 20H,#0 ; MOV 30H,#0 MOV 31H,#0 MOV

A,21H

INC A ; CJNE A,#3CH,GO2 ; MOV 21H,#0H ; MOV 32H,#0 MOV 33H,#0 MOV A,22H

INC

A ; CJNE A,#18H,GO3 ;

MOV 22H,#00H ; MOV 34H,#0 MOV 35H,#0

AJMP RET0

GO1:

MOV 20H,A

MOV B,#0AH DIV AB

MOV 31H,A ; MOV 30H,B ;秒自加一

秒计数循环 复位 分钟自加一

分钟计数循环 复位 小时自加一

小时计数循环 复位

将A的低4位存入31单元将A的高4位存入30单元

AJMP RET0

GO2: MOV 21H,A MOV B,#0AH DIV AB

MOV 33H,A ;将A的低4位存入33单元 MOV 32H,B ;将A的高4位存入32单元 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,#0FEH MOV A,R3 PLAY1: MOV P2,A

MOV A,@R0 ; MOV DPTR,#DSEG1 ; MOVC A,@A+DPTR

CPL A ; MOV P0,A ; LCALL DL1 MOV P2,#0FFH

MOV A,R3 ; RL A ; JNB ACC.6,LD1

将A的低4位存入35单元 将A的高4位存入34单元 恢复现场 取要显示的数据 指向字形段码首地址 查表取字形段码

指向P0口 判断是否显示到最低位 左移一位 INC R0 ;缓冲器地址加一 MOV R3,A LJMP PLAY1 LD1: RET

DISPLAY2: PUSH ACC ;保护现场 PUSH PSW MOV R0,#36H MOV

R3,#0FBH

MOV A,R3

PLAY2: MOV P2,A

MOV A,@R0 ; MOV DPTR,#DSEG1 ; MOVC A,@A+DPTR

CPL A ; MOV P0,A ; LCALL DL1 ; MOV P2,#0FFH

MOV A,R3 ; RL A ; JNB ACC.6,LD2

INC R0 ; MOV R3,A

LJMP PLAY2 ;LD2: POP PSW

POP ACC ; RET

;;;;;;;DELAY;;;;;;;; DL1:

MOV

R7,#20H DL: MOV R6,#20H

DL6:

DJNZ R6,$

取要显示的数据 指向字形段码首地址 查表取字形段码

指向P0口 调用DL1 判断是否显示到最低位左移一位 缓冲器地址加一 调用PLAY2 恢复现场

DJNZ R7,DL RET

DSEG1: DB 3FH,06H,5BH,4FH,66H ;七段码表 DB 6DH,7DH,07H,7FH,6FH END

3 protell软件仿真:

通过S1、S2、S3和S4四个按键,对时间进行修改和闹钟的设置。定时时间到能发出报警声,使用KEIL软件编辑程序,生成HEX文件,然后用protel进行仿真,系统运行初始状态:

按下S1键显示闹钟,松开后显示时间;按下S4键进入时间修改模式,再按S4键时间的时加1,按S2分加1,调整结束后按下S1恢复正常显示;按下S3键进入闹钟修改模式,再按S3键闹钟的时加1,按S2分加1,调整结束后按下S1恢复正常显示。 C1U21nF19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617X1CRYSTAL18C21nFXTAL2R110k9R3R4R510kR610kR710kR810kR910kR1010k10k10kRSTC31uF293031PSENALEEA查看闹钟时间/ 确定 分加 1 闹钟修改/时加1 时间修改/时加1 S1S2S3S412345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51Q1PNPLS1SPEAKER

4 课程设计体会:

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

通过本次单片机原理及应用课程设计使我充分认认到了课程设计的理要性和必要性,本次设计使我对已学过的基础知识有了更深入的理解,学会了思考、工作以及对应用所学基本理论分析和解决实际问题的能力有了很大的提高。另外,本次设计使我的实际操作技能得到了训练, 同时也进一步培养了我严谨的科学作风。

回顾起此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期的日子里,可以说得是苦多于甜,但是从中却学到很多很多的的东西,不但巩固了以前所学过的知识,而且对单片机原理课外知识也的到了拓展。做的过程中,开始的确遇到了不少困难的问题,比如说芯片管脚不熟悉怎么放置,对单片机汇编语言掌握得不好等等,同时在这过程中也发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

通过单片机课程设计之后,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养创新精神和严谨的科学作风,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

参考文献:

[1]. 何宏.单片机原理及接口技术教程.北京:国防工业出版社,2008.4 [2]. 李广弟.单片机基础.北京:北京航空航天大学出版社,1992

[3]. 何立民.单片机应用技术大全.北京:北京航空航天大学出版社, 1994 [4].张毅刚. 单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990

附1:元器件清单

元器件名称 51单片机 按钮 电容 晶振 继电器 PNP三极管 电阻 排阻 蜂鸣器 电源 接地 发光二极管 ATC51 BUTTON CAP CRYSTAL G2R-14-DC5 PNP RES RESPACK-8 SPEAKER POWER GROUND LED 型号 数量 2 1 4 2 1 1 1 4 1 1 4 4 1 7段4位共阴数码管 7SEG-MPX4-CC

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务