欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5185|回復: 18
收起左側(cè)

單片機40個流水燈如何編程呢?求思路 利用38譯碼器來拓展io口

[復制鏈接]
ID:627982 發(fā)表于 2019-10-22 14:34 | 顯示全部樓層 |閱讀模式
利用38譯碼器來拓展io口
這一方法能實現(xiàn)流水燈嗎,能的話如何編寫程序呢,望大神指導
51hei圖片20191022142940.png
51hei截圖20191022143134.png
回復

使用道具 舉報

ID:213173 發(fā)表于 2019-10-22 22:02 | 顯示全部樓層
給你寫了一個示例參考
595驅(qū)動LED仿真.zip (103.94 KB, 下載次數(shù): 27)

無標題.jpg

  1. #include<REG51.H>

  2. sbit Sh=P2^0;
  3. sbit Ds=P2^1;
  4. sbit St=P2^2;

  5. unsigned char a1=0xff,b1=0xff,c1=0xff,d1=0xff,e1=0xfe;

  6. void DelayMS(unsigned int ms)
  7. {
  8.         unsigned char i;
  9.         while(ms--)
  10.         for(i=0;i<120;i++);
  11. }

  12. void In_Data(unsigned char a,b,c,d,e)
  13. {
  14.         unsigned char i,j,k;       
  15.         for(i=0;i<5;i++)
  16.         {
  17.                 if(i==0)k=a;
  18.                 if(i==1)k=b;
  19.                 if(i==2)k=c;
  20.                 if(i==3)k=d;
  21.                 if(i==4)k=e;
  22.                 for(j=0;j<8;j++)
  23.                 {
  24.                         k<<=1;
  25.                         Ds=CY;
  26.                         Sh=0;
  27.                         Sh=1;
  28.                 }
  29.         }
  30.         St=0;
  31.         St=1;
  32. }

  33. void main()
  34. {

  35.         while(1)
  36.         {
  37.                 In_Data(a1,b1,c1,d1,e1);
  38.                 DelayMS(500);
  39.                 if(e1!=0xff)
  40.                 {
  41.                         e1=e1<<1|0x01;
  42.                         if(e1==0xff)
  43.                                 d1=0xfe;
  44.                 }
  45.                 else if(d1!=0xff)
  46.                 {
  47.                         d1=d1<<1|0x01;
  48.                         if(d1==0xff)
  49.                                 c1=0xfe;
  50.                 }
  51.                 else if(c1!=0xff)
  52.                 {
  53.                         c1=c1<<1|0x01;
  54.                         if(c1==0xff)
  55.                                 b1=0xfe;
  56.                 }
  57.                 else if(b1!=0xff)
  58.                 {
  59.                         b1=b1<<1|0x01;
  60.                         if(b1==0xff)
  61.                                 a1=0xfe;
  62.                 }
  63.                 else if(a1!=0xff)
  64.                 {
  65.                         a1=a1<<1|0x01;
  66.                         if(a1==0xff)
  67.                                 e1=0xfe;
  68.                 }
  69.         }
  70. }
復制代碼



回復

使用道具 舉報

ID:235200 發(fā)表于 2019-10-23 00:03 | 顯示全部樓層
五個74138,依次控制輸入CBA對應(yīng)0-7的同時,P30-P35依次只控制有一根為低電平,不過你的電路是錯誤的,74138的E1應(yīng)該接高電平
回復

使用道具 舉報

ID:627982 發(fā)表于 2019-10-23 21:49 | 顯示全部樓層
wulin 發(fā)表于 2019-10-22 22:02
給你寫了一個示例參考

謝謝,很有用
回復

使用道具 舉報

ID:627982 發(fā)表于 2019-10-23 22:19 | 顯示全部樓層
wulin 發(fā)表于 2019-10-22 22:02
給你寫了一個示例參考

能解釋說明一下代碼的意思嗎?還有那個cY是什么意思呢
回復

使用道具 舉報

ID:628137 發(fā)表于 2019-10-23 22:43 來自觸屏版 | 顯示全部樓層
38譯碼可以達到要求
回復

使用道具 舉報

ID:235200 發(fā)表于 2019-10-24 08:12 | 顯示全部樓層
寂寞的大餅 發(fā)表于 2019-10-23 22:19
能解釋說明一下代碼的意思嗎?還有那個cY是什么意思呢

CY是寄存器PSW的最高位,進行移位時,會把1位數(shù)據(jù)移入到這里存儲
回復

使用道具 舉報

ID:213173 發(fā)表于 2019-10-24 09:06 | 顯示全部樓層
寂寞的大餅 發(fā)表于 2019-10-23 22:19
能解釋說明一下代碼的意思嗎?還有那個cY是什么意思呢

40位數(shù)據(jù)已經(jīng)超出無符號長整型數(shù)據(jù)類型32位,不能一次傳輸,所以用for嵌套,將8位數(shù)據(jù)連續(xù)傳輸5次。
特殊功能寄存器PSW中,CY表示的含義是溢出標志位。也可以寫成如下代碼,由高到低傳輸,只是效率略低。
for(j=0;j<8;j++)
{
    Ds=(k&0x80)>>7;//讀取最高位
    Sh=0;
    Sh=1;
    k<<=1;
}
回復

使用道具 舉報

ID:627982 發(fā)表于 2019-10-25 12:58 | 顯示全部樓層
wulin 發(fā)表于 2019-10-24 09:06
40位數(shù)據(jù)已經(jīng)超出無符號長整型數(shù)據(jù)類型32位,不能一次傳輸,所以用for嵌套,將8位數(shù)據(jù)連續(xù)傳輸5次。
特 ...

能不能通篇說一下,尤其是整個原理的工作流程,如何實現(xiàn)流水燈的
回復

使用道具 舉報

ID:213173 發(fā)表于 2019-10-25 14:36 | 顯示全部樓層
寂寞的大餅 發(fā)表于 2019-10-25 12:58
能不能通篇說一下,尤其是整個原理的工作流程,如何實現(xiàn)流水燈的

由于40個流水燈是輪流點亮的,編程就極其簡單,與8個流水燈的程序幾乎一樣。主循環(huán)周期約500ms,也就是0.5s左移1位,初始e1=0xfe;1111 1110,左移1位后+1=1111 1101,以此類推,循環(huán)8次就是1111 1111,以0xff作為進位判斷條件,重復5次就完成一輪40個LED流水。如果把40個LED做成花樣流水就比較復雜些,需要事先設(shè)計幾個二維數(shù)組保存預(yù)定花樣,由按鍵或其它方法控制和調(diào)用這些數(shù)組完成花樣流水。
回復

使用道具 舉報

ID:401564 發(fā)表于 2019-10-25 14:36 | 顯示全部樓層
哥們,你不會連流水燈怎么實現(xiàn)都不知道吧?
不要折騰那么多了,直接上一個引腳多的STC單片機就可以了,什么譯碼器都不要,只要串聯(lián)電阻LED就可以了的
程序就一個一個亮過去就可以了,完了就有流水的效果了
回復

使用道具 舉報

ID:630052 發(fā)表于 2019-10-25 15:06 | 顯示全部樓層
先看一下基礎(chǔ)吧
回復

使用道具 舉報

ID:627982 發(fā)表于 2019-10-25 15:29 | 顯示全部樓層
Y_G_G 發(fā)表于 2019-10-25 14:36
哥們,你不會連流水燈怎么實現(xiàn)都不知道吧?
不要折騰那么多了,直接上一個引腳多的STC單片機就可以了,什么譯 ...

老哥,師傅要求用32個I/O口的單片機并通過數(shù)電知識拓展口來點亮40個流水燈,俺是新手,基本不會。
回復

使用道具 舉報

ID:627982 發(fā)表于 2019-10-25 16:19 | 顯示全部樓層
wulin 發(fā)表于 2019-10-25 14:36
由于40個流水燈是輪流點亮的,編程就極其簡單,與8個流水燈的程序幾乎一樣。主循環(huán)周期約500ms,也就是0. ...

大佬能將每一段小程序解釋一下嗎,謝謝啦,慚愧了
回復

使用道具 舉報

ID:401564 發(fā)表于 2019-10-26 08:26 | 顯示全部樓層
寂寞的大餅 發(fā)表于 2019-10-25 15:29
老哥,師傅要求用32個I/O口的單片機并通過數(shù)電知識拓展口來點亮40個流水燈,俺是新手,基本不會。

我也不會,我從來都沒有用過74138,端口擴展也沒有用過
但就算我沒有用過,我也可以說這很簡單
當你學到單片機編程這一塊的時候,你就應(yīng)該在這之前把數(shù)字電路和模擬電路的基礎(chǔ)打好,如果你現(xiàn)在還不會這些,那就說你不會就可以了,"我不會"這三個字說出來不丟人,人都是從不會學過來的,如果你還想在這條路上走下去,那就還得回去學數(shù)字電路
你在這問,人家給了你代碼和電路,你依然還是不會的
當然,如果你沒有在這條路繼續(xù)走下去的打算,就當我什么也沒說
回復

使用道具 舉報

ID:383215 發(fā)表于 2019-10-27 11:36 | 顯示全部樓層
單片機擴展40個輸出口點亮流水燈,用5片74138是最差方案,只能做到同時亮5個LED,最佳方案是用5片CD4094,最多占用單片機4個I/O口,就是擴展100個輸出口也是占用單片機4個I/O口,可以做到40個LED全亮全滅,想編出什么花樣都可以。
回復

使用道具 舉報

ID:914959 發(fā)表于 2021-5-2 14:30 | 顯示全部樓層
kmsj 發(fā)表于 2019-10-27 11:36
單片機擴展40個輸出口點亮流水燈,用5片74138是最差方案,只能做到同時亮5個LED,最佳方案是用5片CD4094, ...

cd4094可以用什么代替嗎?
回復

使用道具 舉報

ID:383215 發(fā)表于 2021-5-2 18:38 | 顯示全部樓層
dugu@520 發(fā)表于 2021-5-2 14:30
cd4094可以用什么代替嗎?

CD4094可以用74HC595代替,樓上已經(jīng)有介紹,只是74HC595我很少用,CD4094用習慣了,現(xiàn)在發(fā)現(xiàn)74HC595布線更容易,速度應(yīng)該更快。
回復

使用道具 舉報

ID:89515 發(fā)表于 2021-5-2 19:58 | 顯示全部樓層
就只是做流水燈的話,用4017不是更簡單,一個時鐘信號就行了,非用單片機的話,循環(huán)程序就一句。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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