电子时钟程序设计 单片机报告文档格式.docx

上传人:b****3 文档编号:15715211 上传时间:2022-11-15 格式:DOCX 页数:21 大小:1.84MB
下载 相关 举报
电子时钟程序设计 单片机报告文档格式.docx_第1页
第1页 / 共21页
电子时钟程序设计 单片机报告文档格式.docx_第2页
第2页 / 共21页
电子时钟程序设计 单片机报告文档格式.docx_第3页
第3页 / 共21页
电子时钟程序设计 单片机报告文档格式.docx_第4页
第4页 / 共21页
电子时钟程序设计 单片机报告文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

电子时钟程序设计 单片机报告文档格式.docx

《电子时钟程序设计 单片机报告文档格式.docx》由会员分享,可在线阅读,更多相关《电子时钟程序设计 单片机报告文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

电子时钟程序设计 单片机报告文档格式.docx

图:

蜂鸣器电路

2:

硬件电路设计及描述

由于扩展了外部存储器,P0口只能作地址/数据总线,P2口只能作地址总线高8位,P3.7、P3.6作为外部数据存储器读写信号。

P3.0、P3.1作为串行输入、输出接口,在仿真模式下完成与PC机的通信,故也不可用。

实验仪上单片机可用作I/O的口仅有:

P1.0--P1.7,8位;

P3.2、P3.3、P3.4、P3.5,4位。

其中:

P1.0用作数据线SDA,P1.1用作时钟信号CLK,所以P1.0和P1.1应该接对应跳线的A位,即跳线的中间和下面相连。

P1.3、P1.4、P1.5和P1.6是四个数码管的位扫描线,其中P1.6对应数码管W1,显示小时高位;

P1.5对应数码管W2,显示小时低位;

P1.4对应数码管W3,显示分钟高位;

P1.3对应数码管W4,显示分钟低位。

P1.7连接蜂鸣器电路,输出不同频率的方波,使其发出不同的声音。

P1.2用来控制秒的闪烁显示。

故,P1.2也应该接对应跳线的A位。

其显示电路如下图:

P3.2、P3.3、P3.4、P3.5分别连接单刀双掷开关S1、S2、S3、S4,从而输入高低电平。

将S2S1定义为功能模式选择开关;

S3定义为分钟数调整开关;

S4定义为小时数调整开关。

当S2S1=00时,显示当前时间,不进行任何操作。

当S2S1=01时,显示当前时间,同时可进行时钟调整,若S3=1,分钟数持续加1,若S4=1,小时数持续加1。

当S2S1=10时,显示闹钟时间,同时可进行闹钟调整,若S3=1,分钟数持续加1,若S4=1,小时数持续加1。

当S2S1=11时,显示当前时间,同时关闭闹钟

五、主要模块设计流程及描述

1主模块设计概述

2时钟走时中断服务模块

模块设计描述:

1进行各端口配置、程序初始化、开定时器0中断及启动计数

2循环调用时钟显示、响铃判断、按键判断子程序

3在调用子程序时,若定时器T0计满产生中断,则开始执行时钟走时中断服务程序

4若响铃开关打开,且闹铃时间到来,定时器T1计满产生中断,则执行闹钟响铃中断服务程序

3显示模块

本实验使用的数码管为4位共阳数码管,LED的公共阳极接高电平,某个阴极接低电平时,相应的段被点亮显示,为显示不同的字形,显示器各字段所加的电平是不同的,编码也随之不同,7段显示器的字形与共阳极时编码的对应关系如下表

显示字符

段码

COH

7

F8H

1

F9H

8

80H

2

A4H

9

90H

3

B0H

A

88H

4

99H

B

83H

5

92H

无显示

FFH

6

82H

显示信号由P0.0—P0.7输出至74HC573锁存,位选信号由P2.0—P2.3输出,经过三极管接到数码管的位选端W1—W4。

以P0.3为例,当P0.3为低电平时,三极管Q5工作与饱和状态,基极饱和电流约为10mA,集电极为高电平,使选中的数码管点亮。

当P0.3为高电平时,三极管Q5工作于截止状态,所以集电极没有电压,相应的数码管灭。

每次只允许P0.3—P0.6中的一位为低电平,选中相应的数码管,由于扫描速度很快,人的视觉会有暂留效应,所以看到的数码管是都亮的。

4校时模块

校时模块主要是通过软件来实现的。

校时模块可以调整时间和闹钟,这些通过按键扫描电路来判断。

以闹铃校时为例,流程如下:

5计时模块

计时模块是通过定时器0来实现的。

定时器1每5ms中断一次,达到200次中断则达到1s时间。

计时模块流程图如下:

六、源程序代码及注释

注:

首先将单片机用到的主要寄存器做下说明(如下);

P1.2作秒的闪烁控制位;

P1.7作响铃控制电平;

P3.2、P3.3作模式选择键S2、S1;

P3.4作分调整键S3(分钟数+1);

P3.5作时调整键S4(小时数+1);

R0为计数5ms的次数;

R1为秒数;

R2为分钟数;

R3为时钟数;

R4在显示程序中作为向LED传递数据时的左移次数标志位;

R4在音乐闹铃程序中读取TABLE中的数据;

R5作为节拍长度;

40H作显示的分;

41H作显示的时;

42H作闹钟的分;

43H作闹钟的时;

63H、64H存放延时程序DELAY的延时数;

60H、61H作定时器T1的初值。

;

******************************主程序*******************************************

S1BITP3.2;

定义模式选择键S2、S1

S2BITP3.3

S3BITP3.4;

定义时调整键S4,分调整键S3

S4BITP3.5

SDABITP1.0

CLKBITP1.1

ORG0000H

AJMPMAIN

ORG000BH;

T0的中断服务程序的入口地址

AJMPTIMER;

跳转到时钟走时中断服务程序

ORG001BH;

T1的中断服务程序的入口地址

AJMPALARM_OPEN;

跳转到闹钟响铃中断服务程序

ORG0030H

MAIN:

MOV40H,#00;

显示的分

MOV41H,#00;

显示的时

MOV42H,#58;

闹钟的分

MOV43H,#23;

闹钟的时

MOVR0,#00H;

寄存器清零(RO为计数5ms的次数,R1为秒数,

MOVR1,#00H;

R2为分钟数,R3为时钟数)

MOVR2,#00H

MOVR3,#00H

MOVTMOD,#11H;

设置T0,T1处于工作方式1

MOVTH0,#0EEH;

设置定时器的初值

MOVTL0,#00H

SETBEA;

允许总中断

SETBET0;

允许T0,T1中断

SETBET1

SETBTR0;

启动T0

LOOP:

LCALLDISPLAY1;

调用显示程序

LCALLALARM;

调用闹铃程序

LCALLMODE;

调用模式判断程序

AJMPLOOP

************************************时钟显示部分*******************************

DISPLAY1:

MOVDPTR,#TAB1

MOVA,41H

MOVB,#10

DIVAB

LCALLDISP1

CLRP1.6;

LED1数码管显示数码,即小时的高位

LCALLDELAY

SETBP1.6

JBP1.2,TD;

控制LED2数码管的小数点"

dp"

闪烁

AJMPTD1

TD:

MOVA,B

AJMPTD2

TD1:

MOVA,B

ADDA,#10

TD2:

LCALLDISP1;

LED2数码管显示数码,即小时的低位

CLRP1.5

SETBP1.5

MOVA,40H

CLRP1.4;

LED3数码管显示数码,即分钟的高位

SETBP1.4

CLRP1.3;

LED4数码管显示数码,即分钟的低位

SETBP1.3

RET

DISP1:

MOVCA,@A+DPTR;

LED串并转换口从P1.0接收

MOVR4,#08H;

R4记作左循环的次数

DUP1:

RLCA;

A带进位左循环移位

MOVSDA,C

CLRCLK;

上升沿触发数据接收

SETBCLK

DJNZR4,DUP1

************************************闹钟显示部分*******************************

DISPLAY2:

MOVA,43H

MOVB,#10

DIVAB

LCALLDISP2

CLRP1.6;

LCALLDELAY

SETBP1.6

CLRP1.5;

SETBP1.5

MOVA,42H

CLRP1.4;

SETBP1.4

CLRP1.3;

SETBP1.3

RET

DISP2:

MOVR4,#08H;

DUP2:

MOVSDA,C

CLRCLK;

SETBCLK

DJNZR4,DUP2

********************************判断闹钟时间是否到来*************************

ALARM:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1