找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1869|回復: 17
收起左側

一個51單片機如何控制16個LED和16個數(shù)碼管?

  [復制鏈接]
ID:1143173 發(fā)表于 2025-1-18 13:56 | 顯示全部樓層 |閱讀模式
謝謝大家
回復

使用道具 舉報

ID:858964 發(fā)表于 2025-1-18 15:09 | 顯示全部樓層
用8255,擴展I/O口,參考圖中電路: 15-6-22-8255電路圖.jpg

回復

使用道具 舉報

ID:1143113 發(fā)表于 2025-1-18 15:36 | 顯示全部樓層
首先,STC/AT89C51正好4*8=32個I/O,如果不加擴展芯片可以16個I/O,只剩下16個I/O要控制16個數(shù)碼管,則需要用擴展芯片,比如譯碼器或串并轉換芯片。如果數(shù)碼管的位選用3/8譯碼器74LS138控制,則需要兩片,6個I/O進行兩組3-8譯碼分別控制16個LED的使能,外加兩個I/O控制兩片74138的使能,這樣16個數(shù)碼管的位選就需要8個I/O,最后剩下8個I/O控制數(shù)碼管的8個段碼。當然,擴展I/O的方法還有很多,此處不展開說。
回復

使用道具 舉報

ID:1109793 發(fā)表于 2025-1-18 15:46 | 顯示全部樓層
TM1640驅動數(shù)碼管,如果不用小數(shù)點,把小數(shù)點連接到發(fā)光管上面就可以了。否則數(shù)碼管另外弄,或者兩個1638,發(fā)光管接多出的段碼上。
回復

使用道具 舉報

ID:879348 發(fā)表于 2025-1-18 16:05 | 顯示全部樓層
用掃描控制,這是學習單片機基礎課程,一般是做時鐘之類的會學到
回復

使用道具 舉報

ID:69038 發(fā)表于 2025-1-18 16:18 | 顯示全部樓層
老51就要考慮擴展IO,或復用。新的增強型51,比如某C的51,64腳的最多有60個IO,夠你折騰的了。
按你的需求,掃描模式,16+8+2=26,想必32腳的MCU就夠你用了。也不必擴展IO口。
回復

使用道具 舉報

ID:807591 發(fā)表于 2025-1-18 17:02 | 顯示全部樓層
這個不需要輸入,只是輸出,用595可能最便宜,甚至不妨再來一片單片機,畢竟可能只要2塊錢 多出60+IO
回復

使用道具 舉報

ID:1133081 發(fā)表于 2025-1-18 17:17 | 顯示全部樓層
所選芯片IO口足夠沒有任何問題,IO口不夠16個數(shù)碼管用TM1640,只要2個IO口,16個LED查理復用只要5個IO口(最多驅動20個LED)。就是編程麻煩點。
回復

使用道具 舉報

ID:1129662 發(fā)表于 2025-1-18 22:30 | 顯示全部樓層
用sm16306,直接全部驅動led,數(shù)碼管都省掉了
回復

使用道具 舉報

ID:332444 發(fā)表于 2025-1-19 08:24 | 顯示全部樓層
使用鎖存器芯片或595
回復

使用道具 舉報

ID:1110945 發(fā)表于 2025-1-19 09:55 | 顯示全部樓層
這么多的二極管和數(shù)碼管,因為電流太大,不可以IO口直接驅動,
可以用專用驅動芯片,也可以用74HC164或595驅動。
一片164或595有8個輸出口,硬件上可以分成4+4,軟件上可以做到
4x4=16的效果,就是說一片就可對付16個LED燈。16個數(shù)碼管總計
有16個位碼線,8個段碼(每個都有的abcdefgh),理論上三片就可以
驅動16個數(shù)碼管,考慮驅動速度可能沒有那么快(以消除人眼可見的
閃爍),兩片就能很好的驅動8個數(shù)碼管。
五片164可以串接起來,單片機只要兩個(595要三個)IO口就可以完美
控制16個LED和16個數(shù)碼管了。
回復

使用道具 舉報

ID:161164 發(fā)表于 2025-1-19 22:29 | 顯示全部樓層
GIF_250119_222839.gif
回復

使用道具 舉報

ID:92781 發(fā)表于 2025-1-20 09:19 | 顯示全部樓層
用tm1640芯片試試,簡單易用,直接控制的數(shù)碼管太多,處理程序時候會亮度低或者閃爍。
回復

使用道具 舉報

ID:584814 發(fā)表于 2025-1-20 11:41 | 顯示全部樓層
通常的I/O口不夠,擴展就可以,用專用驅動芯片也是一種擴展。
回復

使用道具 舉報

ID:57657 發(fā)表于 2025-1-21 22:57 | 顯示全部樓層
16位數(shù)碼管(帶小數(shù)點)1位有8個段碼LED,再加上16個LED=16*8+16=144個LED 144的平方根=12,把它看成12*12的點陣,行列各12個總共24個IO口就可以驅動。
回復

使用道具 舉報

ID:1143454 發(fā)表于 2025-1-31 14:57 | 顯示全部樓層
可以通過連接一個三位的編碼器來控制
回復

使用道具 舉報

ID:137736 發(fā)表于 2025-2-1 14:14 | 顯示全部樓層
用595,164等器件擴展端口。盡量不要再用8255等太老的器件。
回復

使用道具 舉報

ID:1073399 發(fā)表于 2025-2-6 19:27 | 顯示全部樓層
1. 確定單片機型號和資源:
   檢查51單片機的具體型號,確認其I/O端口數(shù)量及是否支持內部驅動器。
   假設單片機具有24個I/O端口,并且每個I/O可以控制一個外設。

2. 配置外設接線:
   將16個LED連接到16個不同的I/O輸出端口,確保每個端口能夠驅動至少5mA的電流。
   將16個數(shù)碼管的相應輸入線(如G、D、C)連接到剩余的I/O端口上。

3. 編寫軟件代碼:
   使用Keil C編譯器創(chuàng)建項目,設置定時器中斷,每個外設對應一個中斷。
   為每個外設定義中斷服務例程,控制其亮度和閃爍時間。

4. 實現(xiàn)定時器驅動:
   在主循環(huán)中初始化定時器,并注冊中斷處理程序。
   設置每個外設的閃爍周期和間隔,使用不同的定時器值避免沖突。

5. 測試系統(tǒng):
   通過控制臺輸出查看LED和數(shù)碼管是否正常工作。
   檢查各個外設的亮度和閃爍頻率,確保沒有異;蚋蓴_。

6. 優(yōu)化代碼:
   如有必要,將中斷服務例程簡化,避免冗余操作。
   確保每個外設能夠獨立工作,并且系統(tǒng)運行流暢。

7. 部署并驗證:
   將電路組裝完畢,連接電源并測試整個系統(tǒng)。
   檢查是否有錯誤信息或異常情況出現(xiàn),及時修正問題。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表