冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 533|回覆: 0
打印 上一主題 下一主題

[討論] ATTiny13A製作4位數字時鐘

[複製鏈接]

2609

主題

0

好友

945

積分

高級會員

Rank: 4

UID
373967
帖子
7402
主題
2609
精華
0
積分
945
楓幣
1002
威望
925
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
405 小時
註冊時間
2023-1-12
最後登入
2024-4-29

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-2 09:20:33 |只看該作者 |倒序瀏覽
製作4位數字時鐘所需材料:

ATTiny13A微控制器
4個共陽極七段顯示器
4個220歐姆電阻
1個DS1302時鐘模塊
1個10K歐姆電阻
整合電路板
面包板
杜邦線
時刻校正按鈕
電源(通常使用5V USB電源)
ATTiny13A與七段顯示器的連接腳位:


七段顯示器腳位   ATTiny13A腳位
a               PB0
b               PB1
c               PB2
d               PB3
e               PB4
f               PB5
g               PB6
dp              PB7
com1            PD2
com2            PD3
com3            PD4
com4            PD5
時鐘模塊的連接腳位:


DS1302腳位      ATTiny13A腳位
VCC             VCC
GND             GND
CLK             PB2
DAT             PB1
RST             PB0
時刻校正按鈕的連接腳位:


按鈕腳位        ATTiny13A腳位
接觸1           PB7
接觸2           GND
完整程式碼:


#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "ds1302.h"

#define F_CPU 1200000UL

volatile uint8_t display_buffer[4] = {0, 0, 0, 0};
volatile uint8_t digit_count = 0;

ISR(TIM0_COMPA_vect)
{
  PORTD &= ~(0x3C);
  PORTB = display_buffer[digit_count];
  PORTD |= (1 << (digit_count + 2));
  digit_count = (digit_count + 1) % 4;
}

void init_timer(void)
{
  TCCR0A = (1 << WGM01);
  OCR0A = 29;
  TIMSK0 |= (1 << OCIE0A);
  TCCR0B = (1 << CS02);
}

int main(void)
{
  init_timer();
  init_ds1302();
  sei();

  DDRB = 0xFF;
  DDRD |= 0x3C;

  while (1)
  {
    struct ds1302_time time;
    ds1302_get_time(&time);

    uint8_t hour = time.hour;
    if (hour > 12)
      hour -= 12;

    display_buffer[0] = (hour / 10) | 0x80;
    display_buffer[1] = (hour % 10);
    display_buffer[2] = (time.minute / 10);
    display_buffer[3] = (time.minute % 10);

    if (bit_is_clear(PINB, 7))
    {
      ds1302_set_time(&time);
      while (bit_is_clear(PINB, 7));
    }

    _delay_ms(100);
  }

  return 0;
}
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-4-29 22:49

回頂部