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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5935|回復: 4
打印 上一主題 下一主題
收起左側

Proteus仿真WS2812+51單片機源程序

  [復制鏈接]
跳轉到指定樓層
樓主
跟據示波波形,反復調試,同時優化程序,使高電平最小時間接近0.5us,如示波器圖所示,這時可利用程序驅動WS2812,否則會因程序運行速度過慢而無法驅動。
為了簡化程序,加快代碼運行速度,采用匯編與C語言混合編程
#pragma ASM
SETB P2.5
CLR  P2.5
CLR  P2.5
#pragma ENDASM

因單片機時鐘周期限制,在仿真的調試過程中加入for,while循環會使ws2812的驅動波形出現長時間的低電平,導致不能正常點亮led,故此程序沒有使用for循環,而是多條語句重復使用,造成了代碼量很大,因本人能力有限,沒有精力進行簡化,望使用的大佬能進一步完善。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg51.h>
  2. #include <LCD1602.h>
  3. #include <GY25.h>
  4. #include <WS2812.h>
  5. #include <stdio.h>
  6. #define PIXEL_COUNT 16



  7. sbit led1=P2^3;
  8. sbit led2=P2^4;

  9. int flag_now=0,flag_last=0;
  10. char strTemp[10]= {'0','1','2','3','4','5','6','7','8','9'};



  11. int RR,GG,BB;
  12. int i;
  13. int US100;
  14. int MS1;
  15. void display()
  16. {
  17.     LCD_set_position(0);
  18.     LCD_printc(strTemp[YPR/1000]);
  19.     LCD_printc(strTemp[YPR/100%10]);
  20.     LCD_printc(strTemp[YPR/10%10]);
  21.     LCD_printc(strTemp[YPR%10]);
  22. }
  23. void led_init()
  24. {
  25.     led1=1;
  26.     led2=1;
  27. }
  28. void delay10ms(void)   //誤差 0.000000000000us
  29. {
  30.     unsigned char a,b;
  31.     for(b=235;b>0;b--)
  32.         for(a=57;a>0;a--);
  33. }
  34. int count=0;
  35. void control()
  36. {
  37.     if(YPR<10&&YPR>-10)
  38.         flag_now=1;
  39.     else
  40.         flag_now=2;
  41.     if(flag_now==1)
  42.     {
  43.         led1=0;
  44.         led2=1;
  45.     }
  46.     if(flag_now==2)
  47.     {
  48.         led1=1;
  49.         led2=0;
  50.     }
  51.     if(flag_last!=flag_now)
  52.                 {
  53.                         
  54.                                 if(flag_now==1)
  55.                                                         for(count=1;count<=32;count++)
  56.                                                  {
  57.                                                          ws2812_led(count);
  58.                                                          delay10ms();
  59.                                                  }
  60.                                 if(flag_now==2)
  61.                                                                 for(count=32;count>0;count--)
  62.                                                          {
  63.                                                                  ws2812_led(count);
  64.                                                                  delay10ms();
  65.                                                          }
  66.                   ws2812_led(0);
  67.                 }
  68.                
  69.     flag_last=flag_now;
  70. }
  71. void main(void)
  72. {
  73.     InitUART();
  74.     led_init();
  75.           SBUF = 0XA5;
  76.     while(!TI);
  77.           SBUF = 0X52;
  78.     while(!TI);
  79.           delay10ms();
  80.     while(1)
  81.     {
  82.       control();
  83.     }
  84. }
復制代碼

Keil代碼與Proteus8.8版本仿真51hei下載:
本人初學,僅供參考,存在錯誤和不足之處,請大家回帖多多指教,切勿照搬,文件下載:
WS2812.zip (1.56 MB, 下載次數: 151)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:390416 發表于 2021-1-7 18:00 | 只看該作者
WS2812是一個通信速度比較快的芯片,而89單片機是比較慢的單片機。
89單片機使用32M晶振、12T模式,用IO口直接驅動WS2812燈珠。
這是我發在51hei的貼子 http://www.zg4o1577.cn/bbs/dpj-170855-1.html
回復

使用道具 舉報

板凳
ID:386857 發表于 2021-1-9 16:48 | 只看該作者
人人學會單片機 發表于 2021-1-7 18:00
WS2812是一個通信速度比較快的芯片,而89單片機是比較慢的單片機。
89單片機使用32M晶振、12T模式,用IO口 ...

我嘗試了你的代碼,但在Proteus上不好用
回復

使用道具 舉報

地板
ID:546379 發表于 2022-8-30 12:26 | 只看該作者
Proteus原理圖需要用8.8版本才可以打開,代碼也不好用,只能呵呵,還弄我下了幾次
回復

使用道具 舉報

5#
ID:386857 發表于 2023-1-16 16:46 | 只看該作者
liao026 發表于 2022-8-30 12:26
Proteus原理圖需要用8.8版本才可以打開,代碼也不好用,只能呵呵,還弄我下了幾次

gif動圖在那里,親,您是哪里不好用呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区亚洲 | 91精品国产高清一区二区三区 | 一区二区三区中文字幕 | 精品一区二区三区不卡 | 国产精品久久久久久久久久久免费看 | 九九久久精品视频 | 久久av一区二区三区 | 中文字幕日韩在线 | 精品亚洲永久免费精品 | 精品久久久精品 | 成人乱人乱一区二区三区软件 | 国产综合av | 色香婷婷 | 久久中文字幕一区 | h片在线免费看 | 久久91精品 | 国产无人区一区二区三区 | 91在线观看网址 | 欧美一区二区免费电影 | 欧美日韩视频在线播放 | 美女逼网站 | 久久高潮 | 国产精品国产三级国产aⅴ入口 | 国产欧美精品一区二区三区 | 国产精品永久免费 | 91麻豆精品一区二区三区 | 操久久| 久久精品亚洲一区二区三区浴池 | 精品国产乱码久久久久久影片 | 国产成人久久精品一区二区三区 | 久久综合久| 亚洲国产一区二区视频 | 一区二区不卡高清 | 日韩中文在线视频 | 亚洲精品免费视频 | 亚洲国产精品99久久久久久久久 | 欧美一区二区三区精品 | 男女一区二区三区 | 色射综合 | 欧美精品一| 天堂在线免费视频 |