• 1307 1602 按键 精巧用法


    1307接线![在这里插入图片描述](https://img-blog.csdn.net/2018100414110338?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIzMzE4OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

    代马部分
    #include <Wire.h>
    #include <RTClib.h>
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27,16,2);
    void printDateTime(DateTime dateTime);
    int Y=18;
    int M=10;
    int D=04;
    int H=11;
    int F=12;
    int S=00;
    int x=00;
    int y=00;
    int z=00;
    int m=00;
    int n=00;
    #define BUTTON 12 //定义按钮开关引脚为12

    int val = 0; //变量val用来储存按钮状态

    int old_val = 0; //暂存val变量的上一个时间单位

    int state = 0; //0
    //创建实例
    RTC_DS1307 RTC;

    const int buttonPin2 = 9;
    const int buttonPin3 = 10;

    int buttonState1= 0;
    int buttonState2= 0;
    int buttonState3= 0;
    void setup (void){
    pinMode (BUTTON,INPUT);

    pinMode(buttonPin2, INPUT);
    pinMode(buttonPin3, INPUT);
    Serial.begin(9600);
    //初始化总线
    Wire.begin();
    //初始化实时时钟
    RTC.begin();
    lcd.init(); // initialize the lcd

    // Print a message to the LCD.
    lcd.backlight();

    }

    void loop() {
    val = digitalRead(BUTTON); //读取按钮状态并储存
    if (val==0){
    z=z+1;
    if(z>4){
    z=1;
    }
    }
    buttonState2 = digitalRead(buttonPin2);
    buttonState3 = digitalRead(buttonPin3);
    if((val == HIGH)&&(old_val == LOW)){

    state =1-state;

    delay(40); //延时简单抗抖动

    }

    old_val = val; //val下载已经是旧的了,让我们暂存一下
    DateTime now = RTC.now();
    //通过串口传送当前的日期和时间
    printDateTime(now);
    delay(100);

    if (Serial.available() > 0) {

    int instruct = Serial.read();

    switch (instruct) {

    case 'S':
    RTC.set(RTC_YEAR,18); //设置成17年
    RTC.set(RTC_MONTH, M); //设置成4月
    RTC.set(RTC_DAY, D); //设置成18日
    RTC.set(RTC_HOUR, H); //设置成9时
    RTC.set(RTC_MINUTE, F); //设置成39分
    RTC.set(RTC_SECOND, S); //设置成01秒
    break;
    }
    }

    }

    void printDateTime(DateTime dateTime) {
    //传送年份
    Serial.print(dateTime.year(), DEC);
    Serial.print('/');
    //传送月份
    Serial.print(dateTime.month(), DEC);
    Serial.print('/');
    //传送月份中的第几天
    Serial.print(dateTime.day(), DEC);
    Serial.print(' ');
    //传送小时
    Serial.print(dateTime.hour(), DEC);
    Serial.print(':');
    //传送分钟
    Serial.print(dateTime.minute(), DEC);
    Serial.print(':');
    //传送秒
    Serial.print(dateTime.second(), DEC) ;Serial.print('/');Serial.print( x);Serial.print('/');Serial.print( y);Serial.print('/');Serial.print(state);Serial.print(z);Serial.print('/');Serial.print( buttonState2);Serial.print('/');Serial.print( buttonState3);
    Serial.println();
    buttonState1 = digitalRead(buttonPin2);
    buttonState2 = digitalRead(buttonPin2);
    buttonState3 = digitalRead(buttonPin3);
    if ((z == 1)&&(buttonState2==0))
    {
    x=x+1;
    delay(40);
    }
    if ((z == 1)&&(buttonState3==0))
    {
    y=y+1;
    delay(40);
    }
    if ((z == 2)&&( buttonState2==0))
    {
    x=x-1;
    delay(40);
    }
    if ((z == 2 )&&(buttonState3==0))
    {
    y=y-1; delay(40);
    }

    if ((z== 3)&&(buttonState2==0))
    {
    m=m+1;
    delay(40);
    }
    if ((z==3)&&(buttonState3==0))
    {
    n=n+1;
    delay(40);
    }
    if ((z == 4)&&( buttonState2==0))
    {
    m=m-1;
    delay(40);
    }
    if ((z== 4 )&&(buttonState3==0))
    {
    n=n-1; delay(40);
    }

    if ((dateTime.hour()==m & dateTime.minute()|| (dateTime.hour()==x & dateTime.minute()==y)){
    digitalWrite(6, HIGH);
    }
    else {

    digitalWrite(6, LOW);

    }

    lcd.setCursor(2,0);
    lcd.print(dateTime.month());
    lcd.setCursor(4,0);
    lcd.print("-");
    lcd.setCursor(6,0);
    lcd.print(dateTime.day());
    lcd.setCursor(0,1);

    lcd.print(dateTime.hour());
    lcd.setCursor(2,1);
    lcd.print(":");

    lcd.setCursor(3,1);
    lcd.print(dateTime.minute());
    lcd.setCursor(5,1);
    lcd.print(":");
    lcd.setCursor(6,1);
    lcd.print(dateTime.second());

    lcd.setCursor(10,1);
    lcd.print(x);
    lcd.setCursor(12,1);
    lcd.print(":");
    lcd.setCursor(14,1);
    lcd.print(y);
    lcd.setCursor(10,0);
    lcd.print(m);
    lcd.setCursor(12,0);
    lcd.print(":");
    lcd.setCursor(14,0);
    lcd.print(n);
    }

    用到了i2c的 1602

    1307的库文件链接:https://pan.baidu.com/s/18V3KQFBlRD_sasqKUAc55g 密码:cp9r

  • 相关阅读:
    linux 常用命令(个人记录)
    jmeter 5.0版本更新说明(个人做个记录)
    Netdata---Linux系统性能实时监控平台部署记录
    MySQL Yum存储库 安装、升级、集群
    linux 各项配置汇总
    构建Maven项目自动下载jar包
    计算服务器的pv量算法
    性能计算公式
    jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
    结构模式
  • 原文地址:https://www.cnblogs.com/zdh6/p/9742171.html
Copyright © 2020-2023  润新知