用LED数码管设计的可调式电子钟

合集下载

LED电子钟使用说明书(ZXSJ-05L)

LED电子钟使用说明书(ZXSJ-05L)

LED电子钟使用说明书(ZXSJ-05L)一、功能简介1、时分、月日、温度单项显示或三项交替显示。

2、12/24小时制可设定。

3、八组闹钟功能。

4、整点提醒功能。

5、停电继续走时。

6、亮度自动调整(22:00~7:00亮度减半)。

7、自动闰年调整(2000-2099年)。

8、自动测量温度(-9~50℃)。

二、操作说明1、按键名称:RESET(复位)、(设置/移动)、▲(上调)、▼(下调)、END(结束/止闹)。

2、开关名称:ALTER ON/OFF(交替显示开/关)、ALARM ON/OFF(闹铃开/关)。

3、指示灯名称:AM(上午)、PM(下午。

4、年月日小时分钟(日期和时间)设置:按设置键四位年份闪烁,按上调键或下调键修改年(年份四位数平时不显示或者说隐藏显示,只有在首次按设置键时借用四位数码闪烁显示,例如闪烁显示2009,表示2009年,此时按上调键或下调键可修改年份);再按设置键月闪烁,按上调键或下调键修改月;再按设置键日闪烁,按上调键或下调键修改日;再按设置键小时位闪烁,按上调键或下调键修改小时;再按设置键分钟位闪烁,按上调键或下调键修改分钟;按结束键回到正常显示状态。

5、12/24小时制设置:在正常显示状态下,按住上调键三秒,则可进行12小时制与24小时制的互相切换,12小时制有上午(AM)、下午(PM)指示灯指示。

6、整点提醒设置:在正常显示状态下,按一下上调键可以开启/关闭7:00~21:00整点提醒功能(整点指示灯亮/灭),22:00~6:00整点都不提醒。

7、定闹时间设置:在正常显示状态下,按定闹键进入闹铃时间查询(每组闹铃有不同音乐提示,若在时分位显示―∶――表示该组闹铃时间无效,否则有效,可按上调键切换成有效或无效),若要调整则按设置键音乐停止,再按设置键,小时位闪烁,按上调键或下调键修改小时,再按设置键分钟位闪烁,按上调键或下调键修改分钟;再按定闹键进入第二组闹铃时间查询和调整,方法与第一组相同;用同样方法可完成第三组至第八组闹铃时间的查询和调整;按结束键返回正常显示状态;若八组闹铃时间都无效,则闹铃指示灯不亮,否则闹铃指示灯亮。

LED电子钟的制作

LED电子钟的制作

1课设题目 (2)2课设任务 (2)3课设内容 (2)3.1LED电子钟的设计方案 (2)3.1.1LED电子钟的原理 (2)3.1.2芯片介绍 (2)3.1.3核心电路原理图 (4)3.1.4数码管显示原理及设计 (5)3.2汇编程序框图 (6)3.3汇编程序代码 (6)3.4单片机接线 (14)4测试与调试 (14)4.1测试过程 (14)4.2遇到的问题及解决方案 (14)5课设成果 (15)6收获和体会 (15)7参考文献 (15)1课设题目LED电子钟的制作2课设任务用89C51单片机设计制作一个以LED显示的电子钟。

要求用6个数码管显示时、分、秒;要求通过键盘输入初值,打上开关K1时允许设定时间,按下开关K1时开始运行显示时间,K2用作选择是24小时制还是12小时制。

3课设内容3.1LED电子钟的设计方案3.1.1LED电子钟的原理本设计为微机电子时钟系统,主控芯片采用89S51单片机。

配合软件延时实现时、分、秒的计时。

本系统设计采用此种软件控制方法来实现计时,通过定时器定时中断,使时间缓存单元数据加一,提供系统时间。

同时可以通过独立键盘对电子时钟开始计时,暂停计时和结束计时的控制。

单片机内的数据通过并行I/O接口输入输出。

并驱动六位LED数码管(时、分、秒分别用量为数码管显示),动态显示数据。

晶振及复位电路为单片机提供工作脉冲及复位信号。

在单片机应用系统中,键盘和显示往往需要同时使用,为节省I/O口线,可将键盘和显示电路做在一起,构成实用的键盘、显示电路。

由于该系统较为简单,无需扩展I/O口,可直接使用51芯片的引脚控制键盘和显示。

该电子时钟由89S51,独立键盘,六位数码管等构成,采用晶振电路作为驱动电路,由中断延时程序和循环程序产生一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。

而电路当中三个独立按键分别控制电子时钟的开始,暂停和结束,同时通过六位数码管显示时间。

基于单片机的多功能数字钟60秒LED旋转电子钟

基于单片机的多功能数字钟60秒LED旋转电子钟

第1节引言1.1 电子钟概述目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。

要知道当前的时间,必须先开灯,故较为不便。

现在市场上也出现了一些电子钟,它以六只LED数码管来显示时分秒,违背了人们指针式的传统习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。

此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。

针对以上存在的问题,我们设计了一款采用LED显示器件显示的电子时钟,解决了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。

另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。

1.2 设计任务本次设计通过对一个实现定时、双时钟显示、闹钟、温度等功能的时间系统的设计,其中结合了数据转换显示、数码管显示、动态扫描、单片机定时中断等技术。

系统由AT89C2051、LED数码管、按键、三极管、两片CD4017BE、CD4069BE、DS18B20、电阻等组成。

能实现时钟时、分、秒的显示。

也具有温度显示、时间设置、闹铃开和关设置、制式切换。

文章后附有电路图、程序清单。

1.3 系统主要功能电子钟的外观如图1所示。

周边60只发光管顺时旋转来显示秒,中间四只LED 数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。

其主要功能有:①整点报时;②四只LED数码管显示当前时分;③每隔一秒钟周边的60只LED发光管旋转一格;④当发生停电事件时,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,同时又保证CPU继续计数,不至于因停电而时钟停止运行。

⑤当恢复供电后,系统自动恢复工作状态,不影响计时。

图一第2节电子钟硬件设计2.1系统的硬件构成及功能电子钟的原理框图如图2所示。

LED数字电子钟设计电路及工作原理

LED数字电子钟设计电路及工作原理

LED数字电子钟设计电路及工作原理LED 电子钟的制作方法在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。

也有用后备电池作为备用电源的,但往往体积较大。

本文介绍的LED 电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。

有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。

一.工作原理DS1302 为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

采用普通32768Hz 晶振。

AT89C2051 作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302 中的时间并把小时和肥以示在4 位LED 中;第三就是对设置的闹铃时间与实时时间进行比较,如果时间相同且闹铃允许,那么蜂鸣器就会以1 秒的周期鸣响一分钟,提醒使用者。

如果要停止鸣闹,只要按遥控器相应键就可以关闭闹铃。

闹铃时间保存在DS1302 自带的RAM 中,不需要单独的EEPROM。

二.硬件电路图一为电子钟的原理图IC2 为DS1302,电子爱好者可以向MAXIM 公司索取免费样品。

Y2 为32768 Hz 石英晶振,可以用普通电子表里的。

IC3 为三脚的塑封一体化红外接收头。

LED1-4 为高亮度共阳数码管。

89C2051 所用的晶振Y1 如果没有10MHz 也可以用其他12M 以内的代替,只要修改程序中YS1 和YS2 的延时参数,让其保持延时长度不变就行。

调整R2 可以改变数码管亮度。

P1 口接数码。

LED数码管设计的可调式电子钟说明说

LED数码管设计的可调式电子钟说明说

LED数码管设计的可调式电子钟说明说可调式电子钟的设计理念是提供用户多样化的时间显示和闹钟设定选项,以满足用户不同的需求和喜好。

以下是对设计的详细说明:1.数码管显示:LED数码管采用7段共阳极连接方式,每个数码管由7个LED灯组成,通过控制各个LED灯的点亮与否,可以显示0-9的数字。

数码管的显示仿真效果要清晰、鲜明,确保用户可以轻松辨认时间。

2.时间调节功能:可调式电子钟具备时间调节的功能,用户可以通过按钮或旋钮调整时间。

其中旋钮可以实现小时和分钟的调节,而按钮可以实现小时和分钟的增加或减少。

设计时需考虑人机交互的便利性,确保时间调节操作简单明了。

3.闹钟设定:可调式电子钟还具备闹钟功能,用户可以设定一个或多个闹钟时间点。

用户可以通过按钮或旋钮设置闹钟的小时和分钟,还可以设定是否重复响铃。

闹铃可以通过声音、震动或LED灯闪烁等方式提醒用户。

为了避免误操作,设计时需要考虑设置闹钟的过程,确保用户能够轻松设置闹钟。

4.电源供应:可调式电子钟可采用外部电源或内置电池供电。

设计时需考虑到电源的稳定性和可靠性,确保时钟长时间准确运行。

当外部电源断开时,内置电池可以提供备用电源,防止时间设置的丢失。

5.背光功能:可调式电子钟还可以考虑添加背光功能,在光线不好的情况下,用户可以通过按下按钮或通过传感器自动点亮背光。

背光的亮度可以根据用户偏好进行调节。

6.美观设计:除了功能性,可调式电子钟的外观设计也很重要。

设计时可以考虑采用简约设计风格,以及时尚的外壳材料。

同时,数字显示的对齐和间距,以及按钮和旋钮的位置、大小都需要细致推敲,确保整体外观美观大方。

总之,可调式电子钟的设计需要满足用户对时间显示和闹钟功能的需求。

通过合理的控制功能,人性化的设计以及简洁好看的外观,可为用户提供一台方便、易用的电子钟。

[整理]LED 电子钟 显示时间.

[整理]LED 电子钟 显示时间.

《单片机技术》课程设计任务1、本课题任务如下:设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。

2、本课题要求如下:(1)在AT89S51的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P2.5~P2.0作LED的位控输出线(P2.5~P2.0对应于LED5~LED0),P1口外接四个按键A、B、C、D(对应于P1.0~P1.3)。

(2)、利用六个LED显示当前时间。

(3)、四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1。

方案四: 独立式按键,LED动态显示。

该方案方框图如图1.2.4所示,独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,因本系统用到的按键比较少,采用独立式键盘不会浪费I/O口线,所以本系统采用独立式键盘。

动态显示的亮度虽然不如静态显示,但其硬件电路较简单,可节省硬件成本,虽然动态扫描需占用CPU较多的时间,但本系统中的单片机没有很多实时测控任务,因此,本系统采用此种方案。

本设计中的电子钟的核心是AT89S51单片机,其内部带有4KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:时钟电路,复位电路,键盘以及显示电路。

时钟电路是电子表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。

本系统时钟电路采用的晶振的频率为12MHz,定时器采用的是定时器0工作在方式1定时,用于实现时、分、秒的计时,定时时间为62.5ms。

led数码显示电子钟

led数码显示电子钟

LED数码显示电子钟一、产品说明数码显示电子钟电路,采用LM8560、CD4060和四位LED显示屏,通过驱动显示屏便能显示时、分。

振荡部分采用石英晶体振作时基信号源,从而保证了走时的精确。

该电路还供有定时报警功能,它定时调整方便,电路稳定可靠,能耗低。

该产品还具有定时报警功能。

它定时调整方便,电路稳定可靠。

本产品时钟显示采用12小时制,使用四个LED数码管显示时间,本产品由五个操作开关控制S1、S2、S3、S4、K1。

其输入电源为220V交流电源,经由变压器输出6V电压,安全环保。

适应于小型办公场地、书房、卧室的使用。

二、原理框图及程序流程图1.1原理框图1.2 程序流程图三、原理及参数该产品由220V交流电直接供电;由集成芯片LM8560与CD4060和四位LED 显示屏实现时、分的显示;并具有闹钟功能;由蜂鸣器实现提示报警功能。

1、CD4060芯片工作电压范围宽在3V~15V,输入阻抗高,唯一现在使用的可能就是计数器,CD4060的计数器可以到14级二进制串行计数/ 分频器。

CD4060内部包含14位二分频器和一个振荡器,电路简洁,30720HZ的信号经分频后,得到50HZ的信号送到LM8560的25脚,并做秒信号经VT2、VT3驱动显示屏内的冒号闪动2.晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。

晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。

数字钟的精度主要取决于时间标准信号的频率及其稳定度。

晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。

该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。

3、LM8560集成电路内含显示译码驱动电路、12/24小时选择电路及以其他各种设置报警等电路。

它具有较宽的工作电压范围(7.5-14V)和工作温度范围(-20℃+70℃);自身功耗很小,输出能直接驱动发光二极管显示屏。

LED七段数码管数字钟

LED七段数码管数字钟

设 计 题 目: LED 七段数码管数字钟 学 院 名 称: 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 05计1 姓 名: 丁 琳 指导教师姓名: 白凤娥 指导教师职称: 教 授设 计 成 绩: 评 阅 教 师: 评 阅 日 期:2008年 12月 日微机原理与接口技术课程设计报告JIANGSU TEACHERS UNIVERCITY OF TECHNOLOGY目录一、设计任务书 (3)二、设计题目 (3)三、设计方案 (3)四、硬件原理 (4)1.七段数码管显示 (4)2.键盘扫描显示 (5)3.8253计数器和8259中断 (6)4.硬件连接 (6)五、程序流程图及程序清单 (7)1.七段数码管显示 (8)2. 键盘扫描显示 (9)3.定时器设计 (12)4.总程序设计 (15)六、调试过程及结果 (29)七、设计总结和体会 (30)八、参考文献 (30)一、设计任务书《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。

所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。

通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。

培养我们实事求是和严肃认真的工作态度。

通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。

集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

L ED点阵显示式多功能数字电子钟设计

L ED点阵显示式多功能数字电子钟设计

作者简介 : 谢 家兴 ( 1 9 7 9 一) , 男, 博士 , 华 南 农 业 大 学 工 程 学院 讲 师 , 研 究 方 向 为 光 电子 。
软 件 导 刊
刀 。 e , ¨ ] J
2 0 1 4在
结 束 完 成 周 期 获取 时 问 信 启
结束: 完 成 一 次 敬 据 发 送 接 收
电源 供 电 : 可 充 电 电池
图1 系统 整 体 功 能 框 图
1 系统 功 能
本 多 功 能 数 字 电子 钟 具 有 如 下 功 能 : ① 显示 时间 、 调 整时间 、 报时 、 定时 ; ②带 I E D点 阵模 拟 显 示 机 械 钟 表 ; ③ 带语音录放功能 ; ④带按键输入控制 ; ⑤ 电池 供 电 。 本 设 计 分 为 以 下 8个 模 块 : ①单 片机控 制模块 : 电 子 钟 控制核心 ; ② 时 间管 理 模 块 : 利 用 时 钟 芯 片 获 取 当 前 时 间更新信息 ; ③I E D点阵显示模 块 : 利 用 数 字 电 路 控 制 方 式实现对机械钟表 的模拟 和功能增 强 ; ④ 语音 录放模 块 : 通 过耳机收集音乐数据 、 话 筒 收 集 语 音 信 息 完 成 提 示 音 录 入; ⑤ 时 间 显 示 模 块 :由 数 码 管 显 示 时 分 秒 ; 液 晶
图 5 单 片机 控 制 流 程
图 6 串 口传 输 的 程 序 流 程
在 每 1次发 送 数 据 之 前 需 检 测 从 设 备 是 否 准 备 好 , 若 准 备 好 则 开 始传 输 数 据 ; 传 输 完 成 之 后 则 等 待 从 设 备 发 出 接收完成标志 , 若 已 接 收则 可 发 送 下 一 数 据 。 ( 3 ) 时钟 ( Ti me r ) 。时 钟 程 序 流 程 说 明 了 时 钟 芯 片 DS 1 3 0 2与 S TC1 2 C5 A6 O S 2之 间通 信 的 时序 , 如 图 7所 示 。 在 DS 1 3 0 2_ [ 作 时, 若 主 电 源 电 压 小 于 备 用 电 池 电

LED电子钟设计

LED电子钟设计

LED电子钟设计电子钟是一种基于电子技术的钟表装置,采用LED显示屏来显示时间和其他相关信息。

它具有精准的时间显示、多功能、易于操作等特点,在家庭、办公室、学校等场所得到广泛应用。

本文将介绍一个LED电子钟的设计。

首先,我们需要明确设计的需求和功能。

LED电子钟的基本功能应包括时间显示(时、分、秒),日期显示,闹钟设置,定时功能等。

此外,还可以考虑加入温度显示、湿度显示等附加功能,以增加钟表的实用性。

接下来,我们需要选购合适的元器件。

LED电子钟的核心元器件是LED显示屏,需要选择具有高亮度、长寿命、低功耗等特点的LED组件。

同时,还需要选购时钟芯片、温湿度传感器、控制电路等元器件。

这些元器件的选择需要根据实际需求和预算来进行。

然后,我们需要设计电子钟的电路板。

电路板上需要布置时钟芯片、温湿度传感器、控制电路、LED显示屏接口等元器件。

同时,还需要考虑供电电路、功能按键、报警器等功能的布置。

设计电路板时,需要合理布局元器件,保证信号路线的稳定性和有序性。

接下来,我们需要编写控制程序。

控制程序是电子钟的大脑,负责监测并控制各个功能模块的工作。

在编写控制程序时,需要考虑时钟显示、日期显示、闹钟设置等功能的实现方法。

同时,还需要编写代码来处理温湿度传感器的数据,并将其显示在LED屏上。

最后,进行电子钟的调试和测试。

在调试过程中,需要检查各个功能模块是否正常工作,LED显示屏是否显示正确,按键操作是否灵敏等。

如果发现问题,需要及时修复和改进。

除了基本的设计和制作过程,设计人员还可以对LED电子钟进行各种细节的自定义。

比如,可以选择合适的外观材料、外形设计、显示字体,以及增加背光效果、音乐播放功能等。

这些细节设计可以增加产品的吸引力和市场竞争力。

综上所述,LED电子钟的设计是一个涉及多个方面的综合性工程。

需要设计者对电子技术、电路设计、软件编程等有一定的了解和经验。

通过合理的设计和制作过程,可以设计出一款功能强大、实用性高的LED电子钟。

数码管电子钟(可调时)程序

数码管电子钟(可调时)程序
ET0=1;//允许定时器中断
TR1=1;//开t1
TR0=0;//关t0
}
/**********以下延时程序***********/
void Delayms(uint xms)
{
uint i,j;
for(i=0;i<=xms;i++)
for(j=115;j>0;j--);
{
if(k2==0)
{
Delayms(10);//延时去抖
if(k2==0)//确定k2键按下
{
while(!k2);//等待k2释放
sec++;
if(sec==60)sec=0;
}
}
if(k3==0)
{ sec=0,min++;
if(min>=60)
{ min=0;hour++;
if(hour>=M)hour=0;
}
}
}
}
/*********以下是按键检查函数**********/
void keyplay()
{
P3=0xff;//读取数据前要先写1
{
key=0;
TR1=1;
TR0=0;
}
}
/*********以下是主程序**********/
void main()
{
Timert();
while(1)
{
keyplay();
timerpaly();
Dispaly();
}
{
if(k2==0)

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。

扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。

二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。

4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。

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

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

/安徽工程大学机电学院单片机课程设计题目:数字电子时钟设计指导老师:***制作人员:范超学号:************班级:自动化2132日期:7月13日-7月24日总评成绩:课程任务设计书设计题目:数字电子时钟的设计设计任务:1.设计一款时,分,秒可调数字电子时钟可整点报时;2.设计三个按键K1,K2和K3,用于调节时钟的时间;3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;本设计采用AT89C51单片机为核心器件。

具有电子钟显示,时间调整,整点报时等功能。

此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。

根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。

而且能显示清晰、直观的数字符号。

针对数字钟会产生误差的现象,就设计有校准时间的功能。

AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。

此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。

它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。

电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。

用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。

根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。

显示器件选用LED八段数码管。

在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。

针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。

关键字:Proteus,Keil uVision,AT89C51,电子钟,整点报时摘要 (3)第1章概述 (5)1.1 设计背景 (5)1.2系统方案论证与设计 (5)第2章系统硬件设计 (7)2.1 系统总电路的设计 (7)2.1.1系统的总框图 ................................................................................................2.1.2芯片的选择 (7)2.2最小系统设计 (9)2.2.1时钟电路的选择与设计 (10)2.2.2复位电路的选择与设计 .............................................. 错误!未定义书签。

基于单片机的电子时钟6位LED数码管显示

基于单片机的电子时钟6位LED数码管显示

数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。

2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。

二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。

根据需要,可利用两种方案实现。

方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:本方案完全用软件实现数字时钟。

原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。

该方案具有硬件电路简单的特点。

但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。

而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。

2.数码管显示方案方案一:静态显示。

所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。

该方式每一位都需要一个8 位输出口控制。

静态显示时较小的电流能获得较高的亮度,且字符不闪烁。

但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

方案二:动态显示。

所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。

用LED数码管显示的秒表设计

用LED数码管显示的秒表设计

课程设计说明书用LED数码管显示的秒表设计专业新能源科学与工程学生姓名班级学号指导教师完成日期用LED数码管显示的秒表设计摘要:对采用LED数码管显示的秒表进行了设计。

所设计的秒表,可通过两位数码管显示00-59。

每秒自动加一。

在对系统功能分析的基础上,采用AT89C52单片机。

相对而言比较简单,贴近书本,比较熟悉。

对所要实现的功能也能很好地满足,焊接也比较简单。

设计主要采用硬件和软件两部分。

硬件包含数码管按钮模块、单片机控制模块、数码管显示模块、驱动电流放大模块。

按钮模块采用独立式按键,控制模块选用AT89C52单片机,显示模块采用两位数码管,放大模块选用NPN三极管。

软件采用模块化的程序,分为主程序和定时器计时服务子程序。

在多孔板上制作了LED数码管显示的秒表,使用protus完成了系统仿真,对硬件和软件部分分别进行了调试,进行了软硬件联调,最后调试成功样机实物,完成了毕业设计任务书的要求。

关键词:单片机;数码管;秒表A stopwatch design with LED digital tube displayAbstract: For the LED digital tube display of a stopwatch is used for design. The stopwatch, designed by two digital tube display 00 ~ 59. Automatically add a per second.On the basis of the analysis of system function, using the AT89C52 single chip microcomputer. Relatively simple, close to the book, familiar with. To in order to realize the function also can well satisfy, welding is more simple. The design mainly adopts two parts of hardware and software. Hardware consists of digital tube button module, single-chip microcomputer control module, digital tube display module, the drive current amplifier module. Button module USES the independent type key, choose AT89C52 single chip microcomputer control module, using two digital tube display module, amplifier module selects the NPN transistor. Software adopts the modular program, main program and timer timing service subroutine.On the perforated plate made of LED digital tube display a stopwatch, use protus completed system simulation, the hardware and the software part, has carried on the debugging, the software and hardware alignment, the final debugging success physical prototype, completed the graduation design specification requirements.Key Words:Single chip microcomputer; Digital tube; A stopwatch.用LED数码管显示的秒表设计目录1. 概述 (1)1.1 课题研究背景与意义 (1)1.2 课题设计内容 (1)2. 系统设计 (1)2.1 设计方案论证 (1)2.2 系统硬件设计 (2)2.2.1 主控模块 (2)2.2.2 秒表按钮模块 (4)2.2.3 LED数码管显示模块 (5)2.2.4 放大模块 (6)2.3.1 主程序模块 (6)2.3.2 定时器中断程序 (6)3. 系统调试 (8)3.1 硬件调试 (8)3.1.1 静态检查 (8)3.1.2 通电检查 (8)3.2 软件调试及软硬件联调 (8)3.2.1仿真调试 (8)3.2.2 实物调试 (9)3.2.3 实验结果 (9)4. 结束语 (11)附录1:用LED数码管显示的秒表设计原理图图纸 (15)附录2:用LED数码管显示的秒表设计的元器件目录表 (16)附录3:用LED数码管显示的秒表设计程序清单 (17)盐城工学院课程设计说明书( 2015)用LED数码管显示的秒表设计1.概述1.1 课题研究背景与意义随着电子技术的发展,电子技术在各个领域的运用也越来越广泛。

LED点阵电子时钟制作实验报告

LED点阵电子时钟制作实验报告

LED点阵电子时钟制作实验报告一、设计目的在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。

尽管点阵时钟有它自己的缺点,如硬件利用不充分,价格较高,但是点阵时钟的字体可以方便地改变,只要改变单片机中的程序,就可以任意改变显示出来的字体,亲切的字体常常会给人耳目一新的感觉,不象普通LED数码管的字体那么呆板,这可能是LED点阵时钟最主要的特点了。

二、方案1、LED点阵电子时钟的结构、功能:1)24小时计时。

2)4位时间显示,使用四块Φ3mm 8×8LED点阵。

3)时钟的发生采用了目前较流行的DS1302实时时钟芯片,时钟精确度较高,掉电后能维持一个月保持时间不掉。

4)采用单片机A T89S52,便于硬件扩展。

89S52采用24MHz晶体,工作频率高,显示数字不闪烁!5)采用变压器供电,便于时钟的摆放。

变压器供电电压是9V的,经PCB主板上的7805稳压后输出稳定的5V电压,损耗较小。

6)电子按钮时间调节。

7)双面PCB设计,电路小巧精悍。

8)有红色和绿色LED可选择(注:只能是单色屏)。

9)点阵屏采用接插的方式插在PCB上(可选),默认的点阵屏是焊在主板上的。

10)单元电路都有滤波电路,整体电路工作稳定。

2、LED点阵电子时钟的主要元件Φ3mm 8×8LED点阵四块、A T89S52单片机一片、DS1302实时时钟芯片一片、LM7805稳压芯片一片、24MHz晶振一个、供电电压是9V变压器一个、调节按钮开关四个,其余电阻、电容、二极管、三极管等若干。

3、LED点阵电子时钟的主要元件性能比较1)关于DS1302时钟芯片:采用DS1302实时时钟芯片的时钟,其程序设计及时间准确度,与单片机直接产生时间的时钟,效果不可同日而语。

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM 的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。

多功能电子钟程序(完全好使)

多功能电子钟程序(完全好使)

/*设计功能:1.时钟功能(上排数码管)每秒更新一次时钟显示,显示方式为MM.SS,其中M为分钟,S为秒。

可以通过按键调整当前时间,调整时间时需要闪烁调整位置的数值。

2.秒表功能(下排数码管)按开始按键开始走秒,按停止按键停止走秒,按清除按键秒表归零,显示方式为:SSS.U,其中S为秒,U为0.1秒。

3.闹钟功能(下排数码管)用按键设置闹钟时间,显示格式为MM.SS。

闹钟时间到达后,闪烁一个指示灯。

可以用按键设置闹钟、取消闹钟。

各个按键功能可以自行定义,每按一次任何按键,D2灯会翻转一次状态*//*硬件连接:一个有上下两个4位共阳数码管,4个按键,2个LED指示灯P2高四位控制上排数码管位选,低4位控制下排数码管位选,P0控制段选四个按键为独立按键,与P2高4位相连,与数码管复用LED0接P34,LED1接P35*//*使用方法:第一步:设定系统时间,在上排的4位数码管显示,注意系统时间设定确认后就不得修改了第二步:选择秒表模式或闹钟模式,在下排的4位数码管显示。

两种模式只能选择一种,并且不能切换。

1.设定系统时间此时按键定义:S5 移位,S6 加,S7 减,S8确认一开始上电时数字全0不闪烁,默认从第一位开始设置,按下加减进行调节,如此要更换调节位置,每按一次S5会右移一位,移到第四位再按会重新移回第一位。

设置完系统时间,按下S8确认,跳出设定环节,进入秒表和闹钟模式选择环节。

2。

秒表和闹钟模式选择此时按键定义:S5 改变模式标志,S6 S7未用,S8确认进入该模式设置完系统时间,进入秒表和闹钟模式选择环节。

此时第一位为0 。

然后按S5,第一位会在1和2之间来回切换,在显示1时按S8进入秒表模式,在显示2时按S8进入闹钟模式,2.1秒表模式此时按键定义:S5 未用,S6 开始,S7停止,S8清除2.2闹钟模式此时按键定义:S5 移位,S6 加,S7 减,S8按一次确认,等报警到了,再按S8停止报警如设定系统时间的步骤,设定好闹钟时间,按S8确认设定(S8只能按一次哦),等时间到了D1灯会不断闪烁表示报警,按S8停止报警*/#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit keysource= P1^7;sbit S5= P2^4;sbit S6= P2^5;sbit S7= P2^6;sbit S8= P2^7;sbit led0=P3^4; //每按一次任何按键,D2灯会翻转一次状态sbit led1=P3^5; //闹钟报警用的灯uint shuju_1;uint shuju_2;uint count;uint stopwatch_count;int miao;int fen;int warn_miao;int warn_fen;uint shanshuo; //1 2 3 4bit shanshuo1,shanshuo2,shanshuo3,shanshuo4;uint num_settime_cnt; //标识按键5设置时间时,按下的次数uint num_setmode_cnt; //1 or 2uint stopwatch_miao;uint stopwatch_Umiao;uint stopwatch_miao_1;uint stopwatch_Umiao_1;uint mode_flag;uint warn_flag;uint stopflag = 1; //初始时先让秒表停止uchar code shuma[] = {0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/}; // 共阳数码管void delay(uint z) // 1ms{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display_1() // 上排{uchar qian,bai,shi,ge;qian = shuju_1/1000;bai = shuju_1%1000/100;shi = shuju_1%100/10;ge = shuju_1%10;////xianshi 1////P2 |= 0xf0; //高4位全部置1P2 &= 0xef; //改变高4位,低4位不变if(shanshuo1 == 1)P0= 0xff;elseP0= shuma[qian];delay(1);////xianshi 2////P2 |= 0xf0;P2 &= 0xdf;if(shanshuo2 == 1)P0= 0xff;elseP0=shuma[bai]&0x7f; //要点亮小数点delay(1);////xianshi 3////P2 |= 0xf0;P2 &= 0xbf;if(shanshuo3 == 1)P0= 0xff;elseP0=shuma[shi];delay(1);////xianshi 4////P2 |= 0xf0;P2 &= 0x7f;if(shanshuo4 == 1)P0= 0xff;elseP0=shuma[ge];delay(1);P2 = 0xff; //解除位选}void display_2() // 下排{uchar qian,bai,shi,ge;qian = shuju_2/1000;bai = shuju_2%1000/100;shi = shuju_2%100/10;ge = shuju_2%10;////xianshi 1////P2 |= 0x0f; //低4位全部置1P2 &= 0xfe; //改变低4位,高4位不变if(shanshuo1 == 1)P0= 0xff;elseP0= shuma[qian];delay(1);////xianshi 2////P2 |= 0x0f;P2 &= 0xfd;if(shanshuo2 == 1)P0= 0xff;else if (mode_flag == 2){P0=shuma[bai]&0x7f;}else{P0=shuma[bai] ;}delay(1);////xianshi 3////P2 |= 0x0f;P2 &= 0xfb;if(shanshuo3 == 1)P0= 0xff;else if (mode_flag == 1){P0=shuma[shi]&0x7f;}else{P0=shuma[shi] ;}delay(1);////xianshi 4////P2 |= 0x0f;P2 &= 0xf7;if(shanshuo4 == 1)P0= 0xff;elseP0=shuma[ge];delay(1);P2 = 0xff; //解除位选}void check_ledflash() //判断哪一位正在设置中,让该位闪烁{switch(shanshuo) //利用shanshuo标志来判断,当前正在在哪一位设定{case 1:shanshuo1 = ~shanshuo1; //如果为第一位,则第一位闪烁,其它位不闪烁shanshuo2 =0;shanshuo3 =0;shanshuo4 =0;break;case 2:shanshuo2 = ~shanshuo2;//如果为第二位,则第一位闪烁,其它位不闪烁shanshuo1 =0;shanshuo3 =0;shanshuo4 =0;break;case 3:shanshuo3 = ~shanshuo3;//如果为第三位,则第一位闪烁,其它位不闪烁shanshuo1 =0;shanshuo2 =0;shanshuo4 =0;break;case 4:shanshuo4 = ~shanshuo4;//如果为第四位,则第一位闪烁,其它位不闪烁shanshuo1 =0;shanshuo2 =0;shanshuo3 =0;break;default:shanshuo1 =0;shanshuo2 =0;shanshuo3 =0;shanshuo4 =0;break;}}void settime()//设定系统时间,时间格式:分-分。

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

目录1概述 (1)1.1课题研究的目的和意义 (1)2 课题方案论证 (1)2.1系统总体设计要求 (1)2.2系统模块结构论证 (2)3 系统硬件设计 (2)3.1总体设计 (2)3.2最小单片机系统如图3-2所示 (3)3.3按键电路如图3-3所示 (3)4软件设计 (3)4.1 主程序 (3)图4-1主程序流程图 (4)4.2 显示子程序 (4)4.3定时器/计数器T0中断服务程序 (4)5软硬件联调及调试结果 (5)5.1调试步骤 (5)5.2实际出现的问题及解决方法 (6)5.3仿真图如图5-2所示 (6)5.4实物图正面如图5-3-1所示,实物图背面如图5-3-2所示 (6)5.5板子运行情况如图5-5所示 (7)结束语 (7)参考文献 (8)附录 (8)附录1 原理图如图附录-1所示 (8)附录2 PCB图如图附录-2所示 (8)附录-2PCB图 (9)附录3 proteus仿真图如图附录-3所示 (9)附录-3 proteus仿真图 (9)附录4 C语言程序清单 (10)附录5 元器件清单 (10)1概述1.1课题研究的目的和意义此次设计是单片机内部的定时/计数器来实现电子时钟的方法以及借助键盘直接控制整时的调整,本设计根据STC89C52单片机系统扩展的基本原理和方法,由单片机STC89S52芯片,LED数码管和键盘为核心,辅以必要的电路,构成了一个单片机电子时钟。

一块单片机芯片就是一台计算机,由于单片机以其集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点使它应用于智能仪器仪表、机电一体化、实时程控、人类生活中。

除此之外还广泛应用办公自动化领域、商业营销领域、汽车及通信系统、计算机外部设备等各领域中,并且单片机已成为计算机发展和应用的一个重要方面。

由此可见掌握单片机的使用方法和利用单片机解决实际问题具有重要的意义。

而此次的设计刚好用到单片机相关的知识可以说这是这次设计的重要意义和目的所在。

再者,此设计的LED电子时钟主要是显时间的,是时钟用途。

在此设计的基础上人们还可根据不同的需求和不同的设计水平做出不同的设计项目。

也可以加上日期,温度的显示和闹钟的功能。

如果设计水平还更高的话还可以设计LED电子显示屏。

因此说,LED电子时钟设计是最简单和基础的。

而且电子时钟很实用,准确性也很好,也容易调节,若有毁坏更换元器件也简单,制作原理和过程也很易懂易做,成本也不高。

在此设计间也包含了很多的知识,跟我所学专业又对口,所以,做这个LED电子时钟是个很用很好很值得做的设计。

2 课题方案论证2.1系统总体设计要求本次设计中的LED数码管电子时钟电路采用24小时制记时方式。

本次设计采用STC89C52单片机的扩展芯片和2个74LS04做驱动,由八块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。

设计采用STC89C52单片机,配备11.0592MHz晶振,复位电路为上电复位。

采用软件译码动态显示,考虑直接用单片机I/O口作为位选时可能驱动功率不够,可采用三极管作驱动共阳极数码管显示。

8位8段LED数码管作正常、调时显示,时间按时分秒排列,时钟误差:24小时误差3~5秒,并且在按键的作用下可以进行调时,调分,复位功能。

本电路采用直流5V电源供电。

同时为了限流保护电路也用了若干个阻值不等的电阻。

在本文一开始做了一些概述主要说明此设计的目的和意义,并会对这类设计项目发展情况做个简介。

这是对这次设计很重要的一个认识是前提和设计者必须明确和了解的。

然后本文对此设计做了一些简要分析,这对理清设计思想很重要。

然后还对设计中用到的元器件进行比较全面的介绍。

只有真正了解了元器件的特性和功能才能让这些元器件在设计中起到作用。

电子整个设计第一步是电路原理图,它直接关系着后续的工作。

接着当原理图完成好后就要为后面的刻板做准备了,这就是PCB印制电路板的制作。

它影响了整个设计的布局是能不能成功的条件。

紧接着就是程序了,如果只有硬件电路而没有程序,那么这个设计将一文不值,也就是说是一堆破铜烂铁。

所以这部分也是非常重要的。

最后结合整个设计总结了一些心得体会为这次的设计画上完满的句号。

也为以后更好的设计提供经验。

2.2系统模块结构论证按照系统设计功能的要求,确定系统由4个模块组成:主控制器、扫描驱动、调节电路和显示电路。

数码管电子钟电路结构框图如图2-2所示。

图2-2 电路结构图3 系统硬件设计3.1总体设计电子钟的原理框图如图3-1所示。

它由以下几个部件组成:单片机STC89C52、电源、时分秒显示部件。

时分秒显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。

时分显示模块以及显示驱动都通过STC89C52的I/O 口控制。

电源部分:整流稳压来得到+5V 电压,维持系统的正常工作。

图3-1 电子钟系统原理框图调节电路AT89C52 主控 制 器显示电路扫描驱动显示驱动显示时间(时、分、秒)电源STC89C523.2最小单片机系统如图3-2所示图3-2单片机最小系统3.3按键电路如图3-3所示图3-3按键电路4软件设计4.1 主程序主程序执行流程如图4-1所示,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。

P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78AT89C51图4-1主程序流程图4.2 显示子程序本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。

采用软件译码动态显示。

由于采用8段共阳LED数码管动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在ROM 中。

显示时,先取内存地址中的数据,然后查得对应的显示用段码从P0口输出,P1口将对应的数码管选中供电,就能显示该地址单元的数据值。

4.3定时器/计数器T0中断服务程序定时器/计数器T0用于时间计时。

选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。

在对各单元计数的同时,把它们的值放到存储单元的指定位置。

定时器/计数器T0中断服务程序流程图如图4-3所示。

图4-3 中断服务程序5软硬件联调及调试结果5.1调试步骤(1)在KEIL软件中编写程序,完成后,单击“项目”下的“编译”,产生“.hex”文件。

(2)打开proteus软件,画上硬件电路图,保存。

(3)双击AT89C52芯片,在program file中加入“.hex”文件,按确定。

(4)调试运行。

5.2实际出现的问题及解决方法在proteus仿真软件调试成功后,实际却出现了一些问题,市场上没有买到排阻,所以用8个10K的电阻代替。

由于数码管无法直接点亮,需要驱动,所以用了非门74LS04作为驱动,可是代码不能再用共阳极的了,所以把代码改成共阴的,实际电路板上就能成功运行了。

5.3仿真图如图5-2所示图5-2proteus仿真图5.4实物图正面如图5-3-1所示,实物图背面如图5-3-2所示图5-3-1实物图正面5.5板子运行情况如图5-5所示图5-5板子运行情况结束语由于电路设计合理,功能电路基本能实现设计要求。

从硬件焊接反方面来说,觉得比较棘手的就是在焊数码管时,和整体器件的布局。

布局不好会影响后面工序的焊接,在这点上我自己觉得做的很不错,布线焊接模块功能区分明确。

在编程中遇到的最大困难就是延时的计算和数码管的显示程序段,在整体程序来看,我采用程序的结构化,使程序明朗,各功能程序段都以子程序的方式调用,所以在主程序中是相当的简单明朗的。

在硬件和软件的结合过程中也遇到比较大的问题,就是一开始数码管不是显示8,就是乱码之类的,进过调试,现在没有出现这样的现象了。

这也是我的一大攻关吧。

但是,对于程序我还是很不好以后在这方面要多多加强。

在整个设计过程中我学会了很多,不仅巩固了我的专业知识,提升了我的学习能力和知识能力,也使我学习到很多书上没有的,更加强了我的动手能力。

从这次的设计中我确实受益匪浅,我想也不枉陆老师对我的一路辅导与帮助。

我相信,以后有机会一定会做更多这样的设计。

大学三年,一晃就过去了,我很想靠自己的专业做个东西给自己留念。

再也就想考验一下自己三年的学习成果,不负老师三年来的教诲和付出的心血。

在做设计的同时使自己再学习、再提高。

是展示自己学习成果的时机,是对自己的一种肯定。

参考文献[1]实验指导书(陆广平编)实验12[2]李光飞,楼然苗. 单片机课程设计指导书[R]. 北京:北京航空航天大学出版社,2007[3]李广弟. 单片机基础[M]. 北京:北京航空航天大学出版社,1994附录附录1 原理图如图附录-1所示附录-1原理图附录2 PCB图如图附录-2所示附录-2PCB 图附录3 proteus 仿真图如图附录-3所示附录-3 proteus 仿真图dpg f e d c b aq1q2q3q4q5q6q7q8q 1q 2q 3q 4q 5q 6q 7q 8a b c d e f g d p XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5112345678161514131211109RN1220R110kX1C230pF C310uFC130pF附录4 C语言程序清单#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar temp1,temp2,temp3,aa,miaoshi,miaoge,fenshi,fenge,shishi,shige;uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd}; void display(uchar shishi,uchar shige,uchar fenshi,uchar fenge,uchar miaoshi,uchar miaoge);sbit S1=P1^0;sbit S2=P1^1;sbit S3=P1^2;void delay(uint z);void init();void main(){init();while(1){if(S1==0){temp3++;while(S1==0);}if(S2==0){temp2++;while(S2==0);}if(S3==0){temp1++;while(S3==0);}if(aa==20){aa=0;temp1++;if(temp1==60){temp1=0;temp2++;}if(temp2==60){temp2=0;temp3++;}if(temp3==24){temp3=0;}miaoshi=temp1/10;miaoge=temp1%10;fenshi=temp2/10;fenge=temp2%10;shishi=temp3/10;shige=temp3%10;}display(shishi,shige,fenshi,fenge,miaoshi,miaoge); }}void delay(uint z){uchar x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uchar shishi,uchar shige,uchar fenshi,uchar fenge,uchar miaoshi,uchar miaoge){P2=0xbf;P0=table[miaoshi];delay(5);P2=0x7f;P0=table[miaoge];delay(5);P2=0xf7;P0=table[fenshi];delay(5);P2=0xef;P0=table[fenge];delay(5);P2=0xfe;P0=table[shishi];delay(5);P2=0xfd;P0=table[shige];delay(5);P2=0xdf;P0=0xfd;delay(5);P2=0xfb;P0=0xfd;delay(5);}void init(){temp1=21;temp2=24;temp3=21;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void timer0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}附录5 元器件清单元件名称型号数量52单片机STC89C52 1个HD74LS04 2个非门驱动电路瓷片电容30pf 2个电解电容10uf 1个4位共阳集数CAI5461BH 2个码管晶振11.0592MHz1个按键4个单片机插座40引脚1个电阻10k 8个1k 1导线若干万能板1个发光二极管1个。

相关文档
最新文档