单片机数字时钟课程设计.docx

上传人:b****9 文档编号:25319566 上传时间:2023-06-07 格式:DOCX 页数:24 大小:218.36KB
下载 相关 举报
单片机数字时钟课程设计.docx_第1页
第1页 / 共24页
单片机数字时钟课程设计.docx_第2页
第2页 / 共24页
单片机数字时钟课程设计.docx_第3页
第3页 / 共24页
单片机数字时钟课程设计.docx_第4页
第4页 / 共24页
单片机数字时钟课程设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机数字时钟课程设计.docx

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

单片机数字时钟课程设计.docx

单片机数字时钟课程设计

 

第一章选题背景

20世纪末,电子技术取得了飞速的进展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的进展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节拍也愈来愈快。

时刻对人们来讲老是那么宝贵,工作的忙碌性和繁杂性容易令人忘记当前的时刻。

忘记了要做的情形,当情形不是很重要的时候,这种遗忘无伤大雅。

可是,一旦重要情形,一时的延误可能酿成大祸。

目前,单片机正朝着高性能和多品种方向进展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价钱和外围电路内装化等几个方面进展。

下面是单片机的要紧进展趋势。

单片机应用的重要意义还在于,它从全然上改变了传统的操纵系统设计思想和设计方式。

之前必需由模拟电路或数字电路实现的大部份功能,此刻已能用单片机通过软件方式来实现了。

这种软件代替硬件的操纵技术也称为微操纵技术,是传统操纵技术的一次革命。

单片机模块中最多见的是数字时钟,数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相较具有更高的准确性和直观性,且无机械装置,具有更长的利用寿命,因此取得了普遍的利用。

数字时钟是采纳数字电路实现对时、分、秒数字显示的计时装置,普遍用于个人家庭、车站、码头办公室等公开场合,成为人们日常生活中不可少的必需品,由于数字集成电路的进展和石英晶体振荡器的普遍应用,使得数字时钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如按时自动报警、按时自动打铃、时刻程序自动操纵、按时广播、自动起闭路灯、按时开关烘箱、通断动力设备、乃至各类按时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字时钟及扩大其应用,有着超级现实的意义。

课程设计是本课程教学中极为重要的实践性教学环节,它不但起着提高本课程教学质量、水平和查验学生对课程内容把握程度的作用,而且还将起到从理论过渡到实践的桥梁作用。

因此,必需认真组织,周密布置,踊跃实施,以达到下述教学目的。

1.通过课程设计,使学生进一步巩固、深化和扩充在单片机原理及相关课程方面的大体知识、大体理论和大体技术,达到培育学生独立试探、分析和解决实际问题的能力。

2.通过课程设计,使学生养成严谨科学、严肃认真、一丝不苟和实事求是的工作作风,达到提高学生大体素养的目的。

3.通过课程设计,让学生独立完成利用单片机实现某一实际操纵系统的大体设计工作,达到培育学生综合应用所学知识和实际查阅相关设计资料的能力的目的。

4.通过课程设计,使学生熟悉设计进程,了解设计步骤,把握设计内容,达到培育学生设计电路、实现软件编程和编写设计说明书能力的目的,为学生尔后从事相关方面的实际工作打下良好基础。

课程设计要求

(1)依照设计课题的技术指标和给定条件,在教师指导下,能够独立而正确地进行方案论证和设计计算,要求概念清楚、方案合理、方式正确、步骤完整;

(2)要求学生把握单片机的设计内容、方式和步骤;

(3)要求会查阅有关参考资料和手册等;

(4)要求学会选择有关元件和参数;

(5)要求学会绘制有关电路图和设计流程图;

(6)要求学会编写设计说明书。

系统采纳通用的80C51芯片,显示器为6个共阳极LED数码管,用1个BCD7段译码器74LS47驱动数码管(74LS47的输入为BCD码,其输出级为集电极开路输出,可直接驱动7段译码管,具有首尾消零等特点),用3-8译码器74LS138的输出作为动态扫描时数码管的选通信号,因为采纳了上述两个芯片,因此在对数码管进行扫描显示时,只需要单片机的7条I/O线就能够完成显示功能了。

选用作为显示数据值的输出,连接在BCD7段译码器74LS47的BCD码输入端,作为扫描值的输出连接在3-8译码器74LS138的输入端(74LS138的A、B、C),因此,写程序时应以P0口高4位为位扫描值,低4位为显示数据值(分离BCD码)。

由于LED数据管点亮时耗电量较大,因此利用了排阻作为电源驱动输出,以保证数码管的正常亮度。

单片机的口别离接在S1--S66个按键上,以操纵“时”,“分”,“秒”的调整。

时刻以24小时为一个周期,数字时钟钟的格式为:

XXXXXX,由左向右别离为:

时、分、秒。

完成显示由秒加1,一直加1至59,再恢复为00;分加1,一直加1至59,再恢复00;时加1,一直加1至23,再恢复00。

*****按键功能*****

1.启动时,数字时钟从23:

59:

00开始自动计时;

“时”的调整,每按一次时计数值加1;

“分”的调整,每按一次分计数值加1;

“秒”的调整,每按一次秒计数值加1;

“时”的调整,每按一次时计数值减1;

“分”的调整,每按一次分计数值减1;

“秒”的调整,每按一次秒计数值减1。

 

数字时钟框图设计

图1数字时钟框图

选用芯片简介

80C51简介

尽管目前单片机的品种很多,但其中最具代表性的当属Intel公司的MCS-51单片机系列。

MCS-51以其典型的结构、完善的总线、SFR的集中治理模式、位操作系统和面向操纵功能的丰硕的指令系统,为单片机的进展奠定了良好的基础。

MCS-51系列的典型芯片是80C51(CHMOS型的8051)。

为此,众多的厂商都介入了以80C51为代表的8位单片机的进展,如Philips、Siemens(Infineon)、Dallas、ATMEL等公司,咱们把这些公司生产的与80C51兼容的单片机统称为80C51系列。

专门是在最近几年来,80C51系列又有了许多进展,推出了一些新产品,主若是改善单片机的操纵功能,如内部集成了高速I/O口、ADC、PWM、WDT等,和低电压、微功耗、电磁兼容、串行扩展总线和操纵网络总线性能等。

鉴于80C51系列在硬件方面的的普遍性、代表性和先进性和指令系统的兼容性,可用其作为本教材的介绍对象;至于其他类型的单片机,在深切学习和把握了80C51单片机以后再去学习已不是什么难事。

图280C51单片机管脚图

单片机内部结构图为如图3所示:

图3单片机内部结构图

80C51单片机管脚说明

VCC:

供电电压。

   GND:

接地。

   P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被概念为高阻输入。

P0能够用于外部程序数据存储器,它能够被概念为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,现在P0外部必需被拉高。

   P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外手下拉为低电平常,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

   P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄放器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和操纵信号。

   P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外手下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为80C51的一些特殊功能口,如下所示:

口管脚

备选功能

RXD

串行输入口

TXD

串行输出口

/INT0

外部中断0

/INT1

外部中断1

T0

记时器0外部输入

T1

记时器1外部输入

/WR

外部数据存储器写选通

/RD

外部数据存储器读选通

表1管脚P3口表

P0,P1,P2,P3口引脚图为如图4:

图4P0,P1,P2,P3口银角图

其中咱们用了P0口和P1口。

RST:

复位输入。

当振荡器复位器件时,要维持RST脚两个机械周期的高电平常刻。

ALE/PROG:

当访问外部存储器时,地址锁存许诺的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平常,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于按时目的。

但是要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

现在,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

若是微处置器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每一个机械周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不显现。

   /EA/VPP:

当/EA维持低电平常,那么在此期间外部程序存储器(0000H-FFFFH),不管是不是有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端维持高电平常,其间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

   XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

   XTAL2:

来自反向振荡器的输出。

  

BCD7段译码74LS47简介

该电路是由与非门、输入缓冲器和7个与或非门组成的BCD-7段译码器/驱动器。

一般是低电平有效,高的灌入电流的输出可直接驱动显示器。

7个与非门和一个驱动器成对连接,以产生可用的BCD数据及其补码至7个与或非译码门。

剩下的与非门和3个输入缓冲器作为试灯输入(LT)端、灭灯输入/动态灭灯输出(BI/RBO)端及动态灭灯输入(RBI)端。

该电路接受4位二进制编码—十进制数(BCD)输入并借助于辅助输入端状态将输入数据译码后去驱动一个七段显示器。

输出结构设计成能经受7段显示所需要的相当高的电压。

驱动显示器各段所需的高达24mA的电流能够由其高性能的输出晶体管来直接提供。

BCD输入计数9以上的显示图案是鉴定输入条件的唯一信号。

该电路有自动前、后沿灭零控制(RBI和RBO)。

试灯(LT)可在端处在高电平的任何时刻去进行,该电路还含有一个灭灯输入(BI),它用来操纵灯的亮度或禁止输出。

该电路在应用中可以驱动共阳极的发光二极管或直接驱动白炽灯指示器。

图574LS47管脚图

3-8线译码器74LS138简介

当一个选通端(E1)为高电平,另两个选通端(/E2)和/(E3))为低电平常,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。

图674LS138管脚图

LED数码显示器简介

LED数码显示器是1种由LED发光二极管组合显示字符的显示器件。

它利用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点。

LED数码显示器有两种连接方式

(1)共阳极接法。

把发光二极管的阳极连在一路组成公共阳极,利历时公共阳极接+5V,每一个发光二极管的阴极通过电阻与输入端相连。

当阴极端输入低电平常,段发光二极管就导通点亮,而输入高电平常那么不点亮。

(2)共阴极接法。

把发光二极管的阴极连在一路组成公共阴极,利历时公共阴极接地。

每一个发光二极管的阳极通过电阻与输入端相连。

当阳极端输入高电平常,段发光二极管就导通点亮,而输入低电平常那么不点亮。

在本设计中所采纳的是共阴极LED数码显示器,其引脚排列如图7所示:

图7LED数码显示器两种连接方式图

数字时钟工作原理图

数字时钟电路总图

图8数字时钟电路总图

图9复位电路原理图

当RST引脚高电平到时,单片机复位。

RST/VPD端的高电平,假设直接由启动刹时产生,那么为启动复位,假设通过按动按钮产生高电平复位称手动复位。

图中,上电时,接通电源,电容器C相当于刹时短路,+5V加到了RST/VPD端,该高电平使8051全机复位。

假设运行进程中,需要程序从头执行,只需按动按钮S,那么直接把+5V加到了RST/VPD端,从而复位。

显然,该电路即能够上电复位,也能够手动复位,是经常使用复位电路之一。

4.按键电路原理图

图10电路原理图

时钟电路原理图

晶体振荡器电路给数字时钟提供一个频率稳固准确的12MHz的方波信号,不管是指针式的电子钟仍是数字显示的电子钟都利用了晶体振荡器电路。

图11时钟电路原理图

LED数码管硬件电路原理图

图12LED数码管硬件电路原理图

 

由于电路设计得极为巧妙,许多功能都能够由硬件完成,因此软件设计就比较简单了。

下面介绍软件设计的要点:

主程序:

第一进行初始化,设置数字时钟的计时初值为23:

59:

00,启动T0进行50ms按时,且许诺T0中断。

然后检测S1--S6是不是按下,当按键S1--S6按下时,转入时、分、秒计数值的调整程序,系统主程序流程图如图13所示。

图13系统主程序流程图

按时器T0中断子程序:

中断效劳子程序的作用是进行时、分、秒的计时与显示。

按时器T0用于按时,按时周期设为50ms,中断累计20次(即1s)。

按时器T0中断效劳程序流程图如图14所示。

图14按时器T0中断效劳程序流程图

时、分、秒计数值调整子程序TIME:

时刻计数单元别离在40H(s),41H(min),42H(h)内存单元中,在计数单元中采纳组合BCD码计数。

TIME子程序的作用是当满1秒时,对秒计数单元进行加1操作,满60向分进位;对分计数单元进行加1操作,满60向时进位;对时计数单元进行加1操作,满24清零。

显示子程序VIEW:

VIEW子程序的作用是别离将时刻计数单元40H(s),41H(min),42H(h)中的十进制时刻值(组合BCD码)转化为个位和十位(分离BCD码)寄存在显示缓冲区中,显示缓冲区地址为30H--35H。

其中30H--31H寄存秒数据,32H--33H寄存分数据,34H--35H寄存时数据。

由于每一个地址单元内均为分离BCD码,用BCD一个7段译码器74LS47直接进行译码,因此不需要软件方式对BCD码数据进行译码。

扫描子程序SCAN:

SCAN子程序的作用是把显示缓冲区中的数据依次送往显示器显示。

把扫描值作为高4位,显示数据值作为低4位,输出P0口,以完成显示,因为采纳了3-8译码器74LS47作为扫描输出,因此用36H单元寄存扫描指针,即36H中寄存的是数码管的序号,显示时,只需掏出30H--35H某一地址中的数据,并从P0口的低4位输出,同时P0口的高4位作为扫描值输出,就能够保证数码管的正常工作。

 

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

ORG0000H

LJMPSTART

ORG000BH

LJMPTT0

ORG0050H

START:

MOVSP,#70H

MOV36H,#00H;(36H)为扫描指针

MOV40H,#00H;秒操纵

MOV41H,#59H;分操纵

MOV42H,#23H;时操纵

MOV30H,#00H

MOV31H,#00H;显示秒

MOV32H,#09H

MOV33H,#05H;显示分

MOV34H,#03H

MOV35H,#02H;显示时

MOVTMOD,#01H;按时器T0工作方式设定

MOVTL0,#0B0H;设置按时器T0低4位初值

MOVTH0,#3CH;设置按时器T0高4位初值

MOVIE,#82H;闭合EA,ET0

MOV50H,#20;按时1秒循环次数

SETBTR0

LOOP:

JB,N2;S1按下时加1

CALLDE;排除抖动

MOVA,42H

ADDA,#01H

DAA

MOV42H,A

CJNEA,#24H,N1

MOV42H,#00H

N1:

JNB,$

CALLDE

N2:

JB,N4;S2按下分加1

CALLDE

MOVA,41H

ADDA,#01H

DAA

MOV41H,A

CJNEA,#60H,N3

MOV41H,#00H

N3:

JNB,$

CALLDE

N4:

JB,N6;S3按下秒加1

CALLDE

MOVA,40H

ADDA,#01H

DAA

MOV40H,A

CJNEA,#60H,N5

MOV40H,#00H

N5:

JNB,$

CALLDE

N6:

JB,N8;S4按下时减1

CALLDE

MOVR7,34H

CJNER7,#00H,N60

MOVR6,35H

CJNER6,#00H,N61

MOV42H,#23H

JMPN7

N60:

MOVA,34H

DECA

MOV34H,A

MOVA,35H

SWAPA

ADDA,34H

MOV42H,A

JMPN7

N61:

MOV34H,#09H

MOVA,35H

DECA

SWAPA

ADDA,34H

MOV42H,A

N7:

JNB,$

CALLDE

N8:

JB,N10;S5按下分减1

CALLDE

MOVR7,32H

CJNER7,#00H,N80

MOVR6,33H

CJNER6,#00H,N81

MOV41H,#59H

JMPN9

N80:

MOVA,32H

DECA

MOV32H,A

MOVA,33H

SWAPA

ADDA,32H

MOV41H,A

JMPN9

N81:

MOV32H,#09H

MOVA,33H

DECA

SWAPA

ADDA,32H

MOV41H,A

N9:

JNB,$

CALLDE

N10:

JB,N11;S6按下秒减1

CALLDE

MOVR7,30H

CJNER7,#00H,N100

MOVR6,31H

CJNER6,#00H,N101

MOV40H,#59H

JMPN11

N100:

MOVA,30H

DECA

MOV30H,A

MOVA,31H

SWAPA

ADDA,30H

MOV40H,A

JMPN11

N101:

MOV30H,#09H

MOVA,31H

DECA

MOV31H,A

SWAPA

ADDA,30H

MOV40H,A

N11:

JNB,$

CALLDE

******T0中断效劳子程序******

TT0:

MOVTH0,#3CH

MOVTL0,#0B0H

PUSHACC

PUSHPSW

DJNZ50H,TINT0

CALLTIME

CALLVIEW

TINT0:

CALLSCAN

POPACC

POPPSW

LJMPLOOP

******显示扫描子程序******

SCAN:

MOVR0,#36H

SCAN0:

MOVA,@R0

ADDA,#30H;A加30H即为显示缓冲区地址

MOVR1,A

MOVA,@R0

SWAPA

ORLA,@R1

MOVP0,A;P0高4位为扫描值,低4位为显示数据值

CALLDELAY

INC@R0

CJNE@R0,#06H,SCAN0

MOV@R0,#00H

RET

******时、分、秒计数值调整子程序******

TIME:

MOVA,40H

ADDA,#01H

DAA

MOV40H,A

CJNEA,#60H,TTI

MOV40H,#00H

MOVA,41H

ADDA,#01H

DAA

MOV41H,A

MOVA,41H

CJNEA,#60H,TTI

MOV41H,#00H

MOVA,42H

ADDA,#01H

DAA

MOV42H,A

CJNEA,#24H,TTI

MOV42H,#00H

TTI:

RET

******向显示缓冲区写数据******

VIEW:

MOVA,40H;30H为显示缓冲区首地址

ANLA,#0FH

MOV30H,A

MOVA,40H

SWAPA

ANLA,#0FH

MOV31H,A

MOVA,41H

ANLA,#0FH

MOV32H,A

MOVA,41H

SWAPA

ANLA,#0FH

MOV33H,A

MOVA,42H

ANLA,#0FH

MOV34H,A

MOVA,42H

SWAPA

ANLA,#0FH

MOV35H,A

RET

******延时子程序******

DELAY:

MOVR7,#65

DJNZR7,$

RET

DE:

MOVR4,#10;延时5ms

DE1:

MOVR5,#249

DJNZR5,$

DJNZR4,DE1

RET

END

 

一个礼拜的单片机课程设计专门快就终止了,在这一周当中,尽管开始有点困难,可是通过尽力学习,合理地进行设计安排,我终于顺利地完成了本次单片机课程设计,同时也学到了很多东西。

在本次课程设计中,我通过动手实践操作,进一步学习和把握了单片机原理的有关知识,专门是程序的编程方面,加深了对单片机原理及应用技术的熟悉,进一步巩固了对单片机知识的明白得,把握简单单片机应用系统的设计、制作的方式。

在设计时依照课题要求,温习相关的知识,查询相关的资料。

依如实验条件,找到适合的方案,找到需要的元器件及工具,进行实验。

这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时刻了解了更多的有关单片机的知识,使知识加倍丰硕,使自己加倍充实。

单片机作为咱们的要紧专业课之一,尽管在大三开学初期我对这门课并无什么爱好,感觉那些程序枯燥乏味,但在这次课程设计后我发觉自己在一点一滴的尽力中对单片机的爱好也在慢慢增加。

作为一名测控技术与仪器专业的大三学生,我感觉做单片机课程设计是十分成心义的,而且是十分必要的。

尽管过去从未独立应用过它们,但在学习的进程中带着问题去学习我发觉效率很高,这是我做这次课程设计的又一收成。

然后,要做好一个课程设计,就必需做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,明白该单片机内有哪些资源;要有一个清楚的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改良是程序设计的必经之路;要养成注释程序的好适应,一个程序的完美与否不单单是实现功能,而应该让人一看就能够明白你的思路,如此也为资料的保留和交流提

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

当前位置:首页 > 法律文书 > 起诉状

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

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