在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)驅(qū)動(dòng)CPLD的PWM正弦信號(hào)發(fā)生器設(shè)計(jì)

            單片機(jī)驅(qū)動(dòng)CPLD的PWM正弦信號(hào)發(fā)生器設(shè)計(jì)

            作者: 時(shí)間:2013-02-06 來(lái)源:網(wǎng)絡(luò) 收藏

            MCU 演示程序:

              #include reg51.h>

              #include absacc.h>

              #define XBYTE[0xffe8]

              unsigned char code sine_dot[32]={49,59,68,77,84,90,95,98,99,98,95,90,84,77,68,59,49,40,30,22,14,8,4,1,0,1,4,8,14,22,30,40};// 正弦表

              void main()

              {

              unsigned char i=0;

              while(1) {

               = sine_dot[i];

              i=(i++)0x1f;

              }// 如果要嚴(yán)格控制S 的周期,這里的while 循環(huán)請(qǐng)用定時(shí)器來(lái)驅(qū)動(dòng)

              }

              四、三路精確相位差

              對(duì)CPLD 改進(jìn)設(shè)計(jì),很容易實(shí)現(xiàn)多路PWM 輸出。

              例如設(shè)計(jì)具有精確相位差的三相正弦信號(hào),CPLD 電路VerilogHDL 程序如下:

              module Mini51b_PWM(P0,ALE,P27,WR,PWM);

              input [7:0]P0;

              input ALE,P27,WR;

              output [2:0]PWM;

              wire [3:0]addr;

              reg [7:0]daPWMc;

              reg [7:0]daPWMs0,daPWMs1,daPWMs2;

              reg [2:0]PWM;

              wire clk,nclk,a,b,c,d;

              assign addr= (ALE)?P0[3:0]:addr; // 低八位地址鎖存

              always @(negedge WR)

              begin

              case({P27,addr})

              5'H10: daPWMs0 = P0;// 寫(xiě)帶地址的寄存器

              5'H11: daPWMs1 = P0;// 寫(xiě)帶地址的寄存器

              5'H12: daPWMs2 = P0;// 寫(xiě)帶地址的寄存器

              default:

              begin

              daPWMs0 = daPWMs0;

              daPWMs1 = daPWMs1;

              daPWMs2 = daPWMs2;

              end

              endcase

              end

              always @(posedge clk) begin

              daPWMc = daPWMc+1; //PWM 調(diào)整精度1%

              if(daPWMs0 daPWMc) PWM[0] = 0;//PWM 發(fā)生器

              else PWM[0] = 1;

              if(daPWMs1 daPWMc) PWM[1] = 0;//PWM 發(fā)生器

              else PWM[1] = 1;

              if(daPWMs2 daPWMc) PWM[2] = 0;//PWM 發(fā)生器

              else PWM[2] = 1;

              end

              assign nclk=!clk;

              LCELL A0(。in(nclk), .out(a));

              LCELL A1(。in(a), .out(b));

              LCELL A2(。in(b), .out(c));

              LCELL A3(。in(c), .out(d));

              LCELL A4(。in(d), .out(clk));//PWM 時(shí)鐘來(lái)自CPLD 內(nèi)部

              LCELL 延遲電路振蕩器

              endmodule

              與之對(duì)應(yīng)的MCU 演示程序:

              #include reg51.h>

              #include absacc.h>

              #define PWM0 XBYTE[0xfff0]

              #define PWM1 XBYTE[0xfff1]

              #define PWM2 XBYTE[0xfff2]

              unsigned char code sine_dot[36]= //8 階,36 點(diǎn)正弦表

              {

              0x80,0x96,0xab,0xbf,0xd2,0xe2,0xee,0xf8,0xfe,0xff,0xfe,0xf8,

              0xee,0xe2,0xd2,0xc0,0xab,0x96,0x80,0x69,0x54,0x40,0x2

              d,0x1e,

              0x11,0x07,0x01,0x00,0x01,0x07,0x10,0x1d,0x2d,0x3f,0x53,

              0x69

              };

              void main()

              {

              unsigned char a,b,c;

              a=0;

              while(1) {

              a %= 36;// 對(duì)36 取余數(shù)及0~35

              b=(a+12)%36;// 較a 路滯后120 度相位

              c=(a+24)%36;// 較a 路滯后240 度相位

              PWM0 = sine_dot[a];

              PWM1 = sine_dot[b];

              PWM2 = sine_dot[c];

              a++;

              }

              }

              實(shí)際得到的三相正弦信號(hào)示波器截圖效果如圖7所示,只是雙蹤示波器同時(shí)只能看兩路信號(hào)。

            單片機(jī)驅(qū)動(dòng)CPLD的PWM正弦信號(hào)發(fā)生器設(shè)計(jì)

            圖7 具有精確相位差的三相正弦信號(hào)示波器截圖

              五、結(jié)束語(yǔ)

              今后,MCU+CPLD 結(jié)構(gòu)將是很多電子系統(tǒng)設(shè)計(jì)的一種基本架構(gòu),MCU 可以用程序?qū)崿F(xiàn)復(fù)雜智能的控制與檢測(cè),CPLD 又可以實(shí)現(xiàn)靈活多變的外圍擴(kuò)展電路設(shè)計(jì),尤其是可以用硬件實(shí)現(xiàn)特殊的MCU 無(wú)法實(shí)現(xiàn)的功能,彌補(bǔ)MCU 響應(yīng)速度慢影響實(shí)時(shí)性問(wèn)題,兩者互補(bǔ),完全實(shí)現(xiàn)硬件軟設(shè)計(jì),使得同一硬件平臺(tái)能夠通過(guò)軟件實(shí)現(xiàn)更多的功能。

            pwm相關(guān)文章:pwm原理


            負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理
            分頻器相關(guān)文章:分頻器原理
            塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
            脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理
            離子色譜儀相關(guān)文章:離子色譜儀原理

            上一頁(yè) 1 2 3 4 下一頁(yè)

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉