单片机大作业

  • 格式:pdf
  • 大小:616.90 KB
  • 文档页数:10

下载文档原格式

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

单片机原理与应用

学号:

学生所在学院:

学生姓名:

任课教师:

教师所在学院:航空制造工程学院

2014年6月

13y8

基于单片机控制的可调电子数字钟

陈成龙

南昌航空大学航制学院

摘要:单片机是现代电子技术的新兴领域,它的出现极大地推动了电子工业的发展,已成为电子系统设计中最普遍的应用手段。设计单片机应用系统时,在完成硬件系统设计之

后,必须配备相应的应用软件。Proteus软件的应用使单片机可以直接在基于原理图进

行虚拟模拟上,并和μVision共同编程,编译,仿真调试,使单片机学习的学习过程

变得直观形象。

关键词:单片机ProteusμVision仿真调试

1.功能要求

利用89C51单片机内的定时器,设计一台可调数字钟,能通过按键进行时、分、秒的调整,采用8位LED数码管以24小时方式进行显示。

2.硬件电路设计

可调数字钟的硬件电路如图1所示。89C51单片机的P0口通过三态总线收发器74LS245接到8位共阴极LED数码管的数字输入端,单片机的P3作为数码管的数位控制,从P0口输出显示字符段码,从P3口输出循环扫描控制位,利用人眼的视觉暂留功能,达到8位数码管同时显示的效果。单片机的P1.0-P1.2引脚通过三个按钮开关接地,通过判断P1.0-P1.2引脚电平的高低,决定是否进行数字钟的时、分、秒调整。

3.软件程序设计

本设计利用89C51单片机内定时器T0中断来实现数字钟功能,T0定时时间设为50ms,每隔50ms产生一次中断,如果中断20次即到达1秒。程序设计时预先安排时、分、秒内存单元,在中断服务程序中根据中断次数来决定秒单元是否加1,当秒单元到达60时分单元加1,同时秒单元清零,分单元达到60时,时单元加1,同时分单元清零,时单元达到24时,时单元清零,又从头开始计时。可调数字钟的程序流程图如下图2、图3.

图1.可调数字钟硬件图

图2.主程序流程图

图3.中断服务程序流程图

软件的控制程序如下:

S_SET BIT P1.0;数字钟秒控制位

M_SET BIT P1.1;分控制位

H_SET BIT P1.2;时控制位

SECOND EQU30H

MINUTE EQU31H

HOUR EQU32H

TCNT EQU34H

ORG0000H;单片机复位入口地址

SJMP START

ORG000BH;定时器T0中断服务程序入口地址

LJMP INT_T0

START:MOV DPTR,#TABLE

MOV HOUR,#0;时、分、秒单元清0

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

MOV TMOD,#01H;设置T0为16位定时器工作方式

MOV TH0,#3CH;fosc=12MHZ,定时器50ms

MOV TL0,#0B0H

MOV IE,#82H;开中断

SETB TR0;启动定时器T0

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

JNB S_SET,S1;判断是否有键按下

JNB M_SET,S2

JNB H_SET,S3

LJMP A1

S1:LCALL DELAY;去抖动

JB S_SET,A1

INC SECOND;调整秒值加1

MOV A,SECOND

CJNE A,#60,J0;判断是否调整到60秒

MOV SECOND,#0

LJMP K1

S2:LCALL DELAY

JB M_SET,A1

K1:INC MINUTE;调整分钟值加1

MOV A,MINUTE

CJNE A,#60,J1;判断是否调整到60分

MOV MINUTE,#0

LJMP K2

S3:LCALL DELAY

JB H_SET,A1

K2:INC HOUR;调整小时值加1

MOV A,HOUR

CJNE A,#24,J2;判断是否调整到24小时

MOV HOUR,#0

MOV MINUTE,#0

MOV SECOND,#0

LJMP A1

J0:JB S_SET,A1;等待按键抬起

LCALL DISPLAY

SJMP J0

J1:JB M_SET,A1

LCALL DISPLAY

SJMP J1

J2:JB H_SET,A1

LCALL DISPLAY

SJMP J2

INT_T0:MOV TH0,#3CH;定时器中断服务程序MOV TL0,#0B0H;装入T0的初值

INC TCNT

MOV A,TCNT

CJNE A,20,RETUNE;判断1秒定时到否

INC SECOND;秒单元加1

MOV TCNT,#0;50ms单元清0

MOV A,SECOND

CJNE A,#60,RETUNE;判断60秒定时到否

INC MINUTE;分单元加1

MOV SECOND,#0;秒单元清0

MOV A,MINUTE

CJNE A,#60,RETUNE;判断60分定时到否

INC HOUR;时单元加1

MOV MINUTE,#0;分单元清0

MOV A,HOUR

CJNE A,#24,RETUNE;判断24小时定时到否

MOV HOUR,#0;时、分、秒、50ms单元清零

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0