一种使用滚动开关实现四面钟功能切换的电子钟的制作方法_第1页
一种使用滚动开关实现四面钟功能切换的电子钟的制作方法_第2页
一种使用滚动开关实现四面钟功能切换的电子钟的制作方法_第3页
一种使用滚动开关实现四面钟功能切换的电子钟的制作方法_第4页
一种使用滚动开关实现四面钟功能切换的电子钟的制作方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种使用滚动开关实现四面钟功能切换的电子钟的制作方法一、前言现代化生活中,电子钟成为人们生活的重要组成部分。许多人希望在自己的家中制作一款自己喜欢的电子钟。本文将介绍一种使用滚动开关实现四面钟功能切换的电子钟的制作方法。二、所需材料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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论