題:
7段二進制至十六進制
Goswin von Brederlow
2018-01-23 18:29:28 UTC
view on stackexchange narkive permalink

我正在嘗試在7段LED上顯示一個4位二進制數作為十六進制數(0-F)。我有7400系列IC的分類,其中包括7447。但是那僅適用於BCD(0-9)。 7400系列似乎沒有十六進制至7段的解碼器,我手邊也沒有。

所以我認為我必須建立自己的。 7447的數據錶帶有內部電路,但我找不到類似的電路(六進制至7段)。我手動為每個LED段做了K線圖,但是這些術語相當大,比BCD大得多。

有人為此做過電路檢查嗎?

有人針對這一點利用通用子項進行優化的電路嗎?沒有很多重複的術語(如A0 &〜A1 & A2),但也許使用(A0 & A2)&〜A1將允許共享(A0 & A2)子項,並總體上減少了門數。

或者在某些部分使用NAND,NOR或XOR門的一些技巧?

我不在乎電路中的路徑長度或種族如何,因為它僅用於驅動LED,應該太快了,看不到其中的任何一個。

我知道這不是您要尋找的正確解決方案,但我建議使用諸如AT28C16或類似的EEPROM將二進制轉換為十六進制。您只需要對前16個字節進行編程。將要轉換為十六進制的四個二進制數字連接到前4條地址線,並將數據線連接到7段引腳。對前16個字節的每個字節進行編程,以使地址0000在7段顯示器上亮起0,地址0001在7段顯示器上亮起1,然後....。重複此過程,直到對所有前16個字節進行了編程。這也可以通過uC完成。
@dirac16,不會為_last_ 16字節編程,並拉起未使用的地址線嗎?
@jameslarge是的,可以。但是我會對前16個字節進行編程,然後拉下其他未使用的地址線。
我承認,我的想法仍然受到所有未使用的輸入都拉高的TTL時代的影響。
快速提問:在7段顯示器上,您打算如何分辨8,B和0,D之間的區別?我所看到的用於十六進制的顯示都使用了不止7個段...
@Baldrickk 7段顯示器上的十六進制使用小寫的“ b”和“ d”。然後,您確實遇到了一個問題,即“ b”和“ 6”相似,但是“ 6”填充了最上面的部分,而“ b”卻沒有。(基於現在在我面前的桌子上的Casio FX-100D計算器。)
[相關](https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates)
我不贊成這個問題,因為儘管我喜歡討論,但其中大部分是關於通用邏輯設計的,包括CPLD,微控制器和PLA。甚至我想刪除的答案都涉及運行互聯網搜索(“ 7進制十六進制”),這暗示我(無意識?)認為OP可以做得更多。
的確,我記得30年前,在我的一門課上,有這樣一個十六進制顯示器,用於對Motorola 6800培訓板進行編程,因此即使錯過了互聯網,也存在現有技術。
十 答案:
Olin Lathrop
2018-01-23 19:09:06 UTC
view on stackexchange narkive permalink

找到哪個博物館缺少其74xx邏輯IC並將其退回。然後獲得一個小型微控制器,並在單個芯片中完成所有這些操作。作為獎勵,您將為1980年代後期及以後的其他高級項目做好準備。

直到今天,我的舊大學仍然要求學生使用LS74 IC。我想這對我們的基金會有幫助嗎?
我可以使用At-Mega和電子紙帽子。但這不是我要的。
Richard the Spacecat
2018-01-23 19:14:11 UTC
view on stackexchange narkive permalink

也許,如果您特別喜歡冒險,甚至可以使用二極管ROM,它可能帶有兩個74'138 3至8行解碼器來解碼/驅動這些東西。:)

A crude schematic 這是整個設備的粗略示意圖。如果您碰巧使用了一些高效率的LED顯示器,甚至可以直接驅動一個公共陽極。

'!EN'引腳可以是'138的任一柵極引腳。您還可以將其他兩個柵極引腳連接在一起,以便根據需要打開或關閉顯示輸出。

與建議的ROM解決方案相比,這也有好處:如果您手頭有零件,或者對程序ROM無需特別打擾,則構建/原型的成本很低。

此外,人們甚至可以稱呼這種樂趣:)

一台22V10的價格約為2美元,可以在一個芯片中完成,但是我很欣賞您的勇敢。
如果您更加冒險,那麼如果您願意串聯兩個二極管,找到一種“更經濟”的方法可能會很有趣。例如,如果一個人為每個“角”使用兩個二極管來點亮頂部或底部,以及相鄰的邊沿(八個二極管),則每個0、2、3、5、8、1可以節省兩個二極管從7開始,從6和9開始一個或兩個(取決於字體)。簡單的二極管ROM佈局可能更易於構建,但制定出更便宜的解決方案可能是個好難題。
這裡使用的技巧是對暗段進行編程,因為暗段較少。還可以使用'154 4行至16行解碼器。:)
1n4148二極管在Farnell的售價為每100便士40便士。我記得只做這條電路。1975年。
我喜歡這個。我可能會將“ ROM”的輸出連接到“非”門,以實際驅動LED。否則,對於8個器件,您必須使用74138的單個輸出引腳來驅動所有7個段。這將使其成為4個IC +多個二極管。
-1
Spehro Pefhany
2018-01-23 20:45:41 UTC
view on stackexchange narkive permalink

如果您想擺弄門,另一種可能性是使用小型FPGA或CPLD。您可以花幾十美元開始使用基於閃存的FPGA。

對其進行必要的重新編程,以使其正確無誤,通常每美元您會得到很多I / O引腳。

VHDL代碼示例此處

例如,(搖晃且不夠完整,但您了解了):

enter image description here

Anonymous
2018-01-23 19:15:35 UTC
view on stackexchange narkive permalink

但是那隻適用於BCD(0-9)。

實際上7447在物理上可以接受A-F的十六進制值,但是它們顯示的圖像錯誤,請參見此處第3頁。

我認為,製作十六進制至七段的解碼器可能對數字電子的工作原理的教育和可視化非常有用,但從實際的角度來看,這確實是個壞主意-不必要的複雜且會消耗很多功率與其他解決方案相比。

我記得在1995年有一個PC診斷板,它以十六進制顯示錯誤/狀態代碼(例如 this之類),並且該板使用了 GAL芯片- CPLD的前身。

如果您已經在Internet上搜索了該解決方案,則可能會看到許多使用可編程邏輯或基於MCU的設備(例如 Arduino)的類似項目。

@ dirac16提出了另一種方法-使用並行ROM芯片,這是一種查找表,其中包含字節,表示各個地址(輸入值)的段是開/關。

它不應該是實用的,但是具有指導意義。
Janka
2018-01-23 20:45:18 UTC
view on stackexchange narkive permalink

MC14495,DM8880 / 9368,V40511,D345,D346、4311、4368或74C915

現在所有這些都很難掌握。

我看到了對MC14493進行7段十六進制轉換的參考,但是在尋找數據表時感到沮喪。但它的批量單價為8.75歐元。我擔心它雖然只是bcd,所以我會先找到該數據表。
74C915是7段BCD轉換器。如此錯誤的方式,只有BCD而不是十六進制。奇怪的芯片。
啊,是的,你是對的。但是我知道這種芯片的用例:蓋章秤。它們要求客戶看到正確的重量,因此如果您想連接打印機,法律可能會要求您將可見輸出轉換回BCD。
@LurkerLarry MC14495仍可在eBay上以1.50美元的價格購買,這裡是[數據表](http://www.riana.com/electronics/docs/MC14495.pdf)。我最近買了幾對,沒有問題。
Goswin von Brederlow
2018-04-21 00:25:28 UTC
view on stackexchange narkive permalink

我認為我已經設法找到了最佳解決方案(其中之一)。它使用6個IC的所有24個門:

  • 2x 7486(四位異或)
  • 1x 7408(四和)
  • 2x 7402(四合一NOR)
  • 1x 7432(四合一)

我設法僅使用23個門但使用更多的IC找到了不同的解決方案。我覺得僅5個IC就無法解決。

注意:由於我的7段LED具有公共VCC,因此當LED應當點亮時,電路輸出LOW。

schematic

模擬該電路 –使用 CircuitLab sup>

創建的示意圖

D3-D0是輸入,D3是MSB。A-G是輸出,A是頂部LED,然後順時針旋轉,最後G是中心LED。

您是否考慮過像74HC157 [2通道4:1多路復用器]之類的東西,或者可能是其反相產品?如果有一個變體可以折衷選擇單獨的左/右選擇輸入的使能輸出,那就更好了,但是有時候這種芯片真的很方便。
僅作為二極管rom的替代,但是您需要太多。您可以將它們用作可編程門,但每個多路復用器必須替換2個門才能繪製平整圖。
Dmitry Grigoryev
2018-01-23 20:14:10 UTC
view on stackexchange narkive permalink

如果要手工設計功能,然後在硬件中實現(或代替在硬件中實現)之前檢查其正確性,則可以使用諸如 this這樣的在線計算器。

還有一些工具可以最小化共享公共輸入的多個邏輯功能。其中之一是 expresso,它在Windows和Linux中均可免費實現。

這聽起來確實像是提供支持建議而不是答案的評論。
-1
該計算器一次只能解決一個輸出,即使有多個解決方案也只能顯示一個解決方案。這意味著它可以提供在輸出之間具有較少共同術語的解決方案。即使用不必要的閘門。
@GoswinvonBrederlow好點了,但是尋找滿足您需求的邏輯優化器只是一個搜索問題。
-1
根據手冊頁,儘管濃縮咖啡使用啟發式方法簡化了任務,但它確實進行了優化。
我之前嘗試過Logic Friday(列出的其中一種使用espresso的工具),但它不會針對可用的門進行優化。似乎使用濃縮咖啡找到了一種最小形式,然後使用您選擇的門來轉換/表達該最小形式。如果只需要NAND或AND + OR,那很好。但是,如果您具有AND + NAND + OR + NOR + XOR,則無需進行任何轉換,也不會使用額外的門類型以獲得更佳的結果。
Ronan Paixão
2018-01-23 23:46:56 UTC
view on stackexchange narkive permalink

有人說,您可以嘗試使用 ICM7218或其他一些芯片。

您也可以嘗試建立自己的組合電路。這是一個很棒的視頻教程,介紹瞭如何執行此操作及其機制。如果要對其進行優化,則有些數據表( 1 2)帶有BCD(0-9)部分。

作為後續,這個傢伙還製作了後續視頻,介紹瞭如何使用EEPROM進行相同操作。當然,您仍然需要對其進行編程,但這可能是值得的。

關於編程,您也可以使用微控制器來完成。通常比CPLD(您也可以使用)編程容易,並且有 code tabular實現。我會使用此選項,因為我熟悉微控制器(您不僅限於Arduino),而且對於芯片來說,可能甚至是您最便宜的選擇。

Lurker Larry
2018-01-24 11:51:36 UTC
view on stackexchange narkive permalink

使用Google查找“十六進制7段”項目,包括 http://zh.wikipedia.org/wiki/七段顯示器 其中有一個十六進制真值表(十六進制!)。其他項目包括圖表和視頻演示。

我實際上是在尋找可以為您進行十六進制解碼的四位數,七段顯示器,但是它們被認為是“古老的”(嗅探),而現代的顯示器則使用i2c而不是並行接口。

95%的結果實際上是關於7段的BCD,4%的電路沒有電路,只有真值表等等,還有1%是視頻,您無法分辨出應該是an and gate還是or gate。
也許那我應該發布此鏈接https://youtu.be/7zffjsXqATg,並說您請求的電路位於12分鐘處,而其TTL實現在30秒後顯示。他的零件清單在描述中。對於未考慮搜索引擎結果不可預測的問題,我深表歉意。
是的,這是實際應用的搜索中的1%,即“您無法確定應該是and and gate或or gate的視頻”。我再次查看了該電路,它使用了49個AND和OR門。另一方面,https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates提供了具有37個NAND門的解決方案。到目前為止,那是贏家。
WooShell
2018-01-24 18:43:57 UTC
view on stackexchange narkive permalink

多年來,我一直在為此目的使用DM9368N,而且價格相當容易獲得(在ebay或Aliexpress上10包15美元)。

該設備具有工作所需的邏輯,但要注意電源電流!
@henros當然,該芯片是為直接驅動LED顯示器而設計的。您不能僅將其用作解碼器來轉發進一步的邏輯。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...