51单片机数字时钟1.docx

上传人:b****5 文档编号:12087292 上传时间:2023-04-17 格式:DOCX 页数:14 大小:200.55KB
下载 相关 举报
51单片机数字时钟1.docx_第1页
第1页 / 共14页
51单片机数字时钟1.docx_第2页
第2页 / 共14页
51单片机数字时钟1.docx_第3页
第3页 / 共14页
51单片机数字时钟1.docx_第4页
第4页 / 共14页
51单片机数字时钟1.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

51单片机数字时钟1.docx

《51单片机数字时钟1.docx》由会员分享,可在线阅读,更多相关《51单片机数字时钟1.docx(14页珍藏版)》请在冰豆网上搜索。

51单片机数字时钟1.docx

51单片机数字时钟1

 

单片机课程设计报告

 

题目名称:

单片机数字时钟

 

学院:

信息工程学院

专业:

电子信息工程

姓名:

学号:

同组人:

指导教师:

 

2011年12月05日

 

1、课程设计名称:

51单片机电子时钟

2、设计方案:

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

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

三、设计内容:

这里采用应用广泛的AT89C51作为时钟控制芯片,利用单片机内部的定时/计数器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、汇编语言程序

ORG0000H

LJMPSTART

ORG000BH

LJMPINIT0

START:

MOVR0,#70H;主程序开始

MOVR7,#0CH

INIT:

MOV@R0,#00H

INCR0

DJNZR7,INIT

MOV72H,#10;对连字符进行装值

MOV75H,#10

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

MOVTL0,#0B0H;对低位赋初值

MOVTH0,#03CH;高位赋初值

SETBEA

SETBET0

SETBTR0

START1:

LCALLSCAN

LCALLKEYSCAN

SJMPSTART1

DL1MS:

MOVR6,#14H;延时1子程序

DL1:

MOVR7,#19H

DL2:

DJNZR7,DL2

DJNZR6,DL1

RET

DL20MS:

ACALLSCAN;延时20ms子程序

ACALLSCAN

ACALLSCAN

RET;数码管显示程序开始

SCAN:

MOVA,78H

MOVB,#0AH

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

MOV71H,A;时间秒要显示的十位

MOV70H,B;时间秒要显示的个位

MOVA,79H

MOVB,#0AH

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

MOV74H,A;时间分要显示的十位送地址

MOV73H,B;时间分要显示的个位送地址

MOVA,7AH

MOVB,#0AH

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

MOV77H,A;时间时显示的十位送地址

MOV76H,B;时间时要显示的个位送地址

MOVR1,#70H

MOVR5,#01H

MOVR3,#09H

SCAN1:

MOVA,R5;数码管的显示程序

MOVP2,A

MOVA,@R1

MOVDPTR,#TAB

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

MOVP0,A

LCALLDL1MS

INCR1

MOVA,R5

RLA

MOVR5,A

DJNZR3,SCAN1

MOVP2,#0FFH

MOVP0,#0FFH

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

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH

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

INIT0:

PUSHACC

PUSHPSW

CLRET0

CLRTR0

MOVTL0,#0B0H

MOVTH0,#03CH

SETBTR0

INC7BH

MOVA,7BH

CJNEA,#14H,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时

MOV7BH,#00

INC78H

MOVA,78H

CJNEA,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行

MOV78H,#00

INC79H

MOVA,79H

CJNEA,#3CH,OUTT0

MOV79H,#00

INC7AH

MOVA,7AH

CJNEA,#18H,OUTT0;60分钟的延时是否计到24次,没有就

继续执行程序

MOV7AH,#00

OUTT0:

SETBET0;启动定时器T0

POPPSW

POPACC

RETI

;按键处理程序

KEYSCAN:

CLREA

JNBP1.0,KEYSCAN0;P1.0有按键按下则跳转到子程序

JNBP1.1,KEYSCAN1;P1.1有按键按下则跳转到子程序

JNBP1.2,KEYSCAN2;P1.2有按键按下则跳转到子程序

KEYOUT:

SETBEA

RET

KEYSCAN0:

LCALLDL20MS;20ms的延时消抖

JBP1.0,KEYOUT

WAIT0:

JNBP1.0,WAIT0;判断按键是否松手,松手就往下执行程序

INC7CH

MOVA,7CH

CLRET0

CLRTR0

CJNEA,#03H,KEYOUT;按下第一次和第二次对时、分选定

MOV7CH,#00;按下第三次时就启动计时

SETBET0

SETBTR0

SJMPKEYOUT

KEYSCAN1:

LCALLDL20MS;按键加一的程序

JBP1.1,KEYOUT

WAIT1:

JNBP1.1,WAIT1

MOVA,7CH

CJNEA,#02H,KSCAN11;如果功能键按下则对时加一调整

INC79H

CJNEA,#3CH,KEYOUT;如果加到60则清零

MOV79H,#00

SJMPKEYOUT

KSCAN11:

INC7AH;如果功能键是按下第

二次则对分进行加一调整

MOVA,7AH

CJNEA,#18H,KEYOUT

MOV7AH,#00

SJMPKEYOUT

KEYSCAN2:

LCALLDL20MS;延时消抖程序

JBP1.2,KEYOUT

WAIT2:

JNBP1.2,WAIT2;判断是否放开按键

MOVA,7CH

CJNEA,#02H,KSCAN21;如果功能键是按下第一次对时进行减一

DEC79H

MOVA,79H

CJNEA,#0FFH,KEYOUT

MOV79H,#3BH

SJMPKEYOUT

KSCAN21:

DEC7AH;如果功能键是按下第二次则对分进行减一

CJNEA,#0FFH,KEYOUT

MOV7AH,#17H

SJMPKEYOUT

END

6、软件编译环境:

KeiluVision2

确保生成".Hex"文件

5、系统硬件电路的设计

系统的硬件主要包括单片机芯片,数码管显

示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的AT89C52,系统时钟采用12MHz的晶振,八个数码管显示,小时与分钟与秒钟间用短横线,采用共阳极七段式数码管,P0口为段选码输出端,P2口为位选码输出端。

硬件电路如图所示:

六、芯片介绍

AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

 兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM

  ·32个双向I/O口·256x8bit内部RAM

  ·3个16位可编程定时/计数器中断·时钟频率0-24MHz

  ·2个串行中断·可编程UART串行通道

  ·2个外部中断源·共6个中断源

  ·2个读写中断口线·3级加密位

  ·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能

AT89C52P为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。

RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

七、仿真电路

八、课程设计总结

经过两周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。

总的来说,硬件部分很好入手,电路也教简单,主要涉及的是简单的按键、电容、电阻、晶振和数码管。

在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。

整个设计过程中遇到的最大问题是软件的

编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。

通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。

在整个设计过程中学到了团体精神和独立解决问题的重要性。

为以后的求职之路打下了基础。

6、参考资料

[1]《单片机原理与应用》谢维成杨加国编著

[2]《单片机应用与仿真调试》严天峰编著

[3]《模拟电子技术(第三版)》胡宴如耿苏燕编著

[4]《数字电子技术(第三版)》杨志忠卫桦林编著

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

当前位置:首页 > 职业教育 > 其它

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

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