1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 11233|回復(fù): 24
收起左側(cè)

怎么實(shí)現(xiàn)用51單片機(jī)3個(gè)I/O口顯示8位數(shù)碼管?有代碼但看不懂,求教。

  [復(fù)制鏈接]
ID:555516 發(fā)表于 2019-9-27 22:31 | 顯示全部樓層 |閱讀模式
  1. /**************************************************************************************
  2. *                              動(dòng)態(tài)數(shù)碼管顯示實(shí)驗(yàn)                                                                                                  *
  3. 實(shí)現(xiàn)現(xiàn)象:下載程序后數(shù)碼管從右至左顯示0-7。
  4. 注意事項(xiàng):如果不想讓點(diǎn)陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。                                                                                                                                                                  
  5. ***************************************************************************************/

  6. #include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器

  7. typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
  8. typedef unsigned char u8;

  9. sbit LSA=P2^2;
  10. sbit LSB=P2^3;
  11. sbit LSC=P2^4;

  12. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  13.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

  14. /*******************************************************************************
  15. * 函 數(shù) 名         : delay
  16. * 函數(shù)功能                   : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
  17. *******************************************************************************/
  18. void delay(u16 i)
  19. {
  20.         while(i--);        
  21. }

  22. /*******************************************************************************
  23. * 函 數(shù) 名         : DigDisplay
  24. * 函數(shù)功能                   : 數(shù)碼管動(dòng)態(tài)掃描函數(shù),循環(huán)掃描8個(gè)數(shù)碼管顯示
  25. *******************************************************************************/
  26. void DigDisplay()
  27. {
  28.         u8 i;
  29.         for(i=0;i<8;i++)
  30.         {
  31.                 switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,(主要就是這里看不懂,3個(gè)I/O口是怎樣控制8位數(shù)顯示的)
  32.                 {
  33.                         case(0):
  34.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  35.                         case(1):
  36.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  37.                         case(2):
  38.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  39.                         case(3):
  40.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  41.                         case(4):
  42.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  43.                         case(5):
  44.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  45.                         case(6):
  46.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  47.                         case(7):
  48.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位        
  49.                 }
  50.                 P0=smgduan[i];//發(fā)送段碼
  51.                 delay(100); //間隔一段時(shí)間掃描        
  52.                 P0=0x00;//消隱
  53.         }
  54. }

  55. /*******************************************************************************
  56. * 函 數(shù) 名       : main
  57. * 函數(shù)功能                 : 主函數(shù)
  58. * 輸    入       : 無(wú)
  59. * 輸    出             : 無(wú)
  60. *******************************************************************************/
  61. void main()
  62. {        
  63.         while(1)
  64.         {        
  65.                 DigDisplay();  //數(shù)碼管顯示函數(shù)        
  66.         }               
  67. }
復(fù)制代碼

實(shí)驗(yàn)6:動(dòng)態(tài)數(shù)碼管顯示.rar

17.05 KB, 下載次數(shù): 13

回復(fù)

使用道具 舉報(bào)

ID:351097 發(fā)表于 2019-9-27 23:01 | 顯示全部樓層
數(shù)碼管的選通是用譯碼器控制的,比如74HC138,只要三個(gè)地址輸入,就可以控制哪個(gè)數(shù)碼管選通
回復(fù)

使用道具 舉報(bào)

ID:453974 發(fā)表于 2019-9-27 23:19 | 顯示全部樓層
這個(gè)是位選端用的74HC138譯碼器驅(qū)動(dòng)的,另外的數(shù)據(jù)端使用P0口進(jìn)行的數(shù)據(jù)傳送,當(dāng)位選通時(shí),輸入對(duì)應(yīng)數(shù)據(jù)。
回復(fù)

使用道具 舉報(bào)

ID:425825 發(fā)表于 2019-9-27 23:21 | 顯示全部樓層
采用了74LS138, 3線-8線譯碼器
回復(fù)

使用道具 舉報(bào)

ID:149144 發(fā)表于 2019-9-27 23:22 | 顯示全部樓層
三個(gè)位碼 不是直接控制的 數(shù)碼管,應(yīng)該是 通過(guò) 3-8 譯碼器 將000 --- 111 轉(zhuǎn)換成 0000 0001 --- 1000 0000
百度  74138
如果想用三根線 個(gè)人建議用 74595
回復(fù)

使用道具 舉報(bào)

ID:462827 發(fā)表于 2019-9-28 00:59 | 顯示全部樓層
3個(gè)引腳通過(guò)74HC138譯碼器來(lái)進(jìn)行位選唄
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2019-9-28 02:10 | 顯示全部樓層
程序只用到兩個(gè)IO口,P0和P2口,P0輸出段顯碼,P2的3位輸出到74138進(jìn)行譯碼進(jìn)行位選,每次選中8位數(shù)碼管的1位,輪流使每1位數(shù)碼管顯示2ms左右達(dá)到掃描顯示
回復(fù)

使用道具 舉報(bào)

ID:617327 發(fā)表于 2019-9-28 02:14 | 顯示全部樓層
可以看一下開發(fā)板原理圖嗎
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-9-28 05:35 | 顯示全部樓層
本帖最后由 wulin 于 2019-9-28 10:12 編輯

利用38譯碼器74HC138輸入二進(jìn)制輸入000~111,輪流輸出11111110~01111111八位驅(qū)動(dòng)低電平
你可以把顯示函數(shù)DigDisplay()里的“delay(100); //間隔一段時(shí)間掃描”改為10000,在低速下觀察動(dòng)態(tài)掃描過(guò)程
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2019-9-28 06:49 | 顯示全部樓層
https://baike.baidu.com/item/譯碼器/4882151 注釋很清楚,蝦米不懂沒說(shuō)出來(lái)?3個(gè)口分別控制8位數(shù)碼管通過(guò)譯碼器,P0送數(shù)碼管的段。
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2019-9-28 06:59 | 顯示全部樓層
電路圖?發(fā)出電路圖看看。
回復(fù)

使用道具 舉報(bào)

ID:86450 發(fā)表于 2019-9-28 08:11 | 顯示全部樓層
你后面可能接了 38譯碼器。 你要看硬件電路,而不是程序。
回復(fù)

使用道具 舉報(bào)

ID:586438 發(fā)表于 2019-9-28 08:47 | 顯示全部樓層
2的3次方 ,3個(gè)IO口可以檢測(cè)出八種不同的狀態(tài),每個(gè)狀態(tài)控制一個(gè)位選信號(hào)。
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2019-9-28 08:50 | 顯示全部樓層
要看懂這程序,先要弄清楚數(shù)碼管顯示一個(gè)數(shù)的原理,就是公共端導(dǎo)通時(shí),段碼要送相應(yīng)碼。
回復(fù)

使用道具 舉報(bào)

ID:544092 發(fā)表于 2019-9-28 08:55 | 顯示全部樓層
硬件電路上有74LS138之類的譯碼器,3線-8線
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2019-9-28 09:02 | 顯示全部樓層
74138譯碼器控制的數(shù)碼管
這個(gè)數(shù)字芯片屬于3線-8線譯碼器,輸入3位,輸出8位。
因?yàn)?位2進(jìn)制數(shù)可以組成8個(gè)狀態(tài),即000,001,010,011,100,101,110,111。然后沒一種狀態(tài)的輸出是唯一的,8位輸出中有一位為0。舉個(gè)例子:輸入假如輸入為000,那么輸出就是01111111,假如數(shù)碼管是共陽(yáng)型,這時(shí)第一位數(shù)碼管就被點(diǎn)亮;假如輸入為001,那么輸出就是10111111,
這時(shí)點(diǎn)亮的數(shù)碼管就是第二位了;以此類推,輸入010時(shí)輸出就為11011111……一直到輸入111,輸出11111110。
就是這8種組合。

8位數(shù)碼管 按順序先亮第一個(gè)再第二個(gè)再最后一個(gè)
循環(huán)的速度很快
看起來(lái)就是一起亮的

回復(fù)

使用道具 舉報(bào)

ID:294737 發(fā)表于 2019-9-28 09:43 | 顯示全部樓層
網(wǎng)上視頻很多,可以看看
回復(fù)

使用道具 舉報(bào)

ID:617572 發(fā)表于 2019-9-28 13:55 | 顯示全部樓層
這個(gè)要通過(guò)74LS138譯碼器來(lái)實(shí)現(xiàn)I/O口對(duì)數(shù)碼管的控制
回復(fù)

使用道具 舉報(bào)

ID:529540 發(fā)表于 2019-9-28 15:34 | 顯示全部樓層
也可以用專門的led驅(qū)動(dòng)芯片, tm1628 之類的,也是3個(gè)io口控制,可以控制很多數(shù)碼管或led燈
回復(fù)

使用道具 舉報(bào)

ID:575020 發(fā)表于 2019-10-4 10:32 | 顯示全部樓層
怎么上面都推薦74ls138,我買了幾個(gè)74hc138,不知有啥不一樣,還買了幾個(gè)595也不知道咋用呢

未標(biāo)題-1.gif
回復(fù)

使用道具 舉報(bào)

ID:619205 發(fā)表于 2019-10-5 03:46 | 顯示全部樓層
關(guān)於原主題的問(wèn)題,要回答這跟問(wèn)題還是得看你的開發(fā)版,依據(jù)程式碼來(lái)看,他有很大的可能是使用了編碼器.這你可以找出你的開發(fā)版的資料手冊(cè),來(lái)看看它到底是則麼做的,如果使用的是編碼,它的原理我和  singrain 的問(wèn)題一起解答74ls138 HC595是完全不同的東西使用的目的也不一樣,要解釋這兩個(gè)的區(qū)別,最好還是看它們的資料手冊(cè).

74ls138 是3對(duì)8編碼器主要是用來(lái)選擇位址,使用編碼器的主要目的,是在有許多元件時(shí),可以只通過(guò)N調(diào)控制線,控制2^n不同的器件,減少控制線,你可以把它當(dāng)成開關(guān)來(lái)看待,解釋這個(gè)最快的方式就是上真值表 1.PNG 2.PNG
可以在真值表中看出  74ls138 在使用終將使能角位,以HLL接好後(在電路直接接好就行),可以通過(guò)C,B,A 三個(gè)角位來(lái)控制對(duì)應(yīng)輸出為低準(zhǔn)位 000 對(duì)應(yīng) Y0 , 001 對(duì)應(yīng)Y1  ,010 對(duì)應(yīng)  ,Y2  011對(duì)應(yīng)Y3 以此類推
,而其他沒有被選擇的輸出都為高準(zhǔn)位.
如果你的器件是低準(zhǔn)位有響應(yīng)你就可以使用74ls138來(lái)擴(kuò)充你的位址.數(shù)碼管為例便是共陰極的共同端
, 另外如果你打算使用串利傳輸 可以將G1A與G1B邊連起來(lái)當(dāng)作資料線,這樣你就能控制他的輸出高底準(zhǔn)位,而沒有被選中的位址
依然維持高準(zhǔn)位.

HC595 是八位元個(gè)移位暫存器,其目的是將串列傳輸?shù)闹担D(zhuǎn)換為並列傳輸,減少資料線,以數(shù)碼管為例接A~G角位,要解釋這個(gè)需要的是時(shí)序圖 
3.PNG hc595_pinout.png

PINS 1-7, 15QA " QHOutput Pins
PIN 8GNDGround, Vss
PIN 9QH"Serial Out
PIN 10MRMaster Reclear, active low
PIN 11SH_CPShift register clock pin
PIN 12ST_CPStorage register clock pin (latch pin)
PIN 13OEOutput enable, active low
PIN 14DSSerial data input
PIN 16VccPositive supply voltage
  • 輸出
  • Q0~Q7:8bit並行資料輸出,例如街?jǐn)?shù)碼管的8個(gè)腳位。
  • QH′:串聯(lián)輸出端,與下一個(gè)74HC595的DS相連,實(shí)現(xiàn)多個(gè)595晶片之間的串聯(lián)
  • 輸入
  • DS:序列資料,也就是你要傳出的值
  • SH_CP:移位暫存器的時(shí)序輸入。上升沿時(shí)移位暫存器中的資料依次移動(dòng)一位元,即Q0中的資料移到Q1中,Q1中的資料移到Q2中,依次類推;下降沿時(shí)移位暫存器中的資料保持不變。
  • ST_CP:存儲(chǔ)寄存器的時(shí)序輸入。上升沿時(shí)移位暫存器中的資料進(jìn)入存儲(chǔ)寄存器,下降沿時(shí)存儲(chǔ)寄存器中的資料保持不變。應(yīng)用時(shí)通常將ST_CP置為低點(diǎn)平,移位結(jié)束後再在ST_CP端產(chǎn)生一個(gè)正脈衝更新顯示資料。
  • MR:重置(RESET),低電平時(shí)將移位暫存器中的資料清零.
  • OE:輸出允許,高電平時(shí)禁止輸出(高阻態(tài))


回復(fù)

使用道具 舉報(bào)

ID:618842 發(fā)表于 2019-10-6 15:05 | 顯示全部樓層
你可以百度搜一下38譯碼器  3個(gè)io口控制八個(gè)  原理就是  給這三個(gè)口不同的電平  剛好就是 8個(gè)
回復(fù)

使用道具 舉報(bào)

ID:591676 發(fā)表于 2019-10-6 17:33 | 顯示全部樓層
需要使用譯碼器,比如74h138或者其他的但是要注意帶電平類型
回復(fù)

使用道具 舉報(bào)

ID:524818 發(fā)表于 2019-10-6 18:21 | 顯示全部樓層
樓上說(shuō)的都對(duì),是通過(guò)38譯碼器實(shí)現(xiàn)三根線控制8種狀態(tài),以實(shí)現(xiàn)數(shù)碼管顯示內(nèi)容
回復(fù)

使用道具 舉報(bào)

ID:555516 發(fā)表于 2019-10-7 14:39 | 顯示全部樓層
好的  謝謝各位的解答了   問(wèn)題已經(jīng)解決了  用3-8線譯碼器就可以了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表