久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2400|回復: 21
打印 上一主題 下一主題
收起左側(cè)

51單片機如何制作有拖影的流水燈?新手請教實現(xiàn)思路

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:871926 發(fā)表于 2022-2-23 16:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想寫一個51單片機控制8個LED有拖影的流水燈,第一顆亮度100%,第二顆亮度75%,第3顆亮度50%,最后25%亮度,請教一下程序設(shè)計思路,感謝!!!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:624769 發(fā)表于 2022-2-23 18:23 來自手機 | 只看該作者
你牽涉到頻占比,肯定要開一個定時器,設(shè)置4個變量,temp1-temp4,初始值分別0xf0,0xf8,0xfc,0xfe。在定時器中段中每隔1ms,把四個變量輪流賦值led,然后,按標準流水燈的做法,在合適時機,同時給這4個變量,做移位。
回復

使用道具 舉報

板凳
ID:57657 發(fā)表于 2022-2-23 18:36 | 只看該作者
在main函數(shù)內(nèi)產(chǎn)生8路不同占空比的PWM,用于控制8顆LED的不同亮度,然后用定時器中斷進行二維數(shù)組查表即可。
回復

使用道具 舉報

地板
ID:161164 發(fā)表于 2022-2-24 10:43 | 只看該作者
飯要一口一口吃,代碼要一個字一個字敲
A1.點亮第一顆Led
A2.用Delay令Led閃爍
A3.不用Delay令Led閃爍
A4.不用Delay令Led短亮長暗
A5.加速閃爍到肉眼看不出
A6.調(diào)節(jié)亮暗時間以控制Led亮度
A7.把亮暗時改為自動增減,形成一個呼吸燈
B1.點亮第二顆Led
B2.用Delay依次點亮其他Led
B3.不用Delay依次點亮其他Led
B4.重復B3,點亮第二顆Led時熄滅前一顆
B5.當最后一顆熄滅時,點亮第一顆,形成流水燈循環(huán)
B6.重復B3,點亮第三顆Led時熄滅第一顆形成拖尾
C1.A6+B3以半光亮度依次點亮Led
C2.A7+B6以漸暗方式形成拖尾達成目標
回復

使用道具 舉報

5#
ID:1003226 發(fā)表于 2022-2-24 10:59 | 只看該作者
PWM 控制燈亮度  cross移位
回復

使用道具 舉報

6#
ID:213173 發(fā)表于 2022-2-24 14:54 | 只看該作者
給你一個示例參考
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit P1_0 = P1^0;   
  6. sbit P1_1 = P1^1;
  7. sbit P1_2 = P1^2;
  8. sbit P1_3 = P1^3;
  9. sbit P1_4 = P1^4;
  10. sbit P1_5 = P1^5;
  11. sbit P1_6 = P1^6;
  12. sbit P1_7 = P1^7;

  13. unsigned char PWM0 = 15;//改變初值即改變初始狀態(tài)
  14. unsigned char PWM1 = 17;     
  15. unsigned char PWM2 = 19;
  16. unsigned char PWM3 = 21;
  17. unsigned char PWM4 = 23;     
  18. unsigned char PWM5 = 25;
  19. unsigned char PWM6 = 27;     
  20. unsigned char PWM7 = 29;
  21. unsigned char counter=0;  
  22. unsigned char tt1=0;   
  23. unsigned int count=0;//計數(shù)變量
  24. bit sign=0;                        //暫停標志

  25. void main()
  26. {
  27.         TMOD=0x01;
  28.         TH0=(65536-500)/256;      
  29.         TL0=(65536-500)%256;
  30.         TR0=1;
  31.         EA=1;
  32.         ET0=1;
  33.         while(1)
  34.         {  
  35.                 if(tt1>=55)
  36.                 {
  37.                         tt1=0;
  38.                         PWM7++;PWM6++;PWM5++;PWM4++;
  39.                         PWM3++;PWM2++;PWM1++;PWM0++;
  40.                         if(PWM7==30) PWM7=0;
  41.                         if(PWM6==30) PWM6=0;
  42.                         if(PWM5==30) PWM5=0;
  43.                         if(PWM4==30) PWM4=0;
  44.                         if(PWM3==30) PWM3=0;
  45.                         if(PWM2==30) PWM2=0;
  46.                         if(PWM1==30) PWM1=0;
  47.                         if(PWM0==30) PWM0=0;
  48.                         if(PWM0==16) sign=1;//PWM0=16時關(guān)閉所有PWM
  49.                 }
  50.         }
  51. }
  52. void Timer0(void) interrupt 1
  53. {                           
  54.         TH0=(65536-500)/256;   
  55.         TL0=(65536-500)%256;
  56.         if(sign==1)
  57.         {
  58.                 count++;
  59.                 if(count>=2000)//1秒
  60.                 {
  61.                         count=0;
  62.                         sign=0;//開啟所有PWM
  63.                 }
  64.         }
  65.         else
  66.         {
  67.                 counter++;
  68.                 tt1++;
  69.                 if(counter >= 15) counter = 0;  
  70.                 if(counter >= PWM7) P1_0 = 0; else P1_0 = 1;
  71.                 if(counter >= PWM6) P1_1 = 0; else P1_1 = 1;
  72.                 if(counter >= PWM5) P1_2 = 0; else P1_2 = 1;
  73.                 if(counter >= PWM4) P1_3 = 0; else P1_3 = 1;
  74.                 if(counter >= PWM3) P1_4 = 0; else P1_4 = 1;
  75.                 if(counter >= PWM2) P1_5 = 0; else P1_5 = 1;
  76.                 if(counter >= PWM1) P1_6 = 0; else P1_6 = 1;
  77.                 if(counter >= PWM0) P1_7 = 0; else P1_7 = 1;
  78.         }
  79. }
復制代碼
回復

使用道具 舉報

7#
ID:401564 發(fā)表于 2022-2-24 21:35 | 只看該作者
板凳的方法最簡單
8路PWM,數(shù)組查表控制,通過占空比的控制達到位移的效果,連位移都不需要了
回復

使用道具 舉報

8#
ID:123289 發(fā)表于 2022-2-26 14:24 | 只看該作者
1、能控制一個任意一個LED的明滅。
2、能控制一個任意一個LED的亮度。
3、能按隨意控制任意一個LED的明滅時間
4、規(guī)劃一個圖表,在表中規(guī)劃好8個LED的明、滅、亮度時間、時序。讓它們看上去如同流水一樣。
提示:分成許多步(N),每步定義出各個LED的明、滅、亮度時間,以序做N步顯示,就完成了一次流水顯示。
5、重復4、就可以了,但要注意,讓第一步,與第N步的顯示方案接近,即看不出明顯的跳動。當然,你決定就是要讓人感覺到跳動,也行。
回復

使用道具 舉報

9#
ID:977804 發(fā)表于 2022-2-26 15:22 來自手機 | 只看該作者
lkc8210 發(fā)表于 2022-2-24 10:43
飯要一口一口吃,代碼要一個字一個字敲
A1.點亮第一顆Led
A2.用Delay令Led閃爍

高手,循序漸進
回復

使用道具 舉報

10#
ID:871926 發(fā)表于 2022-3-1 23:43 | 只看該作者
這幾天忙工作 ,沒有來得及回復,感謝各位大佬細心教導,按照各位的方法完成了目標,初學者望大家不要見笑
回復

使用道具 舉報

11#
ID:871926 發(fā)表于 2022-3-1 23:49 | 只看該作者
lkc8210 發(fā)表于 2022-2-24 10:43
飯要一口一口吃,代碼要一個字一個字敲
A1.點亮第一顆Led
A2.用Delay令Led閃爍

剛剛學習純C語言基礎(chǔ)轉(zhuǎn)單片機2個月,A1-B6學會了,c1-c2可能有些邏輯思路還沒有轉(zhuǎn)回來 讓各位見笑了
回復

使用道具 舉報

12#
ID:871926 發(fā)表于 2022-3-1 23:52 | 只看該作者
188610329 發(fā)表于 2022-2-23 18:23
你牽涉到頻占比,肯定要開一個定時器,設(shè)置4個變量,temp1-temp4,初始值分別0xf0,0xf8,0xfc,0xfe。在定 ...

謝謝指導 ,讓我學到很多, 思路逐漸清晰。
回復

使用道具 舉報

13#
ID:871926 發(fā)表于 2022-3-1 23:54 | 只看該作者
npn 發(fā)表于 2022-2-23 18:36
在main函數(shù)內(nèi)產(chǎn)生8路不同占空比的PWM,用于控制8顆LED的不同亮度,然后用定時器中斷進行二維數(shù)組查表即可。

非常感謝!學習了,有那種感覺了
回復

使用道具 舉報

14#
ID:871926 發(fā)表于 2022-3-1 23:56 | 只看該作者
wulin 發(fā)表于 2022-2-24 14:54
給你一個示例參考

非常感謝!
回復

使用道具 舉報

15#
ID:871926 發(fā)表于 2022-3-1 23:57 | 只看該作者
Y_G_G 發(fā)表于 2022-2-24 21:35
板凳的方法最簡單
8路PWM,數(shù)組查表控制,通過占空比的控制達到位移的效果,連位移都不需要了

非常感謝!都是高手
回復

使用道具 舉報

16#
ID:871926 發(fā)表于 2022-3-2 00:00 | 只看該作者
yzwzfyz 發(fā)表于 2022-2-26 14:24
1、能控制一個任意一個LED的明滅。
2、能控制一個任意一個LED的亮度。
3、能按隨意控制任意一個LED的明滅 ...

感謝!剛開始學習,每個單步運行基本掌握了,就是組合運行時邏輯思維轉(zhuǎn)得有點慢
回復

使用道具 舉報

17#
ID:121859 發(fā)表于 2022-3-2 07:28 | 只看該作者
如果進一步就可以實現(xiàn)“流星雨”效果,軟件上需要用一個定時器,利用PWM控制原理來實現(xiàn)。要想效果逼真,電路上可以加LC或RLC電路。
回復

使用道具 舉報

18#
ID:1007767 發(fā)表于 2022-3-2 16:14 | 只看該作者
這種需要一點一點調(diào)節(jié)PWM'的 占空比,不同的燈占空比不一樣。
回復

使用道具 舉報

19#
ID:871926 發(fā)表于 2022-3-29 23:53 | 只看該作者
初來乍到,想學東西,我這里也有許多拆機的mcu,(stm32f0系列,at32系列,飛思卡爾等,還有其他品牌的)功能沒有問題,有需要的朋友可以聯(lián)系我,免費送,但是郵費自理
回復

使用道具 舉報

20#
ID:775776 發(fā)表于 2022-3-30 14:04 | 只看該作者
開個定時器 對每個led占空比設(shè)置不同的初始值 沒個燈都自己的 自加或自減循環(huán)
回復

使用道具 舉報

21#
ID:977831 發(fā)表于 2022-3-30 14:48 | 只看該作者
fangdong0602 發(fā)表于 2022-3-29 23:53
初來乍到,想學東西,我這里也有許多拆機的mcu,(stm32f0系列,at32系列,飛思卡爾等,還有其他品牌的)功 ...

感謝樓主,頂頂頂
回復

使用道具 舉報

22#
ID:480627 發(fā)表于 2022-4-11 16:00 | 只看該作者
地板適合新手入門,其他的適合高手技術(shù)交流。。。鑒定完畢
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人高清视频 | 国产福利免费视频 | 精品久久九 | 日韩精品久久久 | 国产精品视频免费 | 国产精品一区二区福利视频 | 羞羞视频一区二区 | 亚洲高清一区二区三区 | 国产成人jvid在线播放 | 日韩一区二区三区在线观看 | 日韩at| 夜夜爽99久久国产综合精品女不卡 | www.国产精 | 九九热免费视频在线观看 | 欧美日韩中文字幕 | 天堂男人av| av一区二区三区四区 | 久久国产精品视频 | 欧美视频三区 | 欧美v日韩v | 免费一区| 国产一区二区三区在线 | 一级二级三级黄色 | 国产精品久久久久av | 亚洲a在线观看 | 亚洲免费网址 | 亚洲精品二区 | 日韩在线国产精品 | www.久| 午夜免费福利电影 | 国户精品久久久久久久久久久不卡 | 国产欧美日韩综合精品一区二区 | 精品国产一区二区三区免费 | 99久久久国产精品 | 亚洲欧美在线视频 | 精品日韩在线观看 | 久草网站 | 九色 在线 | 欧美一级片免费看 | 一级特黄网站 | 国产目拍亚洲精品99久久精品 |