单片机时钟计时器设计实训
基于单片机的数字时钟设计实训报告
摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(3个2位共阳数码管,一个发光二极管和一个蜂鸣器)和应用程序(proteus软件和KEIL编译软件),构成相应的应用系统。
关键词:单片机AT89C51 共阳数码管发光二极管蜂鸣器 proteus软件 KEIL编译软件目录1.课题设计目的 (4)2. AT89C51的单片机简介 (4)2.1 LED显示电路 (7)2.2键盘控制电路 (7)3.课程设计报告内容 (8)3.1.方案设计要求 (8)3.2系统设计流程图 (8)3.3绘制数字时钟电路Protues仿真原理图 (9)3.4运行程序 (10)4.总结 (10)5.数字时钟源程序............ 10-19数字时钟设计1. 课题设计目的数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和3个两位一体的共阳极的数码管为核心,辅以必要的电路,构成了一个单片机数字时钟。
2. AT89C51的单片机简介(一)AT89C51的介绍AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多种功能的I/O接口电路等一台计算机所需要的基本功能部件,AT89C51单片机内包含下列几个部件:(1)一个8位CPU;(2)一个片内振荡器及时钟电路;(3)4K字节ROM程序存储器;(4)128字节RAM数据存储器;(5)两个16位定时器/计数器;(6)可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;(7)32条可编程的I/O线(四个8位并行I/O端口);(8)一个可编程全双工串行口;(9)具有五个中断源、两个优先级嵌套中断结构。
单片机实训报告计时器
一、概述随着科技的不断发展,单片机技术已经成为现代电子设备中不可或缺的核心技术。
为了提高自身对单片机应用技术的理解和掌握,本实训报告以设计一个基于单片机的计时器为例,通过实践操作,深入探究单片机的编程与应用。
二、实训目的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. 单片机数字钟硬件设计(1)选用AT89C51单片机作为核心控制单元,具有丰富的片上资源,方便编程和调试。
(2)采用LCD1602液晶显示屏,显示时间、日期等信息。
(3)使用DS1302实时时钟芯片,实现时间的存储和更新。
(4)选用按键作为输入设备,实现时间的调整和设置。
(5)选用蜂鸣器作为报警设备,实现定时报警功能。
2. 单片机数字钟软件设计(1)编写主程序,实现系统初始化、时间显示、按键扫描、时间调整等功能。
(2)编写中断服务程序,实现DS1302时钟芯片的读写、按键消抖等功能。
(3)编写子程序,实现时间的计算、格式化、显示等功能。
3. 单片机数字钟调试与测试(1)连接电路,检查各个模块的连接是否正确。
(2)编写程序,将程序烧录到单片机中。
(3)调试程序,确保程序运行正常。
(4)测试各个功能模块,如时间显示、按键调整、定时报警等。
三、实习过程1. 硬件设计(1)根据设计要求,绘制电路原理图。
(2)购买所需元器件,进行焊接。
(3)组装电路板,连接各个模块。
2. 软件设计(1)编写程序,采用C语言进行编程。
(2)使用Keil软件进行编译、烧录。
(3)在仿真软件Proteus中进行仿真,验证程序的正确性。
3. 调试与测试(1)连接电路,检查各个模块的连接是否正确。
(2)编写程序,将程序烧录到单片机中。
(3)调试程序,确保程序运行正常。
(4)测试各个功能模块,如时间显示、按键调整、定时报警等。
四、实习总结1. 通过本次实习,我们掌握了单片机的编程、调试、硬件连接等方面的知识。
2. 学会了使用LCD1602液晶显示屏、DS1302实时时钟芯片、按键等元器件。
单片机电子时钟课程设计实验报告(1)
单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
单片机设计时钟实训报告
一、引言随着科技的不断发展,单片机技术在电子领域得到了广泛的应用。
为了提高学生的实践能力,培养实际工程应用能力,我们进行了单片机设计时钟实训。
本实训以AT89C51单片机为核心,通过学习时钟电路的设计、编程和调试,使学生掌握单片机在时钟设计中的应用,提高学生的动手能力和创新思维。
二、实训目的1. 掌握单片机的基本原理和编程方法;2. 熟悉时钟电路的设计和调试;3. 培养学生的实际工程应用能力和创新思维;4. 提高学生的团队协作能力和沟通能力。
三、实训内容1. 硬件设计(1)单片机选型:选用AT89C51单片机作为核心控制单元;(2)时钟电路:采用晶振电路作为时钟源,实现1Hz的基准时钟;(3)显示电路:采用LCD1602液晶显示屏,实现时间、日期和星期等信息显示;(4)按键电路:设计4个按键,分别用于设置时间、日期、星期和闹钟功能;(5)复位电路:采用上电复位和按键复位两种方式,保证系统稳定运行。
2. 软件设计(1)系统初始化:初始化单片机,设置波特率、定时器等;(2)时间显示:通过读取实时时钟芯片(如DS1302)的数据,显示时间、日期和星期;(3)按键处理:根据按键输入,实现时间、日期、星期和闹钟的设置与修改;(4)闹钟功能:当设定的时间到达时,通过蜂鸣器发出提示音。
3. 调试与优化(1)调试方法:使用Proteus软件进行仿真调试,观察程序运行状态,分析故障原因;(2)优化方法:针对仿真过程中出现的问题,优化程序代码,提高程序运行效率。
四、实训过程1. 硬件制作(1)按照设计图纸,焊接电路板;(2)连接晶振、LCD显示屏、按键和蜂鸣器等元器件;(3)调试电路,确保各元器件正常工作。
2. 软件编写(1)使用Keil C51软件编写程序,实现时钟显示、按键处理和闹钟功能;(2)编译程序,生成HEX文件。
3. 调试与优化(1)使用Proteus软件进行仿真调试,观察程序运行状态;(2)针对仿真过程中出现的问题,优化程序代码,提高程序运行效率;(3)将优化后的程序烧录到单片机中,进行实际运行测试。
单片机正计时器实训报告
一、概述随着科技的发展,单片机作为一种广泛应用于工业控制、家用电器、信息处理等领域的微控制器,已经成为现代电子技术的重要组成部分。
正计时器作为单片机的基本应用之一,对于理解单片机的编程原理和实现功能具有重要意义。
本次实训旨在通过实践操作,加深对单片机正计时器原理和编程方法的理解,提高实际应用能力。
二、实训目的1. 理解单片机正计时器的工作原理和编程方法。
2. 掌握单片机正计时器的硬件连接和软件编程。
3. 能够根据实际需求设计并实现简单的正计时器功能。
4. 培养动手实践能力和团队协作精神。
三、实训内容1. 硬件连接本次实训使用的单片机为STC89C52,正计时器采用定时器0。
硬件连接主要包括以下步骤:(1)将单片机的P1.0引脚与LED灯相连,作为显示计时结果的输出。
(2)将单片机的P3.2引脚与按钮S1相连,作为启动/停止计时器的输入。
(3)将单片机的定时器0的输入端(T0)与外部时钟源相连,此处使用晶振作为时钟源。
(4)将单片机的VCC和GND引脚与电源相连。
2. 软件编程正计时器的软件编程主要包括以下步骤:(1)初始化定时器0,设置定时器模式、计数初值等。
(2)编写中断服务程序,实现定时器溢出后的计时功能。
(3)编写主程序,实现启动/停止计时器的功能,并实时显示计时结果。
3. 功能实现(1)启动计时器后,LED灯开始闪烁,表示计时开始。
(2)计时过程中,LED灯闪烁频率逐渐加快,表示计时时间逐渐增加。
(3)停止计时器后,LED灯停止闪烁,并显示计时结果。
四、实训过程及结果1. 实训过程(1)根据实训内容,设计并绘制硬件电路图。
(2)编写正计时器的程序代码,并进行编译和调试。
(3)将程序烧录到单片机中,进行实际测试。
2. 实训结果(1)成功实现了正计时器的功能,LED灯能够根据计时结果进行闪烁。
(2)计时精度达到毫秒级,满足实际需求。
(3)通过实际操作,加深了对单片机正计时器原理和编程方法的理解。
单片机数码时钟实训报告
一、实训目的本次单片机数码时钟实训旨在通过实际操作,让学生了解单片机的应用,掌握单片机数码时钟的设计与实现方法,提高学生的实践操作能力和创新思维。
二、实训内容1. 硬件设计(1)单片机:选用AT89C51单片机作为核心控制器。
(2)显示模块:采用4位数码管,实现时分秒的显示。
(3)时钟模块:采用12MHz晶振作为时钟源,通过单片机的定时器/计数器实现秒、分、时的计时。
(4)按键模块:设计启动/停止按钮、设置按钮、清零按钮等,实现对时钟的控制和设置。
(5)电源模块:采用5V电源适配器为系统供电。
2. 软件设计(1)主程序:初始化单片机,设置定时器/计数器,实现时分秒的计时。
(2)中断服务程序:实现按键控制、时间设置、清零等功能。
(3)显示程序:将计时的时分秒数据转换为数码管显示的格式。
三、实训过程1. 硬件搭建(1)按照电路图连接AT89C51单片机、数码管、晶振、按键等元件。
(2)检查电路连接是否正确,确保无短路、断路等现象。
2. 软件编写(1)编写主程序,初始化单片机,设置定时器/计数器,实现时分秒的计时。
(2)编写中断服务程序,实现按键控制、时间设置、清零等功能。
(3)编写显示程序,将计时的时分秒数据转换为数码管显示的格式。
3. 调试与测试(1)将编写好的程序烧录到单片机中。
(2)打开电源,观察数码管显示的时分秒是否正确。
(3)测试按键控制功能,包括启动/停止、设置、清零等。
(4)测试时间设置功能,包括小时、分钟、秒的设置。
四、实训结果1. 硬件方面:成功搭建了单片机数码时钟的硬件电路,包括单片机、数码管、晶振、按键等元件。
2. 软件方面:成功编写了单片机数码时钟的程序,实现了时分秒的计时、按键控制、时间设置等功能。
3. 功能实现:数码时钟能够正常显示时分秒,并通过按键控制实现启动/停止、设置、清零等功能。
五、实训总结1. 通过本次实训,使学生掌握了单片机数码时钟的设计与实现方法,提高了学生的实践操作能力和创新思维。
单片机电子钟实训报告
一、引言随着电子技术的不断发展,单片机在各个领域得到了广泛的应用。
电子钟作为单片机应用的一个重要实例,具有很高的实用价值。
本实训报告主要介绍了单片机电子钟的设计与实现过程,包括硬件电路设计、软件编程以及调试过程。
二、硬件电路设计1. 单片机选择本实训选用AT89C51单片机作为核心控制器,该单片机具有丰富的I/O端口、较强的计算能力和较大的存储空间,能够满足电子钟的设计需求。
2. 时钟芯片本实训采用DS1302时钟芯片作为时间源,该芯片具有年、月、日、周、时、分、秒的精确计时功能,并具备闰年补偿等功能。
3. 液晶显示屏本实训选用1602液晶显示屏用于显示时间、日期等信息。
1602液晶显示屏具有清晰显示多个字符和符号的特点,方便用户查看时间和其他信息。
4. 按键模块本实训设计按键模块用于用户输入和设置。
按键包括时间设置键、日期设置键、闹钟设置键等,方便用户进行各项操作。
5. 电源模块本实训采用DC5V电源模块,为整个电子钟提供稳定的电源供应。
三、软件编程1. 主程序主程序负责初始化单片机、时钟芯片、液晶显示屏等硬件设备,并进入主循环。
主循环中,程序会不断检测按键状态,根据按键输入调整时间、日期和闹钟设置。
2. 时钟控制程序时钟控制程序负责实现时钟的基本功能,包括计时、闰年补偿等。
程序通过定时器中断,每秒更新一次时间。
3. 显示程序显示程序负责将时间、日期等信息显示在液晶显示屏上。
程序使用1602液晶显示屏的指令集,动态显示时、分、秒和日期。
4. 按键扫描程序按键扫描程序负责检测按键状态,并根据按键输入调整时间、日期和闹钟设置。
程序采用轮询方式检测按键状态,以提高按键响应速度。
5. 闹钟程序闹钟程序负责实现闹钟功能,当时间达到设定的闹钟时间时,电子钟会发出蜂鸣声提示用户。
四、调试过程1. 硬件调试首先,对硬件电路进行调试,检查各元器件是否安装正确,连接是否牢固。
然后,使用万用表检测电源电压、单片机各引脚电压是否正常。
单片机60秒计时器实验报告
单片机60秒计时器实验报告一、实验目的本实验旨在设计并实现一个基于单片机的60秒计时器,通过学习单片机的基本原理和编程语言,掌握单片机计时器的设计和实现方法。
二、实验原理1. 单片机基础知识:单片机是一种集成电路芯片,它包含了中央处理器(CPU)、存储器(RAM、ROM)、输入输出(I/O)接口等多个功能模块。
单片机可以通过编写程序来控制各种外设,如LED灯、蜂鸣器等。
2. 计时器原理:计时器是一种用于测量时间的电子设备,它通常由一个晶振作为基准信号源,通过分频和计数来实现精确计时。
在单片机中,计时器通常由定时器(Timer)模块来实现。
3. 60秒计时器设计:本次实验需要设计一个能够精确计时60秒的计时器。
具体步骤如下:(1) 设置定时器工作模式为定时模式;(2) 设置定时时间为60秒;(3) 等待定时完成,并触发中断;(4) 在中断服务函数中输出时间到LED灯或数码管上。
三、实验材料1. STC89C52RC单片机开发板;2. 4位共阳数码管或8个LED灯;3. 杜邦线若干。
四、实验步骤1. 连接电路:将单片机开发板上的P0口连接到4位共阳数码管或8个LED灯的控制引脚,P3口连接到晶振、复位电路等。
2. 编写程序:使用Keil C51编写单片机程序,实现60秒计时器功能。
具体代码如下:#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit LED1 = P0^0; //LED灯连接到P0.0sbit LED2 = P0^1; //LED灯连接到P0.1sbit LED3 = P0^2; //LED灯连接到P0.2sbit LED4 = P0^3; //LED灯连接到P0.3void InitTimer() //初始化定时器{TMOD &= 0xF0; //设置工作模式为定时模式TH1 = 0x3C; //设置定时时间为60秒TL1 = 0xB0;ET1 = 1; //开启定时器中断允许位}void TimerInterrupt() interrupt 3 //定时器中断服务函数{static uchar cnt = 60; //计数器,初始值为60秒if(cnt > 0) cnt--; //每次中断计数器减一if(cnt == 10) { //当计数器为10秒时,LED1闪烁LED1 = ~LED1;}if(cnt == 0) { //当计数器为0秒时,所有LED灯关闭 LED1 = 0;LED2 = 0;LED3 = 0;LED4 = 0;}}void main(){InitTimer(); //初始化定时器while(1) {LED2 = 1; //LED2始终点亮if(TF1) { //如果定时器溢出,重新加载计时器TF1 = 0; //清除定时器中断标志位TH1 = 0x3C; //设置定时时间为60秒TL1 = 0xB0;ET1 = 1; //开启定时器中断允许位cnt = 60; //重置计数器}}}3. 烧录程序:将编写好的程序通过ISP或其他烧录工具烧录到单片机中。
单片机计时器实训报告
一、前言随着科技的不断发展,单片机技术在我国得到了广泛的应用。
为了提高我国单片机技术人才的综合素质,我们学校特开设了单片机实训课程。
本次实训,我们以设计一个单片机计时器为课题,通过实际操作,加深对单片机原理及编程的理解,提高我们的动手能力和团队协作能力。
二、实训目的1. 掌握单片机的基本原理和编程方法;2. 学会使用单片机外围设备,如数码管、按键等;3. 提高动手能力和团队协作能力;4. 熟悉单片机在实际工程中的应用。
三、实训内容1. 计时器硬件设计(1)单片机选择:本次实训选用STC89C52单片机作为核心控制单元。
(2)数码管显示:选用共阴型4位数码管,用于显示计时器的计时值。
(3)按键控制:选用4个轻触开关,分别控制计时器的开始、暂停、复位功能。
(4)时钟电路:选用晶振作为时钟源,产生稳定的时钟信号。
2. 计时器软件设计(1)主程序:负责初始化硬件资源、扫描按键、处理按键事件、更新数码管显示等。
(2)计时功能:通过定时器中断,实现计时器的计时功能。
(3)按键处理:根据按键事件,控制计时器的开始、暂停、复位功能。
(4)数码管显示:根据计时器的计时值,更新数码管显示。
四、实训步骤1. 硬件制作:根据设计图纸,焊接电路板,安装元器件。
2. 硬件调试:检查电路连接是否正确,测试电路功能。
3. 软件编写:使用C语言编写程序,实现计时器功能。
4. 软件调试:在单片机上编译、烧录程序,测试程序功能。
5. 集成调试:将硬件和软件结合,进行整体调试。
五、实训成果1. 成功设计并实现了一个单片机计时器。
2. 掌握了单片机的基本原理和编程方法。
3. 学会了使用单片机外围设备,如数码管、按键等。
4. 提高了动手能力和团队协作能力。
六、心得体会1. 通过本次实训,我对单片机技术有了更深入的了解,认识到理论知识与实际操作相结合的重要性。
2. 在实训过程中,我学会了如何查阅资料、解决问题,提高了自己的自学能力。
3. 在团队协作方面,我学会了如何与他人沟通、分工合作,提高了自己的团队协作能力。
51单片机时钟实训报告
时、分、秒计时器设计一、任务及要求用51单片机设计时、分、秒计时器,具体要求如下。
1、具有时、分、秒计时功能和8位数码管显示功能,显示格式为:“时-分-秒”;2、用Proteus设计仿真电路进行结果仿真;3、4人组成设计小组完成,小组成员有明确分工,1人负责总体方案设计及报告撰写,2人负责功能模块函数设计,1人负责仿真电路设计及调试。
4、完成程序设计、仿真电路设计、结果仿真。
5、本实验要求设计一个数字计时器,可以完成0分00秒~23小时59分59秒的计时功能,并在控制电路的作用下有开机清零。
6、指标要求:①.显示时、分、秒。
②采用24小时制,小时计数器按“23翻00”规律计数。
.③为了保证计时准确、稳定,由单片机的定时器来计时。
7、设计要求:①画出电路原理图(或仿真电路图);②元器件及参数选择;③电路仿真与调试;④连接实物图,并调试;⑤写出报告,并做总结;二、设计方案1、总体设计方案(李文负责完成)(说明总体设计方案构思、程序模块构成、仿真电路构成等内容,不少于300字))。
构思:实现时钟的设计,如果采用软件延时的方法来实现时钟,太耗cpu了,因此采用51单片机的内部硬件资源来实现时钟,因此采用定时器来定时,由于单片机的最大定时的时间为65.536ms;但是我们要定时1s,为了方便,我们则选用定时器0工作方式1且定时50ms,然后在中断20次则有了1s,有了1s就好办了,分,时就好办了,只要在1秒的基础上加就可以实现时钟了,有了时,分,秒就要显示了,由于时,分,秒都是两位,因此要把个位与十位分离,然后在分别在数码管上显示,这样就实现时钟的设计。
程序模块:1、主函数:(调用初始化函数,调用显示函数)2、显示函数:(延时函数,数码管显示代码)3、中断服务函数:(时,分,秒的实现)仿真电路构成:数字钟的结构组成:1)晶体振荡器电路2)复位电路3)数码管使用非门驱动及数码管具体:52单片机的最小系统(52单片机,晶振电路(12MHz晶振,和30pF的无极性电容),复位电路(10k电阻,10uf极性电容,开关)),外加八位一体的数码管,数码管驱动电路;2、显示模块程序流程图(赵宝龙负责完成):(程序流程图及简单文字说明)(见附录);3、中断服务函数模块程序流程图(肖广负责完成):(程序流程图及简单文字说明)(见附录);4、主函数模块的设计(李文负责)(见附录);5、仿真电路设计(黄涛负责完成)(仿真电路图)三、程序代码:/*功能:用共阴的八位一体的数码管显示时间“小时-分钟-秒”位码接P2口;段码接P0口;使用定时器0定时1s,*/#include <reg51.h>//头文件#define uchar unsigned char //宏定义#define uint unsigned int //uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴七段编码uchar sec,min,hour,count;// 定义变量void delay (uchar x)//延时1ms的函数{uchar z ,y;for (y=x;y>0;y--)for (z=124;z>0;z--);}void init (void)//初始化函数{TMOD=0X01;//定时器0工作在方式1TH0=0X3C;//装初值TL0=0XB0;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0sec=0; //秒设初值min=0; //分设初值hour=0;//时设初值count=0; //计数设初值P0=0xff; //P2=0xff; //}void display ()//显示函数{uchar sec1,sec2,min1,min2,hour1,hour2;//定义变量sec1= sec/10; //秒的十位sec2= sec%10; //秒的个位min1= min/10; //分的十位min2= min%10; //分的个位hour1= hour/10;//时的十位hour2= hour%10;//时的个位P2= 0x80; //秒个位的位码P0= table[sec2]; //秒个位的段码delay(5);P2= 0x40; //秒十位的位码P0= table[sec1]; //秒十位的段码delay(5);P2= 0x20; //“-”的位码P0= 0x40; //“-”的段码delay(5);P2= 0x10; //分十位的位码P0= table[min1];//分十位的段码delay(5);P2= 0x08; //分个位的位码P0= table[min2];//分个位的段码delay(5);P2= 0x04; //“-”的位码P0= 0x40; //“-”的段码delay(5);P2= 0x02; //时个位的位码P0= table[hour2];//时个位的段码delay(5);P2= 0x01; //时的十位的段码P0= table[hour1];//时的十位的段码delay(5);}void main(){init(); //初始化函数while(1){display(); //时间显示函数}}void time() interrupt 1 //中断服务函数{TH0=0X3C; //重装初值TL0=0XB0;if(count==20) //定时一秒{count=0; //计数清零if(sec==59) //秒计时到60秒{sec=0; //秒清零if(min==59) //分计时到60秒{min=0; //分清零if(hour==23) //小时计数到24{hour=0;//小时清零}else hour++; //小时加一}else min++; //分加一}else sec++; //秒加一}count++; //计数加一}五、设计总结单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。
单片机数字时钟实训报告
一、实训目的本次实训旨在通过设计和实现单片机数字时钟,使学生掌握单片机的基本原理和应用技术,提高学生的动手能力和实践技能。
通过实训,使学生熟悉单片机的硬件结构、编程方法和调试技巧,了解数字时钟的设计原理和实现方法,培养学生的创新意识和团队协作能力。
二、实训内容1. 硬件设计(1)单片机选型:MSP430F5529(2)显示模块:OLED显示屏(3)按键模块:4个按键(4)蜂鸣器模块:蜂鸣器(5)电源模块:电源电路2. 软件设计(1)系统初始化:设置系统时钟、初始化OLED显示屏、按键扫描、蜂鸣器控制等(2)实时时钟(RTC)实现:通过MSP430F5529的RTC模块获取当前时间(3)时间显示:在OLED显示屏上显示年、月、日、时、分、秒等信息(4)整点报时:在整点时刻通过蜂鸣器播放音乐进行报时(5)按键控制:通过按键实现时间的设置、闹钟的设定等功能三、实训过程1. 硬件搭建(1)根据设计图纸,连接MSP430F5529单片机、OLED显示屏、按键、蜂鸣器等元器件(2)搭建电源电路,为单片机和显示屏提供稳定的电源(3)检查连接是否正确,确保电路安全可靠2. 软件编写(1)使用C语言编写程序,实现系统初始化、实时时钟获取、时间显示、整点报时、按键控制等功能(2)编写程序代码,实现各个功能模块的代码(3)调试程序,确保程序运行正确3. 系统调试(1)将程序烧录到MSP430F5529单片机中(2)连接OLED显示屏、按键、蜂鸣器等模块(3)检查系统运行情况,确保各个功能正常(4)调整程序参数,优化系统性能四、实训结果与分析1. 系统功能实现本次实训成功实现了单片机数字时钟的功能,包括时间显示、整点报时、按键控制等。
系统运行稳定,各项功能正常。
2. 系统性能分析(1)实时时钟获取:通过MSP430F5529的RTC模块获取当前时间,精度较高(2)时间显示:OLED显示屏显示清晰,信息完整(3)整点报时:在整点时刻通过蜂鸣器播放音乐进行报时,声音清晰(4)按键控制:通过按键实现时间的设置、闹钟的设定等功能,操作方便3. 系统优化(1)优化程序代码,提高程序运行效率(2)改进显示效果,提高用户体验(3)增加闹钟功能,实现定时提醒五、实训总结1. 通过本次实训,使学生掌握了单片机的基本原理和应用技术,提高了学生的动手能力和实践技能2. 学生学会了如何使用MSP430F5529单片机设计数字时钟,了解了数字时钟的设计原理和实现方法3. 学生培养了创新意识和团队协作能力,为今后的学习和工作打下了良好的基础4. 实训过程中,学生遇到了各种问题,通过查阅资料、讨论和请教老师,最终解决问题,提高了学生的解决问题的能力5. 本次实训使学生认识到理论知识与实践相结合的重要性,激发了学生的学习兴趣,为今后的学习和工作奠定了基础。
单片机数字电子钟课程设计实训报告
第一章设计概要设计要求:1、用单片机及6位LED数码管显示时、分、秒00时00分00秒——23时59分59秒循环运行2、整点提醒0,1…23时短蜂鸣3、用按键实现时、分、秒调整*4、省电功能(关闭显示)*5、定时设定提醒如设定08时15分00秒长蜂鸣*6、秒表功能显示××分××秒. ××健复位从00分00秒00开始计时启动从00分00秒00开始计时停止显示实际计时××分××秒××第二章硬件设计方案2.1设计框架图2.2总体设计方案说明设计框架图如图2.1所示总共分为5小部分:时间显示部分,键盘控制部分,单片机部分,闹钟部分,电源部分。
本设计各部分由统一电源集中供电,外加被用电源确保主电源断电时备用电源及时供电避免时间的丢失.采用12MHZ晶振为单片机提供时钟。
显示部分采用容易购买的LED八段数码显示管,利用单片机输出高低电平实现数码管的刷新显示。
LED具有显示明亮,容易识别,价格便宜等优点,特别适合时间的显示。
按键部分采用普通的按建开关,使用查询方式从而节约元件。
12.3数码显示管设计部分.图3.1-1数码显示部分采用八块共阳极八段数码显示管分别对时,分,秒进行显示。
将第三块和第六块显示横杠,可以使时间显示更美观.显示部分采用刷新显示方案.具体如下:当p2口输出第一块的三极管导通,u1数码管被选中,然后p0口输出数字的数码管编码。
如p0口输出时u1数码管就输出数字0。
当循环右移一位是u2被选通显示。
依次类推u1-u8数码管显示完成,再循环显示。
由于单片机的刷新速度很快所以8个数码管看起来就像同时显示的一样。
2.4 键盘控制电路键盘部分采用普通的按键进行设计,使用软件延时消除开关抖动.2.5 闹铃电路闹铃电路通过p1.7口输出1HZ脉冲使蜂鸣器发出间隔为一秒的蜂鸣声.32.6电源电路2.7 总体电路图设计图3.4-15第三章软件设计方案3.1 程序流程图3.2 总体程序设计//主程序ORG 0000HAJMP MAINORG 000BHAJMP TZPORG 0030HMAIN: MOV SP,#60HMOV R4,#00HMOV TMOD,#02hMOV TH0,#06HMOV TL0,#06HSETB EASETB ET0SETB TR0//初始化MOV R2,#3MOV R1,#30HLOOP: MOV @R1,#00HINC R1DJNZ R2,LOOPLCALL RINGPI//7LOOP2: MOV R2,#6MOV R1,#30HLCALL DPZP// 开启节能功能JB P1.0,XWJNJB P1.0,$//// 闹钟设置入口ZWJN: JB P1.1,XPP1LCALL RINGPLCALL RELAY////调时入口XPP1: JB P1.3,XPP2LCALL ZPP1XPP2: JB P1.2,ZPPLCALL ZPP2ZPP: AJMP LOOP2////定时器0中断TZP: PUSH 00HPUSH 03HINC R4 // 软件-硬件延时1秒CJNE R4,#40,ENDIMOV R4,#0INC R5CJNE R5,#100,ENDI //结束MOV R5,#0ZP: MOV R0,#30HMOV R3,#3MOV DPTR,#TCOUNTLCALL TTZPLCALL RINGENDI: POP 03HPOP 00HRETI//定时器0中断返回//软中断1ZPP1: MOV A,31HADD A,#1DA AMOV 31H,ACJNE A,#60H,END1MOV 31H,#00HEND1: LCALL RELAYRET////软中断2ZPP2: MOV A,32H9ADD A,#1DA AMOV 32H,ACJNE A,#24H,END2MOV 32H,#00HEND2: LCALL RELAYRET////延时显示程序RELAY: MOV R6,#255REP: MOV R7,#4REEE: MOV R2,#6MOV R1,#30HLCALL DPZPDJNZ R7,REEEDJNZ R6,REPRET//延时显示程序结束//显示子程序DPZP: MOV P0,#0FFH // 显示横杠MOV P2,#0DBHMOV P0,#0BFH // END DPZP1: MOV P0,#0FFHMOV DPTR,#CHART //P3partMOV A,R2MOVC A,@A+DPTRMOV P2,A //MOV DPTR,#LEDMOV A,@R1JNB F0,DPZPSINC R1SWAP ADPZPS: ANL A,#0FHMOVC A,@A+DPTRMOV P0,ACPL F0DJNZ R2,DPZP1RET//显示子程序结束//不规则循环加一子程序TTZP: MOV A,@R0ADD A,#1DA AMOV @R0,AMOV A,R3MOVC A,@A+DPTRCLR CSUBB A,@R011JNC RTTZPMOV @R0,#0INC R0DJNZ R3,TTZP RTTZP: RET// 响铃程序RING: MOV R0,#34HMOV 24H,#6 RRING: MOV A,31HSUBB A,@R0JNZ ERINGINC R0MOV A,32HSUBB A,@R0DEC R0JNZ ERINGCPL P1.7RETERING: MOV A,R0ADD A,#3MOV R0,ADJNZ 24H,RRINGSETB P2.1RET//// 闹钟调整程序RINGP: MOV 20H,#33HMOV 21H,#6MOV R3,#20MOV 22H,#5LPRP: LCALL RELAY1JB P1.1,LPRP1MOV R3,#20MOV A,20HADD A,#3MOV 20H,ADJNZ 22H,LPRPRETLPRP1: JB P1.3,LPRP2MOV R3,#20HMOV A,20HADD A,#1MOV R0,AMOV A,@R0ADD A,#1MOV @R0,ADA ACJNE A,#60H,LPRP21MOV @R0,#00H13LPRP21: LCALL RELAY1 LPRP2: JB P1.2,LPRP3MOV R3,#20HMOV A,20HADD A,#2MOV R0,AMOV A,@R0ADD A,#1DA AMOV @R0,ACJNE A,#24H,LPRP31MOV @R0,#00H LPRP31: LCALL RELAY1 LPRP3: DJNZ R3,LPRP LPRPEND: RET////闹钟组初始化程序(共5组) RINGPI: MOV R2,#5MOV R1,#41H LPRPI: MOV @R1,#00HDEC R1MOV @R1,#00HDEC R1MOV A,#00HORL A,#0A0HADD A,R2MOV @R1,ADEC R1DJNZ R2,LPRPIRET////延时显示程序1RELAY1: MOV R6,#255REP1: MOV R7,#4REEE1: MOV R2,21HMOV R1,20HLCALL DPZPDJNZ R7,REEE1DJNZ R6,REP1RET//延时显示程序结束//数据表LED: DB0c0H,0f9H,0a4H,0b0H,099H,092H,82H,0f8H,80H,90H,8EH,0A8H//0,1,2,3,4,5,6,7,8,9,F,n CHART: DB 0FEH,0FEH,0FDH,0F7H,0EFH,0BFH,7FHTCOUNT: DB 0,23H,59H,59HEND15第四章心得体会4.1心得体会在整个课程设计完后,总的感觉是:有收获。
单片机电子钟实习实训报告
单片机电子钟实习实训报告一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。
为了更好地了解和掌握单片机原理及应用,提高我们的动手能力,学校组织了一次单片机电子钟实习实训。
本次实习实训的目标是设计并制作一个基于单片机的电子钟,实现小时、分钟和秒的显示,同时具备校时功能。
二、实习实训内容1. 了解单片机的基本原理和工作原理,熟悉单片机的编程环境和编程语言。
2. 学习电子钟的设计原理,掌握电子钟的显示方式、时间计算方法和校时功能实现方法。
3. 设计并制作电子钟的硬件电路,包括单片机、显示模块、按键模块等。
4. 编写电子钟的程序代码,实现小时、分钟和秒的显示,以及校时功能。
5. 进行电路仿真和实际制作,调试并优化电路性能。
三、实习实训过程1. 理论学习和准备:在实习实训开始前,我们学习了单片机的基本原理、编程环境和编程语言,了解了电子钟的设计原理和实现方法。
2. 硬件设计:根据设计要求,我们设计了一个简单的电子钟硬件电路,包括单片机、LCD显示模块、按键模块等。
其中,单片机作为核心控制器,负责时间计算和显示控制;LCD显示模块用于显示时间;按键模块用于实现校时功能。
3. 程序编写:根据硬件设计,我们编写了一个简单的电子钟程序,实现了小时、分钟和秒的显示,以及校时功能。
程序采用C语言编写,利用单片机的定时器进行时间计算,通过I/O口控制LCD显示模块和按键模块。
4. 电路仿真和实际制作:在完成程序编写后,我们使用Proteus软件对电路进行了仿真,验证了电路设计的正确性和可靠性。
随后,我们根据仿真结果实际制作了电子钟电路,并进行了调试和优化。
四、实习实训成果通过本次实习实训,我们成功地设计并制作了一个基于单片机的电子钟,实现了小时、分钟和秒的显示,以及校时功能。
在实习过程中,我们不仅学习了单片机原理和电子钟设计方法,还提高了动手实践能力,为以后的学习和工作打下了坚实的基础。
五、总结本次单片机电子钟实习实训让我们深刻体会到了理论与实践相结合的重要性。
单片机实训报告时钟电路
一、引言随着科技的不断发展,单片机技术在电子设备中的应用越来越广泛。
时钟电路作为单片机应用的一个重要模块,其设计合理与否直接影响到整个系统的稳定性和可靠性。
本次实训旨在通过设计一个基于单片机的时钟电路,掌握单片机在时钟电路中的应用,提高实践操作能力和电路设计能力。
二、实训目的1. 熟悉单片机的基本原理和编程方法。
2. 掌握时钟电路的设计方法和步骤。
3. 学会使用定时器/计数器实现时钟功能。
4. 提高电路焊接和调试能力。
三、实训原理本实训采用AT89C51单片机作为核心控制单元,利用其内置的定时器/计数器实现时钟功能。
具体原理如下:1. 晶振电路:晶振电路产生稳定的高频信号,作为单片机的时钟源。
2. 定时器/计数器:定时器/计数器用于产生时钟脉冲,通过编程设定计数器的初值,实现定时功能。
3. 中断系统:中断系统用于实现闹钟功能,当定时器/计数器计数到设定的时间时,触发中断,执行闹钟功能。
四、系统设计1. 硬件设计(1)晶振电路:采用12MHz晶振,为单片机提供时钟信号。
(2)定时器/计数器:使用定时器/计数器0,工作在模式1(16位定时器/计数器)。
(3)显示模块:使用LCD1602液晶显示器,显示时间、日期和闹钟时间。
(4)按键模块:使用4个按键,分别实现时间设置、闹钟设置、清零和启动/停止功能。
(5)蜂鸣器:用于实现闹钟功能。
2. 软件设计(1)初始化:初始化单片机系统,设置定时器/计数器初值,配置中断系统。
(2)主程序:循环检测按键输入,根据按键功能执行相应操作。
(3)定时器/计数器中断服务程序:定时器/计数器溢出时,调用中断服务程序,更新时间显示,判断是否触发闹钟。
(4)闹钟功能:当设置的时间与当前时间相同时,触发闹钟,蜂鸣器发出声音。
五、电路焊接与调试1. 电路焊接:按照电路原理图,将各个元件焊接在PCB板上。
2. 调试:连接电源,使用示波器检测晶振电路输出波形,使用逻辑分析仪检测定时器/计数器输出波形,确保电路正常工作。
单片机数字钟实训报告
单片机数字钟实训报告摘要:本实训项目旨在设计并实现一个基于单片机的数字钟。
通过对单片机的学习和应用,我们成功地完成了数字钟的设计与制作。
本报告将从设计目标、硬件电路、软件程序以及实际操作等方面进行详细介绍和分析,以期对读者有所启发和帮助。
一、设计目标数字钟是一款常见而实用的电子设备,它能够精准地显示当前的时间,并具备闹钟和定时器等功能。
我们的设计目标是实现一个简洁、易用且功能齐全的数字钟,具备时钟、闹钟和定时器三种模式,并能够通过按键进行切换和设置。
二、硬件电路我们采用了8051系列单片机作为核心控制器,并搭配数码管、按键和蜂鸣器等外围电路。
其中,数码管用于显示时间和设置参数,按键用于切换模式和设置时间,蜂鸣器用于报警。
通过合理的连接和布局,我们成功地搭建了数字钟的硬件电路。
三、软件程序为了实现数字钟的各项功能,我们根据设计目标编写了相应的软件程序。
程序主要包括时钟模式、闹钟模式和定时器模式的切换与设置,时间的显示和更新等功能。
通过对按键的扫描和状态判断,我们能够根据用户的操作进行相应的响应和处理。
在程序的编写过程中,我们注重代码的可读性和可维护性,使其具备良好的扩展性和稳定性。
四、实际操作在完成硬件电路和软件程序的设计后,我们进行了实际的操作测试。
首先,我们通过按键进行模式的切换和时间的设置,验证了数字钟的基本功能。
其次,我们通过调整定时器的参数,测试了数字钟的定时器功能。
最后,我们设置了闹钟并验证了其报警功能。
实际操作的结果表明,我们的数字钟设计达到了预期的效果,并且具备了稳定可靠的性能。
五、总结与展望通过本次实训项目,我们深入学习了单片机的原理和应用,并成功地设计和制作了一个数字钟。
通过实际操作的过程,我们对数字钟的功能和性能有了更深入的了解。
然而,我们也意识到数字钟仍有一些不足之处,比如显示方式的改进和功能的扩展等。
因此,我们对未来的工作进行了展望,并提出了一些改进的建议,以期进一步完善和优化数字钟的设计。
单片机制作时钟实训报告
随着科技的不断发展,单片机作为一种集计算机技术、微电子技术和自动控制技术于一体的综合性技术,已经在各个领域得到了广泛的应用。
为了提高我们的实践能力和创新意识,我们选择了单片机制作时钟这一实训项目,通过实际操作来深入了解单片机的应用和编程技巧。
二、实训目的1. 熟悉单片机的基本原理和结构。
2. 掌握单片机的编程方法和技巧。
3. 学会使用常用电子元器件,如数码管、按键等。
4. 培养团队合作精神和动手能力。
三、实训内容1. 硬件设计(1)选用MCS-51单片机作为核心控制器;(2)使用8位LED数码管显示时间,包括时、分、秒;(3)设计按键模块,实现时间设置、闹钟设定等功能;(4)设计电源模块,保证系统稳定运行。
2. 软件设计(1)编写时钟计数程序,实现时间的精确计数;(2)编写按键扫描程序,实现时间设置、闹钟设定等功能;(3)编写显示控制程序,实现时间信息的实时显示。
3. 系统调试(1)对硬件电路进行连接和调试,确保电路正常运行;(2)对软件程序进行调试,修正错误,优化性能;(3)进行功能测试,验证系统功能的正确性和稳定性。
1. 需求分析根据实训要求,分析时钟功能,确定硬件和软件设计方案。
2. 硬件选型与电路设计根据需求分析,选择合适的单片机、数码管、按键等元器件,并设计电路图。
3. 软件编程使用C语言编写时钟计数、按键扫描、显示控制等程序。
4. 实物制作与调试按照电路图焊接电路板,组装元器件,进行实物制作。
然后对硬件电路和软件程序进行调试,确保系统正常运行。
5. 功能测试与优化对系统进行功能测试,验证时钟的准确性、按键功能的可靠性、显示的清晰度等。
根据测试结果对系统进行优化,提高性能。
五、实训成果1. 成功制作了一款基于单片机的电子时钟,具有实时显示、时间设置、闹钟设定等功能;2. 掌握了单片机的基本原理和编程方法,提高了实践能力;3. 学会了使用常用电子元器件,为以后的学习和工作打下了基础。
六、实训总结通过本次单片机制作时钟实训,我们深入了解了单片机的应用和编程技巧,提高了实践能力和创新意识。
51时钟设计实训报告
51时钟设计实训报告一、项目背景随着社会的发展与科技的进步,电子产品在我们日常生活中扮演着越来越重要的角色。
而钟表作为一种时间显示工具,也不断得到升级与创新。
本项目旨在设计一种基于51单片机的数字时钟,通过数字显示屏实时显示时间,并具备设置闹钟功能,以方便人们更好地了解和掌握时间。
二、项目原理本项目采用基于51单片机的设计方案,并通过数字显示屏显示时间。
其工作原理如下:1. 单片机工作频率设置为12MHz;2. 通过外部晶振将时钟信号输入到单片机的时钟引脚;3. 使用数码管显示时钟的小时、分钟和秒数;4. 通过按键实现时间的设置和闹钟的设置功能;5. 利用定时器中断实现时间的自动更新,保证时钟的准确性;6. 在需要闹钟响铃时,通过蜂鸣器发出声音提醒用户。
三、硬件设计1. 硬件元件清单- 51单片机- 12MHz晶振- 数码管- 按键- 电阻- 蜂鸣器- 杜邦线- 面包板2. 电路连接示意图![电路连接示意图](circuit.png)3. 数码管显示原理数码管将十进制数字通过多段共阴/共阳的LED管显示出来。
由于本项目中使用的是共阳数码管,因此需要在控制单元中采用共阴极接法。
通过依次给不同的数码管段加电,即可显示相应的数字。
四、软件设计1. 软件流程图软件的设计使用C语言进行编程,主要包括以下步骤:1. 初始化:设置单片机工作频率、端口输入输出状态,打开定时器中断;2. 显示时间:获取当前的小时、分钟和秒数,将其转换为相应的数码管段码,通过IO口输出到数码管上进行显示;3. 设置时间:通过按键输入,修改单片机内部存储的时间;4. 闹钟设置:通过按键输入,设置闹钟的小时和分钟;5. 定时器中断:在定时器中断函数中进行时间的更新和闹钟的判断;6. 响铃:当闹钟时间与当前时间相同时,通过蜂鸣器发出声音提醒用户。
2. 核心代码以下是部分核心代码的示例:cinclude <reg52.h>定义数码管段码与显示端口的对应关系unsigned char segTable[12] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99,0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF, 0xFF};定义全局变量unsigned char hour, min, sec, setHour, setMin;unsigned char alarmHour, alarmMin;bit isAlarmOn;初始化函数void init() {设置单片机工作频率TMOD = 0x01;设置数字管段码端口为输出P2 = 0x00;P0 = 0x00;打开定时器中断ET0 = 1;EA = 1;初始化全局变量hour = 0;min = 0;sec = 0;setHour = 0;setMin = 0; alarmHour = 0; alarmMin = 0;isAlarmOn = 0;}主函数void main() {init();while (1) {showTime();setTime();setAlarm();}}定时器中断函数void timer0() interrupt 1 { TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; sec++;if (sec == 60) {sec = 0;min++;if (min == 60) {min = 0;hour++;if (hour == 24) {hour = 0;}}}if (isAlarmOn && alarmHour == hour && alarmMin == min) { ring();}}数码管显示函数void showNumber(unsigned char num) {P0 = segTable[num];delay();P0 = 0xFF;}数码管显示时间函数void showTime() { unsigned char temp; temp = hour / 10; showNumber(temp); P2 = 0x10;delay();temp = hour % 10; showNumber(temp); P2 = 0x20;delay();temp = min / 10; showNumber(temp); P2 = 0x40;delay();temp = min % 10; showNumber(temp);P2 = 0x80;delay();P2 = 0x00;}五、实训心得通过本次实训,我深入了解和学习了51单片机的原理和使用方法,掌握了数字时钟的设计与实现。
单片机时钟计时器设计实训报告
北京工业职业技术学院单片机实训报告时钟计时器姓名学号班级指导教师实训时间:2011/12/5-2011/12/16目录1 问题描述 (2)2 设计思想 (2)3 硬件设计 (2)3.1定时器\计数器 (2)3.2中断系统 (3)3.3键盘和LED数码管显示器 (3)4 软件设计 (4)4.1主程序 (4)4.2.数码管显示模块 (4)4.3.定时器/计数器T0中断服务程序 (4)4.4 按键处理模块 (4)5 仿真分析 (7)6 课程设计总结 (7)参考文献 (8)附录(源程序清单) (9)11 问题描述时钟计时器广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。
目前所使用的时钟计时器大多是指针式或集成电路型的,结构相对复杂、测试功能单一。
本仪器应当具有实时时钟、整点报时、手动调时等功能。
2 设计思想用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己设置)。
形成定时时间为50ms。
用片内RAM 的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
3 硬件设计3.1定时器\计数器(1)、MCS-51系列中51子系列有两个16位的可编程定时\计数器:定时\计数器T0和定时\计数器T1。
它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。
方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动、停止进行控制。
(2)、每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通过编程设定来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
桂林单片机实训时钟计时器姓名学号班级指导教师实训时间:2011/12/5-2011/12/16目录1 问题描述..................................................................... 错误!未定义书签。
2 设计思想..................................................................... 错误!未定义书签。
3 硬件设计..................................................................... 错误!未定义书签。
3.1定时器\计数器.................................................... 错误!未定义书签。
3.2中断系统............................................................. 错误!未定义书签。
3.3键盘和LED数码管显示器............................... 错误!未定义书签。
4 软件设计..................................................................... 错误!未定义书签。
4.1主程序................................................................. 错误!未定义书签。
4.2.数码管显示模块.............................................. 错误!未定义书签。
4.3.定时器/计数器T0中断服务程序 .................. 错误!未定义书签。
4.4 按键处理模块.................................................... 错误!未定义书签。
5 仿真分析..................................................................... 错误!未定义书签。
6 课程设计总结............................................................. 错误!未定义书签。
参考文献......................................................................... 错误!未定义书签。
附录(源程序清单)..................................................... 错误!未定义书签。
11 问题描述时钟计时器广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。
目前所使用的时钟计时器大多是指针式或集成电路型的,结构相对复杂、测试功能单一。
本仪器应当具有实时时钟、整点报时、手动调时等功能。
2 设计思想用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己设置)。
形成定时时间为50ms。
用片内RAM 的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
3 硬件设计3.1定时器\计数器(1)、MCS-51系列中51子系列有两个16位的可编程定时\计数器:定时\计数器T0和定时\计数器T1。
它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。
方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动、停止进行控制。
(2)、每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通过编程设定来实现。
(3)、每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式。
通过编程可设定工作于某种方式。
四种工作方式为:13位定时\计数器、16位定时\计数器、8位自动重置定时\计数器、两个8位定时\计数器(只有T0有)(4)、每一个定时计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
23.2中断系统(1)、MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。
(2)、MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。
中断允许寄存器IE的字节地址为A8H,可以进行位寻址。
系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断允许位置“1”。
(3)、MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制,高优先级和低优先级。
通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址。
如果某位被置“1”,则对应的中断源被设为高优先级;如果某位被清零,则对应的中断源被设为低优先级。
对于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0、定时计数器T0中断、外部中断1、定时计数器T1中断、串行口中断。
通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。
3.24、MCS-51单片机响应中断的条件为:中断源有请求且中断允许。
3.3键盘和LED数码管显示器键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。
键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。
键盘的结构形式一般有两种:独立式键盘和矩阵式键盘。
矩阵式键盘的工作方式有3种:查询工作方式、定时扫描工作方式和中断工作方式。
LED数码管显示器:在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。
LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。
在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。
所谓译码方式是指由显示字符转换得到对应的字段码的方式。
对于LED数码管显示器,通常的译码方式有两种:硬件译码方式和软件译码方式。
LED数码管在显示时,通常有两种显3示方式:静态显示方式和动态显示方式。
在使用时可以把它们组合起来。
在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。
4 软件设计电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等。
4.1主程序主程序执行流程如图1所示,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。
4.2.数码管显示模块本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。
采用软件译码动态显示。
4.3.定时器/计数器T0中断服务程序定时器/计数器T0用于时间计时。
选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把它们的值放到存储单元的指定位置。
定时器/计数器T0中断服务程序流程图如图2所示。
4.4 按键处理模块MCS-51单片机实现时钟计时显示的基本方法①首先要计算计数初值时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MMCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131毫秒,离1秒还差好远。
为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125毫秒,这样当计数溢出8次就可得到41秒,而8次计数可用软件方法实现。
为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,当设定单片机为6MHz晶振,设计数初值为X,则有如下等式:(216-X)×2us=125000us计算得计数初值X=3036,二进制表示为0000101111001101,十六进制表示为0BCDH。
②定时器定时采用中断方式完成,以便于通过中断服务程序进行溢出次数(每次125毫秒)的累计,计满8次即得到秒计时。
③通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时④设置时钟显示及显示缓冲区假定时钟时间在六位LED数码管(LED5~LED0)上进行显示(时、分、秒各占两位)。
为此,要在内部RAM中设置显示缓冲区,共6个单元(79H~7EH),与数码管的对应关系为:LED5→7EH、LED4→7DH、LED3→7CH、LED2→7BH、LED1→7AH、LED0→79H。
即显示缓冲区从左向右依次存放时、分、秒的数值。
⑤假定已有LED显示程序为SMXS可供调用程序流程①主程序(MAIN)主程序的主要功能是进行定时器/计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。
②中断服务程序(PIT0)中断服务程序的主要功能是进行计时操作。
程序开始先判断计数溢出是否满了8次,不满8次表明还没达到最小计时单位秒,中断返回;如满8次则表明已达到最小计时单位秒,程序继续向下执行,进行计时操作。
③加1子程序(DAAD1)加1子程序用于完成对秒、分和时的加1操作,中断服务程序中在秒、分、时加1时共有三处调用此子程序。
加1操作共包括以下三项内容:合数:由于每位LED显示器对应一个8位的缓冲单元,因此由两位BCD码表示的时间值各占用一个缓冲单元,且只占其低4位。
为此在加1运算之前需把两个缓冲单元中存放的数值合并起来,构成一个字节,然后才能进行加1运算。