基于51单片机的数字钟设计 数码管显示

目录

摘要....................................................................................... ⅠAbstract.......................................................................................Ⅱ

++[第1章 绪 论 2](#第1章 绪 论 2)++

++[1.1 课题背景 2](#1.1 课题背景 2)++

++[1.2 课题来源 2](#1.2 课题来源 2)++

++[1.3 本章小结 3](#1.3 本章小结 3)++

++[第2章 MCS-51单片机的结构 4](#第2章 MCS-51单片机的结构 4)++

++[2.1 控制器 4](#2.1 控制器 4)++

++[2.2 存储器的结构 4](#2.2 存储器的结构 4)++

++[2.3 并行I/O口 5](#2.3 并行I/O口 5)++

++[2.4 时钟电路与时序 5](#2.4 时钟电路与时序 5)++

++[2.5 单片机的应用领域 6](#2.5 单片机的应用领域 6)++

++[2.6 本章小结 6](#2.6 本章小结 6)++

++[第3章 电路的硬件设计 7](#第3章 电路的硬件设计 7)++

++[3.1 复位电路 7](#3.1 复位电路 7)++

++[3.2 时钟电路 7](#3.2 时钟电路 7)++

++[3.3 按键电路 8](#3.3 按键电路 8)++

++[3.4 相关控制电路 9](#3.4 相关控制电路 9)++

++[3.4.1 控制打铃电路 9](#3.4.1 控制打铃电路 9)++

++[3.4.2 时间表显示电路·· 9](#3.4.2 时间表显示电路·· 9)++

++[3.5 数码管显示电路 10](#3.5 数码管显示电路 10)++

++[3.6 电源电路设计 10](#3.6 电源电路设计 10)++

++[3.7 本章小结 10](#3.7 本章小结 10)++

++[第4章 电路的软件设计 11](#第4章 电路的软件设计 11)++

++[4.1 软件程序内容 11](#4.1 软件程序内容 11)++

++[4.2 软件流程图 11](#4.2 软件流程图 11)++

++[4.3 定时程序设计 12](#4.3 定时程序设计 12)++

++[4.3.1实时时钟实现的基本方法·· 13](#4.3.1实时时钟实现的基本方法·· 13)++

++[4.3.2 实时时钟程序设计步骤·· 13](#4.3.2 实时时钟程序设计步骤·· 13)++

++[4.4程序说明 13](#4.4程序说明 13)++

++[4.5 本章小结 14](#4.5 本章小结 14)++

++[第5章 结论与展望 15](#第5章 结论与展望 15)++

++[5.1 结论 15](#5.1 结论 15)++

++[5.2 单片机的发展趋势 15](#5.2 单片机的发展趋势 15)++

++[参考文献 17](#参考文献 17)++

附录.......................................................................................... 18

第1章 绪 论

1.1 课题背景

单片机自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。由于单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎"无处不在,无所不为"。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。

单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。

本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能强等特点。不仅能满足所需要求而且还有很多功能可供开发,有着广泛的应用领域。

20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给许多半导体芯片生产厂家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而,常用80C51系列来称呼所有具有8051指令系统的单片机,它们对8051单片机一般都作了一些扩充,更有特点。其功能和市场竞争力更强,不该把它们直接称呼为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列型号。MCS-51系列及80C51单片机有多种品种。它们的引脚及指令系统相互兼容,主要在内部结构上有些区别。目前使用的MCS-51系列单片机及其兼容产品通常分成以下几类:基本型、增强型、低功耗型、专用型、超8位型、片内闪烁存储器型。

1.2 课题来源

在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。

随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能定时系统,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试时间和日常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。

1.3 本章小结

本文介绍的设计是针对教学所用的多功能定时器,可以完成教学所需的功能。该定时器操作简单,功能齐全,是单片机智能化的一种应用。

第2章 MCS-51单片机的结构

MCS-51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器(SFR)的集中控制方式。

2.1 控制器

控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。

单片机执行指令是在控制器的控制下进行的。首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。

2.2 存储器的结构

MCS-51单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开,程序存储器和数据存储器各有自己的寻址方式,寻址空间和控制系统。

这种结构对于单片机面向控制的实际应用极为方便,有利.在8051/8751弹片击中,不仅在片内集成了一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有极强的外存储器的扩展能力,寻址能力分别可达64KB,寻址和操作简单方便.MCS-51的存储器空间可划分为如下几类:

  1. 程序存储器

单片机系统之所以能够按照一定的次序进行工作,主要是程序存储器中存放了经调试正确的应用程序和表格之类的固定常数。程序实际上是一串二进制码,程序存储器可以分为片内和片外两部分。8031由于无内部存储器,所以只能外扩程序存储器来存放程序。

MCS-51单片机复位后,程序存储器PC的内容为0000H,故系统必须从0000H单元开始取指令,执行程序.程序存储器中的0000H地址是系统程序的启动地址.一般在该单元存放一条绝对跳转指令,跳向用户设计的主程序的起始地址。

  1. 内部数据存储器

MCS-51单片机内部有128个字节的随机存取存储器RAM,作为用户的数据寄存器,它能满足大多数控制型应用场合的需要,用作处理问题的数据缓冲器。

MCS-51单片机的片内存储器的字节地址为00H-7FH.MCS-51单片机对其内部RAM的存储器有很丰富的操作指令,从而使得用户在设计程序时非常方便。地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区含8个8位寄存器,编号为R7-R0。用户可以通过指令改变PSW中的RS1,RS0这二位来切换当前的工作寄存器区,这种功能给软件设计带来极大的方便,特别是在中断嵌套时,为实现工作寄存器现场内容保护提供了极大的方便。

  1. 特殊功能寄存器(SFR-Special Function Register)

特殊功能寄存器反映了MCS-51单片机的状态,实际上是MCS-51单片机各功能部件的状态及控制寄存器.SFR综合的,实际的反应了整个单片机基本系统内部的工作状态及工作方式.SFR实质上是一些具有特殊功能的片内RAM单元,字节地址范围为80H-FFH.特殊功能寄存器的总数为21个,离散的分布在该区域中,其中]有些SFR还可以进行位寻址.128个字节的SFR块中仅有21个字节是由定义的.对于尚未定义的字节地址单元,用户不能作寄存器使用,若访问没有定义的单元,则将得到一个不确定的随机数.

2.3 并行I/O口

MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。

P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。P1口是8位准双向I/O口,可驱动4个LS 型负载。P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。P1口、P2口、P3口各I/O口线片内均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写"1",另外准双向I/O口无高阻的"浮空"状态,故称为双向三态I/O 口。

2.4 时钟电路与时序

时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。

在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。CPU发出的时序信号有两类,一类用于片内对各个功能部件的控制,这列信号很多。另一类用于片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要。这也是单片机应用系统设计者普遍关心的问题。

2.5 单片机的应用领域

单片机应用领域可以归纳为以下几个方面。

1.智能仪表

用单片机系统取代老式的测量、控制仪表,实现从模拟仪表向数字化、智能化仪表的转化,如各种温度仪表、压力仪表、流量仪表、电能计量仪表等。

  1. 测控系统

用单片机取代原有的复杂的模拟数字电路,完成各种工业控制、数据采集系统等工作。

3.电能变换

应用单片机设计变频调速控制电路。

4.通信

用单片机开发通信模块、通信器材等。

5.机电产品

应用单片机检测、控制传统的机械产品,使传统的机械产品结构简化,控制智能化,提高了机电产品的可靠性,增强了产品的功能。

6.智能接口

在数据传输中,用单片机实现外部设备与微机通信。

2.6 本章小结

本章介绍了单片机的一些基本硬件结构。单片机是微计算机的一个分支,在原理和结构上,单片机与微型机之间没有根本性的差别,而且微计算机的许多技术都被单片机继承下来。单片机的基本结构依然是CPU加上外围芯片的传统结构模式,但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。

第3章 电路的硬件设计

3.1 复位电路

MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

上电复位:上电复位电路是---种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。

电路图如下:

上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。

3.2 时钟电路

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。

电路图如下:

MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。

3.3 按键电路

按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。

电路图如下:

P1.0口表示功能移位键,按键选择要调整的时十位、时个位、分十位或分个位。

P1.1口表示数字"+"键,按一下则对应的数字加1。

P1.2口表示数字"-"键,按一下则对应的数字减1。

P1.3口表示时间表的切换,程序默认为日常时间表,当按下该开关,使输入为低电平时,表示当前执行的是考试时间表,并有绿发光二极管显示。再按键,使键抬起,输入维高电平时,表示当前执行的是日常作息时间表,用红发光二级管显示。

3.4 相关控制电路

3.4.1 控制打铃电路

P1.5口控制继电器进而控制电铃工作。当时钟当前的时间和当前所执行的时间表的时间一致时,相应得标志位为1,P1.5口输出高电平,控制继电器闭合,从而合上开关,启动电铃进行打铃。打铃一定时间,标志位置0,P1.5输出低电平,继电器打开,电铃停止工作。

电路图如下:

3.4.2 时间表显示电路

因为该电路可以执行两个时间表,即正常作息时间表和考试时间表。为了能够从外观上看出当前正在执行的是那种时间表。为此,在电路中加上了红、绿两个不同的发光二极管,当红发光二极管接通时,表示当前正在执行日常作息时间表;当绿发光二极管接通时则表示当前正在执行的是考试时间表。有了红绿两发光二极管表示,就可以明显看出当前执行的是何种时间表,不会混淆。

电路图如下:

3.5 数码管显示电路

数码管显示器成本低,配置灵活,与单片机接口简单,在单片机应用系统中广泛应用。

1.数码管的工作原理

数码管是由8个发光二极管构成的显示器件。在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;若将二极管的阴极连在一起,称为共阴极数码管。本文用到的6个数码管均是共阴极的。当发光二极管导通时,它就会发光。每个二极管就是一个笔划,若干个二极管发光时,就构成了一个显示字符。将单片机的I/O口控制相应的芯片与数码管的a-g相连,高电平的位对应的发光二极管亮,这样,由I/O口输出不同的代码,就可以控制数码管显示不同的字符。本文的6个数码管均采用动态显示方式,显示当前的时间。整个显示电路应用了2个164芯片,1个244芯片。第一个164芯片把从单片机传出的串行数据转换成并行数据。164只能存储8位数据,因此,当单片机输出第9-14位数据的时候,第一个164芯片中的8位数据就被传到第二个164芯片中,这8位数据就是段选信号,控制数码管将要显示的字符。第9-14位数据输出后,控制244芯片的单片机的P1.7口置为高电平,244芯片选通。这六位数据经过244芯片以后是片选信号,即控制动态显示的是哪一位数码管。在片选信号和段选信号的控制下,数码管就正确的动态显示当前的时间。

3.6 电源电路设计

电源电路包括变压器、桥式整流器、电容和稳压器。通过变压器变压,使得220V电压变为5 V,在通过桥式整流,电容的滤波作用,稳压器的稳压作用,可输出5V的稳定电压。

3.7 本章小结

本章介绍的是本设计的硬件结构,单片机的相关I/O口输入输出就可以实现相应的控制功能。还介绍了单片机的复位电路和时钟电路。

第4章 电路的软件设计

4.1 软件程序内容

本设计的软件程序包括主程序、中断子程序、打铃子程序、时钟显示子程序、查询时间表切换程序和延时子程序等等。另外由于电路中有四个按键,还另外设计了防抖动程序来防止干扰。

4.2 软件流程图

软件程序整个流程图如下:

|----|
| 开始 |

|-----|
| 初始化 |

|-----------|
| 是否按时间表切换键 |

|-------|
| 切换时间表 |

|---------|
| 查询功能移位键 |

|------|
| 调整时间 |

|------------|
| 是否与时间表时间匹配 |

|---------|
| 调用打铃子程序 |

|---|
| 是 |

|---|
| 否 |

|---|
| 是 |

|---|
| 否 |

4.3 定时程序设计

单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果MCS-51采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/计数器两种工作模式和4种工作方式。

定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX.

当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。

4.3.1实时时钟实现的基本方法

时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。

秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则"秒"单元中的内容加1;"秒"单元满60,则"分"单元中的内容加1;"分"单元满60,则"时"单元中的内容加1;"时"单元满24,则将时、分、秒的内容全部清零。

4.3.2 实时时钟程序设计步骤

(1)选择工作方式,计算初值;

(2)采用中断方式进行溢出次数累计;

(3)从秒------分------时的计时是通过累加和数值比较实现的;

(4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部

RAM中要设置显示缓冲区,共6个地址单元。显示缓冲区从左到右依次存放时、分、秒数值;

(5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示

子程序的方法等待中断的到来。

(6)中断服务程序:进行计时操作

(7)加1子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、

分、时加1时共有三种条调用加1子程序,包括三项内容:合字、加1并进行十进制调整、分字。

4.4程序说明

在整个系统中,在单片机的30H、31H和32H中存储当前时间的小时、分钟和秒。由于要用数码管显示当前的时间,必须用到分字和合字,因此在33H、34H、35H、36H、37H和38H中存储当前时间的时十位、时个位、分十位、分个位、秒十位和秒个位,方便显示。

本设计有由四个轻触按键组成的小键盘,这些按键可以任意改变当前的状态。按功能移位键一次,表示当前要校对小时的十位;按第二次,表示当前校对的是小时的个位;按第三次,则表示校对的是分钟的十位;第四次,表示的校对的是分钟的个位。按下数字"+" 键和数字"-"键可在当前校对的数字上相应加上1或者减去1。

本设计采用查表方式,在程序里预先存储两个表格,即日常作息时间表和考试时间表,可以通过手动按键来选择所要执行的时间表。并且用红、绿发光二极管来区别当前所执行的时间表。系统开机后,按功能移位键就可以调整当前的时间,整个系统操作简单,功能明确。

显示数据时,先把要显示的数据送到数据缓冲区SBUF中,再从SBUF中显示。串行口缓冲寄存器SBUF器是可直接寻址的专用寄存器。在物理上,它对应着两个寄存器,一个发送寄存器,一个接收寄存器。CPU写SBUF,就是修改发送寄存器;读SBUF,就是读接收寄存器。接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生写重叠的问题。

4.5 本章小结

这一章介绍了本设计的软件设计,所有的功能在流程图里清晰的表现了出来,体现了设计的合理性、可实现性。

第5章 结论与展望

5.1 结论

单片机多功能定时系统理论上能很好的达到了学校教学要求,发挥了单片机在智能化方面的应用。该系统的设计很好的满足当前学校教学的需要,是一个理想的智能化的设计。它具有一个走时精确的实时钟,可以任意设置时间,可以控制时间表的转换,时钟的显示功能等。可以通过按键操作和数字显示。该系统规模小,但是功能较多,操作简单,造价低,应用非常广泛。该系统的设计为向家庭数字化方向发展又前进了一步。同时又扩大了单片机的应用领域。

5.2 单片机的发展趋势

自单片机出现至今,单片机技术已走过了几十年的发展路程。纵观几十年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,拉动广泛的应用领域,表现出比微处理器更具个性的发展趋势:

1.采用先进结构以实现高性能

在过去的一段时间内,单片机的指令运行速度一直在10MIPS以下,这对于应用在工业控制领域内的单片机来说是足够了,但当单片机被应用在通讯及DSP领域作为高速运算、编码或解码时,就会出现因指令运行速度不够而限制单片机应用的情形,因此提高单片机指令运行速度已经成为迫切需要解决的问题。

2.进一步降低功耗、

基于80C51的飞利浦低功率、低系统成本微控制器51LPC系列是业界推动单片机向低功耗方向发展的主导单片机系列之一。51LPC系列单片机采用以下三种方法降低功耗:(1)使系统进入空闲模式,在空闲模式下,只有外围器件在工作,任意的复位及中断均可结束空闲模式;(2)使系统进入低功耗模式,在低功耗模式下,振荡器停止工作,是功耗降到最小(3)使系统进入低电压EPROM操作;EPROM包含了模拟电路,当Vcc高于4V时,可通过软件使这些模拟电路掉电以降低功耗,在上电情况下可使系统退出该模式。

3.采用Flash Memory

随着半导体工艺技术的不断进步,MPU的Flash版本逐渐替代了原有的OTP版本。Flash MPU具有以下优点:与多次可编程的窗口式EPROM相比,Flash MPU的成本要低得多;在系统编程能力以及产品生产方面提供了灵活性,因为Flash MPU可在编程后面再次以新代码重新编程;可减少已编程器件的报废和库存;有助于生产厂商缩短设计周期,使终端用户产品和、更具有竞争力。

4.集成更多功能及兼容性

目前单片机的另一个发展趋势是在芯片上集成更多的功能。如模拟功能,包括模拟比较器、A/D和D/A转换器等。具体表现在:兼容性作为设计的第一考虑;额外的新的特点是透明的;使用同一种编程器;OTP使器件快速提升及标准化成为可能。

5.强抗干扰能力

不断加强抗干扰能力是单片机进一步发展的必然趋势。ST Microelectronics公司推出的ST62系列单片机在这方面是佼佼者,其优良的抗干扰能力使得许多大公司将其应用在系统中的关键部件上。许多单片机开发商也正朝着这个方向努力。

6.朝系列化、全面化方向发展

各大单片机开发商在增加产品功能的同时效力于形成产品的系列化=全面化,以满足各种控制领域的要求,这也是单片机发展的趋势之一。日本TOSHBA公司开发了从4位到64位的多系列单片机,日立公司也有从4.位到32位的单片机,目前还没有哪个厂家生产的单片机比东芝公司的种类多。

随着单片机性能的不断提高,不断的克服和弥补自身的不足。在各种控制领域,单片机将拥有更加广阔的使用天地。在很长的一段时间内,它将一直是工程设计人员的首选控制芯片之一。

参考文献

1\] 张专成 赵怀勋.单片机测控系统中的监视定时器.武警技术学院.Mar 1997 \[2\] 张景元.基于单片机的多用途定时器的设计与实现.电子工程师2000年第 8期 \[3\] 李洪涛.一种单片机控制的定时打铃器.电子世界.1990年第2期 \[4\] 何业军 李超.基于单片机控制的高精度定时打铃器的设计.电子技 术.2001年第7期 \[5\] 关宗安 仲丛久.基于单片机实现的多路定时控制器的设计.沈阳航空工业 学院学报.2004年6月.第21卷第3期 \[6\] ATMEL.Microcontroller Data book.2002 \[7\] Mark1.Montrose.PRINTED Circuit Board Design Techniques for EMC compliance.IEE Press series.2000 \[8\] 范立南.单片微机接口与控制技术.沈阳:辽宁大学出版社.1996 \[9\] 张友德.单片微型机原理、应用与实践.上海:复旦大学出版社.1992 \[10\]李华.MCS-51系列单片机实用接口技术,北京:北京航空航天大学出版 社.1993 \[11\]何希庆,高伟.MCS-51单片机原理、实验、实例\[M\].山东:山东大学出版 社.1989 \[12\]张毅刚,彭喜源,潭晓昀.MCS-51单片机应用设计\[M\].哈尔滨:哈尔滨工 业大学出版社.1997 \[13\]胡汉才.单片机原理及接口技术\[M\],北京:清华大学出版社.1996 \[14\]余永权,单片机与家用电器智能化设计\[M\].北京:电子工业出版社.1995 \[15\]房小翠,王金凤.单片微型计算机与机电接口技术\[M\].北京国防工业出版 社.2002 \[16\]皮红梅,李英顺.单片机开发中的定时方法.沈阳石油化工高等专科学校学 报.2002年12月 \[17\]Maxim公司.Newreleases Data Book 1996 /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*51单片机数字钟 设计\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*微信公众号:木子单片机\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*原创设计\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ #include \ #define uint unsigned int #define uchar unsigned char /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*定义 数码管\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ #define SMG_XS P0 //数码管数据显示 #define SMG_KZ P2 //数码管控制显示 #define Speak P3_7 //定义蜂鸣器接口 #define LED1 P3_4 //定义LED1接口(走时提示指示灯) #define LED2 P3_5 //定义LED2接口(闹钟指示灯亮) #define LED3 P3_6 //定义LED3接口(整点报时指示灯) #define Key1 P1_0 //时间调整允许 按键 #define Key2 P1_1 //时、分加 按键 #define Key3 P1_2 //时、分减 按键 #define Key4 P3_1 //闹钟时间调整允许 按键 #define Key5 P3_2 //开/关闹钟 按键 #define Key6 P3_3 //开/关整点报时 按键 uchar code Data\[\]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF};//没有小数点 //定义数组 数码管 0 1 2 3 4 5 6 7 8 9 - uchar code Data1\[\]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3F};//带小数点 //定义数组 数码管 0 1 2 3 4 5 6 7 8 9 - uchar hour=12,min=0,sec=0; //系统上电默认时间是 12.00.00 uchar hour1=6,min1=0,sec1=0; //系统上电默认闹铃是 06.00.00 char num=0; //时间基数 num uint t=3; //数码管动态扫描延时时间基数 源数据3 uchar flag=0; //显示标志位(0:走时正常 1:调整时钟 2:调整分钟) uint i=0;j=0; //循环变量i,j bit nao_z=0; //闹钟标志位(0:关闭闹钟 1:开启闹钟) uchar flag_nao_z=0; //闹钟显示模式(0:显示正常走时时间 1:显示闹钟时间 2:调整闹钟时钟 3:调整闹钟分钟) bit bao_shi=0; //整点报时标志位(0:不允许整点报时 1:允许整点报时) void delay(uint time) //扫描延时函数 { uint x,y; for(x=time;x\>0;x--) for(y=110;y\>0;y--); } void delay_fmq(uint time) //延时函数(蜂鸣器) { uint x,y; for(x=time;x\>0;x--) for(y=5;y\>0;y--); } void fmq() //蜂鸣器函数(按键提示) { for(i=0;i\<100;i++) { Speak=0; delay_fmq(10); } Speak=1; } void Time0_init() //定时器0初始化函数 { TMOD=0x01; //定时器0为方式1 TL0=(65536-50000)%256; TH0=(65536-50000)/256; //12M晶振 定时时间50ms ET0=1; //开定时器0中断 EA=1; //开总中断 TR0=0; //先不启动定时器0 } void Time0() interrupt 1 //定时器0中断服务函数 { TH0=(65536-50000)/256; //重新载装初值,设置50ms中断一次 TL0=(65536-50000)%256; num++; //时间基数加1 while(num==20) //1秒时间到 { num=0; //num清0 sec++; //秒加1 if(flag_nao_z!=0) //闹钟显示模式不等于0(不显示正常走时时间,即显示闹钟时间) { LED1=\~LED1; //指示灯按照2Hz频率闪烁(在调整闹钟时间时,提示正在走时) } else //否则闹钟显示模式等于0(显示正常走时时间) { LED1=1; //在正常走时的时候,指示灯不亮 } if(nao_z==1) //当闹钟标示位为1:开启闹钟 { LED2=0; //闹钟指示灯亮 if(hour==hour1\&min==min1) //当时,分和闹钟时,分相同 { Speak=\~Speak; //蜂鸣器接口取反(2Hz频率响) } else //否则时,分和闹钟时,分不相同 { Speak=1; //关闭蜂鸣器 } } else //否则关闭闹钟 { LED2=1; //闹钟指示灯不亮 } } while(sec==60) //1分时间到 { sec=0; //秒清0 min++; //分加1 } while(min==60) //1小时时间到 { min=0; //分清0 hour++; //时加1 } while(hour==24) //24小时到 { hour=0; //时清0 } } void disp(hour,min,sec) //数码管正常显示模式 { SMG_XS=Data\[hour/10\]; //小时十位 SMG_KZ=0xdf; //控制第1个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data1\[hour%10\]; //小时个位 SMG_KZ=0xef; //控制第2个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data\[min/10\]; //分十位 SMG_KZ=0xf7; //控制第3个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data1\[min%10\]; //分个位 SMG_KZ=0xfb; //控制第4个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data\[sec/10\]; //秒十位 SMG_KZ=0xfd; //控制第5个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data\[sec%10\]; //秒个位 SMG_KZ=0xfe; //控制第6个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; } void disp1(hour,min,sec) //数码管模式1:调小时模式(时钟在数码管上闪烁) { j++; //j加1 while(j==40) {j=0;} //j为40时,j清0 if(j\<20) //j小于20 时,分,秒 都显示 { SMG_XS=Data\[hour/10\]; //小时十位 SMG_KZ=0xdf; //控制第1个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data1\[hour%10\]; //小时个位 SMG_KZ=0xef; //控制第2个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data\[min/10\]; //分十位 SMG_KZ=0xf7; //控制第3个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data1\[min%10\]; //分个位 SMG_KZ=0xfb; //控制第4个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data\[sec/10\]; //秒十位 SMG_KZ=0xfd; //控制第5个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; SMG_XS=Data\[sec%10\]; //秒个位 SMG_KZ=0xfe; //控制第6个数码管亮 delay(t); //延时一下(消隐) SMG_KZ=0xff; } else //否则20\

相关推荐
国科安芯2 小时前
航空安全关键系统抗辐射 MCU 加固技术、工程实现与典型应用
单片机·嵌入式硬件·无人机·cocos2d·risc-v
时空自由民.2 小时前
嵌入式学习-构建系统(图形化IDE/Kconfig/手动makefile Cmake)
数据库·ide·单片机·学习
2301_780943842 小时前
第一阶段:基础知识准备
单片机
Deitymoon2 小时前
STM32——蜂鸣器
stm32·单片机·嵌入式硬件
BT-BOX2 小时前
STM32物联网云监控智能报警器(MQ-2烟雾/火焰/DHT11温湿度/红外)
stm32·嵌入式硬件·物联网
光子物联单片机2 小时前
STM32传感器模块编程实践(二十)ESP8266实现MQTT连接OneNET上传温湿度数据
c语言·stm32·单片机·嵌入式硬件·mqtt
项目題供诗2 小时前
STM32-EXIT外部中断(七)
stm32·单片机·嵌入式硬件
三品吉他手会点灯2 小时前
STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(下)
笔记·stm32·单片机·嵌入式硬件·学习
时空自由民.2 小时前
嵌入式-CI(Continuous Integration)介绍
linux·单片机·ci/cd