国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

如何使用LED或AVR微控制器讀取二進制手輪或指輪開關上的數字

454398 ? 來源:wv ? 2019-10-08 09:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:零件列表

為了便于指導,我正在使用以下零件:

您可能需要這些

二進制手輪或指輪開關。這些可以在在線的主要電子商店購買,或者如果您在科羅拉多州,請查看Boulder的J.B. Saunders。他們便宜地買了它們!

無焊面包板

烙鐵,焊料,連接線(我使用24規格絞線是因為它非常易彎曲)

AVR微控制器

我正在使用ATmega328p,它位于Modern Device裸露的主板上

我正在使用USB BUB對AVR進行編程

可選

四個LED(用于說明編碼)

四個電阻(用于LED。我使用了我已經在板凳上擺了200歐姆(我很懶惰 2 ))

現代設備]

如果您要使用四個二極管關于將反向極性插入MCU引腳的偏執狂

一些用于編寫或編譯固件的東西

我使用AVR Studio 4.16 SP1,但是您也可以使用:

Windows

WinAVR進行Windows AVR開發

FreeBSD/Linux(其他* NIX變體)

pkg_add -r avr-gcc -or- cd /usr/ports/devel/avr-gcc/ && make install clean pkg_add -r avr-libc pkg_add -r avr-gdb

對于Linux,您將安裝相同的東西,但使用特定的粒子包管理實用程序。

Mac

我在這里沒有經驗,所以我建議Ladyada的教程為此。

您可能還希望使用其他實用程序,例如Eclipse,但這應該是一個好的開始。

現在您已經知道需要什么,我們將其組合在一起,但是要做到這一點,您需要知道二進制開關的工作方式。..。.所以讓我們繼續下一步吧!

第2步:二進制開關和真實表

正如我在簡介中簡要提到的,二進制開關是對其進行編碼的開關狀態為二進制。二進制是一種使用兩個離散狀態(一個和零)來表示其他符號的編碼方法。每個一個或零稱為一個“位”,這些位通常串在一起分成八組,稱為一個“字節”。并非字節中的所有位都必須用于編碼,但是ASCII字符集是僅使用7位的顯著示例(存在擴展版本)。此指令中的按鈕開關的范圍是0到15,并使用四位對表盤上的數字進行編碼。

簡短的二進制算術

以了解四位如何表示16種不同的數字數字,我們必須稍微了解一下二進制編碼對該開關的作用(以及一般情況)。

從第一張圖片中,您應該能夠看到實際上從鍵盤背面有五個打擊墊開關。這些分別標記為1、2、4、8和C。C被視為公用端子。也就是說,它是開關電路的一部分,始終與開關中打開的任何開關相連。在我的設置中,我將“ C”墊接地,并且任何電流都將從斷開的開關流出,并從C端子流出并向下流至地面。因此,“ C”盤不會對表盤正面的數字進行編碼時所用的位。這是指輪開關內部開關電路的電流吸收器。

1、2、4和8填充對數字的位進行編碼。以二進制形式,字節中1和0的位置和數字用于確定字符集中單個單元的身份,或者出于我們的目的,確定在表盤上選擇的數字。因為我們的集合中有四個位,所以一和零的唯一組合的最大數量為2 4 =16。記住這一點的最佳方法是增加可能性的數量(這里有兩個可能性:1或0)乘以位數(此處我們有4位:填充1、2、4和8)。如果我們要在四個位置寫出1和0的所有唯一組合,則看起來像這樣:

No 1&aposs One 1 Two 1&aposs Three 1&aposs Four 1&aposs ------ ----- ------- --------- -------- 0000 0001 0011 0111 1111 0010 0101 1011 0100 1001 1101 1000 0110 1110 1010 1100

所以我們有16種獨特的可能性來安排0和1,并且方便地,此開關的計數器從0到15。當一個計劃組合在一起時,這很好。但是您可能想知道,是否存在一種模式來說明這四個位的排列方式(順便稱為Nibble)如何代表數字。我很高興你問。

還記得墊的1、2、4和8嗎?那不是營銷人員反復無常的標簽。讓我們再次看看我們的數字模式。每個位位置都有一個“位置”,可以將其視為“ 2的冪”位置讀取,其中最低有效位在第0位開始。也就是說,我們使用從0開始的索引,并從零開始計數到一,再到二,以此類推,而不是在以1開頭的白話中計數。因此,2 0 = 1,2 1 = 2,2 2 = 4,依此類推。從右到左排列此字符,它的四位模式0101看起來像這樣:

Place --》 8 4 2 1 0 1 0 1

要確定“ 0101”代表的數字,我們要做的就是找到每個里面有1的地方,加上兩個數字的冪。在我們的示例中,第1和第4位有一個。加1 + 4,得到5,因此,二進制數字0101代表十進制數字5。這不令人興奮嗎?讓我們嘗試另一個,即使我們的交換機只有四個位,這個也要完整的8位。這是一個好習慣,下次您會印象深刻。

01101110代表的十進制數字是多少?在這里是它們的位置:

128 64 32 16 8 4 2 1 0 1 1 0 1 1 1 0查找具有1的位置,并將這些位置號加在一起。那將是64 + 32 + 8 + 4 + 2 =110。非常容易,是吧?現在知道了這一點,我們就可以采用我們的4位開關,并形成一個相對于小數點為1的引腳號矩陣(數字邏輯1的電壓高于邏輯零的電壓,在我們的情況下分別為5V和0V)。他們代表的數字。參見下面的第二張圖片,我制作了一個表格來表示開關上的打擊墊,根據撥盤前面選擇的數字,該打擊墊將為邏輯1。現在我們可以開始構建東西了。請跟隨我進入下一步!

步驟3:焊接開關和測試二進制邏輯

是時候將焊料放到焊盤上了,開始制造東西了。

拿起連接線,剝去兩端約半厘米。只要使用不會混淆電線的顏色,無論使用哪種顏色或根本不使用其他顏色都沒有關系。當您發現填充板“ 2”代替填充板“ 4”時,您將嘗試調試二進制邏輯錯誤。

現在是驗證或說服自己二進制邏輯正確的好時機。為此,我帶了四個LED和四個220歐姆電阻,并將它們放在面包板上。您可以根據您的LED顏色和正向電壓要求使用180歐姆甚至1k電阻。對于您的電源,您可以使用5V穩壓電源(在其中一張照片中,這是我的面包板上懸掛的小電路),也可以通過Arduino,BBB等為該板供電。選擇是您自己選擇。

將C線連接到5V(請注意這一點,因為在連接到微控制器時會做相反的事情)。

連接線1、2、4 8個至自己的電阻,其后接LED的正極。如果您不確定,那是長腿。然后將LED的另一側接地。

該電路應類似于我下面的電路。如果您真的不確定,請在圖片中包含原理圖以顯示LED測試電路。還請注意,我在圖片中從左到右顯示了二進制文件。只要電線連接到正確的LED,就可以將電線從左到右或從右到左連接到測試電路中,并且可以將它們與真值表進行比較以確認邏輯,這無關緊要。

一旦您確信該Universe可以按照您可以連接微控制器的方式正常運行。

第4步:連接微控制器并加載代碼

選擇MCU上空閑的四個端口并將其配置為輸入。我在設置中選擇了PD [2..5],但是選擇哪一個都沒關系,如果您打算使用U(S)ART通信,請謹慎使用PD [0..1],因為這些引腳是通常為此保留。我很確定Arduino和其他克隆也將針腳0和1映射到其USB FTDI端口。作為一種可選措施,您可以選擇安裝二極管(在右側條紋下方的圖片中)。有些主板具有保護功能,但是如果您在主板上玩裸AVR芯片,那可能不是個壞習慣。在聞到足夠多的晶體管燒毀之后,您便可以執行這些操作。

建立與輸入引腳的連接后,只需簡單地讀取引腳并處理數據即可。您可以讀取引腳和發光二極管的指示燈,用于處理串行通信的設置中斷,或者如果將多個開關串在一起,則可以將它們用作電子鎖,在授予訪問權限之前測試引腳以查看是否輸入了正確的組合

第5步:[可選] AVR代碼示例

好的,好的,我不會讓您掛斷電話。我認為您可能都具備讀取I/O引腳的能力,因此這并不意味著侮辱您的智慧。這只是我寫的一小段代碼,用于讀取引腳并通過ATmega328p中的USART將數據發送到FreeBSD盒上的串行端口。

我不使用Arduino庫,僅使用純C語言,因此您可能必須相應地調整您的。也許有一種更優雅的方法,但這是我想出的。

#include #include #include “uart.h”#define SWITCH_M 0b00111100int main(){ USART_init(BAUD_9600); DDRD = 0x00; // inputs for switches PORTD = 0xFF; // pullup on PD[2..5] (we have negative logic on switch now) uint8_t bcode = 0x00; for (;;) { bcode = (PIND & SWITCH_M); // bcode = 00xxxx00 bcode = (bcode 》》 2); // bcode = 0000xxxx bcode |= 0xF0; // bcode = 1111xxxx USART_tx(~bcode); // bcode = 0000xxxx bcode = 0x00; _delay_ms(2000); } }

從我的車輪開關從0開始并循環向上,我得到以下輸出:

0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F

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

    關注

    243

    文章

    24594

    瀏覽量

    690788
  • AVR微控制器
    +關注

    關注

    0

    文章

    11

    瀏覽量

    6963
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CDx4HC283與CDx4HCT283:4位二進制全加器的技術解析與應用指南

    CDx4HC283與CDx4HCT283:4位二進制全加器的技術解析與應用指南 在數字電路設計領域,加法器是實現數值運算的基礎元件之一。今天我們要深入探討的CDx4HC283和CDx4HCT283
    的頭像 發表于 01-30 17:20 ?637次閱讀

    德州儀器4位二進制全加器:SN54/74系列的技術剖析

    德州儀器4位二進制全加器:SN54/74系列的技術剖析 在數字電路設計中,加法器是實現算術運算的基礎組件。德州儀器的SN54283、SN54LS283、SN54S283、SN74283
    的頭像 發表于 01-28 17:05 ?467次閱讀

    探索CD54/74AC283與CD54/74ACT283:高效4位二進制加法器的奧秘

    探索CD54/74AC283與CD54/74ACT283:高效4位二進制加法器的奧秘 在電子設計領域,加法器是實現數字運算的基礎元件之一。今天,我們將深入研究德州儀器(Texas
    的頭像 發表于 01-28 16:50 ?426次閱讀

    CDx4HC283和CDx4HCT283:高速CMOS邏輯4位二進制全加器的詳細解析

    CDx4HC283和CDx4HCT283:高速CMOS邏輯4位二進制全加器的詳細解析 在電子設計領域,加法器是數字電路中最基本的運算單元之一,用于實現二進制數的加法運算。今天要給大家介紹
    的頭像 發表于 01-19 14:50 ?313次閱讀

    解析CD54/74AC283與CD54/74ACT283:4位二進制加法器的卓越之選

    解析CD54/74AC283與CD54/74ACT283:4位二進制加法器的卓越之選 在電子設計領域,加法器是實現數字運算的基礎組件。今天我們要深入探討的是德州儀器(Texas
    的頭像 發表于 01-08 16:55 ?570次閱讀

    CD54/74AC283與CD54/74ACT283:高性能4位二進制加法器的全面解析

    CD54/74AC283與CD54/74ACT283:高性能4位二進制加法器的全面解析 在電子設計領域,加法器是一種基礎且關鍵的數字電路,廣泛應用于各種計算和數據處理系統中。今天,我們要深入探討
    的頭像 發表于 12-31 17:10 ?1395次閱讀

    SN54F283與SN74F283:4位二進制全加器的技術剖析

    SN54F283與SN74F283:4位二進制全加器的技術剖析 在數字電路設計中,加法器是最基礎且關鍵的組件之一。今天我們要深入探討的是德州儀器(TI)的SN54F283和SN74F283這兩款4位
    的頭像 發表于 12-29 16:20 ?523次閱讀

    德州儀器4位二進制全加器:SN54/74283系列深度解析

    德州儀器4位二進制全加器:SN54/74283系列深度解析 在數字電路設計領域,加法器是構建復雜算術邏輯單元的基礎組件。德州儀器(TI)的SN54/74283系列4位二進制全加器憑借其快速進位
    的頭像 發表于 12-23 15:45 ?545次閱讀

    二進制查找(Binary Search)介紹

    二進制查找(Binary Search)用于在已排序的數組中執行二進制查找的函數。 int binary_search(int arr[], int size, int target
    發表于 12-12 06:54

    如何在vivado上基于二進制碼對指令運行狀態進行判斷

    在擴展指令時我們常常需要一些手段來幫助我們判斷指令是否能夠成功運行、運行狀態是否正確。一方面,我們可以通過模擬來實現,另一方面,在沒有模擬的情況下,我們可以通過將所擴展指令的二進制代碼導入
    發表于 10-24 06:46

    在vivado上基于二進制碼對指令運行狀態進行判斷

    在擴展指令時我們常常需要一些手段來幫助我們判斷指令是否能夠成功運行、運行狀態是否正確。一方面,我們可以通過模擬來實現,另一方面,在沒有模擬的情況下,我們可以通過將所擴展指令的二進制代碼導入
    發表于 10-24 06:31

    二進制編碼數字世界的“翻譯官”,開啟智能時代新篇章

    數字技術席卷全球的今天,二進制編碼作為連接物理世界與數字系統的“橋梁”,正以不可替代的姿態滲透到工業制造、智能家居、無人駕駛等核心領域。它不僅是自動化產線的“神經中樞”,更是推動人
    的頭像 發表于 10-14 08:35 ?477次閱讀
    <b class='flag-5'>二進制</b>編碼<b class='flag-5'>器</b>:<b class='flag-5'>數字</b>世界的“翻譯官”,開啟智能時代新篇章

    Microchip AVR64DD14/20 微控制器:高集成度與低功耗的完美結合

    的運行時鐘速度高達24MHz,具有64KB閃存、8KB SRAM和256字節EEPROM。微控制器提供14引腳20引腳封裝。avr DD系列采用Microchip Technology的技術,具有靈活和低功耗架構,包括事件系統
    的頭像 發表于 10-13 11:38 ?794次閱讀
    Microchip <b class='flag-5'>AVR</b>64DD14/20 <b class='flag-5'>微控制器</b>:高集成度與低功耗的完美結合

    Microchip Technology AVR32/16DD14/20微控制器 (MCU)數據手冊

    SRAM和256字節EEPROM。該MCU采用靈活的低功耗架構,包括事件系統、智能模擬功能和高級數字外設。該微控制器采用14引腳20引腳封裝。
    的頭像 發表于 10-10 14:46 ?793次閱讀
    Microchip Technology <b class='flag-5'>AVR</b>32/16DD14/20<b class='flag-5'>微控制器</b> (MCU)數據手冊

    二進制數據處理方法分享

    時,我們如何去解析數據并且應用它們。本次的技術分享文章,我們就從如何傳輸數據和解析二進制數據來一步一步剝絲抽繭,搞清楚他的運作原理和二進制數據的數據結構。
    的頭像 發表于 07-30 15:41 ?2412次閱讀
    <b class='flag-5'>二進制</b>數據處理方法分享