色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于ME8S003實現WS2812 LED調光快速解決方案

jf_pJlTbmA9 ? 來源:敏矽MCU ? 作者:敏矽MCU ? 2023-09-18 10:56 ? 次閱讀

ws2812驅動相信有不少人都用過,大家對這款彩色LED真的是又愛又恨,愛的是它它使用簡單,采用單總線通信方式,節約IO口,而且可以多級串聯。而普通的彩色LED不是共陰就是共陽,每個顏色一個引腳,一般都是用PWM驅動,想要控制亮度、顏色就要分別控制每個引腳上的PWM占空比,想要驅動多個LED就更麻煩了。恨的是ws2812對時序的要求比較高,對低速單片機不太友好而且開發比較復雜。

今天我們就針對基于ME8S003硬件PWM如何快速實現控制ws2812的驅動。其中ME8S003提供的2路PWM模塊可以輕松實現當下流行的LED驅動WS2812的通信,不需要過多占用CPU時間。敏矽微提供整套軟、硬件解決方案,幫助用戶快速開發;

1、概述

“WS2812”解決方案

ME8S003是內嵌8051兼容的1T高性能8位微控制器。該系列控制器具有高性能、高適應范圍和超低成本特點。內置48MHz主時鐘和獨立的低速(30K/1.5M可切換)時鐘,常用外設8路1M高速12位的ADC轉換器,允許4路輸入2個比較器,2+3通道PWM,2個UART串口,SPI接口I2C總線接口,3通用16位計數器/定時器。低功耗支持深度睡眠和掉電模式。提供M2調試端口,實現系統仿真

2、WS2812基本說明

“WS2812”快速解決方案

WS2812B是一款全彩LED控制IC,單總線控制,何為單總線我的理解就是數據線在一根線上傳輸的控制方式就是單總線。

WS2812是一個集控制電路與發光電路于一體的智能外控LED光源,外形一般為5050封裝,每個LED燈珠為一個像素點,支持RGB無極調色,同時每顆燈珠內部集成有智能數字接口數據鎖存信號整形放大驅動電路,還包含有高精度的內部振蕩器和可編程電流控制部分,有效保證了像素點光的顏色高度一致。

wKgZomUDv4eAUsNQAAHl2oy5CRE109.png

wKgaomUDv4qAcdXqAAEQZErR4hM337.png

3、ME8S003使用PWM實現數據移位輸出

“WS2812”快速解決方案

ME8S003內嵌一個PWM模塊,可以支持兩個獨立的16位PWM輸出。同時還可以配置成為兩個定時器,或者兩路PWM合并支持載波輸出(如實現38K Irda應用),或者配置兩個不同的PWM輸出來對應bit數據0/1并合并在一起,從而實現使用PWM進行bit流數據的移位輸出。

下面我們將討論如何使用PWM模塊實現bit流數據的移位輸出:

首先,我們將對PWM0和PWM1進行周期和占空比分別配置,其中PWM0的周期(PWM0CRCH/ PWM0CRCL)和占空比(PWM0CCH/ PWM0CCL)將用來代表數據0,PWM1的周期(PWM1CRCH/ PWM1CRCL)和占空比(PWM1CCH/ PWM1CCL)將用來代表數據1。0和1的周期和占空比是不同的,以WS2812應用為例,PWM0的周期和占空比分別為1.2us和0.3us,PWM0的周期和占空比分別為1.2us和0.9us。

當我們使能PWM的數據移位功能時,要輸出數據0,PWM移位輸出管腳(PWMSHT)就PWM0配置的波形;要輸出數據1,PWM移位輸出管腳就PWM1配置的波形。

wKgZomUDv4uAd8tIAABCpxQFJVY269.png

最后的問題就是如何連續輸出一個bit數據流。ME8S003 PWM為這個移位功能設置一個乒乓緩存(PWMSHIFTDAT0/ PWMSHIFTDAT1),我們只需要來回切換并不斷把需要發出的數據喂入乒乓緩存即可。

當所有數據傳輸結束,關閉PWM。

4、WS2812控制實程

“WS2812”快速解決方案

ME8S003提供了全套的驅動,其中關于PWM 移位數據功能有PWM配置函數和PWM數據移位輸出函數;

PWM配置函數:

voidPWM_DataShift_Cfg(unsignedlongcyclefreq,unsignedcharduty0inpercentage,unsignedcharduty1inpercentage)
cyclefreq:PWM周期頻率,單位hz
duty0inpercentage:數據0輸出占空比的百分比
duty1inpercentage:數據1輸出占空比的百分比
voidPWM_DataShift_Cfg(unsignedlongcyclefreq,unsignedcharduty0inpercentage,unsignedcharduty1inpercentage)
{
unsignedlongtemp,temp1;
unsignedcharclkshift;
clkshift=(PWMCON0 0x07)+1;
if(clkshift>2)
temp=SystemClock>>clkshift;
else
temp=SystemClock;
temp=temp/cyclefreq;
PWM0CRCL=temp 0xFF;
PWM0CRCH=(temp>>8) 0xFF;
PWM1CRCL=PWM0CRCL;
PWM1CRCH=PWM0CRCH;
temp1=(temp*duty0inpercentage)/100;
PWM0CCL=temp1 0xFF;
PWM0CCH=(temp1>>8) 0xFF;
temp1=(temp*duty1inpercentage)/100;
PWM1CCL=temp1 0xFF;
PWM1CCH=(temp1>>8) 0xFF;
set_PWMCON1_SHIFTDIR;
}

PWM數據移位輸出函數:

voidPWM_DataShift(unsignedchar*dataptr,unsignedcharlen)
dataptr:輸出數據起始指針
len:數據長度
voidPWM_DataShift(unsignedchar*dataptr,unsignedcharlen)
{
PWMSHIFTDAT0=*dataptr++;
PWMSHIFTDAT1=*dataptr++;;
PWM_DATASHIFT_START;
len-=2;
//shiftalldata
while(len)
{
if(PWMSTA_DAT0BF==0)
{
PWMSHIFTDAT0=*dataptr++;
len--;
}
if(len==0)break;
if(PWMSTA_DAT1BF==0)
{
PWMSHIFTDAT1=*dataptr++;
len--;
}
}
while(PWM_DATASHIFT_BUSY);
PWM_DATASHIFT_STOP;
}

3個WS2812 驅動的LED燈實例程序:

Main.c
//-----------------------------------------------------------------------------
//Includes
//-----------------------------------------------------------------------------
#include"me8s003.h"http://SFRdeclarations
#include"io_mux.h"
#include"sfr_macro.h"
#include"sys.h"
#include"pwm.h"
//-----------------------------------------------------------------------------
//main()Routine
//-----------------------------------------------------------------------------
//3ledunsignedcharcolor_data[9]={0xFF,0x80,0x40,0x40,0xFF,0x80,0x80,0x40,0xFF};
unsignedcharmax_data_no=9;
unsignedintdata_index;
voidmain(void)
{
Modify_System_Clock(HCLK_48M);
P0_5_INIT(P0_5_PIO);
P0_Output_Enable(IO_BIT5);
P1_2_INIT(P1_2_PWMSHT);
PWM_Init(PWM_CLK_DIVIDED_BY_1);
PWM_DataShift_Cfg(833000,25,75);//833K=~1.2usPWMcycle,25%=~0.3us,75%=~0.9us
while(1)
{
//shiftdata
PWM_DataShift(color_data,max_data_no);
//preparenextdata
for(data_index=0;data_index<=max_data_no;data_index++)
????????{
????????????color_data[data_index]=color_data[data_index]+1;
????????}
????????P0_5?=!P0_5;?????????????????????//?Turn?onoff?LE
????????Ddelay(800);?//Reset,?>80us
}
}

來源:敏矽MCU

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7542

    瀏覽量

    151316
  • led
    led
    +關注

    關注

    242

    文章

    23252

    瀏覽量

    660582
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5181

    瀏覽量

    213808
  • 定時器
    +關注

    關注

    23

    文章

    3246

    瀏覽量

    114720
  • WS2812
    +關注

    關注

    0

    文章

    32

    瀏覽量

    6170
收藏 人收藏

    評論

    相關推薦

    WS2812是否可以反轉UART的輸出?

    是否可以反轉 UART 的輸出。輸出 1 而不是 0,輸出 0 而不是 1。 問題背景:按照以下方案使用 UART 控制 WS2812: (1)XX XXX XX(0). 具有 7 個數據位的 UART。 WS2812 的 3
    發表于 07-15 07:37

    求一種使用SPI+DMA的方式進行WS2812的控制方案

    怎樣使用SPI+DMA的方式進行WS2812的控制呢?如何實現SPI控制WS2812燈呢?
    發表于 12-21 06:37

    講講WS2812的數據協議

    可編程定電流控制部分,可以保證LED亮度一致。下面來講講WS2812的數據協議。WS2812采用的是一種叫做單線歸零碼的通訊方式。首先要注意的是,單線歸零碼通過識別電平轉換來判別0和1信號,與一般的電平...
    發表于 01-11 07:25

    Arduino控制WS2812燈帶的方法

    設計者:STCode(公眾號同名)Arduino控制WS2812燈帶(燈環)1) WS2812WS2812燈帶WS2812燈環WS2812
    發表于 01-12 08:08

    利用ESP32中的硬件SPI接口控制WS2812的顯示

    1、利用硬件SPI控制WS2812智能集成LED光源 WS2812通過簡單的外部接口、特有的級聯方案便于利用MCU完成多個LED控制,極大簡
    發表于 06-21 15:17

    WS2812驅動的總結和時序的詳細資料分析

    WS2812相信有不少人都用過,大家對這款彩色LED真的是又愛又恨,愛的是它它使用簡單,采用單總線通信方式,節約IO口,而且可以多級串聯。而普通的彩色LED不是共陰就是共陽,每個顏色一個引腳,一般
    發表于 08-01 17:35 ?64次下載
    <b class='flag-5'>WS2812</b>驅動的總結和時序的詳細資料分析

    如何進行WS2812的面板燈制作詳細資料合集免費下載

    本文檔的主要內容詳細介紹的是如何進行WS2812的面板燈制作詳細資料合集免費下載包括了:DMX512轉WS2812 面板燈程序,STC8系列單片機技術參考手冊,WS2812燈板照片,
    發表于 05-29 17:36 ?164次下載
    如何進行<b class='flag-5'>WS2812</b>的面板燈制作詳細資料合集免費下載

    dfrobot炫彩WS2812 RGB LED可剪裁白色燈帶介紹

    WS2812 RGB裸板白燈條是由一系列的全彩LED組成。
    的頭像 發表于 12-27 15:35 ?4522次閱讀
    dfrobot炫彩<b class='flag-5'>WS2812</b> RGB <b class='flag-5'>LED</b>可剪裁白色燈帶介紹

    STM32使用LL庫PWM的DMA模式驅動ws2812

    驅動n個,當然n是有限制的。時序超級簡單,也有一定難度。類似的帖子網上有很多,在此不再贅述。WS2812驅動方式大概有以下幾種:1.使用GPIO模擬,中間加延時實現“0”、“1”的時序,延時需要...
    發表于 11-30 10:21 ?66次下載
    STM32使用LL庫PWM的DMA模式驅動<b class='flag-5'>ws2812</b>

    STM32F103C8T6+PWM+DMA驅動 WS2812燈帶

    #STM32+PWM+DMA驅動 WS2812燈帶#文章目錄1.理論:2代碼:理論:使用STM32F103C8T6驅動WS2812燈帶,每個燈由24位組成三種顏色RGB,每8位控制一種
    發表于 12-27 19:29 ?214次下載
    STM32F103C<b class='flag-5'>8</b>T6+PWM+DMA驅動 <b class='flag-5'>WS2812</b>燈帶

    WS2811/WS2812擴展器

    電子發燒友網站提供《WS2811/WS2812擴展器.zip》資料免費下載
    發表于 07-04 09:35 ?15次下載
    <b class='flag-5'>WS</b>2811/<b class='flag-5'>WS2812</b>擴展器

    WS2812 LED燈條的DIY Arduino 1D乒乓球游戲

    電子發燒友網站提供《帶WS2812 LED燈條的DIY Arduino 1D乒乓球游戲.zip》資料免費下載
    發表于 11-04 14:38 ?0次下載
    帶<b class='flag-5'>WS2812</b> <b class='flag-5'>LED</b>燈條的DIY Arduino 1D乒乓球游戲

    WS2812 RGB LED開源分享

    電子發燒友網站提供《WS2812 RGB LED開源分享.zip》資料免費下載
    發表于 02-01 14:05 ?24次下載
    <b class='flag-5'>WS2812</b> RGB <b class='flag-5'>LED</b>開源分享

    WS2812 LED芯片的使用筆記

    最接接觸了WS2812 LED,相信有不少人都用過。大家對這款彩色LED肯定是又愛又恨,愛的是它使用簡單,采用單總線通信方式,節約IO口,而且可以多級串聯。而普通的彩色LED不是共陰就
    的頭像 發表于 10-01 09:58 ?6048次閱讀
    <b class='flag-5'>WS2812</b> <b class='flag-5'>LED</b>芯片的使用筆記

    論如何使用WS2812以及類似燈珠

    ? ?WS2812 LED燈珠,這是一種非常流行的可尋址RGB LED。每個WS2812 LED內部集成了控制電路,因此可以通過一個數據輸入
    的頭像 發表于 09-30 15:11 ?428次閱讀
    論如何使用<b class='flag-5'>WS2812</b>以及類似燈珠
    主站蜘蛛池模板: 亚洲AV无码影院在线播放| 人人干人人爽| 免费人成视频19674不收费| 美女被男人撕衣舔胸| 年轻漂亮的妺妺中文字幕版| 日本高清无人区影院| 视频三区 国产盗摄| 亚洲av欧美在我| 中文无码热在线视频| 99热这里只有 精品| 厨房玩朋友娇妻中文字幕| 国产精品香蕉视频在线| 精品国产乱码久久久久久人妻 | 蜜芽资源高清在线观看| 欧美精品3atv一区二区三区| 少妇性饥渴BBBBBBBBB| 亚洲视频在线观看视频| 123成人站| 高清国产mv视频在线观看| 回复术士人生重启在线观看| 蜜芽一二三区| 午夜看片a福利在线观看| 又黄又肉到湿的爽文| 边吃胸边膜下床震免费版视频 | 九九久久国产精品大片| 男人日女人的b| 无码射肉在线播放视频| 最近免费中文字幕MV在线视频3 | 高h np 强j 乱l 双性| 九九黄色大片| 全球真实小U女视频合集| 亚洲不卡视频在线观看| 99国内偷揿国产精品人妻| 国产精品色欲AV亚洲三区软件| 久久人妻无码毛片A片麻豆 | 欧美日韩久久久精品A片| 午夜福利08550| 91精品一区二区综合在线| 国产精品99久久久久久AV| 妈妈的朋友6未删减版完整在线 | 天天躁人人躁人人躁狂躁|