51单片机课程设计-电子时钟Word版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计

课程名称:单片机课程设计

题目名称:单片机电子时钟

学院:电信学院

专业:电子工程

姓名:曾代科

学号: 200820313201

指导教师:杨加国

2010年11月7日

一、课程设计名称:51单片机电子时钟

二、设计方案:

1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。

2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。

三、设计内容:

这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。

此外还要实现对时间的调整功能,89C52的P1.0、P1.1、P1.2外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P1.1按键时,

对显

示的数码管进行加一的功能;当按下P1.2按键时,对显

示的数码管进行减一的功能,达到调整时间的目的。

四、系统软件程序设计

1.主程序

先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。

2、数码管显示模块

本实验有8个数码管,从右到左为妙、横线、分、横线、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。

3、定时器/计数器T0中断服务程序

T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标

志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。流程图如下:

4、按键处理模块

按键设置为:如果没有按键吗,则时钟正常走时。当按下K0键时,进入调分状态,时钟停止走动;按K1和K2按键可以进行加一和减一操作;继续按K0键可以分别进行分和小时的调整;最后按K0键启动计时。

5、汇编语言程序

ORG 0000H

LJMP START

ORG 000BH

LJMP INIT0

START: MOV R0,#70H ;主程序开始

MOV R7,#0CH

INIT: MOV @R0,#00H

INC R0

DJN Z R7,INIT

MOV 72H,#10 ;对连字符进行装值

MOV 75H,#10

MOV TMOD,#01H ;选择定时器/计数器T0的方式1

MOV TL0,#0B0H ;对低位赋初值

MOV TH0,#03CH ;高位赋初值

SETB EA

SETB ET0

SETB TR0

START1: LCALL SCAN

LCALL KEYSCAN

SJMP START1

DL1MS: MOV R6,#14H ;延时1子程序

DL1: MOV R7,#19H

DL2: DJNZ R7,DL2

DJNZ R6,DL1

RET

DL20MS: ACALL SCAN ;延时20ms子程序

ACALL SCAN

ACALL SCAN

RET ;数码管显示程序开始

SCAN: MOV A,78H

MOV B,#0AH

DIV AB ;时间秒的十位送给A,时间秒的个位送B

MOV 71H,A ;时间秒要显示的十位

MOV 70H,B ;时间秒要显示的个位

MOV A,79H

MOV B,#0AH

DIV AB ;时间分的十位送给A,时间分的个位送B

MOV 74H,A ;时间分要显示的十位送地址

MOV 73H,B ;时间分要显示的个位送地址

MOV A,7AH

MOV B,#0AH

DIV AB ;时间时的十位送给A,时间时的个位送B

MOV 77H,A ;时间时显示的十位送地址

MOV 76H,B ;时间时要显示的个位送地址

MOV R1,#70H

MOV R5,#0FEH

MOV R3,#08H

SCAN1: MOV A,R5 ;数码管的显示程序

MOV P2,A

MOV A,@R1

MOV DPTR,#TAB

MOVC A,@A+DPTR ;对字段表取值显示

MOV P0,A

MOV A,R5

LCALL DL1MS

INC R1

MOV A,R5

RL A

MOV R5,A

DJNZ R3,SCAN1

MOV P2,#0FFH

MOV P0,#0FFH

RET ;"0~9"和"-"的字段表

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH

;定时/计数器T0中断程序

INIT0: PUSH ACC

PUSH PSW

CLR ET0

CLR TR0

MOV TL0,#0B0H

MOV TH0,#03CH

SETB TR0

INC 7BH

MOV A,7BH

相关文档
最新文档