衡阳派盒市场营销有限公司

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

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

3天內不再提示

如何使用三個4位7段顯示制作學校倒計時日歷

454398 ? 來源:wv ? 2019-09-03 15:19 ? 次閱讀

步驟1:4位7段顯示

明顯的出發點是熟悉4位7段顯示器。這些單元來自我們為教室使用而購買的一些Elegoo stater套件,但最有可能與您在上圖中看到的部件一起購買。除了上面的物理設備圖像,您還可以看到該設備的引腳和原理圖。將Arduino編程為單獨的顯示字符非常簡單,但是要同時顯示整個單詞或數字是有趣的。與任何7段顯示一樣,可以通過打開字母段的不同組合來顯示數字和一些字符;使用4位7段單元的扭曲是每個數字的所有單個段都連接在一起,每個數字只有它自己的共用陰極或陽極單獨控制。實際上,使這些單元顯示單詞或數字的唯一方法仍然是一次一位數;然而,數字的開啟和關閉速度都很快,以至于人眼看起來一直都在。

第2步:理解(和使用)Arduino端口

為了避免使用數以千計的“digitalWrite”命令打開和關閉我需要的所有組合,我決定熟悉Arduino上端口的使用平臺。使用此命令(例如:PORTA = B01110101;)可以同時打開和關閉8個數字I/O引腳,其中1表示等于向該引腳寫入“高電平”,0表示與寫入“低電平”相同到針。每個端口對應Arduino上的8個引腳,可以用二進制(我使用的)或十六進制寫入。一個簡單的例子是上面的引腳輸出中顯示的Arduino Mega上的端口F和K,PORTF對應于模擬引腳A0-A7和PORTK,對應于模擬引腳A8-A15。非常感謝Adafruit社區在這個壯觀的引腳上的工作!

第3步:全力以赴

雖然上面的圖片很難看,但我決定未來編程的最合理布局是將每個4位7段分成上半部分和下半部分,然后將每一半分配給特定端口。這將允許我輕松查看我需要的數字,然后使用二進制輸出打開相應的段到相關端口。使用port命令的十六進制版本會使每個命令(實際上是命令調用的2D數組)更短但在布局代碼時看起來更容易看到高/低組合而不是必須以十六進制轉換那些相同的組合,即使代碼從長遠來看會更緊湊。為了幫助完成這個過程,我創建了一個圖表來顯示哪些數字/段與哪個端口分配相關聯。您還可以在上圖中看到,通過每個數字的共陰極引腳實現限流,而不是限制每個單獨的電流。

步驟4:代碼 - CountUpDownTimer

在幾次嘗試運行一系列嵌套for循環以控制時序和顯示失敗后,我開始研究適用于Arduino的并行處理。最后我遇到了一個名為“CountUpDownTimer”的預先存在的庫,可以在這里找到Arduino Playgound。該庫在后臺為您執行計時,允許您在需要時撥打小時,分鐘和秒。然后將這些值作為參數傳遞給一個數組,該數組打開適當的段以顯示相應的數字。唯一的復雜因素(除了創建數組 - 下一步更多)是我必須修改庫以添加“ShowDays”方法,該方法不是原始代碼的一部分。

#include

CountUpDownTimer T(DOWN, HIGH); //Create the timer object void setup(){

//Setting all digital pins as outputs

for (int i=3; i《=53; i++)

pinMode(i, OUTPUT);

//Setting all analog pins as outputs

for (int a=A0; a《=A15; a++)

pinMode(a, OUTPUT);

T.SetTimer(52,07,17,00); // (days, hours, minutes, seconds)

T.StartTimer();

} void loop() {

T.Timer();

int stepDelay = 50;

long sm = T.ShowMinutes();

long sh = T.ShowHours();

long sd = T.ShowDays();

for(int c = 0; c 《 4; c++){

PORTB = upperArray[sm][c];

PORTL = lowerArray[sm][c];

PORTA = upperArray[sh][c];

PORTC = lowerArray[sh][c];

PORTF = upperArray[sd][c];

PORTK = lowerArray[sd][c];

delayMicroseconds(stepDelay);

}

}

步驟5:代碼 - 2D數組

驅動端口的值被放置在一個單獨的2D陣列中,該陣列分成兩半,一個用于顯示器的上半部分,另一個用于下半部分。部分。端口分配基于顯示器的引腳,每列代表相應的數字。這里的關鍵是將高點和低點的適當組合應用于每個連續數字的各個段和適當的共陰極。 2D陣列長270行,占整個學年,四列寬,每個顯示四位數。盡管小時和分鐘從不調用陣列的大多數,但使用相同的結構來驅動這些顯示器而不是每個部分的自定義陣列似乎更容易。上半部分和下半部分的前幾行如下所示。我還創建了您在上面看到的圖表,顯示哪些端口輸出與哪些段相對應,以最大限度地減少錯誤并保持理智。

byte upperArray[270][4]

{B00011111,B00111011,B00111101,B00111111}, //00u

{B00011111,B00111011,B00111101,B00100111}, //01u

{B00011111,B00111011,B00111101,B00110111}, //02u

{B00011111,B00111011,B00111101,B00110111}, //03u

{B00011111,B00111011,B00111101,B00101111}, //04u

{B00011111,B00111011,B00111101,B00111110}, //05u

{B00011111,B00111011,B00111101,B00111110}, //06u

{B00011111,B00111011,B00111101,B00110111}, //07u

{B00011111,B00111011,B00111101,B00111111}, //08u

{B00011111,B00111011,B00111101,B00111111}, //09u

{B00011111,B00111011,B00100101,B00111111}, //10u byte lowerArray[270][4]{

{B00110101,B00110101,B00110101,B00110100}, //00

{B00110101,B00110101,B00110101,B00000100}, //01

{B00110101,B00110101,B00110101,B00110010}, //02

{B00110101,B00110101,B00110101,B00010110}, //03

{B00110101,B00110101,B00110101,B00000110}, //04

{B00110101,B00110101,B00110101,B00010110}, //05

{B00110101,B00110101,B00110101,B00110110}, //06

{B00110101,B00110101,B00110101,B00000100}, //07

{B00110101,B00110101,B00110101,B00110110}, //08

{B00110101,B00110101,B00110101,B00010110}, //09

{B00110101,B00110101,B00000101,B00110100}, //10

步驟6:LCD屏幕 - 后想法

我最初并不想包括靜態顯示倒計時的日期/時間結束的LCD屏幕;然而,當我為該項目購買BASE時,有一個大小與小面包板大小相當的開放空間,因此它似乎是該項目的合理添加。該顯示器是標準的16x2單色白色藍色顯示屏,也來自Elegoo套件。除了數據和控制線的附加布線外,代碼修改也很簡單;我添加了預處理器功能,包括庫和定義用于每個所需連接的引腳,以及在void設置中顯示靜態消息的代碼,這樣只運行一次而不影響時序計數器。兩種修改如下所示:

#include

const int rs = 17, en = 16, d4 = 21, d5 = 20, d6 = 19, d7 = 18;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin(16, 2);

lcd.setCursor(0, 0);

lcd.print(“Countdown Ends:”);

lcd.setCursor(0, 1);

lcd.print(“5/30/19 @ 3:10pm”);

第7步:結論 - 問題和教訓

這個項目中有問題的部分是迄今為止繁瑣的部分。首先,在硬件方面,使得所需的40多條數據線的布線看起來很整潔;接下來是2D陣列的創建,它包含顯示正確數字所需的高低組合。我必須做的一個小的硬件修改是調整我在每個顯示器的第四個數字上使用的限流電阻的大小;由于時間(并假設視覺的持續性),數字總是比其他數字亮一點,所以我增加該值,直到所有四位數的外觀看起來均勻。我確信通過某種時間共享或多路復用可能有一種更優雅的方式來實現這一目標,但我從經驗中學到了很多東西,并意識到我剛剛開始劃清我們所說的這個神奇工具的表面“ Arduino“能夠完成。

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

    關注

    0

    文章

    21

    瀏覽量

    43942
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187834
收藏 人收藏

    評論

    相關推薦

    AI80C51U倒計時

    AI80C51U倒計時
    的頭像 發表于 01-10 11:41 ?101次閱讀

    倒計時無線遙控開關生產多快好省改進案例

    倒計時無線遙控開關是奧柯電子獨立研發的一款用于農用潛水泵灌溉的產品,它采用單片機自主編程,數據傳輸穩定,單鍵學碼方便快捷。可設置0-999分鐘之間延時自動關斷,可使用在水泵抽水控制、大型燈具
    的頭像 發表于 12-24 16:44 ?149次閱讀
    <b class='flag-5'>倒計時</b>無線遙控開關生產多快好省改進案例

    系統化課程體系——2天倒計時!

    ??開課倒計時2天!?????COURSEINTRODUCTION??課程介紹???01EMC基礎-EMC(電磁兼容性)確保產品不受電磁干擾(EMI),并避免能量泄露至其他設備。EMC設計的
    的頭像 發表于 12-16 09:52 ?246次閱讀
    系統化課程體系——2天<b class='flag-5'>倒計時</b>!

    掌握EMC核心知識——7倒計時!

    賽盛技術第九期“EMC實戰特訓營“開課倒計時7天”!本期課特訓營將于12月18日正式開課,課程涵蓋電磁兼容(EMC)領域的核心知識。四資深講師主講,團隊經驗累計超過70年,并結合賽盛技術公司19年
    的頭像 發表于 12-11 09:40 ?222次閱讀
    掌握EMC核心知識——<b class='flag-5'>7</b>天<b class='flag-5'>倒計時</b>!

    AIP1668 中微愛芯 顯示驅動芯片 3線串口共陰極107或134

    深圳市佛科技有限公司供應AIP1668 中微愛芯 顯示驅動芯片 3線串口共陰極107或13
    發表于 08-09 11:17

    AIP1628 中微愛芯 顯示驅動芯片 3線串口共陰極107或134

    深圳市佛科技有限公司供應3線串口共陰極107或134
    發表于 08-09 11:12

    基于51單片機24秒倒計時設計

    本資源內容概要:? ? ? ?這是基于51單片機24秒倒計時設計包含了 C語言程序源代碼(keil軟件打開) 。本資源適合人群:? ? ? 單片機愛好者、電子類專業學生、電子diy愛好者。本資源能
    發表于 06-25 10:03 ?0次下載

    倒計時天!軟通動力邀您共赴數字中國建設峰會·智算云生態大會

    倒計時天!軟通動力邀您共赴數字中國建設峰會·智算云生態大會
    的頭像 發表于 05-21 09:50 ?468次閱讀
    <b class='flag-5'>倒計時</b><b class='flag-5'>三</b>天!軟通動力邀您共赴數字中國建設峰會·智算云生態大會

    倒計時3天!軟通動力與您相約鯤鵬昇騰開發者大會2024

    倒計時3天!軟通動力與您相約鯤鵬昇騰開發者大會2024
    的頭像 發表于 05-07 09:21 ?553次閱讀
    <b class='flag-5'>倒計時</b>3天!軟通動力與您相約鯤鵬昇騰開發者大會2024

    智能家居議程新鮮出爐!報名最后倒計時

    智能家居峰會倒計時一周!議程新鮮出爐,快來看看有哪些亮點。 4月25日,由Big-Bit商務網主辦,佛山市智能家居產業協會、順德智能家居產業聯合會、順德區照明燈飾協會協辦、《半導體器件應用》雜志承辦
    的頭像 發表于 04-22 15:41 ?345次閱讀
    智能家居議程新鮮出爐!報名最后<b class='flag-5'>倒計時</b>!

    用74192設計倒計時電路,proteus仿真時為什么手動改變逆計數的時鐘引腳時可以進行計數

    用74192設計倒計時電路,proteus仿真時為什么手動改變逆計數的時鐘引腳時可以進行計數,使用信號發生器輸入方波時無法進行計數
    發表于 03-24 12:20

    基于51單片機的多路搶答器的設計與制作,電路,程序,原理圖,論文

    的一聲,倒計時開始,8選手可以開始進行搶答。假設3號選手,在計時時間內搶答成功。此時,計數停止,數碼管顯示剩余計時數和當前選手號,其對應的
    發表于 03-20 15:20

    數字電路,八路競賽搶答器畢業設計,Proteus仿真

    ; 設計概述 搶答器的搶答按鈕是由八按鍵模擬,經過74LS148編碼器、74LS373鎖存器、74LS48譯碼器和7數碼管實現。 倒計時功能所用的時鐘信號是由555振蕩器改造的多諧
    發表于 03-18 13:11

    電池廠赴歐建廠倒計時 或是基于歐盟《新電池法》

    電池廠赴歐建廠倒計時 或是基于歐盟《新電池法》 因為歐洲車企提出新的要求,強調2027年之后的動力電池必須要本地化,最起碼是電芯和正極材料是在歐洲生產的;這使得電池廠赴歐建廠進入倒計時。 從電池廠
    的頭像 發表于 02-22 16:50 ?775次閱讀

    揭秘 “紅綠燈倒計時” 原理

    如今,高德“紅綠燈倒計時”功能已服務遍布全國范圍內近240城市的8萬多個紅綠燈路口,未來還將進一步拓展至更高數量級。
    的頭像 發表于 02-21 17:19 ?2314次閱讀
    做生意店内格局| 阳宅64卦与24山| 真人百家乐官网现金游戏| 泰无聊棋牌游戏中心| 香港百家乐娱乐场开户注册| 大发888体育网| 德州扑克 视频| 丽都百家乐的玩法技巧和规则| 15人百家乐桌布| 大桥下做生意风水好吗| 百家乐官网PK| 优博百家乐官网娱乐城| 百家乐官网de概率| 百家乐平台| 立博国际| 大发888赌场 游戏平台| 新时代百家乐娱乐城| 百家乐官网翻天超清| 博彩网论坛| 大发888yulecheng| 水果机遥控| 百家乐筹码套装包邮| 百家乐透明发牌靴| 百家乐龙虎台布价格| 百家乐庄闲和游戏机| 阳宅24山吉凶方位| 累积式百家乐官网的玩法技巧和规则| 百家乐官网赌场大全| 百家乐官网澳门百家乐官网澳门赌场| 百家乐官网如何看面| 水富县| 现金游戏平台| 现金梭哈| 区。| 衡山县| 大发888ber娱乐场下载| 太阳城的故事| 水果机| 大发888提款| 大发888提款之后多久到账| 大发888大发8668|