基于AT89C51单片机的电子闹钟设计

1.设计任务

利用AT89C51单片机为核心控制元件,设计一个电子闹钟,设计的系统实用性强、操作简单,实现了智能化、数字化。

(1)按开始键自动进入时间显示,开始为0,按K1键进入更改时间,闪烁位为可更改位,按K1键调整更改位,K2键为自增键,K3键为关闭响铃键,修改成功之后按K1键确定修改成功;

(2)按K1键进入秒表功能,再次按K2键秒表开始计时,K3键为秒表暂停键,继续则按K2键,K3键为清零键;

(3)按K1键进入闹钟功能,进去之后闪烁位为可更改位,按K1键调整更改位,K2键为自增键,K3键为关闭键。

2. 设计要求

2.1系统方案论证

根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。

2.2系统硬件电路设计

根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。

2.3软件设计

根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。

2.4 软硬件系统仿真

将编译后的程序软件加载到Proteus软件仿真的单片机ROM中,运行系统,实现软件程序对单片机系统的硬件电路的控制,并调试仿真结果,直至与设计任务相符。

#include<reg51.h>
#include<stdlib.h>
#include<stdio.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned charuint num,A_num,x=0;
uint h,m,s;
uint h1=0,m1=0,s1=0,sign=1; uchar code Zifu[]="0123456789";sbit beep = P2^3;sbit LCD_EN = P3^4;
sbit LCD_RS = P3^5;sbit duan = P2^6;
sbit wei = P2^7;sbit key_A = P3^6;
sbit key_B = P3^7;void delay_1ms(uchar x){uchar i,j;for(j=0;j<x;j++)for(i=0;i<110;i++);
}void write_command(uchar command){LCD_RS = 0;LCD_EN = 0;P0 = command;delay_1ms(2);LCD_EN = 1;    //EN 由1 -- 0 完成 有效数据 的 锁存delay_1ms(2);LCD_EN = 0;
}void write_data(uchar yes){LCD_RS = 1;LCD_EN = 0;P0 = yes;delay_1ms(2);LCD_EN = 1;delay_1ms(2);LCD_EN = 0;
}void lcd_post(int X,int Y){   //0,1表征 第一行 和 第二行write_command(0x80+X*(0x40)+Y);
}void init(){h=m=s=0;num=A_num=0;LCD_EN=0;write_command(0x38);write_command(0x0c);//write_command(0x06); //写字符后地址指针加一write_command(0x01);TMOD = 0x02;TH0 = 6;TL0 = 6;EA = 1;ET0 = 1;TR0 = 1;/*时分秒*/ lcd_post(0,0); write_data(Zifu[h/10]);lcd_post(0,1); write_data(Zifu[h%10]);lcd_post(0,2); write_data(':');lcd_post(0,3); write_data(Zifu[m/10]);lcd_post(0,4); write_data(Zifu[m%10]);lcd_post(0,5); write_data(':');lcd_post(0,6); write_data(Zifu[s/10]);lcd_post(0,7); write_data(Zifu[s%10]);lcd_post(1,5); write_data('a');lcd_post(1,6); write_data('l');lcd_post(1,7); write_data('a');lcd_post(1,8); write_data('r');lcd_post(1,9); write_data('m');lcd_post(1,10); write_data(' ');lcd_post(1,11); write_data('c');lcd_post(1,12); write_data('l');lcd_post(1,13); write_data('o');lcd_post(1,14); write_data('c');lcd_post(1,15); write_data('k');
}void ling()
{unsigned char a;for(a=0;a<500;a++){if((P1&0x80)==0){break;}lcd_post(1,5); write_data('l');lcd_post(1,6); write_data('i');lcd_post(1,7); write_data('n');lcd_post(1,8); write_data('g');lcd_post(1,9); write_data('!');lcd_post(1,10); write_data(' ');lcd_post(1,11); write_data('l');lcd_post(1,12); write_data('i');lcd_post(1,13); write_data('n');lcd_post(1,14); write_data('g');lcd_post(1,15); write_data('!');beep=0;  delay_1ms(500);lcd_post(1,5); write_data(' ');lcd_post(1,6); write_data(' ');lcd_post(1,7); write_data(' ');lcd_post(1,8); write_data(' ');lcd_post(1,9); write_data(' ');lcd_post(1,10); write_data(' ');lcd_post(1,11); write_data(' ');lcd_post(1,12); write_data(' ');lcd_post(1,13); write_data(' ');lcd_post(1,14); write_data(' ');lcd_post(1,15); write_data(' ');beep=1;delay_1ms(500);}lcd_post(1,5); write_data('a');lcd_post(1,6); write_data('l');lcd_post(1,7); write_data('a');lcd_post(1,8); write_data('r');lcd_post(1,9); write_data('m');lcd_post(1,10); write_data(' ');lcd_post(1,11); write_data('c');lcd_post(1,12); write_data('l');lcd_post(1,13); write_data('o');lcd_post(1,14); write_data('c');lcd_post(1,15); write_data('k');}void keyscan(){if(key_A==0){delay_1ms(3);if(key_A==0){A_num++; switch(A_num){case 1:         //时TR0=0;        lcd_post(0,1);write_command(0x0f);break;case 2:lcd_post(0,4);break;    //分case 3:lcd_post(0,7);break;    //秒case 4:A_num=0;write_command(0x0c);TR0=1;sign = 0;break;}  }while(!key_A);}if(A_num!=0){if(key_B==0){delay_1ms(3);if(key_B==0){ switch(A_num){case 1:h1=(++h1)%24;lcd_post(0,0); write_data(Zifu[h1/10]);lcd_post(0,1); write_data(Zifu[h1%10]);break;    //时case 2:m1=(++m1)%60;lcd_post(0,3); write_data(Zifu[m1/10]);lcd_post(0,4); write_data(Zifu[m1%10]);break;    //分case 3:s1=(++s1)%60;lcd_post(0,6); write_data(Zifu[s1/10]);lcd_post(0,7); write_data(Zifu[s1%10]);break;    //秒case 4:sign = 0;break;}write_command(0x10);  }while(!key_B);}}
}void main()
{ int clk1 =0;int clk2 =0;there:beep=0;init();//there:h1=m1=s1=0;while(sign){keyscan();}clk1 = 0;clk2 = h1*3600+m1*60+s1;init();while(1){if(num==3686){num=0;s++;clk1++;if(clk1 > clk2){ling();sign = 1;goto there;}if(s==60){s=0;m++;if(m==60){m=0;h++;if(h==24)h=0;lcd_post(0,0); write_data(Zifu[h/10]);lcd_post(0,1); write_data(Zifu[h%10]);}lcd_post(0,3); write_data(Zifu[m/10]);lcd_post(0,4); write_data(Zifu[m%10]);}lcd_post(0,6); write_data(Zifu[s/10]);lcd_post(0,7); write_data(Zifu[s%10]);}}
}

完整代码点开链接私信  免费  获取。

【iBot机器人工作室的个人空间-哔哩哔哩】 https://b23.tv/ryUWVKa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.30BST理解,AVL树操作,定义;快速幂,二分求矩阵幂(未完)

完全二叉树结点的度可能有1&#xff0c;满二叉树的度只能为0或2 BST构建 BST是左孩子都比根节点小&#xff0c;右孩子都比根节点大 二叉搜索树的插入&#xff0c;删除&#xff0c;调整 平衡树理解 任何一个平衡二叉树&#xff0c;它的中序遍历都是一样的&#xff0c;都是有…

LangChain的函数,工具和代理(三):LangChain中轻松实现OpenAI函数调用

在我之前写的两篇博客中:OpenAI的函数调用,LangChain的表达式语言(LCEL)中介绍了如何利用openai的api来实现函数调用功能&#xff0c;以及在langchain中如何实现openai的函数调用功能&#xff0c;在这两篇博客中&#xff0c;我们都需要手动去创建一个结构比较复杂的函数描述变量…

大脑--学习方法

1.大脑喜欢色彩。平时使用高质量的有色笔或使用有色纸&#xff0c;颜色能帮助记忆。 2.大脑集中精力最多只有25分钟。这是对成人而言&#xff0c;所以学习20到30分钟后就应该休息10分钟。你可以利用这段时间做点家务&#xff0c;10分钟后再回来继续学习&#xff0c;效果会更好…

0X04

看到一道有趣的misc题 misc签到题 打开后啥都没有&#xff0c;全选后发现每一行有空格&#xff0c;数了一行发现空格数量转ascil码后是f&#xff0c;猜测都如此&#xff0c; 后面就可以交个脚本了&#xff0c;统计之后转换成ascii from Crypto.Util.number import long_to_b…

[个人笔记] Linux的CLI笔录

Linux - CLI笔录 Linux的CLI笔录 Linux - CLI笔录Linux的CLI笔录Linux CentOS及Redhat的firewall-cmd使用Linux CentOS及Redhat的iptables使用Linux的tcpdump使用Linux的vim使用Linux创建systemctl系统服务Linux扫描全部磁盘OpenWrt的CLI 参考来源 Linux的CLI笔录 Linux CentO…

200. Number of Islands——BFS

文章目录 一、题目二、题解 一、题目 Given an m x n 2D binary grid grid which represents a map of 1’s (land) and 0’s (water), return the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertic…

YOLOv8-Seg改进:SENetV2,squeeze和excitation全面升级,效果优于SENet | 2023年11月最新成果

🚀🚀🚀本文改进: SENetV2,squeeze和excitation全面升级,作为注意力机制引入到YOLOv8,放入不同网络位置实现涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-s…

《曾国藩传》:崇尚笨拙的人生哲学

哈喽啊&#xff0c;大家好&#xff0c;我是雷工&#xff01; 以前读书喜欢读小说&#xff0c;喜欢看《我从你的全世界路过》《云间有个小卖铺》这些轻松的小说&#xff0c;读起来很轻松。 随着年龄增长&#xff0c;阅历的增加开始喜欢读历史&#xff0c;读人物传记&#xff0c;…

Ubuntu镜像与K8S冲突,容器持续Terminating

问题 记录一次软件冲突BUG&#xff1a; eclipse-temurin:11-jdk&#xff08;底层Ubuntu 20.04.3 LTS&#xff09;镜像创建的容器在K8S-1.25.5上无法正常terminating&#xff0c;造成资源浪费&#xff0c;甚至引发K8S资源CPU insufficient报错。具体表现 某些容器镜像在K8S上无…

贝叶斯优化对lightGBM最优超参数进行估计

贝叶斯优化对lightGBM最优超参数进行估计 相对遗传算法和模拟退火来说&#xff0c;利用贝叶斯估计的算法对超参数调参有着明显的速度优势&#xff0c;因为是对历史运行参数进行高斯过程类的方法去估计&#xff0c;所以不需要在空间里反复随机的搜索&#xff0c;所以很快就能估计…

uni-app+ts----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点(点击tab跳转对应的元素位置)

uni-app----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点&#xff08;点击tab跳转对应的元素位置&#xff09; html代码部分 重点是给元素加入【 :id“‘item’ item.id”】 <view class"radiusz bg-white pt-[30rpx] z-[999]"><u-tabs:list&q…

INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增长等问题

INFINI Labs 产品又更新啦~&#xff0c;本次更新主要对 Easysearch、Gateway、Console、Agent 等产品功能进行优化和相关 Bug 修复&#xff0c;解决了内存异常增长等问题&#xff0c;以下是详细说明。 INFINI Easysearch v1.6.2 INFINI Easysearch 是一个分布式的近实时搜索与…

下载的ros工程如何运行,ros项目运行方法

举例: 节点: 重要的步骤已经标黑,然后如果是节点的话,就运行rosrun 文件名,文件名相关,用tab按键补全即可。 Create folder "catkin_ws/src" somewhereGo the new created folder, into src foldergit clone https://github.com/IaroslavS/listen_to_topic_an…

pywin32后台键鼠

1 后台键鼠操作 组合键不生效&#xff0c;并且按键按下会触发两次&#xff0c;不知道为什么&#xff1f;有大佬知道了&#xff0c;请指教一下&#xff01; import time import win32api import win32con import win32guiclass VirtualKeyboard:def __init__(self, hwnd):self…

机器学习---EM算法

1. 极大似然估计与EM算法 极大似然估计是一种常用的参数估计方法&#xff0c;它是以观测值出现的概率最大作为准则。关于极 大似然估计&#xff0c;假设现在已经取到样本值了&#xff0c;这表明取到这一样本的概率L(θ) 比较 大。我们自然不会考虑那些不能使样本出现的θ作为…

计算机基础知识62

模型层回顾&#xff1a;基本使用 # 模型层有orm框架&#xff1a;对象关系映射 数据库中&#xff1a;一个个表 &#xff1a;user表&#xff0c;book表&#xff0c;一条条的记录 程序中&#xff1a;一个个类&#xff0c;一个个对象 数据库中一张表---->程序中一个…

【超详细】vue项目:Tinymce富文本使用教程以及踩坑总结+功能扩展

【【超详细】vue项目&#xff1a;Tinymce富文本使用教程以及踩坑总结功能扩展 引言&#xff1a;一、 开始二、快速开始1、安装Tinymce 三、封装成Vue组件1、文件结构2、index.vue3、dynamicLoadScript.js4、plugin.js5、toolbar.js 四、使用Tinymce组件五、业务逻辑实现1、添加…

对外汉语教师简历(精选12篇)

以对外汉语老师招聘需求为背景&#xff0c;我们制作了1份全面、专业且具有参考价值的简历案例&#xff0c;大家可以灵活借鉴&#xff0c;希望能帮助大家在众多候选人中脱颖而出。 对外汉语教师简历下载&#xff08;在线制作&#xff09;&#xff1a;百度幻主简历或huanzhucv.c…

Promise的resolve和reject方法(手写题)

1.resolve 2.reject 3.手写 1.resolve //构造函数上添加 resolve 方法 Promise.resolve function (value) {return new Promise((resolve, reject) > {if (value instanceof Promise) {value.then((val) > {resolve(val)},(err) > {reject(err)})} else {resolve(v…

Google Analytics(谷歌分析)是什么以及如何使用

Google Analytics&#xff08;谷歌分析&#xff09;是由Google提供的一款网络分析服务。该服务旨在帮助网站和应用程序的所有者更好地了解其用户的行为和交互&#xff0c;从而优化网站或应用的性能、用户体验和营销策略。Google Analytics 提供了丰富的数据和报告&#xff0c;涵…