基于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.hqwc.cn/news/236775.html

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

相关文章

C++核心编程——运算符重载

C核心编程——运算符重载 运算符重载的方法运算符重载函数作成员函数与友元函数重载双目运算符重载单目运算符重载流插入运算符和"<<"和流提取运算符">>"重载流插入运算符和"<<"流提取运算符">>" 运算符重载的…

百度贴吧大战:国内工厂爆改RTX 4090游戏显卡!用于AI模型训练

最近这英伟达芯片禁售这事&#xff0c;可谓搅的 AI 圈、游戏圈风起云涌&#xff0c;前不久我们刚刚报道完老黄如法炮制再次推出三款中国特供版 AI 芯片&#xff0c;后脚我们就发现国内公司也上有政策下有对策&#xff0c;百度贴吧显卡吧有网友在前线发来报道&#xff1a; 国内 …

提升APP软件的用户体验方法

提升APP软件的用户体验是确保用户满意度和应用成功的关键。以下是一些方法&#xff0c;可以帮助提升APP的用户体验&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.简洁的用户界面设计&#xff1a; …

女子曝被医生男友下药流产,男子被警方行拘10日,医院停职!

近日&#xff0c;一则关于女子被医生男友暗中下堕胎药导致流产的消息引起了广泛关注。经过一个多月的报案和调查&#xff0c;如今有了新的进展。 11月30日&#xff0c;王女士向华商报大风新闻记者证实&#xff0c;北京中关村某医院涉事医生已被行政拘留&#xff0c;被处以行政拘…

【Linux】I/O多路转接技术

I/O多路转接技术 一、I/O多路转接之select1、select函数2、fd_set的相关内容3、如何在代码中高效的使用select函数4、select服务器5、select的优缺点6、select的适用场景 二、I/O多路转接之poll1、poll函数2、struct pollfd结构2、poll服务器3、poll的优缺点 三、I/O多路转接之…

hbase thrift2 jar包冲突导致启动失败问题排查记录

1、启动命令 ${HBASE_HOME}/bin/hbase-daemon.sh start thrift2 2、异常情况 hbase-root-thrift2-hdfs-test07.yingzi.com.out异常日志&#xff1a; Exception in thread "main" java.lang.AbstractMethodError: org.apache.hadoop.metrics2.sink.timeline.Hadoo…

在cmd下查看mysql表的结构信息

我提前已经在mysql数据库中创建了一个表&#xff1a; 在cmd下&#xff0c;登录mysql以后&#xff0c;使用命令describe 表名、或者explain 表名可以查看表结构信息。但在实践中&#xff0c;查看表结构&#xff0c;多用describe命令&#xff0c;而查看执行计划用explain。 例…

element ui el-date-picker日期时间选择器 设置只能选择不大于30天时间范围

需求&#xff1a;要求日期时间选择器只能选择最多32天&#xff0c;其他日期为不可点击状态。 日期组件type为daterange或者datetimerange都生效 实现&#xff08;vue2.x&#xff09;&#xff1a; 通过属性picker-options html <el-date-pickerv-model"dateTime&qu…

神经网络模型数字推理预测

MNIST数据集 MNIST是机器学习领域 最有名的数据集之一&#xff0c;被应用于从简单的实验到发表的论文研究等各种场合。 实际上&#xff0c;在阅读图像识别或机器学习的论文时&#xff0c;MNIST数据集经常作为实验用的数据出现。 MNIST数据集是由0到9的数字图像构成的。训练图…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(2)》(18)

《Linux操作系统原理分析之linux存储管理&#xff08;1&#xff09;》&#xff08;17&#xff09; 6 Linux存储管理6.2 选段符与段描述符6.2.1 选段符6.2.2 段描述符6.2.3 分段机制的存储保护 6.3 80x86 的分页机制6.3.180x86 的分页机制6.3.2 分页机制的地址转换6.3.3 页表目录…

⭐ Unity + ARKIT 介绍 以及 平面检测的实现

在AR插件中&#xff0c;ARKIT是比较特殊的一个&#xff0c;首先他在很多追踪上的效果要比其他的AR插件要好&#xff0c;但是只能在IOS系统设备上运行。 1.首先ARKIT在最新版Unity已经集成在AR Foundation中&#xff0c;那我们就需要ARSession 和ARSessionOrigin这两个重要组件…

年终好价节买什么好?高效实用、高性价比的的数码好物推荐

前段时间&#xff0c;“淘宝双12不再举办”的话题上了热搜&#xff0c;改成了“淘宝年终好价节”。从“双12”到“好价节”&#xff0c;背后意味着大众跳出了一味追求低价的“买买买”的怪圈&#xff0c;转变为更追寻价好质优的商品。错过双11的消费者可以趁这个时间抓紧入手收…