简易电子时钟的设计

合集下载

多功能电子时钟设计

多功能电子时钟设计

多功能电子时钟设计设计一个多功能电子时钟可以使用汇编语言来实现。

电子时钟应包括以下功能:1.显示当前时间2.显示当前日期3.显示当前星期几4.闹钟设置和提醒5.24小时制和12小时制的切换6.定时器功能整体设计思路如下:1.初始化显示屏和设置相关寄存器,包括时钟控制和中断配置寄存器。

2.设置时钟中断,以确保时钟可以按照设定的时间间隔更新时间。

3.初始化闹钟和定时器的相关变量。

4.进入主循环,在循环中读取按键输入并处理各种功能。

5.根据按键输入进行相应的处理:-如果是设置时间按键,进入时间设置模式,等待用户输入。

通过设置小时和分钟变量来修改时间,并在显示屏上更新时间。

-如果是设置日期按键,进入日期设置模式,等待用户输入。

通过设置年、月和日变量来修改日期,并在显示屏上更新日期。

-如果是设置闹钟按键,进入闹钟设置模式,等待用户输入。

通过设置闹钟小时和分钟变量来修改闹钟时间。

-如果是闹钟启动按键,开启或关闭闹钟功能。

-如果是设定定时器按键,进入定时器设置模式,等待用户输入。

通过设置定时器小时和分钟变量来修改定时器时间。

-如果是定时器启动按键,开启或关闭定时器功能。

-如果是24小时制和12小时制的切换按键,切换时钟显示模式。

6.每次闹钟中断,检查当前时间是否与设定闹钟时间相匹配,如果匹配则触发闹钟,并在显示屏上显示提醒信息。

7.每次定时器中断,检查当前时间是否与设定定时器时间相匹配,并触发定时器提醒,并在显示屏上显示提醒信息。

此外,还需要编写相应的子程序来处理时钟中断和定时器中断的逻辑。

总之,这是一个简单的多功能电子时钟的设计,可以使用汇编语言来实现。

通过以上步骤,可以实现时钟的基本功能,并且可以通过按键进行设置和切换不同的功能。

通过设置闹钟和定时器,可以实现提醒功能。

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

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

基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。

二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。

1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。

以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。

同时,根据用户按键的操作,可以调整时间的设定。

2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。

可以显示当前时间和设置的闹钟时间。

初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。

3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。

通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。

4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。

同时可以添加外部中断用于响应用户按键操作。

三、主要功能和实现步骤1.系统初始化。

2.设置定时器,每1秒产生一次中断。

3.初始化LCD显示屏,显示初始时间00:00:00。

4.查询键盘状态,判断是否有按键按下。

5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。

-数字键:根据键入的数字进行时间的调整和闹钟设定。

6.根据定时器的中断,更新时间的显示。

7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。

8.循环执行步骤4-7,实现连续的时间显示和按键操作。

四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。

但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。

简单的数字时钟(verilog设计)

简单的数字时钟(verilog设计)
Verilog作为一种硬件描述语言,可用于设计和实现数字系统,包括数字时钟。 通过Verilog设计数字时钟,可以加深对数字系统和Verilog语言的理解,并提高 设计能力。
设计目标与要求
设计一个简单的数字 时钟,能够显示时、 分、秒。
时钟应具有可靠性、 稳定性和可扩展性。
要求使用Verilog语 言实现,并能够在 FPGA或ASIC上实现。
设计思路及流程
• 设计思路:采用模块化设计方法,将数字时钟划分为不同的模 块,如计数器模块、显示模块等。每个模块负责实现特定的功 能,并通过接口与其他模块进行通信。
设计思路及流程
设计流程 1. 确定设计需求和目标。 2. 制定设计方案和计划。
设计思路及流程
3. 编写Verilog代码,实现各个模块的功能。 5. 根据测试结果进行调试和优化。
未来改进方向探讨
提高计时精度
通过改进算法或采用更高 性能的硬件平台,提高数
字时钟的计时精度。
降低资源占用
优化代码结构,减少不 必要的资源占用,提高 时钟系统的运行效率。
增加实用功能
拓展应用领域
考虑增加闹钟、定时器 等实用功能,使数字时 钟更加符合用户需求。
探索将数字时钟应用于 更多领域,如智能家居、
数据类型与运算符
Verilog中的数据类型包括
整型、实型、时间型、数组、结构体等。
Verilog中的运算符包括
算术运算符、关系运算符、逻辑运算符、位运算符等。
顺序语句与并行语句
Verilog中的顺序语句包括
赋值语句、条件语句、循环语句等,用于描述电路的时序行为。
Verilog中的并行语句包括
模块实例化、连续赋值语句、门级电路描述等,用于描述电路的并行行为。

74LS161电子时钟设计

74LS161电子时钟设计

74LS161电子时钟设计首先,我们需要生成一个稳定的时钟信号,用于驱动计数器的计数。

可以使用定时器芯片或者晶振电路来生成一个准确的时钟信号。

在本设计中,我们使用一个1Hz的晶振电路来生成时钟信号。

接下来,我们需要将计数器芯片74LS161与显示模块连接起来,以显示时间数据。

我们可以使用数码管作为显示模块,利用74LS161的输出线连接到数码管的显示线上。

74LS161的输出线共有四个,分别对应四位二进制数的四个位。

我们需要将四个输出线与四个数码管的显示线相连接,使得74LS161的输出可以被数码管显示出来。

然后,我们需要将计数器的计数范围设置为12小时制。

由于74LS161是一个四位计数器,可以表示的最大数为15(二进制1111),所以我们需要在12小时范围内进行循环计数。

为了实现这一功能,我们可以将计数器的CLR端口(清零端口)与一个12小时的比较器相连,当计数器达到12时,比较器输出高电平,将CLR端口拉低,实现清零操作。

此外,我们还可以添加时间数据的设置功能,以让用户可以自由设置时间。

可以使用按钮来控制时间的设置操作。

当用户按下设置按钮时,可以通过74LS161的LOAD端口来锁存时间数据。

在锁存状态下,用户可以通过增加或减少按钮来修改时间。

当用户完成设置后,再次按下设置按钮,锁存状态解除,时间数据开始更新。

最后,为了使电子时钟更加美观,我们可以添加LED背光灯。

可以使用74LS161的输出线来驱动LED灯,使得LED灯在时间数据显示时亮起,提高可视性。

在整个设计过程中,需要注意的是信号的稳定性和准确性。

时钟信号的稳定性将直接影响时间数据的准确性。

因此,在选择晶振电路或者定时器芯片时,需要选择稳定性好的产品,保证时钟信号的准确性。

另外,还需要注意电平的匹配,避免因电平不匹配而导致显示不正确的情况发生。

以上是一个基本的74LS161电子时钟设计,通过合理的连接和功能设置,可以实现准确显示和修改时间数据的功能。

简易电子钟设计范文

简易电子钟设计范文

简易电子钟设计范文电子钟是一种通过电子技术实现时间显示的设备。

它通常由一个数字显示屏,一个控制电路和一个电源组成。

其主要功能是显示小时、分钟和秒钟等时间信息,可以准确地显示时间,并可以根据需要设置闹铃功能。

设计一款简易电子钟可以使用Arduino等开发板或单片机来实现。

首先,我们需要选择一块合适的数字显示屏。

常见的数字显示屏有数码管和液晶显示屏两种类型,它们的显示原理和控制方式有所不同。

如果选择数码管作为显示屏,可以考虑使用常见的7段数码管,它由八个LED灯组成,可以显示0-9的数字以及一些字母和特殊符号。

数码管的控制方式是通过控制每个LED灯的亮灭来实现显示,可以使用数字输出口来控制。

Arduino的数字输出口可以输出高电平(5V)和低电平(0V),通过控制输出口的电平,就能够控制数码管的亮灭。

如果选择液晶显示屏作为显示器,可以选择字符型液晶显示屏或者图形型液晶显示屏。

字符型液晶显示屏通常可以显示一些字符或者数字,它的控制方式是通过并行或者串行接口来控制,可以使用开发板的GPIO口来实现。

图形型液晶显示屏可以显示更多的信息,它的控制方式是通过SPI接口或者I2C接口来控制,这需要相应的驱动库或者芯片来实现。

无论选择数码管还是液晶显示屏,我们都需要编写程序来控制显示。

程序的核心是一个循环,其中使用时钟模块来获取当前的时间,并使用相应的控制方式将时间信息显示在显示屏上。

如果需要设置闹铃功能,可以在循环中判断当前时间和设置的时间是否相等,如果相等则触发闹铃。

设计一个简易电子钟的完整步骤如下:1. 选择适合的开发板或者单片机,例如Arduino。

2.选择合适的显示屏,例如7段数码管或者液晶显示屏。

3.连接显示屏到开发板,根据显示屏的类型选择合适的引脚连接方式。

4.编写代码来控制显示屏显示时间信息。

5.添加时钟模块,用来获取当前的时间信息。

6.根据需要添加闹铃功能。

7.测试电子钟的功能和性能,不断优化改进。

如何设计一个简单的电子时钟电路

如何设计一个简单的电子时钟电路

如何设计一个简单的电子时钟电路设计一个简单的电子时钟电路是一项有趣且实用的任务。

电子时钟的设计需要合理的电路布局和正确的连接线路,以确保时钟的准确性和可靠性。

下面将介绍如何设计一个简单的电子时钟电路。

1. 器件和材料在设计电子时钟电路之前,我们需要准备一些基本的器件和材料,包括:- 一个微控制器芯片(MCU),如ATmega328P- 一个时钟晶振,通常为16MHz- 一个液晶显示屏(LCD)- 若干个按键开关- 电位器(可调电阻)- 电容和电阻等辅助元件- 面包板、连接线和电源等2. 电路连接首先,将MCU和其他器件通过连接线连接起来。

按照电路原理图的指示,将MCU引脚与其他器件的引脚相连。

确保连接的准确性和稳定性,以免出现电路故障。

3. 电源供应为电子时钟提供稳定的电源是至关重要的。

可以使用电池或稳定的直流电源作为时钟的电源。

确保电源的电压和电流满足器件的工作要求,并通过稳压电路或电池管理芯片来保持电压的稳定。

4. 时钟晶振时钟晶振是电子时钟的核心元件,它提供了精确的时钟信号。

根据晶振的规格,将其连接到MCU的时钟引脚上,并注意晶振的正确方向和极性。

5. 液晶显示屏液晶显示屏用于显示时间信息。

根据LCD的规格和引脚定义,将其与MCU的数据和控制引脚相连接。

对于字符型LCD,可以使用专门的LCD库函数来控制显示内容和显示模式。

6. 按键开关按键开关用于设置和控制电子时钟的功能。

将按键开关连接到MCU的输入引脚上,并通过编程实现按键的读取和响应功能。

可以使用外部中断或轮询方式来检测按键的状态变化。

7. 程序编写使用相应的开发软件和语言编写电子时钟的程序。

根据MCU的型号和规格,选择合适的编程语言(如C或C++),并使用相应的开发工具进行编程。

编写程序以实现时间的读取、显示和控制功能,以及按键的响应和时间的更新等。

8. 调试和测试完成程序编写后,将代码下载到MCU上,并进行调试和测试。

通过外部显示屏、示波器等设备,检查时钟的运行状态和准确性。

简易电子时钟

简易电子时钟

难度等级:A简单
题目编号:013
简易电子时钟
一、功能介绍
该作品只利用单片机的最小系统板、一块时钟芯片和一块1602的液晶实现年、月、日、时、分、秒的显示及设定,最好有闹钟的功能。

二、设计要求
1.时间显示误差小于3s
2.能够设置时间及具有闹钟报警功能。

三、参考方案设计
1.原理框图见图1。

图1 红外线检测部分电路图
2.制作思路
(1)本作品可以有两种方案,一是直接用单片机的定时器;二是用一块时钟芯片实现时钟的控制;
(2)本作品主要分为两大部分来调试,一是时钟芯片的调试,二是显示器的调试;
(3)该作品集趣味性、实用性于一体,能很好的激发同学们的兴趣;
3.设计注意的地方
图2 PCF8563时钟芯片的原理图。

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

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

基于单片机的简易电子时钟设计电子时钟是一种以数字形式显示时间的设备,它使用电子元件来实现计时和显示功能。

基于单片机的简易电子时钟设计是一种使用单片机芯片作为核心控制器的时钟设备。

本文将介绍一个基于单片机的简易电子时钟设计的方案,并详细讨论其硬件和软件实现。

一、硬件设计基于单片机的电子时钟设计的核心是单片机芯片,这里我们选择AT89C51作为控制器。

AT89C51是一款典型的80C51系列单片机,具有高速、低功耗和强大的计数和定时功能。

此外,还需要以下硬件元件实现电子时钟设计:1.电源模块:提供电源给单片机和其他电路元件。

2.晶振:用于提供时钟信号给单片机。

3.液晶显示模块:用于显示时间。

4.按键模块:用于设置和调节时间,以及其他功能操作。

5.蜂鸣器:用于发出小时、分钟和秒的提示音。

二、软件设计基于AT89C51的电子时钟设计需要编写相应的嵌入式软件程序。

以下是设计思路和主要功能点:1.初始化设置:在电子时钟启动时,进行一些初始化设置,如设置系统时钟、显示模式和其他参数。

2.时钟计时:使用定时器和计数器模块,实现时钟的计数功能。

根据时钟信号逐秒递增,并根据设定的模式进行小时、分钟和秒的更新。

3.时间显示:将当前的小时、分钟和秒数转化成对应的数字,在液晶显示模块上显示出来。

4.时间调整:通过按键模块,实现时间的调整功能。

可以通过按键设置、递增和递减来调整小时、分钟和秒。

5.其他功能:可以添加一些其他功能,如闹钟设置、闹铃功能等,以增强电子时钟的实用性。

三、实施步骤1.硬件搭建:按照上述硬件设计需求,搭建电子时钟的硬件电路。

注意连接正确的引脚,提供稳定的电源。

2.软件编写:根据设计思路和功能点,编写相应的嵌入式软件程序。

使用C语言或汇编语言编写代码,并调试和测试程序。

4.测试和优化:将电源连接到电子时钟,进行测试和优化。

检查时钟的计时和显示功能是否正常,是否可以调整时间。

四、实际应用总结:基于单片机的简易电子时钟设计是一种使用单片机芯片作为核心控制器的时钟设备。

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

单片机课程设计报告设计题目:简易电子时钟的设计院别:专业班级:学号:姓名:指导教师:摘要通过一学期单片机的学习,对其已经有了初步的了解,但是随着社会的不断发展,单片机的应用正在不断地走向深入,它特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

我们也借此课程设计的机会,对单片机有更深一步的了解与学习。

本次课程课程设计的目的是设计一个简易的电子时钟,通过一个8位共阴极数码管进行时、分、秒的显示,另外设置7个按键,一个用来调整小时,一个用来调整分钟,一个开关控制是否调整时间。

关键词:AT89C51,数码管,按键,DS1303时钟芯片1.概述本设计是锻炼我们的自学能力合作能力,依靠团队的力量去完成一项具体的任务系统的训练了所学知识,设计的过程必将是难忘的,这也将是大学向社会工作过度的一个重要阶段。

本阶段过后要去能够熟练的运用单片机中的计数器、定时器、中断、数码管显示等参考教材或者相关资料,采用C语言实现数字时钟功能,在数码管上实时显示,并运用Protues软件绘制电路原理图,并进行仿真验证和误差分析。

2.系统总体方案设计2.1系统方案的确定用6位数码管,可以显示出时、分、秒;用P2端口控制位选,由定时器进行时间的控制(秒);当总按键按下时可以进行时间调整;2.2方案分析2.3系统总框图图2.13.系统硬件系统设计3.1复位电路单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。

单片机也一样,当单片机系统在运行中,受到环境干扰出现程跑飞的时候,按下复位按钮内部的程序自动从头开始执行。

复位电路的工作原理:在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。

所以可以通过按键的断开和闭合在运行的系统中控制其复位。

单片机复位电路如下图图3.13.2时钟电路单片机运行需要时钟支持——就像计算机的CPU一样,如果没有时钟电路来产生时钟驱动单片机,那单片机就不能执行程序。

单片机可以看成是在时钟驱动下的时序逻辑电路。

以5l单片机为例随明:51单片机为l2个时钟周期执行一条指令。

也就是说单片机运行一条指令,必须要用r2个时钟周期。

没有这个时钟,单片机就跑不起来了,也没有办法定时和进行和时间有关的操作。

时钟电路是微型计算机的心脏,它控制着计算机的二个节奏。

CPU就是通过复杂的时序电路完成不同的指令功能的。

51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。

如果没有时钟电路来产生时钟驱动单片机,单片机是无法工作的。

单片机时钟电路是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0 的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不工作。

3.3数码管显示器LED数码显示器是1种由LED发光二极管组合显示字符的显示器件。

它使用了8个LED 发光二极管,其中7个用于显示字符,1个用于显示小数点。

LED数码显示器有两种连接方法:(1)共阳极接法。

把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。

当阴极端输入低电平时,段发光二极管就导通点亮,而输入高电平时则不点亮。

(2)共阴极接法。

把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。

每个发光二极管的阳极通过电阻与输入端相连。

当阳极端输入高电平时,段发光二极管就导通点亮,而输入低电平时则不点亮。

在本设计中所采用的是共阴极LED数码显示器,其引脚排列如图3.3所示:图3.33.474HC573锁存器74LS245是我们常用的芯片,用来驱动led或者其他的设备,他是8路同相三态双向总线收发器,可双向传输数据。

74LS245还具有双向三态功能,既可以输出,也可以输入数据。

当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)*DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。

在应用系统中,所有的系统扩展的外围芯片都需要总线驱动,本设计时钟芯片是系统扩展外围芯片,所以就需要总线驱动器,3.5DS1302时钟芯片1.简介DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路.提供秒分时日日期.月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式.DS1302 与单片机之间能简单地采用同步串行的方式进4.系统软件设计4.1程序设计思路总体程序主要有主程序,中断定时程序,数码管显示程序,按键扫描程序,74HC595的读写程序,数据更新程序,蜂鸣器程序。

先数码管显示(中断定时,当一秒时间到时,数码管加一),当总按键按下时,计时停止,执行按键扫描程序,等待调时按键的按下,当有按键按下时,进行相应的改变,再次按下总按键,继续显示时间。

特别再有按键按下时,蜂鸣器发声。

4.2主要程序(1)主函数void main(){show();write_ds1302(0x84,0x12); //初始化write_ds1302(0x82,0x00);write_ds1302(0x80,0x00);whil e (1){set_rtc();read_rtc();display();}(2)显示函数void display()//显示时间函数{unsigned int a=1;P2=0x01;P0=data_7seg[hour/16];d elay(a);P2=0x02;P0=data_7seg[hour%16];P0_7=0;delay(a);P2=0x04;P0=data_7seg[min/16];d elay(a);P2=0x08;P0=data_7seg[min%16];P0_7=0;delay(a);P2=0x10;P0=data_7seg[sec/16];d elay(a);P2=0x20;P0=data_7seg[sec%16];d elay(a);}4.3流程图5.调试及仿真软件运行效果和预期一致。

6.总结通过此次电子时钟的设计,我对单片机又进行了复习与巩固,在此过程中,也学到了新的知识,比如时钟芯片的应用。

关于这次课程设计,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。

在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;养成注释程序的好习惯是非常必要的,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也能为资料的保存和交流提供了方便。

除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。

此次的设计,其实也是我们所学知识的一次综合运用,让我深深的认识到了学习单片机要有一定的基础,要有电子技术方面的数字电路和模拟电路等方面的理论基础,特别是数字电路;也要有编程语言的汇编语言或C语言。

要想成为单片机高手,我们首先要学好汇编语言,然后转入C语言学习,所以我们不能学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。

7.致谢课程设计是培养我们工作能力的一个实践性的学习环节。

它不但是我们在大学学习中所学知识的一次综合复习与考查,同时也是理论联系实际的一个过程,为以后从事专业技术工作的一次准备。

通过此次课程设计,培养了我综合运用所学的基础理论课、技术基础课、专业课的知识和实践技能去分析和解决实际工作中的一般工程技术问题的能力,使我建立了正确的设计思想,学会了如何把平时所学的理论知识运用到实践当中去。

掌握了单片机的数字时钟设计的一般程序、规范和方法,并进一步巩固、扩大和深化了我所学的基本理论,基本知识和基本技能,提高了我设计计算、计算机制图、设计说明书、正确使用技术资料,标准手册等工具书的能力。

在课程设计的过程中,虽然本人在指导老师的帮助下对所设计的问题有初步的了解。

但由于本人缺少实际工作经验,遇到了一些设计和实际制作中的问题,受到同学和指导老师的指导与帮助,从而得到了全面的解决同时也受到各位老师优良工作作风的影响,培养了我严肃认真、一丝不苟和实事求是的工作作风,并树立了正确的生产观、经济观和全局观。

在设计中,由于个人能力有限,设计中漏洞和错误在所难免,敬请各位老师指正批评,以使我对自己的不足得到及时发现并修正。

通过此次毕业设计,希望能把所学的知识有机的联系起来,培养自己分析问题,解决问题的能力,为充实自己,并在未来工作岗位上好好工作打下坚实的基础。

在这里,向在这次课程设计中给予过帮助我的老师表示衷心的谢意。

8.附件源程序#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchardata_7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };uchar hour,min,sec;sbit shi=P1^0;sbit fen=P1^1;sbit miao=P1^2;sbit P1_3=P1^3;sbit rst=P1^4;sbit sck=P1^5;sbit io=P1^6;sbit fm=P1^7;sbit P0_7=P0^7;/*函数声明:*/void write_ds1302_byte(uchar dat);void write_ds1302(uchar add,uchar dat); uchar read_ds1302(uchar add);void read_rtc();void set_rtc();void display();void delay(int n);void show();void main(){show();write_ds1302(0x84,0x13); //初始化write_ds1302(0x82,0x00);write_ds1302(0x80,0x00);while (1){set_rtc();read_rtc();display();}}/*DS1302单字节写入:*/void write_ds1302_byte(uchar dat){uchar i;for (i=0;i<8;i++)sck=0;io=dat&0x01;dat=dat>>1;sck=1;}}/*DS1302多字节写入:*/void write_ds1302(uchar add,uchar dat) {rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);write_ds1302_byte(dat);rst=0;_nop_();io=1;sck=1;}/*DS1302读取:*/uchar read_ds1302(uchar add){uchar i,value;rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);for (i=0;i<8;i++){value=value>>1;sck=0;if (io) value=value|0x80;sck=1;rst=0;_nop_();sck=0;_nop_();sck=1;io=1;return value;}void set_rtc() //调整时间{if(P1_3==0){rst=0;//if (shi==0) delay(100);if (shi==0){hour=(hour>>4)*10+(hour&0x0f);hour++;if (hour==24) hour=0;hour=((hour/10)<<4)+(hour%10);write_ds1302(0x84,hour);}if (fen==0) delay(100);if (fen==0){min=(min>>4)*10+(min&0x0f);min++;if (min==60) min=0;min=((min/10)<<4)+(min%10);write_ds1302(0x82,min);}if (miao==0) delay(100);if (miao==0){sec=(sec>>4)*10+(sec&0x0f);sec++;if (sec==60) sec=0;sec=((sec/10)<<4)+(sec%10);write_ds1302(0x80,sec);}}}void read_rtc()//读取时间{hour=read_ds1302(0x85);min=read_ds1302(0x83);sec=read_ds1302(0x81);}void display()//显示时间函数{unsigned int a=1;P2=0x01;P0=data_7seg[hour/16];delay(a);P2=0x02;P0=data_7seg[hour%16];P0_7=0;delay(a);P2=0x04;P0=data_7seg[min/16];delay(a);P2=0x08;P0=data_7seg[min%16];P0_7=0;delay(a);P2=0x10;P0=data_7seg[sec/16];delay(a);P2=0x20;P0=data_7seg[sec%16];delay(a);}void delay(int n) //延时函数{unsigned int i,j;for(i=0;i<n;i++){for(j=0;j<121;j++){;}}}void show()//学号{unsigned int m;for(m=0;m<50;m++){uint a=10;P2=0x08;P0=data_7seg[2];delay(a);P2=0x10;P0=data_7seg[0];delay(a);P2=0x20;P0=data_7seg[4];delay(a);}}。

相关文档
最新文档