基于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;我们都需要手动去创建一个结构比较复杂的函数描述变量…

0X04

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

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上无…

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 是一个分布式的近实时搜索与…

机器学习---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…

【Python表白系列】这个情人节送她一个漂浮的爱心吧(完整代码)

文章目录 漂浮的爱心环境需求完整代码详细分析系列文章 漂浮的爱心 环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0&#xff08;可选&#xff0c;这个库用于打包&#xff0c;使程序没有python环境也可以运行&#xff0c;如果想发给好朋友的话需要这…

21.Python 操作文件

目录 1. 认识文件和I/O2. 打开文件在异常处理语句中打开在上下文管理中打开 3.读取文件3. 写入文件4. 删除文件5. 复制文件6. 重命名文件7. 文件查找和替换 1. 认识文件和I/O 文件是存储在设备上的一组字符或字节序列&#xff0c;可以包含任何内容&#xff0c;它是数据的集合和…

SQL中left join、right join、inner join等的区别

一张图可以简洁明了的理解出left join、right join、join、inner join的区别&#xff1a; 1、left join 就是“左连接”&#xff0c;表1左连接表2&#xff0c;以左为主&#xff0c;表示以表1为主&#xff0c;关联上表2的数据&#xff0c;查出来的结果显示左边的所有数据&#…

【自动化测试】Selenium IDE脚本编辑与操作(了解)

之前&#xff0c;我们录制脚本时是录制鼠标和键盘的所有在浏览器的操作&#xff0c;那么脚本会出现多余的步骤&#xff0c;有时候我们需要手动填写脚本或修改脚本&#xff0c;所以我们有必要对selenium IDE脚本编辑与操作有所了解&#xff1b;&#xff08;采用录制的方式很容易…

Java+SSM+MySQL基于微信小程序的商城购物小程序(附源码 调试 文档)

基于微信小程序的商城购物小程序 一、引言二、国内外研究现状三、系统设计四、系统实现五、测试与评估六、结论七、界面展示八、源码获取 摘要&#xff1a; 本文介绍了一种基于微信小程序的商城购物小程序&#xff0c;该系统分为管理员和用户两种用户角色。管理员可以通过系统进…

流量内存cpu使用率使用工具

类似360工具球的工具 我提供了夸克下载喜欢的朋友可以直接下载使用 我用夸克网盘分享了「TrafficMonitor」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan…

(详细教程)笔记本电脑安装Ubuntu系统

1.前言 老的小米笔记本淘汰了&#xff0c;装一下linux系统玩一下。 使用工具如下&#xff1a;一台小米笔记本pro15.6一个惠普32G U盘一个台式机用于下载镜像等资源 2.下载Ubuntu桌面版 cn.ubuntu.com/download/de… 这里我下载的是 22.04.3 LTS 3.下载烧录工具&#xff0c…