单片机AT89C51可调电子时钟的设计

合集下载

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。

本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。

51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。

本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。

本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。

接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。

将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。

软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。

本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。

通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。

2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。

它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。

51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。

51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。

其存储器分为程序存储器(ROM)和数据存储器(RAM)。

程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。

51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。

51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。

基于AT89C51的数字电子时钟系统设计

基于AT89C51的数字电子时钟系统设计
能 效果 。 5 . 结 论 蒸汽管 线散 热损失 综合计算 方法是对 管线散 热损 失计算 的进一步 优化 。 尤 其 适用 于高 空及 含法 兰阀 门较 多的管 线保 温层 改造 。 对 节约 生产 能耗 , 提高 经 济 效益 具有 重 大意义 。
精品文档可编辑值得下载基于at89c51的数字电子时钟系统设计要本文主要设计的是以at89c51为核心的数字电子时钟使其具备在数码管上动态显示小时分钟秒以及温度数值的功能时钟显示周期为24小时制并且可以通过按键进行时间校对调节以及过程控制另外同时还具备整点报时功能以及运用ds18b20温度传感器进行温度的采集显示功能
A T 8 9 C 5 1
图 l总体 设 计框 图 2系统 硬件 设 计 系统硬 件 电路主 要包 括时 钟 电路 、 复位 电路 、 按键 电路 、 温度 显示 电路 、 报 警 电路 等 。 下面 主要 介绍 按键 电路和 报警 电路 。
2 . 1按键 电路
本设计 中共 用了七个 按键来 实现相应 功能 的操作 , 其中: s 1 为小 时操作 键 , 在计 时 过程 中每按 下一 次 , 小 时数值 加 1 t s 2 为分 钟操 作键 , 在 计 时过程 中每 按 下… 次 , 分钟 数值加 1 , S 3 为秒操作 键 , 在计 时过程 中每按 下一 次, 秒 数值加 l ・ S 4 为暂 停 键 , 按 下则 计 时停 止 ; s 5 为 继续 键 , 按 下 则计 时继 续 ; S 6 为 切换 键 , 按 下 则数 码管 从 时间 显示 变换 到温 度 显示 。 2 . 2 报 警 电路 本次设 计 中共设 置 有两 个L E D 指示 灯 , 一 个 红色D1 , 一 个绿 色D 2 。 红色 指 示 灯为 整点报 时 闪烁灯 , 在 计 时开始 之初 保持熄 灭状 态 , 每 到一个 整时 在蜂 鸣 器 响的 同时 闪烁 一次 。 绿色 指示 灯为 温度 指示灯 , 在 程序 剐开 始运 行时 由于 设 定 的是先 显示 时间 , 此 时绿灯 保持常 亮 , 表示D S l 8 B 2 0 温度 传感器 通信 正常 , 在 切 换到 温度 显示 后 , 此灯则 间歇 闪烁 , 而 其 闪烁周 期与 温度显 示 的延时 时 间保 持一 致 。 如图2 所示, 温度指 示灯所 接的是P 1 . 5 口, 整点 报时指 示灯所 接的 是P 1 .

AT89C51单片机电子时钟的设计

AT89C51单片机电子时钟的设计

AT89C51单片机电子时钟的设计1.硬件设计首先,我们需要选择合适的外设硬件进行设计。

以下是一些常见的硬件组件:-AT89C51单片机-蜂鸣器-DS1302时钟模块-按键开关和对应的电阻液晶模块的连接方式如下:-VSS->GND-VDD->VCC-V0->电位器-RS->P0.7-R/W->P0.6-E->P0.5-DB0-DB7->P2.0-P2.7蜂鸣器的连接方式如下:-正极->P3.0-负极->GNDDS1302时钟模块的连接方式如下:-VCC->VCC-GND->GND-CE->P1.7-IO->P1.6-SCLK->P1.5按键开关的连接方式如下:-第一个按键->P3.1-第二个按键->P3.2-第三个按键->P3.32.软件设计在软件设计方面,我们将使用C语言编程来编写程序。

首先,我们需要定义和初始化必要的变量,例如小时、分钟和秒钟等计时变量。

然后,我们需要编写一个初始化函数来配置单片机的各种外设和寄存器。

在这个函数中,我们需要设置计时器/计数器、I/O口和中断等。

接下来,我们需要编写一个定时器中断函数,来更新计时变量并实现计时功能。

我们可以使用定时器中断来定期更新秒钟,并在需要时更新小时和分钟。

在主循环中,我们需要编写代码来控制液晶模块、蜂鸣器和按键开关等外设。

通过液晶模块,我们可以实现显示时间的功能。

通过蜂鸣器,我们可以实现头每秒发出一次滴答声的功能。

通过按键开关,我们可以实现设置时间的功能。

3.程序实现以下是AT89C51单片机电子时钟的程序框架:```c#include <reg51.h>#include <intrins.h>//定义和初始化计时变量unsigned char second = 0;unsigned char minute = 0;unsigned char hour = 0;//初始化函数void ini//配置计时器/计数器,设置定时器中断//配置I/O口和中断等//...//定时器中断函数//更新计时变量//...//主函数void mai//初始化init(;//主循环while (1)//控制液晶模块//控制蜂鸣器//控制按键开关//...}```在具体的代码实现中,我们需要根据液晶模块、蜂鸣器和按键开关等外设的具体规格和功能来编写相应的代码。

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

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

国立大学毕业设计基于51单片机的电子钟的设计学生XX 沉默熊系(部)电气信息工程系专业应用电子技术指导老师马各2011年5月25日摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。

本设计采用AT89C51单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。

数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。

这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点…………该系统实用性强、操作简单、扩展性强。

关键词:单片机电子钟LCDAbstractIn recent years, with the rapid development of science and technology, the application of Single Chip Machine is continuously to further, traditional control test rapidly updated. In real-time detection and automatic control of single-chip microputer application system, is often used as a core ponent, knowledge is not only the MCU, still should according to specific hardware structure, and the view of the specific application software, the object characteristics.Electronic clock of modern society is one of main timing tool, widely used in mobile phone, puter, automobile, etc all aspects of social life, and the need for time. This design USES AT89C51 as the main core ponents, attach more electricity reset circuit, clocking circuit and the button when the adjustable circuit.Digital electric clock design methods are various, for example, usable small scale integrated circuit ponent electric clock, Also can use special electric clock chips with display circuit and the need of peripheral circuit electric clock, Still can use to realize electric clock chip, etc. These methods have different features, among them, use the electric clock microcontroller programming, flexible easy electric clock function expansion, can use the electric clock out of control signal, the accuracy is higher characteristic......This system is practical, simple operation and extensible.Keywords:Single Chip Machineelectric clockLCD目录前言.........................................................................1绪论.........................................................................3 第一节单片机技术的发展....................................................3 第二节单片机概况..........................................................5 第一章数字钟的硬件设计....................................................6 第一节MSC-51系列芯片简介.................................................6 第二节AT89C51芯片特性简介................................................7 第三节显示器简介..........................................................8 第四节键盘接口技术.......................................................10一、键的识别...........................................................10二、键的消抖...........................................................11第五节看门狗电路设计.....................................................12一、软件看门狗..........................................................12二、硬件看门狗..........................................................12 第二章数字钟系统设计.....................................................14第一节设计方案...........................................................14 第二节系统的功能与要求...................................................14 第三节系统硬件的选用.....................................................15 第三章数字钟的软件设计...................................................16第一节延时的设定.........................................................16一、硬件延时...........................................................16二、软件延时...........................................................17第二节软件的调试与仿真.................... ... (18)第三节程序流程图.........................................................20 第四节系统内存分配和I/O接口使用..........................................23 第五节程序源代码.......... ......................... ... (23)第四章系统调试...................................................... (29)第一节软件,硬件调试......................................................29 第二节结论...............................................................30 毕业设计总结........................................ .... ...... .... ... (31)致谢.........................................................................32 参考文献.....................................................................33 附录1........................................................................34前言本文介绍一个采用8051单片机芯片制作的“数码显示电子钟”,该LCD数码管时钟电路采用24小时计时方式,时、分、秒、星期用5位数码管显示。

基于AT89C51单片机定时闹钟设计

基于AT89C51单片机定时闹钟设计

塔里木大学信息工程学院《单片机原理与外围电路》课程论文题目:单片机定时闹钟设计姓名:海热古丽·依马木学号:**********班级:计算机15-1班摘要:本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功能,即还能设定和修改当前所显示的时间。

本次设计的定时闹钟在硬件方面就采用了AT89C51芯片,用6位LED数码管来进行显示。

LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。

通过S1、S2、S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发出报警声。

在软件方面采用汇编语言编程。

整个定时闹钟系统能完成时间的显示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。

关键词:单片机、AT89C51、定时闹钟、仿真Abstract:T his design is a single-chip timing alarm system, can not only realize the function of system requirements, and there are additional functions, which can set up and modify the display time. Timing alarm clock this design adopts the AT89C51 chip on the hardware side, with 6 LED digital tube to display. LED P0 export driven, by using dynamic scanning display, can accurately display always -sub -seconds seconds. Through the S1, S2, S3, and S4 four function keys can be achieved on the time changes and timing, timing to the horn can send out alarm sound. Using assembly language programming in the software. The timing clock system has functions of time display, timing and timing alarm clock, reset and other functions, and the system simulation to obtain correct results.Keywords: single chip microcomputer, AT89C51, alarm clock, simulatio目录1绪论 (2)1.1课题背景及研究意义 (2)1.2国内外现状 (2)1.3课题的设计目的 (2)1.4课题的主要任务 (2)1.5课题的主要功能 (2)2系统概述 (3)2.1方案论证 (3)2.2系统设计原理 (3)3系统硬件设计 (4)3.1单片机AT89C51简介 (4)3.2数码管显示电路 (6)3.3时钟电路 (7)3.4喇叭:SPEAKER (8)4系统软件设计 (8)4.1系统软件设计说明 (8)4.2 程序调试 (8)4.3 程序流程图 (9)4.3仿真步骤 (10)4.4仿真结果 (10)结论 (12)参考文献 (13)附录A 系统整体电路 (14)附录B 全部程序清单 (14)附录C:PCB图和3D图 (23)1绪论1.1课题背景及研究意义进入信息时代,计算机的影子无处不在,带有像单片机一类嵌入式处理器的小型智能化电子产品,已经成为家用电器的主流,市场需求前景广阔,因此,掌握小型单片机应用系统设计方法,已成为当今电子应用工程师所必备的技能,定时闹钟具备小型单片机应用系统的一切要素,其结构简单、成本低廉、走时精确、设置方便,所以智能化方面有广泛的用途。

基于at89c51单片机的定时闹钟的设计

基于at89c51单片机的定时闹钟的设计

基于at89c51单片机的定时闹钟的设计本文介绍了基于AT89C51单片机的定时闹钟的设计。

文章将探讨设计目的和背景,并着重阐述定时闹钟的实现原理和功能。

本文档将介绍基于at89c51单片机的定时闹钟的硬件设计要点,包括电源、显示器、按键等组件选择和连接方式。

电源选择与连接在设计定时闹钟的硬件方案时,选择合适的电源是非常重要的。

以下是一些电源选择和连接的要点:使用稳定可靠的电源模块,例如直流电源模块,以确保单片机工作的稳定性。

将电源模块的正负极连接到at89c51单片机的VCC和GND引脚上。

注意电源的电压和电流要符合at89c51单片机的工作要求。

显示器选择与连接显示器是定时闹钟中显示时间和其他信息的重要组件。

以下是一些显示器选择和连接的要点:考虑使用液晶显示器 (LCD) 或数码管作为显示器,这些显示器可以清晰地显示数字和字符。

根据设计需求,选择合适的显示器尺寸和类型。

将显示器的控制引脚与at89c51单片机的相应引脚连接,以实现时间和信息的显示。

按键选择与连接按键是控制定时闹钟设置和功能的重要组件。

以下是一些按键选择和连接的要点:选择合适的按键类型,例如触摸按键或机械按键。

根据设计需求,确定所需的按键数量和布局。

将按键的引脚连接到at89c51单片机的GPIO引脚,以接收按键输入并实现相应的功能。

上述是基于at89c51单片机的定时闹钟的硬件设计要点,通过合理选择和连接电源、显示器和按键等组件,可以确保定时闹钟的稳定运行和正常功能。

本文将阐述基于at89c51单片机的定时闹钟的软件设计要点,包括如下内容:定时器的设置:使用at89c51单片机的定时器来实现定时功能,可以通过对定时器寄存器的设置来调整定时的时间间隔。

中断处理:在定时器到达设定的时间间隔时,通过中断处理来触发相应的操作。

可以通过设定中断优先级来确保定时器中断的可靠性。

闹钟功能的实现:通过软件算法和控制电路,将定时器和中断处理结合起来实现闹钟功能。

单片机数字时钟课程设计报告

单片机数字时钟课程设计报告

第1章绪论1. 设计要求(1)系统可以按“秒”进行计时.(2)数字时钟可以显示小时(00-23)、分钟(00-59)和秒(00-59).(3)可通过按键K1来选择设置“小时”、“分钟”和“秒”.设置时可通过“加”和“减”按键(K2、K3)来调整时间;设置过程中时钟停止计时.(4)无键按下三秒后,自动进入时钟的计时程序.2. 设计方案采用AT89C51芯片作为硬件核心,其内部采用Flash ROM,具有4KB ROM 存储空间,能于3V的超低压工作,本系统的计时方案是利用单片机内部的定时/计数器进行中断定时,配合软件延时实现对时、分、秒的计时.整个系统的控制方案是:上电后系统自动进入时间显示,从00:00:00 开始计时.按下P1.0键,进入调秒状态,时钟停止计时;按P1.1或P1.2键可进行加1或减1操作;继续按P1.0键可分别进行分位、时调整;无键按下3秒钟后退出调整状态,自动进入时钟的计时和显示.整个系统的硬件原理框图如图1.1,它采用的是AT89C51单片机,只用了P1口.为了简化硬件电路,LED显示采用了动态扫描的方式实现,LED采用共阳极数码管,驱动电流由三极管9012提供.为了提高计数精度,所采用的晶振频率为12MHz.第2章硬件设计1单片机的选择本课程选用AT89C51型号的单片机. AT89C51 是美国ATMEL 公司生产的低电压,高性能CMOS8 位单片机,片内含4k bytes 的可反复擦写的只读程序存储器(PEROM)和128 bytes 的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用8 位央处理器(CPU)和Flash 存储单元,功能强大AT89C51 单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域.主要性能参数:·与MCS-51 产指令系统完全兼容·4k 字节可重擦写Flash 闪速存储器·1000 次擦写周期·全静态操作:0Hz-24MHz·三级加密程序存储器·128×8 字节内部RAM·32 个可编程I /O 口线·2 个16 位定时/计数器2. 显示方案由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济.LED有共阴极和共阳极两种.如图2.2所示.二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压.一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管.当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗.为了保护各段LED不被损坏,需外加限流电阻.图2.2 LED数码管结构原理图众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动.本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性.所谓软件译码,即由单片机软件完成从数字到显示码的转换.从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节.各段码位与显示段的对应关系如表2.2.表2.2 各段码位的对应关系需说明的是当用数据口连接LED数码管a~dp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系.通常数据口的D0位与a段连接,D1位与b段连接, (7)与dp段连接,如表1所示,表2.3为用于LED数码管显示的十六进制数和空白字符与P的显示段码.根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管.将AT89C2051的P1.0~P1.7分别与共阳数码管的a~g及dp相连,高电平的位对应的LED 数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符.例如:当P0口输出的段码为1100 0000,数码管显示的字符为0.表2.3 LED显示段码注:(1)本表所列各字符的显示段码均为小数点不亮的情况.(2)“空白”字符即没有任何显示.数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式.为节省端口及降低功耗,本系统采用动态扫描显示方式.动态扫描显示方式需解决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过P0口实现;而每一位的公共端,即LED数码管的“位控”,则由P3口控制.这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码.在这一瞬时,只有这一位在显示,其他几位则暗.在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态.第3章软件设计1. 主程序主程序功能主要是初始化、正常现实时间和判断功能转换键.流程图如图3.1所示.图3.1 主程序流程图2. 定时器T0中断服务程序定时器T0用于时间计时.定时溢出中断周期可设为50ms,中断进入后,时钟计时累计20次(即1s)时,对秒计数单元进行加1操作.时钟计数单元在定义的6个单元70H~75H 中,70H~71H 存放秒数据,72H~73H存放分数据,74H~75H存放时数据.最大计时值为23小时59分59秒.在计数单元中采用十进制BCD码计数,秒、分、时之间满60进位.3.显示子程序数码管显示的数据放在内存单元70H~75H中,其中70H~71H存放秒数据,72H~73H]存放分数据,74H~75H存放时数据,每一单元内均为十进制BCD码.由于采用软件动态扫描实现数据显示功能,显示用的十进制BCD码数据的对应段码存放在ROM表中,显示时,先取出70H~75H中的某一地址中的数据,然后查表得对应的显示段码从P0口输出,P2口将对应的数码管位选中供电,就能显示该地址单元的数据值.4.定时器T1中断服务程序进行时间调整是,正在被调整的时间以闪烁的形式表现,定时器T1用于产生闪烁的时间间隔,每隔0.3s闪烁一次.5.调时功能程序通过按键K1来选择设置“小时”、“分钟”和“秒”.通过“加”和“减”按键(K2、K3)来调整时间图3.5时间设置流程图6.延时程序因为系统是动态显示,为了确保系统在有效显示时间范围内必须执行显示程序,所以使用延时程序.7. 结论这次课程设计项目虽然是最简单的数字时钟设计,但用的技术和知识是源于课本又远远高于课本的,比如说AT89C51基本操作知识,汇编语言方面的知识等.我负责的是软件设计的时间设置以及T1中断部分,运用到了按键部分以及定时器/计数器部分的知识.通过这次自己编写程序,使我摆脱了以往单纯的理论知识学习状态,并且在和实际设计的结合锻炼了我的综合运用所学的专业基础知识.不过在这次课设中我也遇到了不少问题,实际操作时才发现课堂知识和实际运用还是有差距的,不过最终还是在老师或同学的帮助下一个一个解决了.通过这次对课程设计,我也认识到自己对单片机应用方面的知识的贫乏,对于书本上的很多理论知识还不能灵活运用,有很多我们掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识.同时还从中学到了一件很重要的东西,那就是如何从理论到实践的转化.此次的课程设计给我奠定了一个实践基础,我会在以后的学习,生活中磨练自己,使自己掌握更多的技术能力.8.参考文献[1]杨忠义.单片机课程设计指导.北京:清华大学出版社,2009.201~217[2]靳达.单片机应用系统开发实例导航.北京:人民邮电出版社,2004.1~37[3]南建辉.MCS-51单片机原理及应用实例.北京:清华大学出版社,2004.92~117[4]刘海成.单片机及应用系统设计原理与实践.北京:北京航天航空大学出版社,2009.129~180附录ORG 0000HAJMP MAINT ;转主程序NOPORG 000BHAJMP INT01 ;转定时器T0中断程序NOPORG 001BHAJMP INT11 ;转定时器T1中断程序NOPMAINT:MOV R0,#7FH ;00H~7FH单元清零CLR AWZ1:MOV @R0,ADJNZ R0,WZ1MOV SP,#30H ;置堆栈指针MOV 5AH,#0AH ;放入“熄灭符”数据MOV TMOD,#11H ;设T0,T1为16位定时器MOV TL0,#0B0H ;置50 ms定时初值MOV TH0,#3CHMOV TL1,#0B0HMOV TH1,#3CHSETB EA ;开中断SETB ET0 ;允许T0中断SETB TR0 ;启动T0MOV R4,#14H ;用于产生1 s定时MAINT1: LCALL XSZCX ;调用显示子程序JNB P1.0,SJTZ0 ;功能键按下,进入调时程序SJMP MAINT******T0中断服务程序******INT01:PUSH ACC ;保护现场PUSH PSWCLR ET0 ;关T0中断CLR TR0 ;关定时器T0MOV A,#0B7H ;修正中断响应时间ADD A,TL0MOV TL0,AMOV A,#3CHADDC A,TH0SETB TR0 ;启动定时器T0DJNZ R4,INT0U ;20次中断未到退出中断AD1:MOV R4,#14H ;R4重新赋值MOV R0,#51H ;指向秒计时单元(50H,51H)LCALL ADD1 ;调用加1 s程序MOV A,R3 ;秒数据放入ACLR C ;清进位标志CJNE A,#60H,AD2 ;小于60 s吗AD2:JC INT0U ;小于60 s退出中断CLR A ;大于或等于60 s,清秒计数单元MOV @R0,ADEC R0MOV @R0,AMOV R0,#57H ;指向分计时单元(56H,57H)ACALL ADD1 ;调用加1 min程序MOV A,R3 ;分数据放入ACLR CCJNE A,#60H,AD3 ;小于60 min吗AD3:JC INT0U ;小于60 min退出中断CLR A ;大于或等于60 min,清分计数单元MOV @R0,ADEC R0MOV @R0,AMOV R0,#59H ;指向小时计时单元(58H,59H)ACALL ADD1 ;调用加1 h程序MOV A,R3 ;小时数据放入ACLR CCJNE A,#24H,AD4 ;小于24 h吗AD4:JC INT0U ;小于24 h退出中断CLR A ;大于或等于24 h清小时计数单元MOV @R0,ADEC R0MOV @R0,AINT0U: MOV 52H,56H ;中断退出时将分、时计时单元数MOV 53H,57H ;据移入对应显示单元MOV 54H,58HMOV 55H,59HPOP PSW ;恢复现场POP ACCSETB ET0 ;开放T0中断RETI ;中断返回******显示子程序******XSZCX:MOV R1,#50H ;显示数据首址MOV R5,#0FEH ;扫描控制字初值MAXY:MOV A,R5 ;扫描控制字送AMOV P2,A ;输出扫描控制字MOV A,@R1 ;取显示数据MOV DPTR,#ABC ;取段码表首地址MOVC A,@A+DPTR ;取对应段码MOV P1,A ;P1口输出段码LCALL YS1MS ;延时1 msINC R1 ;显示地址增1MOV A,R5 ;扫描控制字送AJNB ACC.5,ENDOUT ;ACC.5为0时一次显示结束RL A ;控制字左移MOV R5,A ;制字送回R5中AJMP MAXY ;循环显示下一个数据ENDOUT: MOV P2,#0FFH ;一次显示结束,P2口复位MOV P1,#0FFH ;P1口复位RET ;子程序返回****** T1中断服务程序******INT11:PUSH ACC ;中断保护现场PUSH PSWMOV TL1,#0B0H ;装定时器T1初值MOV TH1,#3CHDJNZ R2,INT1U ;0.3 s未到退出中断MOV R2,#06H ;重装0.3 s定时用初值CPL 02H ;0.3 s定时到,对闪烁标志取反JB 02H,CCC1 ;02H位为1时显示单元“熄灭”MOV 52H,56H ;02H位为0时显示正常MOV 53H,57HMOV 54H,58HMOV 55H,59HINT1U:POP PSW ;恢复现场POP ACCRETI ;退出中断INT0U:POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器RETI ;中断返回******时钟时间调整程序******SET0:LCALL XSZCX ;通过调用显示时间程序延时消抖动JNB P1.0,SJTZ1SJMP MAINT1 ;功能键没有按下,显示时间SET1: CLR ET0 ;关闭定时器T0中断CLR TR0 ;关闭定时器T0MOV R2,#06H ;进入调时状态,置闪烁定时初值SETB ET1 ;允许T1中断SETB TR1 ;启动T1SET2:JNB P1.0,SET1 ;P1.0端为0(键未释放),等待CLR 01H ;置调分标志位为1SET4:JB P1.0,SET3 ;等待键按下JNB P1.0,HOUR ;有键按下,进入调小时状态JB P1.0,SET10 ;等待键按下JNB P1.0,MINUTE ;有键按下,进入调分状态JB P1.0,SET12 ;等待键按下JNB P1.0,SECOND ;有键按下,进入调秒状态MOV A,R3 ;取要调整的单元数据CLR CKMTES: SETB ET0 ;省电状态,开T0中断SETB TR0 ;启动T0(开时钟)KMA: JB P1.0,$ ;无按键按下,等待LCALL XSZCX ;通过调用显示时间程序延时消抖动JB P1.1,KMA ;是干扰返回等待KMA1: JNB P1.0,$ ;等待键释放LJMP MAINT1 ;返回主程序,显示时间HOUR: JNB P1.0,SET5 ;等待键释放SETB 01H ;置调小时标志位SET6: JB P1.0,SET9 ;等待键按下LCALL TM3s ;有键按下延时3秒LCALL XSZCX ;消抖JNB P1.0,STOP ;按下时间大于3秒,退出调整状态MOV R0,#70H ;小于3秒,调整小时JB P1.1,SET3 ;等待键按下JNB P1.1,ADD1 ;P1.1按下,调时间加1子程序JB P1.2,SET3 ;等待键按下JNB P1.2,SUB-H ;P1.2按下,调小时减1子程序MOV A,R3CLR CCJNE A,#24H,BJ24 ;计时单元与24比较BJ24: JC SET6,;小于24转SET6循环CLR A ;大于或等于24,则清零MOV @R0,ADEC R0MOV @R0,AAJMP SET6 ;转SET6循环MINUTE: JNB P1.0,SET10 ;等待键释放SETB 01H ;置调分钟标志位SET7: JB P1.0,SET11 ;等待键按下LCALL TM3s ;有键按下延时3秒LCALL XSZCX ;消抖JNB P1.0,STOP ;按下时间大于3秒,退出调整状态MOV R0,#70H ;小于3秒,调整分钟JB P1.1,SET11 ;等待键按下JNB P1.1,ADD1 ;P1.1按下,调时间加1子程序JB P1.2,SET11 ;等待键按下JNB P1.2,SUB-M ;P1.2按下,调分减1子程序MOV A,R3CLR CCJNE A,#60H,BJ601 ;计时单元与60比较BJ601: JC SET7,;小于24转SET7循环CLR A ;大于或等于24,则清零MOV @R0,ADEC R0MOV @R0,AAJMP SET7 ;转SET7循环SECOND: JNB P1.0,SET12 ;等待键释放SETB 01H ;置调秒钟标志位SET8: JB P1.0,SET13 ;等待键按下LCALL TM3s ;有键按下延时3秒LCALL XSZCX ;消抖JNB P1.0,STOP ;按下时间大于3秒,退出调整状态MOV R0,#70H ;小于3秒,调整分钟JB P1.1,SET13 ;等待键按下JNB P1.1,ADD1 ;P1.1按下,调时间加1子程序JB P1.2,SET13 ;等待键按下JNB P1.2,SUB-S ;P1.2按下,调时间减1子程序MOV A,R3CLR CCJNE A,#60H,BJ602 ;计时单元与60比较BJ602: JC SET8,;小于24转SET8循环CLR A ;大于或等于24,则清零MOV @R0,ADEC R0MOV @R0,AAJMP SET8 ;转SET8循环OUT: JNB P1.0,SETOUT1 ;退出调时状态,等待键释放LCALL XSZCX ;通过调用显示程序延时消抖动JNB P1.0,SETOUT ;是抖动,返回SETOUT等待MOV 20H,#00H ;清调时标志位CLR TR1 ;关闭T1CLR ET1 ;关T1中断SETB TR0 ;启动T0SETB ET0 ;开T0中断LJMP MAINT1 ;返回主程序SET1: LCALL XSZCX ;键释放等待时,调用显示子程序AJMP SET2 ;防止此时无时钟显示SET3:LCALL XSZCX ;等待调小时按键时时钟显示用AJMP SET4 ;调时等待SET5:LCALL XSZCX ;键释放等待时调用显示程序(调小时)AJMP SETHH ;防止键按下时无时钟显示SET9:LCALL XSZCXAJMP SET6SET10:LCALL XSZCX ;键释放等待时调用显示程序(调分钟)AJMP SETHH ;防止键按下时无时钟显示SET11:LCALL XSZCXAJMP SET7SET12:LCALL XSZCX ;键释放等待时调用显示程序(调秒钟)AJMP SETHH ;防止键按下时无时钟显示SET13:LCALL XSZCXAJMP SET8SETOUT1:LCALL XSZCXAJMP OUT****** 加1子程序******ADD1:MOV A,@R0 ;取出现计时数据放入ADEC R0 ;指向前一单元SWAP A ;A中高4位与低4位互换ORL A,@R0 ;前一单元中数据放入A中低4位ADD A,#01H ;A加1DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高4位变0MOV @R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中高4位与低4位互换ANL A,#0FH ;高4位变0MOV @R0,A ;数据存入当前地址单元RET ;子程序返回****** 时减1子程序******SUB-H:MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高4位与低4位交换ORL A,@R0 ;前一地址中数据放入A中低4位JZ SUB-H1 ;00减1为23(小时)DEC A ;A减1操作SUB-H11:MOV R3,A ;移入R3寄存器ANL A,#0FH ;高4位变0CLR C ;清进位标志SUBB A,#0FH;;时个位是否大于9SUB-H111:JC SUB-H110MOV @R0,#09H ;大于等于0AH,为9SUB-H10:MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高4位与低4位交换ANL A,#0FH ;高4位变0MOV @R0,A ;时十位数据放入RET ;子程序返回SUB-H1:MOV A,#23HAJMP SUB-H11SUB-H110:MOV A,R3 ;时个位小于0A不处理ANL A,#0FH ;高4位变0MOV @R0,A ;时个位数据放入AJMP SUB-H10******分减1子程序******SUB-M:MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高4位与低4位交换ORL A,@R0 ;前一地址中数据放入A中低4位JZ SUB-M1DEC A ;A减1操作SUB-M11:MOV R3,A ;移入R3寄存器ANL A,#0FH ;高4位变0CLR C ;清进位标志SUBB A,#0AH;SUB-M111:JC SUB-M110MOV @R0,#09H ;大于等于0AH,为9SUB-M10:MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高4位与低4位交换ANL A,#0FH ;高4位变0MOV @R0,A ;数据放入当前地址单元中RET ;子程序返回SUB-M1:MOV A,#59HSUB-M110:MOV A,R3 ;移入R3寄存器ANL A,#0FH ;高4位变0MOV @R0,AAJMP SUB-M10****** 秒减1子程序******SUB-S:MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高4位与低4位交换ORL A,@R0 ;前一地址中数据放入A中低4位JZ SUB-S1DEC A ;A减1操作SUB-S11:MOV R3,A ;移入R3寄存器ANL A,#0FH ;高4位变0CLR C ;清进位标志SUBB A,#0BH;SUB-S111:JC SUB-S110MOV @R0,#09H ;大于等于0AH,为9SUB-S10:MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高4位与低4位交换ANL A,#0FH ;高4位变0MOV @R0,A ;数据放入当前地址单元中RET ;子程序返回SUB-S1:MOV A,#14HAJMP SUB-S11SUB-S110:MOV A,R3 ;移入R3寄存器ANL A,#0FH ;高4位变0MOV @R0,A******延时子程序******TM1ms:MOV R6,#14H ;延时1 ms子程序TM1:MOV R7,#19HTM2:DJNZ R7,YS2DJNZ R6,YS1RETTM3s:LCALL TM05s ;延时3s子程序LCALL TM05sLCALL TM05sLCALL TM05sLCALL TM05sLCALL TM05sRETTM05s:MOV R3,#51H ;延时0.5 s子程序YS05s1:LCALL XSZCXDJNZ R3,YS05s1RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH END西安建筑科技大学课程设计(论文)目录第1章绪论 (1)1. 设计要求 (1)2. 设计方案 (1)第2章硬件设计 (2)1 单片机的选择 (2)2. 显示方案 (2)第3章软件设计 (5)1. 主程序 (5)2. 定时器T0中断服务程序 (5)3. 显示子程序 (5)4. 定时器T1中断服务程序 (6)5. 调时功能程序 (6)6. 延时程序 (7)7. 结论 (7)8.参考文献 (8)附录 (9)。

51单片机电子时钟课程设计

51单片机电子时钟课程设计

一、设计要求1、准确计时,以数字形式显示时、分、秒地时间.2、小时以24小时计时形式,分秒计时为60进位.3、校正时间功能,即能随意设定走时时间.4、闹钟功能,一旦走时到该时间,能以声或光地形式告警提示.5、设计5V直流电源,系统时钟电路、复位电路.6、能指示秒节奏,即秒提示.7、可采用交直流供电电源,且能自动切换.二、设计方案和论证本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂地线路,使得电路简明易懂,使用键盘键上地按键来调整时钟地时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求. 2.1、总设计原理框图如下图所示:2.2、设计方案地选择1.计时方案方案1:采用实时时钟芯片现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等.这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据地更新每秒自动进行一次,不需要程序干预.因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能.方案2:使用单片机内部地可编程定时器.利用单片机内部地定时计数器进行中端定时,配合软件延时实现时、分、秒地计时.该方案节省硬件成本,但程序设计较为复杂.2.显示方案对于实时时钟而言,显示显然是另一个重要地环节.通常LED显示有两种方式:动态显示和静态显示.静态显示地优点是程序简单、显示亮度有保证、单片机CPU地开销小,节约CPU地工作时间.但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂.需要几个LED就必须占有几个并行口,比较适用于LED数量较少地场合.当然当LED数量较多地时候,可以使用单片机地串行口通过移位寄存器地方式加以解决,但程序编写比较麻烦.LED动态显示硬件连接简单,但动态扫描地显示方式需要占有CPU较多地时间,在单片机没有太多实时测控任务地情况下可以采用.本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式.2.3硬件部分1、STC89C51单片机介绍STC89C51单片机是由深圳宏晶公司代理销售地一款MCU,是由美国设计生产地一种低电压、高性能CMOS 8位单片机,片内含8kbytes地可反复写地FlashROM和128bytes地RAM,2个16位定时计数器[5].STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0~P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等.这些部件通过内部总线联接起来,构成一个完整地微型计算机.其管脚图如图所示.STC89C51单片机管脚结构图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口也可作为AT89C51地一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号.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).2、上电按钮复位电路本设计采用上电按钮复位电路:首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被电路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,单片机芯片正常工作.其中电阻R2决定了电容充电地时间,R2越大则充电时间长,复位信号从VCC回落到0V地时间也长.3、晶振电路本设计晶振电路采用12M地晶振.晶振地作用是给单片机正常工作提供稳定地时钟信号.单片机地晶振并不是只能用12M,只要不超过20M就行,在准许地范围内,晶振越大,单片机运行越快,还有用12M地就是好算时间,因为一个机器周期为1/12时钟周期,所以这样用12M地话,一个时钟周期为12us,那么定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接地是30pF地电容.机器周期=10*晶振周期=12*系统时钟周期4.下载端口设计用到地STC89C52单片机芯片地ISP下载线是通过单片机地TXD,RXD引脚把程序烧进去地.管脚TXD和RXD用于异步串行通信.其实STC89C52单片机地ISP下载线就是一个max232芯片连接STC和计算机地串行通信口.计算机把程序从九针串口送到max232芯片,电平转换后送进单片机地串行口,也就是TXD和RXD.然后单片机地串行模块把数据送到程序区.5、显示电路就时钟而言,通常可采用液晶显示或数码管显示.由于一般地段式液晶屏,需要专门地驱动电路,而且液晶显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口地液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器地接口要求较高,占用资源多.另外,89C2051本身无专门地液晶驱动接口,因此,本时钟采用数码管显示方式.数码管作为一种主动显示器件,具有亮度高、价格便宜等优点,而且市场上也有专门地时钟显示组合数码管.对于实时时钟而言,显示显然是另一个重要地环节.通常LED显示有两种方式:动态显示和静态显示.静态显示地优点是程序简单、显示亮度有保证、单片机CPU地开销小,节约CPU地工作时间.但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂.需要几个LED就必须占有几个并行口,比较适用于LED数量较少地场合.当然当LED数量较多地时候,可以使用单片机地串行口通过移位寄存器地方式加以解决,但程序编写比较麻烦.LED动态显示硬件连接简单,但动态扫描地显示方式需要占有CPU较多地时间,在单片机没有太多实时测控任务地情况下可以采用.本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式.6、时钟显示校正电路本设计利用按键开关来校正时钟显示地数字.当按钮按下时,将在相应地端口输入一个低电平,通过相应地程序来改变时钟显示.其中S1按键开关用来选择要修改地数字;S2按键用来增加所选数字地数值;S3按键用来减少所选数字地数值.7、蜂鸣器电路电路接法:三极管选定PNP型,基极B连接5V电压,发射极E连接一个1K左右地电阻后接I/O口,集电极C连接蜂鸣器后接地.单片机在复位后地个I/O口是高电平,此时三极管是截止地,编写程序使选定地I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴地响声.其中电阻R1在电路里起分压限流地作用,PNP三极管起到模拟开关地作用.8、外接电源电路外接电源电路用于连接外部5V电源与电子时钟电路,通过自锁开关控制电路地导通与断开,当开关闭合时,电路导通,外部电源给电路正常供电,电子时钟正常工作.当开关断开时,电路停止工作.9、总电路原理图(五)软件部分根据上述电子时钟地工作流程,软件设计可分为以下几个功能模块:(1)主程序模块.主程序主要用于系统初始化:设置计时缓冲区地位置及初值,设置8155地工作方式、定时器地工作方式和计数初值等参数.主程序流程如下图所示.开始定义堆栈区8155、T0、数据缓冲区、标志位初始化调用键盘扫描程序否是C/R键?地址指针指向计时缓冲区主程序流程图(2)计时模块.即定时器0中断子程序,完成刷新计时缓冲区地功能.系统使用6MHz地晶振,假设定时器0工作在方式1,则定时器地最大定时时间为65.536ms,这个值远远小于1s.因此本系统采用定时器与软件循环相结合地定时方法.设定时器0工作在方式1,每隔50ms溢出中断一次,则循环中断20次延时时间是1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00.因定时器0工作在方式1,则50ms定时对应地定时器初值为:65536-50ms/2us=40536=9E58H,即TH0=9EH,TH0=58H.但应当指出:CPU从响应T0中断到完成定时器初值重装这段时间,定时器T0并不停止工作,而是继续计数.因此,为了确保T0能准确定时50ms,重装地定时器初值必须加以修正,修正地定时器初值必须考虑到从原定时器初值中扣除计数器多计地脉冲个数.由于定时器计数脉冲地周期恰好和机器周期吻合,因此修正量等于CPU从响应中断到重装完TL0为止所用地机器周期数.CPU响应中断通常要3~8个机器周期.经过测试,定时器0重装地计数初值设为9E5FH~9E67H,可以满足精度要求.另外,MCS-51单片机只有二进制加法指令,而时间是按十进制递增,因此用加法指令后必须进行二-十进制转换.计时模块流程图如下图所示.计时模块流程图(3)时间设置模块.该模块由键盘输入相应地数据来设置当前时间.程序通过调用一个键盘设置子程序通过键盘扫描将键入地6位时间值送入显示缓冲区.设置时间后,时钟要从这个时间开始计时,而时分秒单元各占一个字节,键盘占6个字节.因此程序中要调用一个合字子程序将显示缓冲区中地6位BCD码合并为3位压缩BCD码,并送入计时缓冲区,作为当前计时起始时间.该程序同时要检测输入时间值地合法性,若键盘输入地小时值大于23,分、秒值大于59,则不合法,将取消本次设置,清零重新开始计时.时间设置和键盘设置子程序地流程图如下图所示.时间设置流程图键盘设置子程序流程图(4)显示模块.该模块完成时分秒6位LED地动态显示.因为显示为6位,二计时是3个字节单元,为此,必须将3字节计时缓冲区中地时分秒压缩BCD码拆分为6字节BCD码,并送入显示缓冲区中.当按下调整时间键后,在6位设置完成之前,这6个LED应该显示键人地数据,不显示当前地时间.为此,我们设置了一个计时显示允许标志位F0,在时间设置期间F0=1,不调用刷新显示缓冲区地子程序.显示程序流程图如下图所示.保护现场是显示程序流程图键盘扫描程序流程图程序:ORG 0000H AJMP MAIN ORG 000BH AJMP TIME ORG 0300H MAIN:mov 20h,#00h MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV IP,#02H 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

序号:学号: XXXXXX计算机硬件实习报告题目:可调电子时钟的设计学生姓名:XXX学院(系):XXXXXX 专业班级:XXXXXX 指导教师:XX 专业技术职务:讲师实习时间:2015 年 6 月29 日 2015 年7 月17 日实习任务书计算机科学与技术系指导教师XX_1 实习目的 ------------------------------------------------------------------------------------------------ 1 2相关硬件介绍 ------------------------------------------------------------------------------------------- 12.1 AT89C51 ----------------------------------------------------------------------------------------- 12.1.1 AT89C51简介-------------------------------------------------------------------------- 12.1.2 AT89C51引脚说明-------------------------------------------------------------------- 12.2 LCD1602 --------------------------------------------------------------------------------------- 22.2.1 LCD1602主要技术参数 ----------------------------------------------------------- 22.2.2 引脚功能说明 ------------------------------------------------------------------------ 22.2.3 LCD显示模块原理图 -------------------------------------------------------------- 22.3 DS1302 ------------------------------------------------------------------------------------------- 32.3.1 DS1302简介 ---------------------------------------------------------------------------- 32.3.2 DS1302的引脚排列------------------------------------------------------------------- 32.3.3 LCD显示模块原理图----------------------------------------------------------------- 4 3软件设计 ------------------------------------------------------------------------------------------------- 43.1系统硬件概述----------------------------------------------------------------------------------- 43.2程序结构图-------------------------------------------------------------------------------------- 43.3程序流程图-------------------------------------------------------------------------------------- 54 Proteus与Keil联调------------------------------------------------------------------------------------ 64.1 Keil调试 ----------------------------------------------------------------------------------------- 64.2与Proteus联调 --------------------------------------------------------------------------------- 64.3联调成功----------------------------------------------------------------------------------------- 75 设计心得 ------------------------------------------------------------------------------------------------ 75.1 实习日记 ---------------------------------------------------------------------------------------- 85.2 实习心得体会 ---------------------------------------------------------------------------------- 8参考文献 --------------------------------------------------------------------------------------------------- 9附录1硬件原理图 -------------------------------------------------------------------------------------- 10附录2代码清单 ----------------------------------------------------------------------------------------- 101 实习目的(1)可调电子时钟的设计由51单片机、DS1302、LCD1602、按键等元件组成。

能实现年、月、日、星期、时、分、秒的显示和调时功能(通过按键实现年、月、日、时、分的调节)。

(2)原理图设计:根据所确定的设计电路,利用Proteus软件绘制电路原理图。

(3)软件设计:根据电路工作过程,画出软件流程图,根据流程图编写相应的程序。

利用Proteus与Keil μVision4联调,直到实验现象正确为止。

2相关硬件介绍2.1 AT89C512.1.1 AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.1.2 AT89C51引脚说明VCC:供电电压。

GND:接地。

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

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

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

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

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

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

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

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

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

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

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

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

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

XTAL2:来自反向振荡器的输出。

2.2 LCD16022.2.1 LCD1602主要技术参数显示容量:16×2个字符,芯片工作电压:4.5—5.5V,工作电流:2.0mA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.95×4.35(W×H)mm。

2.2.3 LCD显示模块原理图图3 LCD显示模块原理图2.3 DS13022.3.1 DS1302简介DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

2.3.2 DS1302的引脚排列各引脚功能为:Vcc:主电源;Vcc2:备用电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电;当Vcc2<Vcc1时,由Vcc1向DS1302供电。

SCLK:串行时钟输入端,控制数据的输入与输出。

I/O:三线接口时的双向数据线。

CE:输入信号,在读、写数据期间必须为高DS1302的引脚如图4所示:X1X2I/OCE图4 DS1302的引脚图2.3.3时钟集成模块内部原理图图5时钟集成模块内部原理图3软件设计3.1系统硬件概述电路以AT89C51单片机最小系统为控制核心,时钟电路由高精度低功耗的DS1302提供,采用三线接口与CPU进行同步通信,输入部分采用四个独立式按键S1、S2、S3、S4、S5。

1602液晶显示部分,D0-D7口与单片机P0口相连。

具体电路连接,详见附录13.2程序结构图图6 程序结构图3.3程序流程图图7 系统主程序流程图4 Proteus与Keil联调4.1 Keil调试图8 Keil调试图4.2与Proteus联调图9 Proteus与Keil联调4.3联调成功图10联调成功5 设计心得5.1实习日记2015年6月29日今天是硬件实习的第一天,潘老师在课堂上给我们布置了接下来3个礼拜的时间需要完成的任务,同时精心的给我们讲解了每道题目的要求,需要实现的功能,以及对于从没接触过的问题如何动手去做,在老师的一步步引导下我们慢慢的对自己要做的题目有个由浅到深的了解,之后怀着整装待出发的心情迎接这对于动手操作能力很强的实践挑战。

相关文档
最新文档