版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种使用滚动开关实现四面钟功能切换的电子钟的制作方法一、前言现代化生活中,电子钟成为人们生活的重要组成部分。许多人希望在自己的家中制作一款自己喜欢的电子钟。本文将介绍一种使用滚动开关实现四面钟功能切换的电子钟的制作方法。二、所需材料ArduinoUNO开发板DS3231时钟模块4位数码管蜂鸣器按钮开关滚动开关杜邦线面包板三、电路连接将4位数码管连接到Arduino开发板上的数字引脚。将蜂鸣器连接到Arduino开发板上的数字引脚。将DS3231时钟模块连接到Arduino开发板上的SDA、SCL引脚。将按钮开关分别连接到数字引脚和接地上。将滚动开关连接到10号数字引脚和接地上。四、程序设计1.需求分析实现时间显示实现日期显示实现秒表实现闹钟功能2.程序实现分别实现时间显示、日期显示、秒表和闹钟功能的程序部分。在程序中使用滚动开关,通过不同的选项来切换功能显示。3.程序代码以下为Arduino程序代码:#include<Wire.h>
#include<DS3231.h>
DS3231rtc(SDA,SCL);
intclk=2;
intcs0=3;
intcs1=4;
intcs2=5;
intcs3=6;
intbeep=7;
intbutton0State=0;
intbutton1State=0;
intflag=0;
voidsetup()
{
rtc.begin();
pinMode(clk,OUTPUT);
pinMode(cs0,OUTPUT);
pinMode(cs1,OUTPUT);
pinMode(cs2,OUTPUT);
pinMode(cs3,OUTPUT);
pinMode(beep,OUTPUT);
pinMode(10,INPUT_PULLUP);
}
voidloop()
{
button0State=digitalRead(8);
button1State=digitalRead(9);
if(button0State==LOW){
flag=(flag+1)%4;
delay(100);
}
switch(flag){
case0:displayTime();break;
case1:displayDate();break;
case2:stopwatch();break;
case3:alarm();break;
}
}
voiddisplayTime()
{
DateTimenow=rtc.now();
inth=now.hour();
intm=now.minute();
digitalWrite(cs0,LOW);
digitalWrite(clk,LOW);
shiftOut(cs0,clk,MSBFIRST,h/10);
shiftOut(cs0,clk,MSBFIRST,h%10);
shiftOut(cs0,clk,MSBFIRST,10);
shiftOut(cs0,clk,MSBFIRST,m/10);
shiftOut(cs0,clk,MSBFIRST,m%10);
digitalWrite(cs0,HIGH);
}
voiddisplayDate()
{
DateTimenow=rtc.now();
inty=now.year()-2000;
intm=now.month();
intd=now.day();
digitalWrite(cs1,LOW);
digitalWrite(clk,LOW);
shiftOut(cs1,clk,MSBFIRST,y/10);
shiftOut(cs1,clk,MSBFIRST,y%10);
shiftOut(cs1,clk,MSBFIRST,11);
shiftOut(cs1,clk,MSBFIRST,m/10);
shiftOut(cs1,clk,MSBFIRST,m%10);
shiftOut(cs1,clk,MSBFIRST,12);
shiftOut(cs1,clk,MSBFIRST,d/10);
shiftOut(cs1,clk,MSBFIRST,d%10);
digitalWrite(cs1,HIGH);
}
voidstopwatch()
{
staticunsignedlongtiming=0;
staticunsignedcharcount=0;
digitalWrite(cs2,LOW);
digitalWrite(clk,LOW);
shiftOut(cs2,clk,MSBFIRST,count/10);
shiftOut(cs2,clk,MSBFIRST,count%10);
shiftOut(cs2,clk,MSBFIRST,11);
shiftOut(cs2,clk,MSBFIRST,(timing/60)%10);
shiftOut(cs2,clk,MSBFIRST,(timing/60)/10);
shiftOut(cs2,clk,MSBFIRST,10);
shiftOut(cs2,clk,MSBFIRST,(timing%60)%10);
shiftOut(cs2,clk,MSBFIRST,(timing%60)/10);
digitalWrite(cs2,HIGH);
timing=millis()/1000;
count++;
if(count>=100)count=0;
}
voidalarm()
{
staticunsignedcharcount=0;
staticintsetHour=0,setMin=0;
staticbooleanisBeep=false;
if(count==0){
setHour=random(0,24);
setMin=random(0,60);
isBeep=false;
}
if(isBeep==false&&setHour==rtc.now().hour()&&setMin==rtc.now().minute()){
isBeep=true;
digitalWrite(beep,HIGH);
}elseif(isBeep&&count>=5){
isBeep=false;
digitalWrite(beep,LOW);
count=0;
}
digitalWrite(cs3,LOW);
digitalWrite(clk,LOW);
shiftOut(cs3,clk,MSBFIRST,setHour/10);
shiftOut(cs3,clk,MSBFIRST,setHour%10);
shiftOut(cs3,clk,MSBFIRST,10);
shiftOut(cs3,clk,MSBFIRST,setMin/10);
shiftOut(cs3,clk,MSBFIRST,setMin%10);
shiftOut(cs3,clk,MSBFIRST,12);
shiftOut(cs3,clk,MSBFIRST,count/10);
shiftOut(cs3,clk,MSBFIRST,count%10);
digitalWrite(cs3,HIGH);
delay(50
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学主题班会课件:安全意识大讲堂
- 体育与健身行业智能化运动器材与健身方案
- 一年级小糊涂题目及答案
- 防疫正确认识健康生活每一天小学六年级主题班会课件
- 诚实守信塑造良好品格-小学主题班会课件
- 小学主题班会课件:友善待人与尊老爱幼
- 企业HR绩效考核实施手册
- 基于机器学习的自适应学习辅助手册
- 施工现场组织管理办法
- 2026年材料员-岗位技能(材料员)考试内容及考试题库含答案
- 睾丸扭转的术后护理课件
- 2023年注册电气工程师《公共基础》试题真题及答案
- 2024年江苏南通海安市城市管理局政府购买服务人员招聘笔试参考题库附带答案详解
- 《居民区电动汽车充电基础设施建设管理示范文本》
- 第九章环境经济政策课件
- 中央空调施工确认单
- 仪表基础知识 课件
- 摄像机标定的几种方法课件
- 小学口语交际课题结题报告
- 义务教育科学课程标准(2022年版)
- 深圳市工务署品牌库
评论
0/150
提交评论