利用51单片机,编写代码 设计一个具有闹铃功能的数字钟设计, 可以显示时分秒六位数字,可以调节时间和闹钟功能。

时间: 2024-03-26 20:38:20 浏览: 15
以下是一个简单的利用51单片机设计数字钟的代码,其中包括调节时间和闹钟功能: ```c #include <reg51.h> #define uchar unsigned char #define uint unsigned int uchar code table[] = { // 数码管显示表 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 }; uchar Hour = 0, Minute = 0, Second = 0; // 初始时间为0时0分0秒 uchar SetHour = 0, SetMinute = 0, SetSecond = 0; // 调节时间的变量 uchar AlarmHour = 0, AlarmMinute = 0; // 闹钟的小时和分钟 sbit D1 = P2^0; // 数码管第1位 sbit D2 = P2^1; // 数码管第2位 sbit D3 = P2^2; // 数码管第3位 sbit D4 = P2^3; // 数码管第4位 sbit D5 = P2^4; // 数码管第5位 sbit D6 = P2^5; // 数码管第6位 void delay(uint i) { // 延时函数 while (i--); } void Display(uchar i, uchar j, uchar k, uchar l, uchar m, uchar n) { // 数码管显示函数 D1 = 0; P0 = table[i]; delay(5); D1 = 1; D2 = 0; P0 = table[j]; delay(5); D2 = 1; D3 = 0; P0 = table[k]; delay(5); D3 = 1; D4 = 0; P0 = table[l]; delay(5); D4 = 1; D5 = 0; P0 = table[m]; delay(5); D5 = 1; D6 = 0; P0 = table[n]; delay(5); D6 = 1; } void InterruptTimer0() interrupt 1 { // 定时器0中断处理函数 TH0 = (65536 - 50000) / 256; // 50ms TL0 = (65536 - 50000) % 256; Second++; if (Second == 60) { // 每增加60秒,分钟加1 Second = 0; Minute++; if (Minute == 60) { // 每增加60分钟,小时加1 Minute = 0; Hour++; if (Hour == 24) { // 每增加24小时,时间归0 Hour = 0; } } } } void SetTime() { // 调节时间函数 while (1) { if (P3 & 0x01) { // 按下S1,小时加1 delay(1000); SetHour++; if (SetHour == 24) { SetHour = 0; } } if (P3 & 0x02) { // 按下S2,分钟加1 delay(1000); SetMinute++; if (SetMinute == 60) { SetMinute = 0; } } if (P3 & 0x04) { // 按下S3,秒钟加1 delay(1000); SetSecond++; if (SetSecond == 60) { SetSecond = 0; } } if (P3 & 0x08) { // 按下S4,退出调节时间 delay(1000); return; } Display(SetHour / 10, SetHour % 10, SetMinute / 10, SetMinute % 10, SetSecond / 10, SetSecond % 10); } } void SetAlarm() { // 调节闹钟函数 while (1) { if (P3 & 0x01) { // 按下S1,闹钟小时加1 delay(1000); AlarmHour++; if (AlarmHour == 24) { AlarmHour = 0; } } if (P3 & 0x02) { // 按下S2,闹钟分钟加1 delay(1000); AlarmMinute++; if (AlarmMinute == 60) { AlarmMinute = 0; } } if (P3 & 0x08) { // 按下S4,退出调节闹钟 delay(1000); return; } Display(AlarmHour / 10, AlarmHour % 10, AlarmMinute / 10, AlarmMinute % 10, 0, 0); } } void main() { TMOD = 0x01; // 定时器0,模式1 TH0 = (65536 - 50000) / 256; // 50ms TL0 = (65536 - 50000) % 256; ET0 = 1; // 允许定时器0中断 EA = 1; // 允许总中断 TR0 = 1; // 启动定时器0 while (1) { if (!(P3 & 0x10)) { // 按下S5,调节时间 delay(1000); SetTime(); } if (!(P3 & 0x20)) { // 按下S6,调节闹钟 delay(1000); SetAlarm(); } Display(Hour / 10, Hour % 10, Minute / 10, Minute % 10, Second / 10, Second % 10); if (AlarmHour == Hour && AlarmMinute == Minute && Second < 5) { // 闹钟响铃,持续5秒钟 P1 = 0xFF; // 发出蜂鸣器声音 delay(50000); P1 = 0x00; delay(50000); } } } ``` 以上代码只是一个简单的示例,实际上还可以进行更多的功能扩展和优化。

相关推荐

最新推荐

recommend-type

单片机电子钟程序完美版(带闹钟温度功能)

本电子钟已经全部测试OK,带闹钟功能,年月日时分秒星期温度,四个按键可设置闹钟调节时间,温度可以显示正125度到负的55度之间,时间走时的话,我测试了一个月,误差不到1分钟。本人已经录制成视频,视频里面有详细...
recommend-type

proteus 数字钟的设计与仿真

proteus设计与仿真 数字钟的设计本次数字时钟电路采用AT89C52单片机作为控制核心,使用按钮设计控制电路,结合DS18B20传感器、LMO16L液晶显示模块和排阻实现时、分、秒、温度的显示,采用扬声器实现闹钟功能。...
recommend-type

数字时钟的LED点阵显示的设计与制作_我的毕业设计

本文设计了一套16*64点阵数字时钟显示系统,该系统是一种基于AT89S52单片机为核心的低成本、微型化的数字显示系统,它根据人眼视觉暂留原理, 以DS12887为时钟芯片, 应用单片机技术和动态扫描技术来显示时间日期等信息...
recommend-type

基于单片机的数字实时时钟的设计

(2)可以设定闹钟和整点报时的功能,数字时钟在总体上主要分为三大部分:输入人机界面部分、FPGA核心功能部分和输出界面部分,其系统设计框图如图1-1所示。 图1-1 基于FPGA的系统设计方框图 方案二:采用单片机...
recommend-type

多功能数字钟设计8563带键盘,有源程序

多功能数字钟是以8051单片机为控制器构成的,由时钟模块、闹钟模块、键盘模块、显示器模块等模块组成。时钟由专用时钟芯片实现时间的计量,通过键盘和数码管显示可方便地校对时钟和设置闹钟时间。时钟模块在硬件设计...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。