欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

arduino+DS1302+按鍵制作可調(diào)時鐘程序,在寫按鍵更改時間的地方搞不懂

查看數(shù): 4919 | 評論數(shù): 4 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2020-4-11 13:03

正文摘要:

想利用arduino+DS1302制作時鐘,按鍵可以更改時間,并且可以用串口改變時間。在寫按鍵更改時間的地方搞不懂。沒有辦法把時間寫進DS1302中。求助各位大神幫幫忙。。 Arduino源程序如下: #include <stdio.h ...

回復

ID:594925 發(fā)表于 2020-4-14 16:05
1334479405 發(fā)表于 2020-4-14 13:17
謝謝。。但是我看不怎么懂這個程序。。就是你寫的這個程序是直接加到我的程序里還是單獨的啊?如果可以的 ...

把這個程序加到你那個程序里面,然后在你這里 if(digitalRead(min_up) == 0){    }這樣寫
if(digitalRead(min_up) == 0)
{  
      for(n=0;n<7;n++)
  {
    TIME[n]=readData(READ_RTC_ADDR[n]);
  }                          //讀取DS1302里當前時間
    TIME[1]=TIME[1]+1; //分鐘增加1,秒分時日月周年,分在TIME[1]里 時在TIME[2]

     for(n=0;n<7;n++)
  {
     writeData(WRITE_RTC_ADDR[n],TIME[n]);
  }                          //把更改的時間寫入DS1302
}
ID:620438 發(fā)表于 2020-4-14 13:17
wudidewrf 發(fā)表于 2020-4-14 10:50
下面是從DS1302讀取時間和寫入時間的程序,編個按鍵就可以實現(xiàn) 按鍵更改時間了

char  READ_RTC_ADDR[7]  ...

謝謝。。但是我看不怎么懂這個程序。。就是你寫的這個程序是直接加到我的程序里還是單獨的啊?如果可以的話可以麻煩你直接在我的程序上面改動一下嗎?
ID:160964 發(fā)表于 2020-4-11 14:31
建議用DS321,你這個沒有溫度補償,時差可能較大
ID:594925 發(fā)表于 2020-4-11 13:03
下面是從DS1302讀取時間和寫入時間的程序,編個按鍵就可以實現(xiàn) 按鍵更改時間了

char  READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
char  WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
char TIME[7] = {0};//秒分時日月周年,存儲格式是用BCD碼

void writeData(unsigned char addr,unsigned char dat){   //向芯片里面寫數(shù)據(jù),
  pinMode(IO_PIN,OUTPUT);
  digitalWrite(CE_PIN,LOW);   //下拉低,再拉高
  digitalWrite(SCLK_PIN,LOW) ; //SCLK的上升沿, 芯片會讀取IO端口
  delayMicroseconds(1);
  digitalWrite(CE_PIN,HIGH);

  int i;
  for(i =0;i<8;i++){
    digitalWrite(SCLK_PIN,LOW);
    digitalWrite(IO_PIN, addr&1);
    addr =addr>>1;
    digitalWrite(SCLK_PIN,HIGH);
    delayMicroseconds(1);
  }

  for(i =0;i<8;i++){
      digitalWrite(SCLK_PIN,LOW);
      digitalWrite(IO_PIN, dat&1);
      dat =dat>>1;
      digitalWrite(SCLK_PIN,HIGH);
      delayMicroseconds(1);
  }
  digitalWrite(CE_PIN,LOW);
}

char readData(char addr){              //從芯片里去讀源數(shù)據(jù),但是數(shù)據(jù)還是要經(jīng)過一定的格式化才行啊
  addr = addr | 1; //讀操作最低位置為1     要看懂這些就需要查看芯片的手冊才是呀

  pinMode(IO_PIN,OUTPUT);
  digitalWrite(CE_PIN,LOW); //下拉低,再拉高
  digitalWrite(SCLK_PIN,LOW) ; //SCLK的上升沿, 芯片會讀取IO端口
  delayMicroseconds(1);
  digitalWrite(CE_PIN,HIGH);

  int i;
  for(i =0;i<8;i++){                //讀取命令是先要寫一些命令代碼,根據(jù)代碼,芯片會吐出相應的元素.
    digitalWrite(SCLK_PIN,LOW);
    digitalWrite(IO_PIN, addr&1);
    addr =addr>>1;
    digitalWrite(SCLK_PIN,HIGH);
    delayMicroseconds(1);
  }
  pinMode(IO_PIN,INPUT);               //設置io口為向內(nèi)讀入.這樣這個引腳就可以讀取數(shù)據(jù)了.

  int dat = 0;
  for(i =0;i<8;i++){
      digitalWrite(SCLK_PIN,LOW);
      delayMicroseconds(10);
      char b = digitalRead(IO_PIN);
      dat = dat >>1; //先向右平移

      dat = dat | (b<<7); //將所得放入最高位
      digitalWrite(SCLK_PIN,HIGH);
      delayMicroseconds(1);
  }
  digitalWrite(CE_PIN,LOW);  
  return dat ;
}

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表