精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Arduino UNO和四位數碼的數字時鐘制作方案

電子設計 ? 來源:一板網 ? 作者:風箏 ? 2020-12-13 10:35 ? 次閱讀

數字掛鐘現在越來越受歡迎,它們比模擬時鐘更好,因為它提供了小時、分鐘和秒的準確時間,并且易于讀取數值。一些數字時鐘也有許多設施,如顯示溫度、濕度、設置多個鬧鈴等。大多數數字時鐘使用七段數碼管

我們之前使用七段數碼管或使用1602 LCD制作了許多數字時鐘電路。在本文中,主要介紹通過使用Arduino UNO和四位數碼制作數字時鐘,并以HH:MM格式顯示時間。

需要的組件

● 4位7段數碼管

● 74HC595

● DS3231 RTC模塊

● Arduino UNO

● 面包板

● 連接跳線

四位七段數碼管

四位七段數碼管有四個七段數碼管連接在一起。它們用于顯示數值以及一些帶小數和冒號的字母。顯示屏可以雙向使用。四位數碼管可用于制作數字時鐘或類似于0到9999之間的計數器。下面是四位七段數碼管的內部圖。

o4YBAF_QkfSADOM0AACdoWhbWA8990.png

每個部分都有一個帶獨立控制的LED。七段數碼管顯示有兩種類型,共陽極和共陰極。上圖顯示了共陽極七段數碼管。

共陽極

在共陽極中,所有8個LED的所有正極(陽極)連接在一起,命名為COM。并且所有負極端子都保持斷開或連接到微控制器引腳。通過使用微控制器,邏輯低電平用于點亮特定LED段,邏輯高電平熄滅LED。

o4YBAF_QkgGAJIpjAAE6R6t-GN0587.png

共陰極

在共陰極中,所有8個LED的所有負極端子(陰極)連接在一起,命名為COM。并且所有正極端子都保持斷開或連接到微控制器引腳。通過使用微控制器,邏輯高電平用于點亮特定LED段,邏輯低電平熄滅LED。。

o4YBAF_QkhSAJQkxAAEc6xg6KwY041.png

74HC595移位寄存器IC

o4YBAF_QkiGALMiwAAA678Tj14o325.png

74HC595也稱為8位串行輸入 - 并行輸出移位寄存器。該IC可以串行接收數據輸入,并行控制8個輸出引腳。這對于減少微控制器使用的引腳非常有用。

74HC595 IC的工作原理

該IC使用三個引腳(如時鐘、數據和鎖存器)與微控制器來控制IC的8個輸出引腳。時鐘用于連續提供來自微控制器的脈沖,數據引腳用于發送數據,例如在相應的時鐘時間需要將輸出打開或關閉的數據。

DS3231 RTC模塊

DS3231是一款RTC模塊。 RTC代表實時時鐘。即使電路未通電,該模塊也用于記住時間和日期。它有一個備用電池CR2032,可在沒有外部電源的情況下運行模塊。該模塊還包括溫度傳感器。該模塊可用于嵌入式項目,如制作帶溫度指示器的數字時鐘等.

該模塊的一些功能和參數

● RTC,計算秒、分、小時和年

● 數字溫度傳感器,精度為±3oC

● 400Khz I2C接口

● 功耗低

● CR2032備用電池,具有兩到三年的使用壽命

● 工作電壓:2.3至5.5V

電路原理

DS3231 RTC和Arduino UNO之間的電路連接:

DS3231 Arduino UNO開發板
VCC 5V
GND GND
SDA A4
SCL A5


編程Arduino UNO

在本文的末尾處給出了完整的代碼。在編程部分中,將說明如何以24小時格式從RTC模塊獲取時間(小時和分鐘),然后將其轉換成用于在4位7段顯示中顯示它們的相應格式。

要將DS3231 RTC模塊與Arduino UNO連接,使用Arduino UNO的I2C總線。程序中包含一個名為的庫,用于訪問設置和讀取時間、日期、溫度數據等功能。下載DS3231 RTC模塊Arduino庫。由于RTC模塊使用I2C接口,因此程序中也使用庫。

在本文中,小時和分鐘首先從RTC獲取,它們像0930(09:30 pm)一樣被組合在一起然后各個數字被分開,如千、百、十、單位,并且各個數字被轉換成二進制格式,如0到63(0111111)。該二進制代碼被發送到移位寄存器,然后從移位寄存器發送到七段,成功地在七段顯示中顯示數字0。這樣,四位數碼管姐可以顯示小時和分鐘。

首先,包括必要的庫,例如DS3231庫和Wire庫(I2C庫)。

#include

#include

定義控制七段數碼管的引腳。這些控制將在復用數碼管中發揮重要作用。

#define latchPin 5

#define clockPin 6

#define dataPin 4

#define dot 2

聲明變量存儲從RTC獲取的轉換結果或原始結果。

int h; //Variable declared for hour

int m; //Variable declared for minute

int thousands;

int hundreds;

int tens;

int unit;

bool h24;

bool PM;

接下來,聲明類DS3231的對象為RTC,以簡化在以后代碼中的使用。

DS3231 RTC;

由于RTC模塊通過I2C通信與Arduino連接。因此,wire.begin()用于在RTC的默認地址中啟動I2C通信,因為沒有其他I2C模塊。

Wire.begin();

定義引腳模式,確定GPIO是作為輸出還是輸入。

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

pinMode(12,OUTPUT);

pinMode(latchPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(dot,OUTPUT);

loop函數將無限運行,首先需要從RTC DS3231模塊讀取以小時和分鐘為單位的時間。 'h24'表示24小時格式變量。

int h= RTC.getHour(h24, PM);

int m = RTC.getMinute();

然后將小時和分鐘組合為一個數字(例如,如果小時為10,則min為60,則數字為10 * 100 = 1000 + 60 = 1060)。

int number = h*100+m;

獲得數字的各個位的數字(示例1060-1是千位,0是百位,1是十位,0是最后一個數字)。為了分開數字,使用模數運算符。例如,在1060得到1然后1060/1000 = 1.06%10 = 1)。因此,單獨的數字存儲在單獨的變量中。

int thousands = number/1000%10;

int hundreds = number/100%10;

int tens = number/10%10;

int unit = number%10;

之后,定義每個數字的switch-case語句,用于將它們轉換為相應的格式(二進制格式),并通過移位寄存器發送到7段顯示。例如(對于1位數,它將轉換為06(0000 0110))。因此它通過移位發出,1位數顯示在7段(0表示LOW,1表示HIGH)。

switch (t)

{

case 0:

unit = 63;

break;

case 1:

unit = 06;

break;

case 2:

unit =91;

break;

case 3:

unit=79;

break;

case 4:

unit=102;

break;

case 5:

unit = 109;

break;

case 6:

unit =125;

case 7:

unit = 07;

break;

case 8:

unit = 127;

break;

case 9:

unit =103;

break;

}

然后,通過'shiftout'函數以先MSB的方式發送二進制格式的數字,相應的數字引腳變為高電平,鎖存引腳變為高電平。

digitalWrite(9, LOW);

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST,thousands);

digitalWrite(latchPin, HIGH);

digitalWrite(9, HIGH);

delay(5);

這樣就完成了完整的代碼。大多數函數說明都在代碼注釋部分的代碼行旁邊給出。時鐘的頻率將決定多路復用的時間和質量的、。如果使用的時鐘低,那么可以看到閃爍,如果時鐘速度高,那么就不會有這樣的閃爍,可以看到穩定的時間。

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7492

    瀏覽量

    151076
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4414

    瀏覽量

    167121
  • 數碼管
    +關注

    關注

    32

    文章

    1876

    瀏覽量

    90965
  • 模擬時鐘
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1831
收藏 人收藏

    評論

    相關推薦

    貼片電阻的阻值如何識別?每個廠家都一樣的嗎?

    = 10kΩ。 四位數字編碼:前三位數字代表電阻值的有效數字,第四位數字代表乘數(也是10的冪次方)。例如,“4721”的電阻阻值為472 × 10^1 = 4.72kΩ。 需要注意
    的頭像 發表于 09-19 15:33 ?412次閱讀

    8位數碼管怎么不顯示數字

    8位數碼管是一種常見的電子顯示設備,用于顯示數字或字符。然而,有時8位數碼管可能無法正常顯示數字。 電源問題 電源是8位數碼管正常工作的基礎
    的頭像 發表于 08-28 16:34 ?691次閱讀

    8位數碼管在Proteus中的使用技巧

    管的基本概念 8位數碼管是一種用于顯示數字和部分字母的電子器件,通常由8個獨立的七段顯示器組成,每個七段顯示器可以顯示0-9的數字和部分字母。8位數碼管廣泛應用于各種電子設備中,如電子
    的頭像 發表于 08-28 16:31 ?3110次閱讀

    瀚海微SD NAND應用之SD協議物理層的規范

    本文中的數字規則 十六進制數字以小寫“h”后綴書寫,例如FFFFh和80h。 二進制數用小寫“b”后綴書寫(例如,10b)。 大于四位數的二進制數用一個空格分隔每組四位數,如1000
    的頭像 發表于 07-18 14:54 ?299次閱讀
    瀚海微SD NAND應用之SD協議物理層的規范

    半和四位半萬用表的區別

    半和四位半萬用表是電子測量領域中常用的兩種數字萬用表,它們在測量精度、顯示方式、應用范圍等方面存在一定的差異。本文將從多個方面詳細分析這兩種萬用表的區別。 一、基本概念 三半萬用
    的頭像 發表于 07-14 14:23 ?5006次閱讀

    【紫光同創盤古PGX-Nano教程】——(盤古PGX-Nano開發板/PG2L50H_MBG324第五章)數碼管動態顯示實驗例程

    管原理 數碼管是一種半導體發光器件,其基本單元是發光二極管。能顯示4個數碼管叫四位數碼管。數碼管按段數分為七段數碼管和八段
    發表于 05-08 18:19

    【紫光同創盤古PGX-Nano教程】——(盤古PGX-Nano開發板/PG2L50H_MBG324第章)靜態數碼管顯示實驗例程

    燈、按鍵、撥碼開關等。 二:實驗目的 兩個四位數碼管同時顯示0-9,每隔1s數字變化一次。 三:實驗原理 數碼管是一種基本單元為發光二極管的半導體發光器件。能并行顯示四位數
    發表于 05-07 10:39

    【紫光同創盤古PGX-MINI-4K教程】——(盤古PGX-MINI-4K開發板/PGC4KD-6ILPG144第章)數碼管動態顯示實驗例程

    管,按一下數字加 1,從 0 到 9;按鍵 K3 控制左側起第四個數碼,按一下數字加 1,從 0 到 9。 :實驗原理數碼管是一種半導體
    發表于 04-28 18:30

    【紫光同創盤古PGX-Lite 7K教程】——(盤古PGX-Lite 7K開發板/PGC7KD-6IMBG256第章)?數碼管動態顯示實驗例程

    加 1,從 0 到 9,按鍵 K2 控制右側起第三個數碼管、依次類推。 :實驗原理 數碼管是一種半導體發光器件,其基本單元是發光二極管。能顯示 4 個數碼管的稱為
    發表于 04-24 14:51

    【基于Lattice MXO2的小腳丫FPGA核心板】03數碼管顯示控制

    段顯示數字9 end assign seg_led_1 = seg[seg_data_1]; //連續賦值,這樣輸入不同四位數,就能輸出對于譯碼的9輸出 assign seg_led_2
    發表于 02-29 09:01

    英偉達收漲16.4% 分析師稱英偉達股價可能達到四位數

    英偉達收漲16.4% 分析師稱英偉達股價可能達到四位數 就在英偉達發布了拯救地球任務的業績報告之后全球AI投資者都在狂歡,在英偉達超強超強的業績數據及超級樂觀的未來營收展望推動下英偉達收漲16.4
    的頭像 發表于 02-23 15:35 ?809次閱讀

    如何使用Arduino UNO板和電位器控制伺服電機

    在本Arduino伺服電機教程中,您將學習如何使用Arduino UNO板和電位器控制伺服電機。
    的頭像 發表于 02-11 10:11 ?2623次閱讀
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>UNO</b>板和電位器控制伺服電機

    【每周一練】盤古1K開發板 練習:密碼鎖

    ]設置第二。所以密碼是由0,1,2,3 組成的四位數。 KEY1-KEY2 作為密碼輸入,按鍵按一下數字加 1,數字數碼管顯示,
    發表于 12-10 16:47

    【每周一練】盤古1K開發板 練習:密碼鎖實驗

    ]設置第二。所以密碼是由0,1,2,3 組成的四位數。 KEY1-KEY2 作為密碼輸入,按鍵按一下數字加 1,數字數碼管顯示,
    發表于 12-09 15:37

    【每周一練】盤古1K開發板 練習:密碼鎖實驗

    ]設置第二。所以密碼是由0,1,2,3 組成的四位數。KEY1-KEY2 作為密碼輸入,按鍵按一下數字加 1,數字數碼管顯示,
    發表于 11-29 13:52