单片机设计数字钟实验报告

  • 格式:doc
  • 大小:697.50 KB
  • 文档页数:9

单片机实验报告

——数字钟设计

班 级:

学 号:

姓 名:

时 间:

一.实验目的

1、进一步熟悉C的语法知识和keil环境;

2、熟练掌握一些常用算法;

3、熟悉keil的编写、下载、调试过程;

4、了解单片机的工作原理和电路图;

5、熟悉单片机的外围电路功能模块、LED灯、数码管模块以及键盘;

6、熟练焊接技术。

二.实验器件

三.数字钟设计原理

数字钟实际是对标准频率计数的电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的时间信号必须做到准确稳定。通常使用石英晶体振荡电路构成数字钟。数字钟电子钟由以下几部分组成:按键开关部分,振荡电路部分,89c51单片机控制器,4位数码管显示部分,7407数码管驱动部分。

按键开关

振荡电路

89C51

单片机控制器 4位数码管显示

7407

列驱动

四.流程图

主程序流程图如图2.3所示,定时器T0中断服务程序流程图如2.4所示。

图2.4中断服务程序流程图

五.51单片机系统的硬件连接

1、STC单片机最小系统硬件电路图如下 返回

2、硬件电路的设计

该电路采用AT89C51单片机最小化应用,采用共阴7段LED数码管显示器,P2.4~P2.7口作为列扫描输出,P0口输出段码数据,P1.2,P1.1口接2个按钮开关,用于调时及功能误差,采用12Mhz晶振,可提高秒计时的精确度。

六.程序设计

HOUR EQU 3AH ;赋值伪指令

MIN EQU 3BH

SEC EQU 3CH

BUFF EQU 3DH

ORG 0000H

AJMP MAIN

ORG 000BH ;主程序入口

AJMP PTF0

ORG 0033H ;跳转到标号PTF0执行

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

;主程序

MAIN: MOV HOUR, #00H ;时,分,秒,标记清零

MOV MIN, #00H

MOV SEC, #00H

MOV BUFF, #00H

MOV SP, #0EFH ;设堆栈指针

MOV TH0, #0ECH ;定时器赋初值

MOV TL0, #78H

MOV 40H, #100 ;设循环次数

MOV 41H, #2

MOV TMOD , #1 ;写TMOD

MOV IP, #2 ;写IP

MOV IE, #82H

MOV R5,#0

;开中断

SETB TR0 ;启动定时器

PTF0: SETB P1.2

MOV TH0, #0ECH

MOV TL0, #78H

INC R5

MOV R6,BUFF

CJNE R6,#00H,BB

MOV DPTR,#TAB1

LJMP LOOP0

BB:MOV DPTR,#TAB

LOOP0: CJNE R5,#1,LOOP1

ACALL LOP0

AJMP JK

LOOP1:CJNE R5,#2,LOOP2

ACALL LOP1

AJMP JK

LOOP2:CJNE R5,#3,LOOP3

ACALL LOP2

AJMP JK

LOOP3:ACALL LOP3

MOV R5,#0

JK: DJNZ 40H, PTFOR

XRL BUFF, #0FFH

MOV 40H, #100

JNB P1.1, JF

JNB P1.2, JS

MOV R7, 41H

CJNE R7, #1, AA

AA: DJNZ 41H, PTFOR

MOV 41H,#2

MOV A, SEC ;秒加1

ADD A, #1

DA A

MOV SEC, A

CJNE A, #60H, PTFOR

MOV SEC, #0 ;秒清零

JF: MOV A, MIN ;分加1

ADD A, #1

DA A

MOV MIN, A

CJNE A, #60H,PTFOR

MOV MIN, #0 ; 分清零

ACALL LED

JS: MOV A,HOUR

ADD A,#1

DA A

MOV HOUR,A ;时加1

CJNE A, #24H,PTFOR ;时加到24时否?是,清零

MOV HOUR, #0

PTFOR:RETI

LOP0: MOV A, MIN ;显示分钟的个位

ANL A, #0FH

MOVC A, @A+DPTR

MOV P0,A

MOV P2,#0F0H

CLR P2.4

CLR P0.4

RET

LOP1:

MOV A, MIN ;显示分钟的十位

SWAP A

ANL A, #0FH

MOVC A, @A+DPTR

MOV P0, A

MOV P2, #0F0H

CLR P2.5

CLR P0.4

RET

LOP2: MOV A, HOUR ;显示时钟的个位

ANL A, #0FH

MOVC A, @A+DPTR

MOV P0, A

MOV P2, #0F0H

CLR P2.6

RET

LOP3:

MOV A, HOUR ;显示时钟的十位

SWAP A

ANL A, #0FH

MOVC A, @A+DPTR

MOV P0, A

MOV P2, #0F0H

CLR P2.7

CLR P0.4

RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;不带小数点的字型码

TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的字型码

END

七.系统调试及结果分析

硬件调试

硬件电路板中器件连接好后,先用万用表测试电路中有无虚焊短接之处,测试无误后,将板子通电,进行静态调试。

取好两跟短的导线,一根导线的其中一端接地,另一端接P2.4~P2.7口中的一个口,若数码管亮,再用另一根导线,其中异端接地,另一端与P0.0~P0.7依次接触,看数码管各段的亮灭情况,从而判断每个数码管各段的好坏及电路的是否正确。

软件调试

在LCA51编译器下进行汇编程序的编写,以子程序为单位调试,一段一段的编译与访真,最后结合电路板,进行整机联调。