当前位置:文档之家› 51单片机1602液晶显示频率计

51单片机1602液晶显示频率计

51单片机1602液晶显示频率计
51单片机1602液晶显示频率计

摘要

在电子领域内,频率是一种最基本的参数,并与其他许多电参量的测量方案和测量结果都有着十分密切的关系。由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度。因此,频率的测量就显得尤为重要,测频方法的研究越来越受到重视。

频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代侧量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。

为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89S52)相结合的频率计的设计方案,不但切实可行,而且体积小、保密性强、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。频率计的硬件电路是用Protel绘图软件绘制而成,软件部分的单片机控制程序,是以KeilC做为开发工具用C语言编写而成,而频率计的实现则是选用Ptotues仿真软件来进行模拟和测试。

关键词:单片机;AT89S52;频率计;C语言

ABSTRACT

In the electronic field, frequency is a kind of most basic parameter, and all there are close relations in the measurement schemes of many other electric parameters and result of measuring. Because the signal anti-interference ability of frequency is strong, easy to transmit, can obtain higher measurement precision. So, the measurement of frequency seems particularly important, the research of the method is being paid attention to.

The Frequency meter, as one kind of the measuring instrument, often called the electronic counter, its basic function is that frequency and application of cycle Frequency meter of measuring the signal are in a very large range, it not only applies to general simple instrument measurement but also apply to other fields such as teaching, scientific research, high-accuracy instrument measuring, industrial control extensively. With the rapid development of microelectric technique and computer technology, especially appearance and development of the one-chip computer, the instruments have all changed enormously in such aspects as principle, function, precision and automatic level to enable the traditional electronic side amount, form a kind of side amount instrument of new generation that totally broke through the traditional concept. The Frequency meter has adopted the high-speed integrated circuit and large scale integrated circuit extensively, make the instrument change greatly in such aspects as miniaturize, power consumptive, dependability. At present, there are various digital Frequency meter of multi-function, high precision, high frequency on the market, but the price is high.

In order to meet the need of the real work, design and provide one this time The design plan of Frequency meter combining with one-chip computer (AT89S52) on a small scale, not only feasible, and small, of good security, design simply, with low costs, the precision is high, can examine the bandwidth frequently, have reduced the design cost and realized complexity greatly. The hardware circuit of the Frequency meter is drawing with Protel mapping software, the one-chip computer control procedure of the software part, regarded KeilC as the developing instrument to write in C language, but the realization of the Frequency meter was to select to carry on imitating and test with Protues artificial software.

Key Words:single chip computer; AT89S52; frequency meter; C language

目录

1 绪论 (1)

1.1 课题的引入 (1)

1.2 产生背景 (1)

1.3 国内外研究现状 (2)

1.4 单片机频率计设计的目的及意义 (2)

2AT89S52单片机介绍及其发展概况 (4)

2.1 单片机的介绍 (4)

2.1.1 单片机概述 (4)

2.1.2 单片机的发展 (5)

2.1.3 单片机的特点及应用 (5)

2.2AT89S52系列单片机 (6)

2.2.1AT89系列单片机 (6)

2.2.2AT89S52系列单片机的基本结构 (7)

3 频率计总体方案设计 (10)

3.1 频率计设计原理 (10)

3.1.1 频率检测实现方法 (10)

3.1.2 频率计测频原理 (11)

3.2 设计思路及方法 (11)

3.2.1 频率计方案概述 (12)

3.2.2 频率计的量程自动切换 (12)

4 系统的硬件设计 (14)

4.1 时钟信号发生器 (14)

4.2AT89S52 控制寄存器 (15)

4.2.1AT89S52中断控制系统 (15)

4.2.2AT89S52定时/计数器的控制 (17)

4.3LCD1602显示电路 (18)

4.3.1LCD1602的主要技术参数及接口说明 (19)

4.3.2 控制器接口及时序 (19)

4.3.3 频率计硬件电路整体设计 (20)

5 系统的软件设计 (22)

5.1Keil C简介 (22)

5.2 频率计程序的建立过程 (23)

5.3 软件功能模块设计 (27)

5.3.1LCD初始化设置模块 (28)

5.3.2 浮点数到ASCII码转换模块 (28)

5.3.3 定时/计数器初始化模块 (29)

5.3.4 定时器中断服务模块子程序 (29)

6 系统的模拟及仿真 (31)

6.1 Proteus ISIS简介 (31)

6.1.1 Proteus ISIS的概况简介及特点 (31)

6.1.2 Proteus ISIS的运行概况 (31)

6.1.3 用Proteus 软件虚拟单片机实验的优点 (32)

6.2 系统的模拟与仿真过程 (33)

6.3 频率计系统仿真分析 (37)

结束语 (41)

致谢 (42)

参考文献 (43)

1绪论

1.1课题的引入

在电子技术中,频率是一种计算单位时间内的信号变化的数值的仪器,是最基本的参数之一,由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度,并且与许多电参量的测量方案、测量结果都有十分密切的关系。因此,频率的测量就显得更为重要。

随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用单片机设计频率计,并采用适当的算法取代传统电路,克服了传统频率计结构复杂、稳定性差、精度不高的弊端,其体积小、保密性强、设计简单、成本低,不仅大大降低了设计成本和实现复杂度,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。[15]

1.2产生背景

频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。

20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新材料新工艺尚未成熟,美国仙童(Fairchild)公司研制出世界上第一台单片微型机F8。此时单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM有的还包括了一些简单的I/O口集成到芯片上,它还需配上外围的其他处理电路方才构成完整的计算系统。

问世以来,单片机开始迅速发展,其功能不断增强和完善,应用领域也越来越广泛,现已成为微型计算机的重要分支。目前,单片机发展具体体现在CPU功能增强内部资源增多引脚的多功能化和低电压低功耗等方面。

随着嵌入式系统式系统片上系统等概念的提出.普遍接受及应用,单片机的发展又进入了一个新的阶段,单片机的体积更小功能更齐全可靠性更高.由于起明显的优势,单片机

在工业控制、数据采集、智能仪器仪表、家用电器、智能玩具、通信系统、机械加工等各个领域都获得了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。单片机技术已成为现代电子技术应用领域十分重要的技术之一,是电子技术应用领域工程技术人员必备的知识和技能,它能够是我们设计的产品更具智能性和先进性。

从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用51系列单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。

1.3国内外研究现状

20世纪70年代,美国仙童(Fairchild)公司研制出世界上第一台单片微型机F8。单片机的问世和飞速发展掀起了计算机工程应用的一场新革命,使计算机技术冲破了实验室和机房的界限,广泛应用与工业控制系统数据采集系统自动测试系统只能仪表和接口以及各类功能模块等广阔的领域。随着嵌入式系统式系统片上系统等概念的提出.普遍接受及应用,单片机的发展又进入了一个新的阶段,单片机的体积更小功能更齐全可靠性更高。由于起明显的优势,单片机在工业控制、数据采集、智能仪器仪表、家用电器、智能玩具、通信系统、机械加工等各个领域都获得了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。单片机技术已成为现代电子技术应用领域十分重要的技术之一,是电子技术应用领域工程技术人员必备的知识和技能,它能够是我们设计的产品更具智能性和先进性。51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场。[5]

频率计也是一种应用较广泛的电子测量仪器。随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。

1.4单片机频率计设计的目的及意义

在电子技术中,频率是一种计算单位时间内的信号变化的数值的仪器,是最基本的

参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。目前市场上的频率计产品很多,但基本上都是采用专用计数芯片和数字逻辑电路组成,由于这些芯片本身的工作频率不高,从而限制了产品工作频率的提高,远不能满足在一些特殊的场合需要测量很高的频率的要求,而且测量精度也受到芯片本身极大的限制。从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用51系列单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。随着单片机技术的不断发展,单片机能实现更加灵活的逻辑控制功能,具有很强的数据处理能力,可以用单片机通过软件设计直接用十进制数字显示被测信号频率。频率计是电子测试、自动化控制等设备中不可或缺的重要模块。在电子工程、资源勘探、仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具,频率测量也是电子测量技术中最基本最常见的测量之一。不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。

目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89S52)相结合的频率计的设计方案,不但切实可行,而且体积小、保密性强、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。

2AT89S52单片机介绍及其发展概况

2.1单片机的介绍

2.1.1单片机概述

单片机(Single-Chip-Microcomputer),又称单片微控器,是一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力(如算术运算、逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM)、只读程序存储器(ROM)、输入/输出电路(I/O)、定时/计数器、中断系统、串行通讯口,可能还包括显示驱动电路、脉宽调制电路、模数转换等电路集成到一个半导体芯片上,构成一个最小而又完善的计算机系统。它们之间相互连接的结构框图如下图所示。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。单片机结构上的设计,在硬件.指令系统及I/O能力等方面都有独到之处,具有较强而有效的控制功能。其结构图为2-1所示。

图2-1单片机结构图

虽然单片机只是一个芯片,但无论从组成还是从其逻辑功能上看,都具有微机系统的含义。另一方面,单片机毕竟是一个芯片,只有外加所需的输入输出设备,才能构成实用的单片机应用系统。单片机有着微处理器所不具备的功能,它可单独完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。[8]

然而单片机又不同于单板机,芯片在没有开发前,它只具备功能极强的超大规模集成电路,如果赋于它特定的程序,它便是一个最小的、完整的微型计算机控制系统,它与单板机或个人电脑有着本质的区别。单片机的应用属于芯片级应用,需要用户了解单片机芯片的结构和指令系统,以及其它集成电路应用技术和系统设计所需要的理论与技术,用这样特定的芯片设计应用程序,从而使该芯片具备特定的功能。

单片机的应用极为广泛,它涉及智能仪器仪表、工业控制、计算机网络和通信以及

医用设备等领域。它以无与伦比的高性能、低价位赢得了广大电子开发者的喜爱。

2.1.2单片机的发展

1976年Intel公司推出了真正意义上的单片机MCS—48,它以体积小、功能全、价格低等自身魅力赢得了广泛的应用,为单片机的发展奠定了基础,成为单片机发展史上一个重要的里程碑。在MCS—48的带领下,许多半导体芯片在生产厂商竞相研制和发展自己的单片机系列。到80年代末,世界各地已相继研制出大约50个系列300多个品种的单片机产品,其中包括Motorola公司的6801,6802,Zilog公司的Z-8系列,Rockwell 公司的6501,6502等。此外,日本的NEC公司,日立公司等也不甘落后,相继推出了各自的单片机品种如Zilog公司的Z80、Motorola公司的6801、6802系列等。[7]目前我国使用做多的是Intel公司在MCS-48的基础上于20世纪80年代初发展起来的8位的单片机MCS-51,直到现在仍不失为单片机的主流系列。继8位单片机之后,又出现了16位单片机,1983年Intel公司推出的MCS-96系列单片机就是其中的典型代表。

51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用。51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场。

纵观单片机近30年的发展历程,单片机今后将向多功能、高性能、高速度、低电压、低功耗、低价格、外围电路简单化以及片内存储器容量增加的方向发展。但其位数不一定会继续增加,尽管现在已经有了32位单片机,但使用的并不多。可以预言,今后的单片机将是功能更强,集成度和可靠性更高而功耗更低,以及使用更方便等特点。此外,专用化也是单片机的一个发展方向,针对单一用途的专用单片机将会越来越多。[12]

2.1.3单片机的特点及应用

一块单片机芯片就是具有一定规模的微型计算机,在加上必要的外围器件,就可以构成完整的计算机硬件系统。由于单片机的这种特殊的结构形式,使其具有很多显著的优点,单片机在各个领域内的应用都得到迅猛的发展。

1) 单片机的应用特点

①具有较高的性价比。高性能、低价格是单片机最显著的一个特点,其应用系统具有印制板小、接插件少、安装调试简单方便等特点,使单片机应用系统的性价比高于一般危机系统。

②体积小、可靠性高。

③控制功能强。单片机采用面向控制的指令系统,实时控制功能特别强。

④使用方便、容易产品化。

单片机开发开发工具具有很强的软硬件调试功能,使研制单片机应用系统极为方便,加之现场运行环境的可靠性,因此使单片机能满足许多小型对象的嵌入式应用要求,可广泛用在仪器仪表、家用电器、智能玩具、控制系统等领域。

2) 单片机的应用领域

单片机由于其体积小、功耗低、价格低廉,而且具有逻辑判断、定时计数、程序控制等多种功能,广泛应用于工业控制、数据采集、智能仪器仪表、家用电器、智能玩具、通信系统、机械加工等领域。可以毫不夸张的说,凡是能想到的地方,单片机都可以用得上。

①智能仪器

②工业控制

③家用电器

④机电一体化

单片机除以上各方面应用外,还广泛应用于办公自动化领域、汽车电路、通信系统、计算机外围设备等,称为计算机发展和应用的一个重要方向。单片机从其问世和发展以来从工业测控对象环境接口特点出发,向着增强控制功能提高工业环境的可靠性灵活方便地构成应用计算机系统的界面接口的方向发展。

2.2AT89S52系列单片机

ATMEL公司是美国20世纪80年代中期成立并发展起来的半导体公司。该公司的技术优势在于推出Flash存储器技术和高质量、高可靠性的生产技术,它率先将独特的Flash存储技术注入单片机产品中。其推出的AT89系列单片机,在世界电子技术行业中引起了极大的反响,在国内也受到广大用户欢迎。AT89S系列单片机时继AT89C系列之后推出的功能更强的新产品。

2.2.1AT89系列单片机

AT89系列单片机是以8051为内核,结合自己的技术优势构成的,所以它和8051是兼容的。因此,AT89系列对于以8051为基础的应用系统而言,是十分容易进行取代和构成的。

1)AT89系列单片机具有以下优点:

①和AT8051接插相兼容

AT89系列单片机的引脚和8051是一样的,其封装是按军工标准进行的,有很高的质量标准和产品稳定性。

②以EEPROM电可擦除和Flash技术为主导的存储器

ATMEL公司把EEPROM和Flash技术巧妙相结合形成特殊的集成电路,从而使应用领域扩大。

③静态时钟方式

AT89系列单片机采用静态时钟方式,可以节省带电能。这对于降低便携类产品的功耗十分有用。

④可反复进行应用系统试验

采用AT89系列单片机设计的应用系统,可以反复进行系统试验。每次试验可以编制不同的程序,这样可以保证用户的系统设计达到最优。

⑤高标准的质量检测

ATMEL公司能够对各种集成电路进行严格且高标准的质量检测。其军品集成电路工作性能是完全符合军品标准的,在-55~125℃范围内其集成电路仍能实现正常的输出功能。因此,产品在航空航天仪器、雷达系统、导弹、智能自适应仪、机器人、各种武器电子系统、抗恶劣环境电子系统等领域都被广泛应用。

AT89S系列于AT89C系列相比,预算速度有了较大的提高,它的静态工作频率为0~33MHZ,片内集成有双数据指针DPTR、定时监视器、低功耗休闲状态及关电方式、关电方式下的中断恢复等诸多功能,极大地满足了各种不同的应用要求。AT89S52单片机是AT89S系列中增强型高档产品,它片内存储器容量是AT89S51的一倍,即片内8K 的Flash程序存储器和256B的RAM。另外,它还增加了一个功能极强的、具有独特应用的16位定时/计数器2等多种功能。AT89S52系列单片机与MCS-51系列全兼容,它是在MCS-51的技术内核为主导的基础上倾注了ATMEL公司优良技术进行新的设计与开发,使之功能更强,更具特色,从而能够较快的学习和掌握,并具备广泛的开发环境,使开发应用更方便。[3]

2.2.2AT89S52系列单片机的基本结构

AT89S52单片机是AT89S系列中增强型高档产品,它片内存储器容量是AT89S51的一倍,即片内8K的Flash程序存储器和256B的RAM。另外,它还增加了一个功能极强的、具有独特应用的16位定时/计数器2等多种功能。AT89S52系列单片机与MCS-51系列全兼容,它是在MCS-51的技术内核为主导的基础上倾注了ATMEL公司优良技术进行新的设计与开发,使之功能更强,更具特色,从而能够较快的学习和掌握,并具备广泛的开发环境,使开发应用更方便。

1)AT89S52单片机介绍及其硬件结构

AT89S52是一个低功耗、高性能,采用CMOS工艺制造的8位单片机,是Atmel 公司AT89系列中的一款性能相当优异的高档型产品,兼容标准MCS—51指令系统及其引脚结构,与Atmel公司其它产品相比AT89S52的最大特点是:能在线编程,且编程连线极简单。AT89S52片内含8KB ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器。

AT89S52具有如下特征参数:40个引脚、8KB Flash片内程序存储器、256KB的RAM,4个可编程I/O口、5个带2级中断嵌套的中断、3个16位可编程定时计数器、1个全双工串行通讯口、看门狗(WDT)电路、片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可为0HZ并可通过软件设置省电模式。空闲掉电模式下,CPU暂停工作,而RAM、定时/计数器、串行口、外中断系统可继续工作;掉电模式下,“冻结”振荡器而保存RAM的数据,停止芯片其他功能直至外中断激活或硬件复位。

AT89S52单片机的主要功能:

8位字长CPU;

振荡器和时钟电路,全静态操作:0~33MHZ;

8KB系统内部可编程Flash存储器;

256KB内部RAM;

4个I/O共32位线;

3个16位定时/计数器;

全双工(UART)串行口通道;

ISP端口;

定时监视器(看门狗);

双数据指针(DPTR);

20多个特殊功能寄存器;

电源下降标志。

2)AT89S52单片机的几种封装形式

AT89S52其有效引脚为40条,具有PDIP、TQFP、PLCC三种封装形式,以适应不同产品的需求。

3)AT89S52单片机的引脚功能说明

①主电源引脚

Vss(GND)(20脚):电源地电平

Vcc(40脚):电源供电电压4.0~5.0V

外接晶振或外部振荡器引脚

XTAL1(19脚):当外接晶振时,接外部晶振的一个引脚。

XTAL2(18脚):接外部晶振的另一个引脚

②多功能I/O引脚

P0口(39~32脚):8位并行I/O口

P1口(1~8脚):内接上拉电阻的8位准双向I/O口,能负担4个TTL负载。它的第二功能如下:

P1.0(1脚):定时/计数器T2的外部计数输入

P1.1(2脚):定时/计数器T2捕获/再装入触发及方向控制

P1.5(6脚):MOSI(用于系统内部编程)

P1.6(7脚):MOSO(用于系统内部编程)

P1.7(8脚):SCK(用于系统内部编程)

P2口(21~28脚):内接上拉电阻的8位准双向I/O口,能接4个TTL负载

P3口(10~17脚):内接上拉电阻的8位准双向I/O口,能接4个TTL负载,其第二功能为:

P3.0(10脚):RXD(串行接收端口)

P3.1(11脚):TXD(串行发送端口)

P3.2(12脚):INT0(外部中断0请求端)

P3.3(13脚):INT1(外部中断1请求端)

P3.4(14脚):T0(定时/计数器0外部计数输入端)

P3.5(15脚):T1(定时/计数器1外部计数输入端)

P3.6(16脚):WR(外部数据写选通)

P3.7(17脚):RD(外部数据读选通)

③控制、选通和复位引脚

RST(9脚):复位信号输入端

ALE/PROG(30脚):ALE地址锁存使能端,PROG为Flash编程时输入编程脉冲

PSEN(29脚):访问外部程序存储器读选通信号

EA/Vpp(31脚):EA为访问内部或外部程序存储器选择信号,Vpp为Flash编程电压。

3频率计总体方案设计

3.1频率计设计原理

频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用两种办法,第一种方法是使用单片机自带的计数器对输入脉冲进行计数;第二种方法是单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。第一种方法的好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。这种方法的缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89S52单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。第二种方法的好处是输入的时钟信号频率可以不受单片机晶振频率的限制,可以对相对较高频率进行测量,但缺点是成本比第一种方法高,设计出来的系统结构和程序也比较复杂。由于成本有限,本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于12MHz/24=500KHz。对外部脉冲的占空比无特殊要求。

3.1.1频率检测实现方法

1) 计数法测频率

使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器0的计数源,利用定时/计数器1定时实现计数闸门。频率计的工作过程为:定时/计数器0的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;同时运行定时/计数器1定时1s,定时/计数器0对外部的待测信号进行计数,定时/计数器1定时1s时间到TR清0,停止计数。从计数寄存器0读出测量数据,测量数据在完成数据处理后,由显示电路显示量结果。单片机外接晶振为12MHz,单片机指令周期为1μs,当被测频率信号过高时单片机不能测量。

2) 定时法测频率

使用定时方法实现频率测量时,外部的待测信号通过频率计的分频器二分频变成宽度等于待测信号周期的方波,该方波加至定时/计数器1的输入脚,及外部中断INT1口,由INT1口高电平和软件置位TR1,同时控制启动定时/计数器1对单片机的机器周期的计数,并检测方波高电平是否结束;当判定高电平结束时TR1清0,停止计数,然后从

计数寄存器读出测量数据。这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。

3.1.2频率计测频原理

频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。首先定时/计数器的计数寄存器清0,运行控制位TR置1,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时TR清0,停止计数。计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。

当上述测量判断过程直到计数闸门宽度达到1s(对应的频率测量范围为100~999Hz)时测量结果仍不具有3位有效数字,频率计则使用定时方法测量待测信号的周期。定时/计数器的工作被设置为定时器方式,定时/计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位TR置为1,以单片机工作周期为单位进行计数,直至信号的下跳沿到来,运行控制位TR清0,停止计数。16位定时/计数器的最高计数值为65 535,当待测信号的频率较低时,定时/计数器将发生溢出。产生溢出时,程序进入定时器中断服务程序,对溢出次数进行计数。待测信号的周期由3个字节组成:定时/计数器溢出次数、定时/计数器的高8位和低8位。信号的频率f与信号的周期T之间的关系为:f=1/T。

完成信号的周期测量后,需要做一次倒数运算才能获得信号的频率。为提高运算精度,采用浮点数算术运算。浮点数由3个字节组成:第1字节最高位为数符,其余7位为阶码;第2字节为尾数的高字节;第3字节为尾数的低字节。待测信号周期的3个字节定点数通过截取高16位、设置数符和计算阶码转换为上述格式的浮点数。然后浮点数算术运算对其进行处理,获得用浮点数格式表达的信号频率值。再通过浮点数到ASCII 码转换模块把用浮点数格式表达的信号频率值变换成本频率计的显示格式,送到显示模块显示待测信号的频率值。完成显示后,频率计都开始下一次信号的频率测量。

3.2设计思路及方法

本频率计的结构主要包括时钟信号发生电路、分频电路、单片机控制电路和LCD 显示电路组成。频率计的主要核心部件是采用AT89S52来产生定时和记录脉冲变化次数,运用AT89S52来构成计数器,突破了大部分运用数字电路模板来构成计数器。本设计主要采用AT89S52芯片和LCD数码管来实现,软件编程主要是采用C51语言来编程。

其系统结构如下图所示:

图3-1频率计系统结构图

3.2.1频率计方案概述

本频率计的设计以AT89S52单片机为核心,利用他内部的定时/计数器完成待测信号周期/频率的测量。单片机AT89S52内部具有3个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 MHz时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500 kHz)。定时/计数器的工作由运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。

本设计综合考虑了频率测量精度和测量反应时间的要求。例如当要求频率测量结果为3位有效数字,这时如果待测信号的频率为1 Hz,则计数闸门宽度必须大于1000 s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法:

①当待测信号的频率>100Hz时,定时/计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,计数闸门宽度>1s时,即可满足频率测量结果为3位有效数字;

②当待测信号的频率<100Hz时,定时/计数器构成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号的周期。这时用方波作计数闸门,当待测信号的频率=100Hz,周期为10ms,使用12MHz时钟时的最小计数值为10000,完全满足测量精度的要求。

3.2.2频率计的量程自动切换

使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器的计数源,利用软件延时程序实现计数闸门。频率计的工作过程为:定时/计数器的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;运行软件延时程序,同时定时/计数器对外部的待测信号进行计数,延时结束时TR清0,停止计数。从计数寄存器读出测量数据,测量数据在完成数据处理后,由显示电路显示测量结果。

使用定时方法实现频率测量时,外部的待测信号通过频率计的预处理电路变成宽度等于待测信号周期的方波,该方波同样加至定时/计数器的输入脚。工作高电平是否加至定时/计数器的输入脚;当判定高电平加至定时/计数器的输入脚,运行控制位TR置1,启动定时/计数器对单片机的机器周期的计数,同时检测方波高电平是否结束;当判定高电平结束时TR清0,停止计数,然后从计数寄存器读出测量数据。这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。

测量结果的显示格式采用科学计数法,即有效数字乘以10为底的幂。这里设计的频率计用5位数码管显示测量结果:前3位为测量结果的有效数字;第4位为指数的符号;第5位为指数的值。采用这种显示格式既保证了测量结果的显示精度,又保证了测量结果的显示范围(0.100Hz~9.99MHz)。

频率计测量量程自动转换的过程由频率计测量量程的高端开始。由于只显示3位有效数字,测量量程的高端计数闸门不需要太宽,例如在进入计数器的信号频率范围在10.0~99.9kHz,计数闸门宽度为10ms即可。频率计开始工作时使用计数方法实现频率测量,并使计数闸门宽度为最窄,完成测量后判断测量结果是否具有3位有效数字,如果成立,将结果送去显示,完成测量工作;否则将计数闸门宽度扩大10倍,继续进行测量判断,直到计数闸门宽度达到1s,这时对应的进入单片机的待测信号频率范围为100~999Hz。如果测量结果仍不具有3位有效数字,频率计则使用定时方法实现频率测量。

定时方法测量的是待测信号的周期,这种方法只设一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将结果送去显示。无论采用何种方式,只要完成一次测量,频率计自动开始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转换。

4系统的硬件设计

本频率计的硬件电路主要由时钟信号发生器、频率计控制电路和LCD显示电路组成。频率计的主要核心部件是采用AT89S52的内部定时/计数器来产生定时和记录脉冲变化次数。主要用到的元器件有晶振器件、电阻、74LS04、74LS74、74LS00、AT89S52单片机、LCD1602等。其硬件系统框图如3-2所示:

图3-2 硬件系统框图

4.1时钟信号发生器

时钟信号发生器是频率计的频率信号产生电路,它是由一个晶振、两个电阻、一个电容及两个非门74LS04构成的工作于串联谐振状态的TTL门电路振荡器。当电路频率为串联谐振频率时,晶体的等效电抗接近零(发生串联谐振),串联谐振频率信号最容易通过闭环回路,这个频率信号通过两级反相后形成反馈振荡,晶体同时也担任着选频作用,在工作于串联谐振状态的振荡电路,它的频率取决于晶体本身具有的频率参数。也就是说,石英晶体多谐多谐振荡器的振荡频率取决于石英晶体的固有谐振频率,与外接电阻、电容无关。图4-1为频率计的时钟信号发生电路的原理图:

图4-1 时钟信号发生原理图

4.2AT89S52 控制寄存器

4.2.1AT89S52中断控制系统

AT89S52的中断系统共有8个中断源,6个中断矢量,两级中断优先级,可有软件设定实现两级嵌套,可通过软件来屏蔽或响应个对应的中断请求。

1)AT89S52中断源

AT89S52的中断系统有8个中断源,对应有6个中断矢量。其外部中断有两种触发中断的方式,即低电平触发和跳转触发。各种中断请求信号分别由定时/计数器控制寄存器TCON和串行通信控制寄存器SCON的相应位锁存,提供给主机查询和采样。

TCON控制寄存器是由定时计数器和中断请求两者合用,其格式如表4-1:

表4-1 TCON控制寄存器

各位含义如下:

TF1:定时/计数器1回0溢出中断请求标志位

TR1:定时/计数器1启/停控制位

TF0:定时/计数器0回0溢出中断请求标志位

TR0:定时/计数器0启/停控制位

IE1:外部中断(INT1)请求标志位

IE0:外部中断(INT0)请求标志位

IT1:用软件置位/复位IT1来选择外部中断INT1是跳变还是电平触发中断请求

IT0:用软件置位/复位IT1来选择外部中断INT1是跳变还是电平触发中断请求

2) 中断控制

AT89S52的中断是可编程的,即可通过软件来实现对中断系统功能进行设置和控制。

AT89S52的中断均属可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求开放或屏蔽的控制。中断控制寄存器IE的格式及各位含义如表4-2所示:

EA(IE.7):全部中断允许/禁止位。

X(IE.6):保留位,无意义。

ET2(IE.5):定时/计数器2回0溢出或捕获中断响应控制。

ES(IE.4):串行通信接收/发送中断响应控制位。

ET1(IE.3):定时/计数器1回0溢出或捕获中断响应控制。

EX1(IE.2):外部中断INT1中断响应控制位。

ET0(IE.1):定时/计数器0回0溢出或捕获中断响应控制。

EX0(IE.0):外部中断INT0中断响应控制位。

从上可见AT89S52的中断响应为两级控制,EA为总的中断响应控制位,各对应的中断源还有中断响应控制位。

3) 中断优先级

AT89S52的中断设有两级优先级,每个中断源均可通过软件对中断优先级寄存器IP 的对应位进行设置,变成为高优先级或低优先级,置1为高优先级,清0为低优先级。正在执行的低优先级中断服务程序可以被高优先级的中断请求所中断,但不能被同级或低优先级中断源中断请求所中断;正在执行的高优先级的中断服务程序不能被任何中断源中断请求所中断。两个或两个以上的中断源同时请求中断时,主机只响应优先级高的中断请求。为了实现上诉述规则,中断系统内部设有两个不可寻址的中断优先级状态触发器,其中一个用于指示正在服务于高优先级的中断,并阻止所有其他一切中断请求的响应,另外一个则用于指示正在服务于低高优先级的中断,除能被高优先级中断请求所终端外,阻止其他同级或低于它的中断请求所中断。

中断优先级控制器IP,其地址字节为B8H,具有位寻址功能,可通过软件设定各个中断源的中断优先级。IP控制寄存器的格式如表4-3所示:

表4-3 IP控制寄存器格式

各位含义如下:

X、X (IP.6、IP.7):保留位,无定意义。

PT2(IP.5):定时/计数器2的中断优先级设置位。

PS(IP.4):串行通信中断优先级设置位。

PT1(IP.3):定时/计数器1的中断优先级设置位。

PX1(IP.2):外部中断INT1中断优先级设置位

PT0(IP.1):定时/计数器0的中断优先级设置位。

PX0(IP.0)::外部中断INT0中断优先级设置位

复位后IP的内容为00H。

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。 时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。 开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。

以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中断入口程序 ;; (仅供参考) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;clr P3.7 ; CLEARDISP: MOV @R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入"熄灭符"数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50M S×20)START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护

基于51单片机的电子时钟设计源程序

#include unsigned char DispBuf[6]; //时间显示缓冲区 unsigned char Disdate[6]; //日期显示缓冲区 unsigned char DisSec[6]; //秒表缓冲区 struct //设定时间结构体 { unsigned char Hour; unsigned char Min; unsigned char Sec; }Time; struct //设定日期结构体 { unsigned char Year; unsigned char Month; unsigned char Days; }Date; struct //设定毫秒结构体 { unsigned char Minite; unsigned char Second; unsigned char MilliSec; }Millisecond; unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; //中断次数计数变量 unsigned char Flash_flag=0; //闪烁标志,每半秒闪烁 unsigned char Flash_flag1=0; //闪烁标志,每半秒闪烁 unsigned char DisPlay_Back=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char DisPlay_Back1=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char i,j; unsigned char SetMillisecond; //启动秒表 code unsigned char LEDCode[]={0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80}; //数码管显示代码 code unsigned char ErrorLEDCode[]={0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80};//绘制错误图纸的数码管显示代码 void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1(); void changedate(); // 调日期 void displaydate(); // 显示日期 void makedays(); //确定每个月的日期 void runSec();

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

51单片机简易可调的数码管电子钟程序

#include sbit KEY1=P3^0; sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管0-9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=30,hour=12,second; //定义并且初始化值12:30:00 void delay(unsigned int cnt)//延时函数 { while(--cnt); } void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示正常时间 StrTab[1]=tab[hour%10]; StrTab[2]=0xBF; StrTab[3]=tab[minute/10]; StrTab[4]=tab[minute%10]; StrTab[5]=0xBF; StrTab[6]=tab[second/10]; StrTab[7]=tab[second%10]; } main()//主函数 { TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时 TH0=0xd8; TL0=0xf0; ET0=1; TR0=1; TMOD |=0x10; //定时器1用于动态扫描 TH1=0xF8; TL1=0xf0; ET1=1; TR1=1; EA =1; Displaypro();

51单片机数码管时钟程序

本人初学51,编写简单时钟程序。仅供参考学习 #include #define uint unsigned int #define uchar unsigned char Uchar code table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1 }; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0xef}; void delay(uint); unsigned long i,num,t=1; void main() { TMOD=0X01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; while(1) { num=i/20;//i为秒位 if(i==1728000)//一天大概是这个秒吧,,,应该是,呵呵。就是世间到24时就归零。 i=0; //也可用下面这个部分来代替上面的。 /*if(i==20) { i=0; num++; if(num==5184000) num=0; }*/ //num=9; P2=7;//P2口为数码管控制端,我的是38译码器控制,就直接对其赋值来控制时,分,秒的显示; P0=table[i%100%10]; delay(t); P2=6; P0=table[i%100/10]; delay(t); P0=table_d[(num%60)%10]; P2=5; delay(t); P0=table[(num%60)/10]; P2=4;

51单片机时钟程序

51单片机时钟程序 #include #define uint unsigned int #define uchar unsigned char uchar code duan[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,}; uchar code we[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,}; uint z; void display(uchar miao,uchar fen,uchar xiaoshi); uchar t=0,miao,fen,xiaoshi,shi1,ge1,shi2,ge2,shi,ge,a; void delay(uint z) { uint x,y; for(x=80;x>0;x--) for(y=z;y>0;y--); } void InitTimer0() { TMOD=0x01; TH0=0x3C; TL0=0x0B0; EA=1; ET0=1; TR0=1; } void Timer0Interrupt() interrupt 1 { TH0=0x3C;

TL0=0x0B0; t++; } void main() { InitTimer0(); miao=0; fen=10; xiaoshi=21; while(1) { if(t==20) { t=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; xiaoshi++; if(xiaoshi==24)

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00 void delay(unsigned intt) { while(--cnt); } /******************************************************************/ /* 显示处理函数 */ /******************************************************************/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

基于51单片机,电子显示时钟带闹钟、整点报时、日期、星期

#include #define uint unsigned int #define uchar unsigned char sbit KEY1=P3^0; //切换键 sbit KEY3=P3^1; //minute ,hour调整加1定义 sbit KEY2=P3^7; //minute ,hour调整减1定义 sbit bear=P3^4; //闹铃 uchar a=0; //时间显示和闹钟时间显示切换 code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21}; //段码控制 char code weikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar StrTab[32]; char minute=01,hour=13,second=00; // 正常时钟秒,分,时定义 char minute1=12,hour1=24; // 闹钟时钟秒,分,时定义 uint year=2014; char month=12,day=10; //日期年,月,日定义 char week=3,v=1; //星期 char err=3;//误差用很重要、、、、!! //P0口流水灯 char pp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f, 0x3e,0x3d,0x3b,0x37,0x2f,0x1f, 0x1e,0x1d,0x1b,0x17,0x0f, 0x0e,0x0d,0x0b,0x07, 0x06,0x05,0x03, 0x02,0x01, 0x00 }; char w=0; uchar flag=0; //切换标志 uint count=0; //定时器计数,定时50ms,count满20,秒加1 /********************** 延时子程序*****************************/ void delay(uint z) { uint x,y; for(x=0;x

单片机电子时钟设计(内含源程序和电路图仿真地址)

课程名称:单片机课程设计 设计题目:电子时钟设计 院系:电气工程系 专业:电子信息工程 年级:***** 姓名:* * * 指导教师:* * * 西南交通大学峨眉校区 2012年6月15日

课程设计任务书 专业电子信息工程姓名*** 学号******** 开题日期:2012 年3 月1 日完成日期:2012年6月15 日题目电子时钟设计 一、设计的目的 单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 二、设计的内容及要求 ●在数码管通过一个控制键转换来显示相应的时间和日期; ●能通过多个控制键用来实现时间和日期的调节; ●熟练运用应用keil软件实现单片机电子时钟系统的程序设计,用Proteus 的ISIS软件实现仿真。 三、指导教师评语 四、成绩 指导教师(签章) 年月日

摘要 单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于AT89C51单片机的电子时钟。在数码管通过一个控制键转换来显示相应的时间和日期。并通过多个控制键用来实现时间和日期的调节。应用keil软件实现单片机电子时钟系统的程序设计,用Proteus的ISIS软件实现仿真。该方法仿真效果真实、准确,节省了硬件资源。 关键字:单片机时钟键盘控制 (电路图仿真地址:https://www.doczj.com/doc/e73672440.html,/file/e70jgofp) 一、电子时钟 1.1电子时钟简介 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间和日期,减小了误差,这种表具有时、分、秒显示时间的功能和年月日显示日期的功能,还可以进行校对,片选的灵活性好。

基于51单片机数字电子时钟带程序完美实现

目录 摘要 (1) 前言 (2) 概论............................................................................................................. 错误!未定义书签。第一章.. (3) 1.1概述 (3) 1.2单片机的发展历程 (3) 1.3时钟的特性 (3) 2 系统原理与硬件设计 (4) 2.1硬件选择 (4) 2.2单片机的构成 (4) 2.3AT89C52单片机的引脚说明 (5) 2.4LED简介 (6) 第三章软件设计 (9) 3.1框架图 (9) 4 调试过程及数据分析 (22) 4.1硬件调试 (22) 4.2K EI L调试 (22) 4.3开发板调试 (23) 结论 (24)

摘要 本次设计采用AT89c52内部定时器、中断等功能,和外部数码管,驱动器等构成。电子时钟电路采用24小时制记时方式,时间用6位数码管动态显示。使用5V电源供电,并且在按键的作用下可以进入省电(不显示LED 数码管)和正常显示两种状态。 关键词:数码管、AT89c52 The design of the adjustable digital clock base on AT89S52 Abstract This paper introduced the design of the adjustable digital clock based on AT89S52, the specific process of how the system hardware and software achieved were detailed description through the design of adjustable digital clock. The modular design and production, which consisted of MCU module, clock module and the associated control module, were mainly recounted;As well as hardware designing,software design use the same method, consists suspension module,time adjust module, and that use the C language to achieve because of its simple and strong negotiability. In this design the functions of time run and change, functions of the year, month and day display have been achieved. Key words :AT89S52 microcontroller;

51单片机时钟程序

#include<> #include<> sbit P32=P3^2; sbit P23=P2^3; sbit P22=P2^2; sbit P21=P2^1; sbit P20=P2^0; unsigned char x; unsigned char DisBuf[8]={0,0,0,0,0,0,0,0}; unsigned char DisBuf1[8]={0,0,0,0,0,0,0,0}; code unsigned char Tab[10]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09}; unsigned char timer0_count1=0,t1=0; //unsigned char timer0_count3=0,t3=0; unsigned char timer0_count2=0; unsigned char Second=0,Minute=0; unsigned int Year=17; unsigned int Month=01; unsigned int Day=02; unsigned int Hour=14; unsigned char a1=0; unsigned int mond=1;//显示模式 unsigned int a=9;//倒计时初试时间 unsigned int b=60; void mDelay(unsigned int delay) { unsigned char i; for(;delay>0;delay--) { for(i=0;i<124;i++) { _nop_(); _nop_(); _nop_(); } } } void timer0(void) interrupt 1 { TH0=0xfc;TL0=0x66; timer0_count2++; if(timer0_count2>1000) { P32=!P32;

51单片机数字时钟(带闹钟)

计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师: 目录 1.1 功能需求 1.2 设计要求 2.1 总体描述 2.2 系统总体框图 2.3 Proteus仿真电路图 3 软件设计流程及描述 3.1 程序流程图 3.2 函数模块及功能 4 心得体会 附:源程序 1 1.1功能需求 (1)实现数字时钟准确实时的计时与显示功能; (2)实现闹钟功能,即系统时间到达闹钟时间时闹铃响;

(3)实现时间和闹钟时间的调时功能; (4)刚启动系统的时候在数码管上滚动显示数字串(学号)。 1.2设计要求 (1)应用MCS-51单片机设计实现数字时钟电路; (2)使用定时器/计数器中断实现计时; (3)选用8个数码管显示时间; (4)使用3个按钮实现调时间和闹钟时间的功能。按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调当前 时间的分钟;模式3:调闹钟时间的小时;模式4:调闹钟时间的分 钟);按钮2:在非模式0下给需要调节的时间数加一,但不溢出; 按钮3:在非模式0下给需要调节的时间数减一,但不小于零; (5)在非0模式下,给正在调节的时间闪烁提示; (6)使用扬声器实现闹钟功能; (7)采用C语言编写程序并调试。 2.1总体描述 (1)单片机采用AT89C51型; (2)时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号; (3)时间设置电路:P3.0、P3.1、P3.2分别连接3个按键,实现调模式,时间加和时间减; (4)闹钟:P3.3口接扬声器。 2.2系统总体框图 2.3Proteus仿真电路图 3 软件设计流程及描述 3.1 程序流程图

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计 一、概述、设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。 二、系统组成与工作原理 1、工作原理: 本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 2、总是设计框架图:

图二:系统总体电路图 三、单元电路的设计与分析 整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。 1、MCS-51单片机 VCC: 89S51 电源正端输入,接+5V。 VSS: 电源地端。 XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只 要在XTAL1 和XTAL2 上接上一只石英振荡晶体系 统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而 死机。

简单的51单片机时钟程序

简单的51单片机时钟程序,可以通过按键来设置时间,按键可以自己更改。 #include #define uint unsigned int #define uchar unsigned char #define tt 46080 //设置时间间隔,对应11.0592MHZ的晶振 uchar code table[]="Happy every day!"; uchar code table1[]="00:00:00"; uchar num,hh,mm,ss,t,s1num=0; sbit en=P3^4; sbit rs=P3^5; sbit rw=P3^6; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2;//按键所用的端口 sbit s4=P3^3;

void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); //大约是1ms,因为单片机的时钟周期为11.0592mhz。 } void write_com(uchar com) { rs=0; //指令 P0=com; //写指令函数 delay(1); en=1; delay(1); en=0; } void write_data(uchar dat) {

rs=1; //数据 P0=dat; //写指令函数 delay(1); en=1; delay(1); en=0; } void init() { en=0; //初始时使能为0 rw=0; write_com(0x38); //显示屏模式设置为1602方案write_com(0x0c); write_com(0x06); //显示开关/光标设置 write_com(0x01); //清屏 write_com(0x80); //指针置零 for(num=0;num<16;num++) write_data(table[num]); write_com(0xc3); for(num=0;num<8;num++)

51单片机数码管显示电子时钟C程序

#include #define LEDLen 6 ; #define tick10000; #define T100us=(256-100); unsigned char hour,minute,second; unsigned int c100us; xdata unsigned char OUTBIT_at_0x8002; xdata unsigned char OUTSEG_at_0x8004; unsigned char LEDBuf[6]; code unsigned char LEDMAP[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 }; void DisplayLED() { unsigned char i,j,pos,LED; pos = 0x20 ; for( i=0;i<6;i++ ) { OUTBIT =0; LED=LEDBuf[i]; OUTSEG =LED; OUTBIT = pos; Delay(1); pos>>=1; } } void main() { TMOD=0x02; TH0=T100us; TL0=T100us; EA=1,IT0=1; hour=0; minute=0 second=0; c100us=tick; TR0=1; while(1) { LEDBuf[0]=LEDMAP[hour/10] ; LEDBuf[1]=LEDMAP[hour%10] ;

LEDBuf[2]=LEDMAP[minute/10]; LEDBuf[3]=LEDMAP[minute%10]; LEDBuf[4]=LEDMAP[second/10]; LEDBuf[5]=LEDMAP[second%10]; DISplayLED(); } } void T0_interrupt1 { c100us--; if(c100us==0) { c100us=tick; second++; if(second==60) { second=0; minute++; if(minute==60) { minute==0; hour++; if(hour==24)hour==0; } } } }

基于AT89C51单片机的电子时钟设计

科学技术学院 SCIENCE & TECHNOLOGY COLLEGE OF NANCHANG UNIVERSITY 《工程训练》报告 REPORT ON ENGINEERING TRAINING 题目基于AT89C51单片机的电子时钟设计 学科部、系: 专业班级: 学号: 学生姓名: 指导教师: 起讫日期:

目录 前言 (2) 第一章基于AT89C51单片机的电子时钟设计的概述 (3) 第二章各硬件介绍 (4) 2.1 AT89S51的引脚说明 (4) 2.2 发光二极管指示电路设计 (5) 2.3 LCD1602简介 (5) 2.4 DS1302 简介 (6) 2.4.1 引脚功能表及内部结构图 (6) 2.4.2 DS1302 的控制字节说明 (6) 2.4.3 复位 (7) 2.4.4 数据输入输出 (7) 2.4.5 DS1302 的寄存器 (7) 2.5 DS1302 简介 (8) 2.5.1.温度传感器DS18B20 (8) 2.5.2 DS18B20时序 (11) 第三章系统原理 (12) 系统设计 (12) 3.1 晶体振荡器电路 (12) 3.2分频器电路 (13) 3.3 时间计数器电路 (13) 3.4 时钟电路 (13) 3.5 复位电路 3.6复位电路的可靠性设计 (14) 3.7 按键部分 (14) 第四章PCB制作与性能测试分析 (16) 第五章总结 (17) 参考文献 (18)

前言 电子时钟是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子时钟精度高,功能易于扩展。可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用有着非常现实的意义。本设计就是数字时钟简单的扩展应用。

基于51单片机制作电子时钟实训报告

绪论 单片机使用简述.................................... 电子时钟简介...................................... 电子时钟的基本特点................................ 任务要求......................................... 设计方案......................................... 控制系统的硬件设计................................ 芯片的选择....................................... AT89S51的功能概述............................... AT89S51引脚功能说明(附引脚图)................... LED数码管显示电路................................ 硬件设计及元器件技术说明电子元器件技术说明………. 控制系统的软件设计................................ 程序编程......................................... 流程图........................................... 测试调试........................................... 总结............................................... 单片机使用简述 目前,单片机正朝着高性能和多品种方向发展趋势是进一步向着CMOS化、低功耗、小体积,大容量、高性能、低价格和外围电路内装化等几个方面发展。 单片机使用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。在以前,是必须由模拟或是数字电路实现的大部分功能的,而现在

基于51单片机的电子钟C语言程序

基于51单片机的电子钟C语言程序 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF}; /*定义并初始化变量*/ uchar seconde=0; uchar minite=0; uchar hour=12; uchar mstcnt=0; sbit P1_0=P1^0; // second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 /*函数声明*/ void delay(uint k ); //延时子程序 void delay1(uchar h ); void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ void delay1 (uchar h) { uchar j; while((h--)!=0) { for(j=0;j<125;j++) {;} } } void delay (uint k) { uint a,b,c; for(c=k;c>0;c--)

简单51单片机数字时钟设计说明

题目:简单51单片机数字时钟设计 院系: 物理与电气工程学院 专业:自动化专业 班级:10级自动化 姓名:吉振 学号:101103022 老师:艾华

引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。下面是单片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个 人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

相关主题
文本预览
相关文档 最新文档