单片机课设数码管计时器
- 格式:doc
- 大小:409.50 KB
- 文档页数:23
单片机设计24秒倒计时1.引言倒计时器是一种常见的电子设备,被广泛应用于体育比赛、倒计时游戏、厨房计时等场景中。
本文介绍了使用单片机设计一个24秒倒计时器的方法和过程。
2.设计原理本设计使用的单片机为51系列单片机,采用倒计时的方式进行计时,显示剩余时间,并发出声音提示时间结束。
具体实现主要包括以下几个步骤:-初始化单片机的定时器和功能引脚;-设置定时器的工作模式和计时时间;-编写程序控制定时器开始计时;-显示剩余时间并发出声音提示;-定时器到达设定时间后,停止计时并显示时间结束。
3.硬件设计硬件设计主要包括51系列单片机、LED数码管和蜂鸣器。
-单片机需要通过引脚连接LED数码管,用于显示剩余时间;-单片机通过一个GPIO引脚连接蜂鸣器,用于发出时间结束的提示声音。
4.软件设计软件设计主要包括初始化、计时、显示和提示等功能。
-初始化函数主要用于设置单片机的定时器和GPIO引脚;-计时函数用于设定倒计时的时间,并开始计时;-显示函数用于将剩余时间显示在LED数码管上;-提示函数用于判断是否到达设定时间,如果是则停止计时并发出提示声音。
5.实验结果经过调试和测试,实验结果表明该24秒倒计时器可以正常工作。
在开始计时后,数码管上会显示剩余时间,同时蜂鸣器会发出定时器结束的提示音。
6.结论本文介绍了使用单片机设计24秒倒计时器的方法和过程。
该设计通过初始化、计时、显示和提示等功能,实现了24秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
7.致谢感谢本文参考的相关文献和资料,以及为本文提供实验设备和技术支持的相关人员。
[1]《51单片机原理与应用》[2]《C语言微机原理与接口技术》总结:本文主要介绍了使用单片机设计24秒倒计时器的方法和过程。
通过初始化、计时、显示和提示等功能,实现了24秒倒计时的功能要求。
同时,该设计可以在实际中进行必要的优化和改进,以满足具体的应用需求。
一、概述随着科技的不断发展,单片机技术已经成为现代电子设备中不可或缺的核心技术。
为了提高自身对单片机应用技术的理解和掌握,本实训报告以设计一个基于单片机的计时器为例,通过实践操作,深入探究单片机的编程与应用。
二、实训目的1. 熟悉单片机的基本原理和开发环境。
2. 掌握51单片机的编程方法,提高编程能力。
3. 学会使用数码管、按键等外部器件与单片机进行交互。
4. 培养动手实践能力和创新意识。
三、实训内容本实训主要设计一个基于51单片机的计时器,计时范围设置为00.0~99.9秒,精确到0.1秒。
计时器具有以下功能:1. 计时开始:按下开始按钮,计时器开始计时。
2. 计时暂停:按下暂停按钮,计时器暂停计时。
3. 计时复位:按下复位按钮,计时器清零。
4. 显示计时:通过数码管实时显示当前计时值。
四、硬件设计1. 单片机:选用51单片机作为核心控制单元。
2. 数码管:采用共阴型4位数码管,用于显示计时值。
3. 按键:设计三个按键,分别用于控制计时器的开始、暂停和复位功能。
4. 晶振:用于提供单片机的时钟信号。
5. 电阻、电容等:用于搭建电路。
五、软件设计1. 主程序:初始化单片机,配置I/O端口,设置定时器,进入主循环。
2. 计时函数:根据按键输入,控制计时器的开始、暂停和复位功能。
3. 显示函数:将计时值转换为数码管可识别的编码,并通过I/O端口输出。
六、程序实现以下为计时器设计的主要程序代码:```c#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit key_start = P1^0; // 开始按键sbit key_pause = P1^1; // 暂停按键sbit key_reset = P1^2; // 复位按键sbit display_data = P0; // 数码管数据端口sbit display_control = P2; // 数码管控制端口uchar code code_display[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 数码管编码uint time = 0; // 计时器值void delay(uint t) {while(t--);}void display() {uchar i;for(i = 0; i < 4; i++) {display_control = 0x01 << i; // 选择数码管位display_data = code_display[time / 10]; // 显示十位delay(10000);display_control = 0x01 << i; // 选择数码管位display_data = code_display[time % 10]; // 显示个位 delay(10000);}}void main() {TMOD = 0x01; // 设置定时器模式TH0 = 0xFC; // 设置定时器初值TL0 = 0x18;TR0 = 1; // 启动定时器display_control = 0xFF; // 关闭所有数码管while(1) {if(key_start == 0) { // 开始计时while(key_start == 0);time = 0;while(TF0 == 0);TF0 = 0;}if(key_pause == 0) { // 暂停计时while(key_pause == 0);while(TF0 == 0);TF0 = 0;}if(key_reset == 0) { // 复位计时器while(key_reset == 0);time = 0;}display();}}```七、测试与分析1. 功能测试:经过多次测试,计时器功能稳定可靠,能够实现计时、暂停和复位功能。
一、实训目的通过本次实训,使学生了解单片机计时器的基本原理和设计方法,掌握单片机计时器的硬件设计和软件编程,提高学生动手实践能力和创新能力。
二、实训内容本次实训设计一款基于51单片机的计时器,具备计时、暂停、复位功能,计时范围0-59秒,精确到0.1秒。
三、实训原理1. 计时原理:利用51单片机的定时器/计数器功能,通过定时器中断实现计时功能。
2. 暂停功能:在计时过程中,按下暂停按钮,关闭定时器中断,计时停止。
3. 复位功能:按下复位按钮,将计时器清零,数码管显示00.0。
四、实训步骤1. 硬件设计(1)选择51单片机作为核心控制单元。
(2)选择4位共阴数码管作为显示模块,用于显示计时时间。
(3)选择按键作为控制模块,实现计时、暂停、复位功能。
(4)设计电路原理图,包括单片机、数码管、按键等模块的连接。
2. 软件设计(1)编写程序,初始化定时器/计数器,设置中断时间。
(2)编写中断服务程序,实现计时功能。
(3)编写按键扫描程序,实现计时、暂停、复位功能。
(4)编写数码管显示程序,将计时时间显示在数码管上。
3. 系统调试(1)连接电路,将程序烧录到单片机中。
(2)测试计时功能,确保计时准确。
(3)测试暂停和复位功能,确保功能正常。
(4)测试按键功能,确保按键操作正确。
五、实训结果与分析1. 硬件设计结果根据设计要求,成功设计了一款基于51单片机的计时器,包括单片机、数码管、按键等模块的连接,电路原理图如下:```+3.3V||---[单片机]||---[数码管]||---[按键]|GND```2. 软件设计结果编写了完整的程序,实现了计时、暂停、复位功能,数码管显示计时时间,计时范围0-59秒,精确到0.1秒。
3. 系统调试结果经过调试,计时器功能正常,计时准确,按键操作正确,符合设计要求。
六、实训心得1. 通过本次实训,掌握了单片机计时器的基本原理和设计方法,提高了动手实践能力和创新能力。
2. 学会了如何使用51单片机定时器/计数器功能实现计时功能,了解了中断编程的基本方法。
单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
单片机课程设计计时器一、课程目标知识目标:1. 学生能够理解单片机的基本工作原理和内部结构。
2. 学生掌握计时器模块的使用方法,包括编程和接口连接。
3. 学生能够解释计时器的工作流程,并掌握相关计算方法。
技能目标:1. 学生能够运用所学知识,设计并实现一个基于单片机的计时器程序。
2. 学生通过实践操作,培养动手能力和问题解决能力,能够调试并优化计时器功能。
3. 学生能够使用相关软件(如Keil、Proteus等)进行程序编写和仿真测试。
情感态度价值观目标:1. 学生培养对单片机编程的兴趣和热情,增强对电子工程领域的认识。
2. 学生在团队协作中学会沟通、分享,培养合作精神。
3. 学生认识到技术发展对生活的影响,激发创新意识和责任感。
课程性质:本课程为实践性较强的单片机应用课程,要求学生在理论学习的基础上,动手实践,培养实际操作能力。
学生特点:考虑到学生所在年级(如高二或高三),他们已经具备一定的电子基础和编程能力,但需加强对单片机内部结构和实际应用的理解。
教学要求:课程注重理论与实践相结合,要求教师以学生为主体,引导学生主动探究,培养学生的创新思维和实际操作能力。
通过本课程的学习,学生能够将知识转化为具体的学习成果,为后续相关专业课程打下坚实基础。
二、教学内容本课程教学内容以单片机计时器设计为主线,结合以下章节内容进行:1. 单片机基础理论:- 单片机内部结构和工作原理- 计时器/计数器模块功能介绍2. 计时器模块编程:- 汇编语言基础- 计时器编程方法- 中断处理程序设计3. 硬件电路设计与接口:- 计时器模块硬件连接- 单片机与外围设备接口技术- 电路仿真与调试4. 实践操作:- 使用Keil和Proteus软件进行程序编写和仿真- 设计并搭建计时器硬件电路- 调试优化计时器功能5. 综合应用:- 结合实际案例,分析计时器的应用场景- 创新设计,拓展计时器功能教学内容安排与进度:1. 基础理论学习(1课时)2. 计时器模块编程(2课时)3. 硬件电路设计与接口(2课时)4. 实践操作(3课时)5. 综合应用(1课时)教学内容与课本紧密关联,遵循科学性和系统性原则,确保学生能够掌握单片机计时器设计的全过程。
绪论篮球比赛中除了有总时间倒计时外,为了加快比赛的节奏,规则还要求进攻方在24秒内有一次投篮动作,否则视为违例。
以下为一个篮球比赛计时器,该计时器采用按键操作、数码管显示,非常实用。
此计时器也可作为其他球类比赛的计时器。
本课程设计介绍了一个基于单片机的篮球比赛计时器硬件设计,包括STC89C51, 2个八段共阳数码管显示、上电复位电路、时钟发生电路等基本模块的设计。
其功能土要有:一场篮球比赛共分四节,每节12分:每次进攻为24秒,计时器的显示均为倒计时方式,24秒计时用两位数码管显示;所有的计时都要具有暂停、继续、复位;当球员的持球时间超过24秒时,24秒倒计时减为零且有蜂鸣器报警提示。
本次课程设计是采用单片机C语言实现倒计时24秒篮球比赛计时器。
1系统工作原理1.1 功能说明随着信息时代的到来,电子技术在社会生活中发挥着越来越重要的作用,运用模电和数电知识设计的电子产品成为社会生活中不可缺少的一部分。
在篮球比赛中,规定了球员的持球时间不能超过24秒,否则就犯规了。
大多数篮球计时器的主控芯片为AT89C51,采用12MHz 晶振,P0.0-P0.7作数码显示端。
24秒计时开始,A3为24秒复位开启键(投篮或交换控球时按下此键);A4为24秒计时停止键(有违例时按下此键); A5为24秒计时启动键;A6为总复位键。
而此次我们设计的是1个简易篮球比赛计时器。
最简单的篮球球计时器是24秒倒计时计时器。
也就是本次课程设计的课题。
24秒篮球计时器要求设置外部操作开关,控制计数器的直接复位、启动和暂停,并且计时电路递减计时,每隔1秒钟,计时器减1,当计时器减0时,显示器上显示00,同时发出蜂鸣器报警信号。
1.2基本原理24秒计时器的总体参考方案框图如图1所示,它包括秒脉冲发生器、计数器、译码显示电路、报警电路和辅助时序控制电路等五个模块组成。
其中计数器和控制电路是系统的主要模块。
计数器完成24秒倒计时功能,而控制电路完成计数器的直接复位、启动技术、暂停以及连续计数、译码显示电路的显示与灭灯、定时时间到报警等功能。
课题: AT89C51单片机LED数字倒计时器专业:班级:学号:姓名:指导教师:设计日期:成绩:重庆大学城市科技学院电气学院目录一、设计目的作用 (3)二、设计要求 (3)三、设计的具体实现 (3)1、设计原理 (3)(1)系统设计方案 (3)(2)功能模块 (4)(3)工作原理: (4)2、系统设计 (4)(1)显示模块 (4)(2)晶振模块 (5)(3)复位电路: (5)(4)按键模块: (6)(5)报警模块: (7)3、系统实现 (7)(1)实物图 (7)(2)分析 (8)四、总结 (8)五、附录 (9)附录1: (9)附录2: (10)附录3: (10)六、参考文献 (17)LED数字倒计时器设计报告一、设计目的作用1、掌握51单片机最小系统的设计;2、掌握按键电路设计、LED数码管的使用;3、掌握C51的编程方式。
二、设计要求基于AT89C51单片机的LED数字倒计时器主要具有如下功能,具体要求如下:1、LED数码管显示倒计时时间。
2、倒计时过程中能设置多个闹钟,当倒计时值倒计到设定值时会发出2s 的报警声音。
(K1设置小时,K2设置分钟,K3设置秒钟,K4完成退出)3、通过按键可以对倒计时设定处置。
倒计时初值范围在24:00:00~00:00:60之间,设置成功后复位初始值为成功设定值。
三、设计的具体实现1、设计原理(1)系统设计方案:基于AT89C51单片机的数码管显示模块显示的倒计时器。
主要是以单片机来控制,用按键来设定倒计时初始时刻的值,数码管作为显示模块来显示剩余的时间。
此电路对于倒计时器中的LED数码管示器来说,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。
晶振模块图1 LED 数字倒计时器设计框图(2)功能模块:倒计时器的总体包括显示电路,按键电路,复位电路,晶振电路和报警电路等五个模块。
显示模块显示计数与灭灯,复位模块控制电路完成计数的直接清零,暂停/连续技术,用按键模块来设定倒计时初始时刻的值,报警模块实现定时时间到报警等功能。
目录目录 (1)摘要 (3)ABSTRACT (4)第一章设计要求与方案确定 (5)1.1设计意义 (5)1.2设计要求 (5)1.3方案确定 (5)第二章硬件电路 (6)2.1单片机概述 (6)2.1.1 单片机基础 (6)2.1.2单片机与单片机系统 (7)2.1.3 单片机的产生与发展 (7)2.2MCS-51系列单片机介绍 (8)2.2.1 80C51 芯片介绍 (8)2.2.3 最小系统 (9)2.2.4 定时与中断的概念 (10)2.4LED显示电路设计与器件选择 (12)2.4.1.LED显示器的选择 (13)2.4.2LED驱动芯片选择 (13)2.5按键电路设计 (13)2.6蜂鸣器电路的设计 (14)第三章倒计时器的设计 (15)3.1倒计时器系统设计方案及框图 (15)3.2程序设计 (15)3.2.1主程序设计 (15)3.2.2倒计时模块设计 (17)3.2.3键盘扫描数码管显示程序 (17)第四章倒计时器设计仿真 (18)4.1设置倒计时初值 (18)4.2开始倒计时 (18)4.3倒计时结束并报警 (18)总结 (20)参考文献 (21)致谢 (22)附录1 倒计时器设计源程序 (23)附录2 所用元器件清单 (23)摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测日新月异更新。
在实时控制和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本系统由单片机系统、矩阵式键盘、蜂鸣器和LED数码管显示系统组成。
装置利用AT89C51单片机与74LS245驱动器驱动LED数码管显示。
通过按键控制设定倒计时时间,再通过中断控制系统开始倒计时。
当倒计时时间到时,由P1.0口驱动蜂鸣器发声报警。
为了简化电路,降低成本,采用以软件为主的的接口方法。
单片机设计倒计时器在我们的日常生活中,倒计时器有着广泛的应用,比如体育比赛、烹饪、考试等等。
通过单片机来设计倒计时器,不仅能够实现精准的计时功能,还能根据不同的需求进行灵活的定制和扩展。
接下来,让我们一起深入了解一下如何用单片机设计一个实用的倒计时器。
首先,我们需要明确倒计时器的基本功能和要求。
一般来说,倒计时器应该具备以下几个主要功能:1、设定倒计时的时间,时间范围可以根据实际需求进行调整,比如从几分钟到几小时。
2、能够清晰地显示剩余的时间。
3、具有启动、暂停和复位等操作按钮。
4、在倒计时结束时,能够发出提示信号,比如声音或者灯光提示。
为了实现这些功能,我们选择合适的单片机作为核心控制单元。
常见的单片机如 51 系列、STM32 系列等都可以满足需求。
以 51 单片机为例,它具有价格低廉、编程简单、资源丰富等优点。
在硬件设计方面,我们需要以下几个主要的组件:1、单片机最小系统:包括单片机芯片、晶振电路、复位电路等,为单片机的正常运行提供必要的条件。
2、显示模块:可以选择数码管或者液晶显示屏(LCD)来显示倒计时的时间。
数码管显示简单直观,适用于对显示效果要求不高的场合;LCD 显示屏则能够提供更丰富的信息显示,比如同时显示时间、日期等。
3、按键模块:用于输入操作指令,如设置时间、启动、暂停、复位等。
4、报警模块:可以使用蜂鸣器或者发光二极管(LED)在倒计时结束时发出提示信号。
下面我们来详细介绍一下各个模块的设计和实现。
单片机最小系统的设计是整个硬件系统的基础。
晶振电路为单片机提供时钟信号,保证其正常运行的时序。
复位电路则在系统出现异常时,能够将单片机恢复到初始状态。
对于显示模块,如果选择数码管,需要通过驱动芯片(如74HC595)来控制数码管的显示。
如果选择 LCD 显示屏,则需要根据显示屏的接口类型(如并行接口或串行接口)来进行相应的连接和编程。
按键模块可以采用独立按键或者矩阵按键的方式。
主题:51单片机4位数码管秒表代码内容:1. 介绍51单片机51单片机是一种通用的单片机系列,广泛应用于各种电子设备中。
它具有稳定性好、成本低、易于编程等优点,因此备受电子爱好者和专业工程师的青睐。
2. 4位数码管秒表4位数码管秒表是一种常见的电子计时器,通过LED数码管显示出当前的时间,可以用于各种计时应用,比如比赛计时、实验计时等。
3. 代码编写以下是一段简单的51单片机4位数码管秒表代码:```c#include <reg52.h>#include <intrins.h>// 数码管位选端口sbit wei1 = P2^2;sbit wei2 = P2^3;sbit wei3 = P2^4;sbit wei4 = P2^5;// 数码管显示段选端口sbit se2 = P0^2;sbit se1 = P0^3;sbit se4 = P0^4;sbit se3 = P0^5;unsigned char code smgduan[17] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; // 显示0~9,A,b,C,d,E,F,无的值void delay(unsigned int i) { // 延时while(i--);}void display(unsigned char *tab) { // 数码管显示 unsigned char i;for(i=0; i<7; i++) {P0=0; // 清除段选,以选中所显示的数码管 switch(i) { //确定位选case(0):wei1=0;wei2=wei3=wei4=1;break;case(1):wei2=0;wei1=wei3=wei4=1;break;case(2):wei3=0;wei1=wei2=wei4=1;break;case(3):wei4=0;wei1=wei2=wei3=1;break;default:break;}P0=tab[i]; //段码输出delay(5); // 数码管微秒级延迟}}void m本人n() {unsigned char a=0,b=0,c=0,d=0; //时钟的4位数据 unsigned int i=0;wei1=wei2=wei3=wei4=1; //段选、位选初始化while(1) {a++; // 微秒级的计数if(a==100) { //达到100a=0; b++; //b加1if(b==60) { //当b=60时b=0; c++; //c加1if(c==60) { //当c=60时c=0; d++; //d加1if(d==24) { //当d=24时d=0; //归零}}}}display(smgduan+d10); //显示个秒wei1=1;wei2=wei3=wei4=0; //位选delay(500); //延时display(smgduan+c/10+10); //显示十秒wei2=1;wei1=wei3=wei4=0; //位选delay(500); //延时display(smgduan+b10); //显示个分wei3=1;wei1=wei2=wei4=0; //位选delay(500); //延时display(smgduan+b/10+10); //显示十分wei4=1;wei1=wei2=wei3=0; //位选delay(500); //延时if(i++==200) { //当i=200时i=0;}}}```4. 代码分析该代码通过对51单片机的引脚进行控制,实现了4位数码管秒表的计时功能。
第1章设计方案 (1)1.1 设计目的 (1)1.2 设计要求 (1)1.3 设计原理 (1)第2章硬件设计 (2)2.1 器件说明 (2)2.1.1 51单片机简述 (2)2.1.2 DS12C887实时时钟芯片简介 (4)2.1.3 MAX7219共阴极数码管显示驱动芯片简介 (6)2.2 硬件构造说明 (7)2.2.1复位及震荡电路 (8)2.2.2 时间获取电路 (8)2.2.3 显示驱动电路 (9)第3章软件设计 (10)3.1 软件设计简要思路 (10)3.2 时间获取及定时计数器程序 (11)3.2.1定时/计数器初值计算 (11)3.2.2 计数运算程序 (11)3.3 显示驱动程序 (12)3.4利用数码管显示的倒计时装置设计程序 (14)3.5 软件调试仿真 (18)3.5.1 系统调试工具keil C51 (18)3.5.2 系统调试工具PROTEUS (19)第4章课程设计总结 (20)致谢 (21)参考文献: (22)1.1 设计目的本次课程设计的主要概况是了解单片机控制15秒倒计时的过程与MAX7219基本工作原理及软件设计方法,是利用时钟芯片和定时计数器的原理将倒计时过程显示在MAX7219芯片驱动的八位共阴LED数码管上;最后应用Profassional软件设计,仿真基于AT89c51单片机的倒计时实验。
以到达进一步熟悉和掌握单片机的结构及工作原理;掌握单片机的接口技术及相关外围芯片的外特性与控制方法;掌握以单片机核心的电路设计的基本方法和技术;通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术以及通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应开发打下基础的目的。
1.2 设计要求STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计利用数码管显示的倒计时时间装置。
一是扩展DS12C887时钟电路设计;二是利用MAX7219驱动LG3641AH(或同型号共阴极)数码管,显示倒计时剩余时间;三是在倒计时时间减为零以后,进行加1时间显示。
1.3 设计原理在单片机获取DS12C887时钟芯片中的秒时间后,进行数据处理和驱动MAX7219芯片驱动数码管完成显示倒计时功能。
2.1 器件说明2.1.1 51单片机简述AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51引脚说明:图2.1 AT89C51引脚分布图VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写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的一些特殊功能口,如表2.2所示: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)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.1.2 DS12C887实时时钟芯片简介DS12C887 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM 和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储 DS12C887 的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
引脚功能:DS12C887 的引脚排列如图 1 所示,各管脚的功能说明如下:图2.2 DS12C887引脚分布GND、VCC:直流电源,其中VCC接+5V输入,GND接地,当VCC输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读、写操作;当VCC的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息;当VCC的输入小于+3V时,DS12C887会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。
(1)MOT:模式选择脚,DS12C887有两种工作模式,即Motorola模式和Intel模式,当MOT接VCC时,选用的工作模式是Motorola模式,当MOT接GND时,选用的是Intel模式。
本文主要讨论Intel模式。
(23)SQW:方波输出脚,当供电电压VCC大于4.25V时,SQW脚可进行方波输出,此时用户可以通过对控制寄存器编程来得到13种方波信号的输出。
AD0~AD7:复用地址数据总线,该总线采用时分复用技术,在总线周期的前半部分,出现在AD0~AD7上的是地址信息,可用以选通DS12C887内的RAM,总线周期的后半部分出现在AD0~AD7上的数据信息。
(14)AS:地址选通输入脚,在进行读写操作时,AS的上升沿将AD0~AD7上出现的地址信息锁存到DS12C887上,而下一个下降沿清除AD0~AD7上的地址信息,不论是否有效,DS12C887都将执行该操作。
(17)DS/RD:数据选择或读输入脚,该引脚有两种工作模式,当MOT接VCC时,选用Motorola工作模式,在这种工作模式中,每个总线周期的后一部分的DS为高电平,被称为数据选通。
在读操作中,DS的上升沿使DS12C887将内部数据送往总线AD0~AD7上,以供外部读取。
在写操作中,DS的下降沿将使总线AD0~AD7上的数据锁存在DS12C887中;当MOT接GND时,选用Intel工作模式,在该模式中,该引脚是读允许输入脚,即Read Enable。
(15)R/W:读/写输入端,该管脚也有2种工作模式,当MOT接VCC时,R/W工作在Motorola模式。
此时,该引脚的作用是区分进行的是读操作还是写操作,当R/W为高电平时为读操作,R/W为低电平时为写操作;当MOT接GND时,该脚工作在Intel模式,此时该作为写允许输入,即Write Enable。
(13)C——S——:片选输入,低电平有效。
(19)I——R——Q——:中断请求输入,低电平有效,该脚有效对DS12C887内的时钟、日历和RAM中的内容没有任何影响,仅对内部的控制寄存器有影响,在典型的应用中,RESET可以直接接VCC,这样可以保证DS12C887在掉电时,其内部控制寄存器不受影响。
2.1.3 MAX7219共阴极数码管显示驱动芯片简介MAX7219是美国MACIM(美信)公司生产的串行输入/输出共阴极显示驱动器。
它采用了3线串行接口, 传送速率达到10M数据,能驱动8位七段数字型的LED显示也可以连接条线图显示器或者64个独立的LED。
其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。
只有一个外部寄存器用来设置各个LED的段电流。
MAX7219允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。