亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲(chóng)蟲(chóng)首頁(yè)| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

OPTI-loop

  • VD108B地感線路安裝圖

    技術(shù)說(shuō)明:線圈總長(zhǎng)度應(yīng)在20 ~ 30米左右,地感線應(yīng)用橫截面大于等于0.5 平方毫米的耐高溫絕緣線;用切地機(jī)在堅(jiān)硬水泥地面切槽,深度為 5~10 cm 左右,寬以切刻片厚度為準(zhǔn)一般為5mm;然后將線一圈一圈放入槽中,再用水泥將槽封固,注意線不可浮出地面,在放入線圈時(shí)注意不要把線的絕緣層破壞,以免造成漏電或短路.引出線要雙絞在一起并行接入地感兩個(gè)LOOP 端,長(zhǎng)度不能超過(guò)4米,每米中雙絞數(shù)不能少于30個(gè).

    標(biāo)簽: 108B 108 VD 線路

    上傳時(shí)間: 2013-11-04

    上傳用戶:zhaoq123

  • 51單片機(jī)C語(yǔ)言編程實(shí)例

    C語(yǔ)言編程基礎(chǔ):1. 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010B;0x6E為01101110。 2. 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。 3. ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)1. #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P1.3    2. void main( void )  //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口    3. {    4.  P1_3 = 1;   //給P1_3賦值1,引腳P1.3就能輸出高電平VCC    5.  While( 1 );  //死循環(huán),相當(dāng) LOOP: goto LOOP;    6. }   注意:P0的每個(gè)引腳要輸出高電平時(shí),必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P2.7    2. void main( void )  //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口    3. {    4.  P2_7 = 0;   //給P2_7賦值0,引腳P2.7就能輸出低電平GND    5.  While( 1 );  //死循環(huán),相當(dāng) LOOP: goto LOOP;    6. }   在某引腳輸出方波編程方法:(比如P3.1引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P3.1    2. void main( void )  //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口    3. {    4.  While( 1 )  //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句    5.  {    6. P3_1 = 1;  //給P3_1賦值1,引腳P3.1就能輸出高電平VCC    7.   P3_1 = 0;  //給P3_1賦值0,引腳P3.1就能輸出低電平GND    8.  }    //由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波    9. }   將某引腳的輸入電平取反后,從另一個(gè)引腳輸出:( 比如 P0.4 = NOT( P1.1) )

    標(biāo)簽: 51單片機(jī)C語(yǔ)言 編程實(shí)例

    上傳時(shí)間: 2013-11-02

    上傳用戶:zengduo

  • 51匯編程序?qū)嵗?/a>

    51匯編程序?qū)嵗号e一例說(shuō)明:流水燈加數(shù)碼管 LOOP:     ; 標(biāo)號(hào)CLR P2.6   ;選中p2.6 數(shù)碼管左邊的8字使能SETB P2.7   ;p2.7不使能。 右邊的數(shù)碼管消隱MOV P0,#28H  ;把28h送p0口;數(shù)碼管顯示 0LCALL DELAY ;延時(shí)MOV P0,#0FFH   ;0ffh 送p0口,數(shù)碼管清除CLR P1.0    ;點(diǎn)亮p1.0發(fā)光管MOV P0,#7EH ;把7eh送p0口;數(shù)碼管顯示 1LCALL DELAYMOV P0,#0FFHCLR P1.1      ;點(diǎn)亮p1.0發(fā)光管CLR P1.0      ;點(diǎn)亮p1.0發(fā)光管MOV P0,#0A2H   ;數(shù)碼管顯示 2LCALL DELAYMOV P0,#0FFHCLR P1.2CLR P1.1CLR P1.0MOV P0,#62H    ;數(shù)碼管顯示 3LCALL DELAYMOV P0,#0FFHCLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#74H    ;數(shù)碼管顯示 4LCALL DELAYMOV P0,#0FFHCLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#61H   ;數(shù)碼管顯示 5;LCALL DELAYMOV P0,#0FFHCLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#21H     ; 數(shù)碼管顯示 6LCALL DELAYMOV P0,#0FFHCLR P1.6CLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#7AH   ; 數(shù)碼管顯示 7LCALL DELAYMOV P0,#0FFHCLR P1.7CLR P1.6CLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#20H   ; 數(shù)碼管顯示 8LCALL DELAYMOV P0,#0FFHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFH;程序到此結(jié)果為左邊的數(shù)碼管顯示0,1,2,3,4,5,6,7,8;p1.0------------p1.7指示燈依次點(diǎn)亮SETB P2.6   ; 左邊的8消隱CLR P2.7   ;選中p2.7 數(shù)碼管右邊的8字使能 ,;MOV P0,#28HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.0MOV P0,#7EHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.1MOV P0,#0A2HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.2MOV P0,#62HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.3MOV P0,#74HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.4MOV P0,#61HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.5MOV P0,#21HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.6MOV P0,#7AHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.7MOV P0,#20HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHMOV P0,#0FFHMOV P1,#0FFH;這一段和上一段基本相同, 不同的是右邊的數(shù)碼管依次顯示012345678,左邊的不亮;;同時(shí)p1口的燈流動(dòng)顯示:AJMP LOOP; 注意: 程序運(yùn)行到此跳轉(zhuǎn)到開(kāi)始標(biāo)號(hào),重復(fù)執(zhí)行:DELAY:  ;延時(shí)子程序;參考前面的教程:CLR P3.3  ;注意小喇叭在3.3口, 這里可以使小喇叭發(fā)出嗒,嗒聲MOV  R7,#255NOPNOPD1:MOV R6,#255setb p3.3D2: DJNZ R6,D2clr p3.3DJNZ R7,D1SETB P3.3RETENDLOOP:                ; 標(biāo)號(hào)CLR P2.6             ;選中p2.6 數(shù)碼管左邊的8字使能SETB P2.7            ;p2.7不使能。 右邊的數(shù)碼管消隱MOV P0,#28H          ;把28h送p0口;數(shù)碼管顯示 0    ;28為1010000LCALL DELAY          ;  延時(shí)程序MOV P0,#0FFH         ;0ffh 送p0口,數(shù)碼管清除;P0口為11111111CLR P1.0             ;點(diǎn)亮p1.0發(fā)光管; P1。0為電平,P0口為11111110MOV P0,#7EH          ;把7eh送p0口;數(shù)碼管顯示 1; P1。0為低電平,P0口為11111110LCALL DELAY          ;  延時(shí)程序MOV P0,#0FFHMOV P0,#0FFH         ;0ffh 送p0口,數(shù)碼管清除;P0口為11111111 清一次顯示這條是清顯示的

    標(biāo)簽: 匯編 上傳時(shí)間: 2013-10-31

    上傳用戶:gundamwzc

  • LED顯示屏動(dòng)態(tài)顯示及程序

    實(shí)現(xiàn)動(dòng)態(tài)顯示效果的方法和以上幾種基本類似,這里以滾動(dòng)顯示為例作一說(shuō)明。對(duì)于需要滾動(dòng)的文字,可以將其設(shè)置為位圖格式,暫存于內(nèi)存中,然后利用VC 提供的位圖拷貝函數(shù)BitBlt將位圖復(fù)制到顯示位置。對(duì)于特殊字符或圖形,則可以直接利用BitBlt函數(shù)調(diào)用到顯示位置。然后在類CLEDDlg的 OnTimer函數(shù)中調(diào)用該函數(shù),以實(shí)現(xiàn)文字的滾動(dòng)顯示。另外,也可以通過(guò)設(shè)定不同的響應(yīng)時(shí)間間隔來(lái)改變文字的滾動(dòng)速度。 程序清單: ORG  00H LOOP: MOV A,#0FFH ;開(kāi)機(jī)初始化,清除畫(huà)面 MOV P0,A    ;清除P0口        ANL P2,#00   ;清除P2口 MOV R2,#200   D100MS: MOV R3,#250 ;延時(shí)100毫秒        DJNZ R3,$        DJNZ R2,D100MS        MOV 20H,#00H ;取碼指針的初值 l100:    MOV R1,#100 ;每個(gè)字的停留時(shí)間 L16:    MOV R6,#16 ;每個(gè)字16個(gè)碼

    標(biāo)簽: LED 顯示屏 動(dòng)態(tài)顯示 程序

    上傳時(shí)間: 2013-11-06

    上傳用戶:zl520l

  • 光纖與光接入網(wǎng)知識(shí)匯總

    第一講 光纖的分類  一, 光纖的分類  光纖是光導(dǎo)纖維(OF:Optical Fiber)的簡(jiǎn)稱。但光通信系統(tǒng)中常常將 Optical Fibe(光纖)又簡(jiǎn)化為 Fiber,例如:光纖放大器(Fiber Amplifier)或光纖干線(Fiber Backbone)等等。有人忽略了Fiber雖有纖維的含義,但在光系統(tǒng)中卻是指光纖而言的。因此,有些光產(chǎn)品的說(shuō)明中,把fiber直譯成“纖維”,顯然是不可取的?! 」饫w實(shí)際是指由透明材料作成的纖芯和在它周圍采用比纖芯的折射率稍低的材料作成的包層所被覆,并將射入纖芯的光信號(hào),經(jīng)包層界面反射,使光信號(hào)在纖芯中傳播前進(jìn)的媒體。  光纖的種類很多,根據(jù)用途不同,所需要的功能和性能也有所差異。但對(duì)于有線電視和通信用的光纖,其設(shè)計(jì)和制造的原則基本相同,諸如:①損耗小;②有一定帶寬且色散??;③接線容易;④易于成統(tǒng);⑤可靠性高;⑥制造比較簡(jiǎn)單;⑦價(jià)廉等。

    標(biāo)簽: 光纖 光接入網(wǎng)

    上傳時(shí)間: 2013-10-27

    上傳用戶:llandlu

  • Arduino學(xué)習(xí)筆記4_Arduino軟件模擬PWM

    注:1.這篇文章斷斷續(xù)續(xù)寫(xiě)了很久,畫(huà)圖技術(shù)也不精,難免錯(cuò)漏,大家湊合看.有問(wèn)題可以留言.      2.論壇排版把我的代碼縮進(jìn)全弄沒(méi)了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調(diào)制波,通過(guò)調(diào)整輸出信號(hào)占空比,從而達(dá)到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個(gè)8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調(diào)制波。分辨率8 位即2 的8 次方等于 256 級(jí)精度。但是有時(shí)候我們會(huì)覺(jué)得6 個(gè)PWM 引腳不夠用。比如我們做一個(gè)10 路燈調(diào)光, 就需要有10 個(gè)PWM 腳。Arduino Duemilanove 2009 有13 個(gè)數(shù)字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調(diào)壓原理:PWM 有好幾種方法。而Arduino 因?yàn)殡娫春蛯?shí)現(xiàn)難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過(guò)調(diào)整一個(gè)周期里面輸出腳高/低電平的時(shí)間比(即是占空比)去獲得給一個(gè)用電器不同 的平均功率。 如圖所示,假設(shè)PWM 波形周期1ms(即1kHz),分辨率1000 級(jí)。那么需要一個(gè)信號(hào)時(shí)間 精度1ms/1000=1us 的信號(hào)源,即1MHz。所以說(shuō),PWM 的實(shí)現(xiàn)難點(diǎn)在于需要使用很高頻的 信號(hào)源,才能獲得快速與高精度。下面先由一個(gè)簡(jiǎn)單的PWM 程序開(kāi)始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個(gè)軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測(cè)試此代碼。 程序解析:由for 循環(huán)可以看出,完成一個(gè)PWM 周期,共循環(huán)255 次。 假設(shè)bright=100 時(shí)候,在第0~100 次循環(huán)中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環(huán)里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無(wú) 論輸出高低電平都保持30us。 那么說(shuō),如果bright=100 的話,就有100 次循環(huán)是高電平,155 次循環(huán)是低電平。 如果忽略指令執(zhí)行時(shí)間的話,這次的PWM 波形占空比為100/255,如果調(diào)整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設(shè)置了每次for 循環(huán)之后,將bright 加一,并且當(dāng)bright 加到255 時(shí)歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應(yīng)該是大家想的比較多的想法。 然后介紹一個(gè)簡(jiǎn)單一點(diǎn)的。思維風(fēng)格完全不同。不過(guò)對(duì)于驅(qū)動(dòng)一個(gè)LED 來(lái)說(shuō),效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個(gè)For 循環(huán)。它先輸出一個(gè)高電平,然后維持(bright*30)us。然 后輸出一個(gè)低電平,維持時(shí)間((255-bright)*30)us。這樣兩次高低就能完成一個(gè)PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運(yùn)行起來(lái)不占CPU 時(shí)間,所以軟件模擬一個(gè)引腳的PWM 完全沒(méi)有實(shí)用意義。我們軟件模擬的價(jià)值在于:他能將任意的數(shù)字IO 口變成PWM 引腳。 當(dāng)一片Arduino 要同時(shí)控制多個(gè)PWM,并且沒(méi)有其他重任務(wù)的時(shí)候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個(gè)引腳的初始亮度,可以隨意設(shè)置 int StartPWMPin = 0, EndPWMPin = 13; //設(shè)置D0~D13為PWM 引腳 int PWMResolution = 255; //設(shè)置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個(gè)初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環(huán)是為14盞燈做漸亮的。每次Arduino loop()循環(huán), //brights 自增一次。直到brights=255時(shí)候,將brights 置零重新計(jì)數(shù)。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計(jì)數(shù)一個(gè)PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個(gè)PWM 周期均遍歷所有引腳 { if(i < brights[j])\   所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調(diào)整LED 亮度的話,我們用64 級(jí)精度就行。這樣速度就是2x32x64=4ms。就不會(huì)閃了。

    標(biāo)簽: Arduino PWM 軟件模擬

    上傳時(shí)間: 2013-10-08

    上傳用戶:dingdingcandy

  • 基于EKF的異步電機(jī)直接轉(zhuǎn)矩控制系統(tǒng)

    為了提高直接轉(zhuǎn)矩控制(DTC)系統(tǒng)定子磁鏈估計(jì)精度,降低電流、電壓測(cè)量的隨機(jī)誤差,提出了一種基于擴(kuò)展卡爾曼濾波(EKF)實(shí)現(xiàn)異步電機(jī)轉(zhuǎn)子位置和速度估計(jì)的方法。擴(kuò)展卡爾曼濾波器是建立在基于旋轉(zhuǎn)坐標(biāo)系下由定子電流、電壓、轉(zhuǎn)子轉(zhuǎn)速和其它電機(jī)參量所構(gòu)成的電機(jī)模型上,將定子電流、定子磁鏈、轉(zhuǎn)速和轉(zhuǎn)子角位置作為狀態(tài)變量,定子電壓為輸入變量,定子電流為輸出變量,通過(guò)對(duì)磁鏈和轉(zhuǎn)速的閉環(huán)控制提高定子磁鏈的估計(jì)精度,實(shí)現(xiàn)了異步電機(jī)的無(wú)速度傳感器直接轉(zhuǎn)矩控制策略,仿真結(jié)果驗(yàn)證了該方法的可行性,提高了直接轉(zhuǎn)矩的控制性能。 Abstract:  In order to improve the Direct Torque Control(DTC) system of stator flux estimation accuracy and reduce the current, voltage measurement of random error, a novel method to estimate the speed and rotor position of asynchronous motor based on extended Kalman filter was introduced. EKF was based on d-p axis motor and other motor parameters (state vector: stator current, stator flux linkage, rotor angular speed and position; input: stator voltage; output: staror current). EKF was designed for stator flux and rotor speed estimation in close-loop control. It can improve the estimated accuracy of stator flux. It is possible to estimate the speed and rotor position and implement asynchronous motor drives without position and speed sensors. The simulation results show it is efficient and improves the control performance.

    標(biāo)簽: EKF 異步電機(jī) 直接轉(zhuǎn)矩 控制系統(tǒng)

    上傳時(shí)間: 2015-01-02

    上傳用戶:qingdou

  • Arduino學(xué)習(xí)筆記4_Arduino軟件模擬PWM

    注:1.這篇文章斷斷續(xù)續(xù)寫(xiě)了很久,畫(huà)圖技術(shù)也不精,難免錯(cuò)漏,大家湊合看.有問(wèn)題可以留言.      2.論壇排版把我的代碼縮進(jìn)全弄沒(méi)了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調(diào)制波,通過(guò)調(diào)整輸出信號(hào)占空比,從而達(dá)到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個(gè)8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調(diào)制波。分辨率8 位即2 的8 次方等于 256 級(jí)精度。但是有時(shí)候我們會(huì)覺(jué)得6 個(gè)PWM 引腳不夠用。比如我們做一個(gè)10 路燈調(diào)光, 就需要有10 個(gè)PWM 腳。Arduino Duemilanove 2009 有13 個(gè)數(shù)字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調(diào)壓原理:PWM 有好幾種方法。而Arduino 因?yàn)殡娫春蛯?shí)現(xiàn)難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過(guò)調(diào)整一個(gè)周期里面輸出腳高/低電平的時(shí)間比(即是占空比)去獲得給一個(gè)用電器不同 的平均功率。 如圖所示,假設(shè)PWM 波形周期1ms(即1kHz),分辨率1000 級(jí)。那么需要一個(gè)信號(hào)時(shí)間 精度1ms/1000=1us 的信號(hào)源,即1MHz。所以說(shuō),PWM 的實(shí)現(xiàn)難點(diǎn)在于需要使用很高頻的 信號(hào)源,才能獲得快速與高精度。下面先由一個(gè)簡(jiǎn)單的PWM 程序開(kāi)始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個(gè)軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測(cè)試此代碼。 程序解析:由for 循環(huán)可以看出,完成一個(gè)PWM 周期,共循環(huán)255 次。 假設(shè)bright=100 時(shí)候,在第0~100 次循環(huán)中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環(huán)里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無(wú) 論輸出高低電平都保持30us。 那么說(shuō),如果bright=100 的話,就有100 次循環(huán)是高電平,155 次循環(huán)是低電平。 如果忽略指令執(zhí)行時(shí)間的話,這次的PWM 波形占空比為100/255,如果調(diào)整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設(shè)置了每次for 循環(huán)之后,將bright 加一,并且當(dāng)bright 加到255 時(shí)歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應(yīng)該是大家想的比較多的想法。 然后介紹一個(gè)簡(jiǎn)單一點(diǎn)的。思維風(fēng)格完全不同。不過(guò)對(duì)于驅(qū)動(dòng)一個(gè)LED 來(lái)說(shuō),效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個(gè)For 循環(huán)。它先輸出一個(gè)高電平,然后維持(bright*30)us。然 后輸出一個(gè)低電平,維持時(shí)間((255-bright)*30)us。這樣兩次高低就能完成一個(gè)PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運(yùn)行起來(lái)不占CPU 時(shí)間,所以軟件模擬一個(gè)引腳的PWM 完全沒(méi)有實(shí)用意義。我們軟件模擬的價(jià)值在于:他能將任意的數(shù)字IO 口變成PWM 引腳。 當(dāng)一片Arduino 要同時(shí)控制多個(gè)PWM,并且沒(méi)有其他重任務(wù)的時(shí)候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個(gè)引腳的初始亮度,可以隨意設(shè)置 int StartPWMPin = 0, EndPWMPin = 13; //設(shè)置D0~D13為PWM 引腳 int PWMResolution = 255; //設(shè)置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個(gè)初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環(huán)是為14盞燈做漸亮的。每次Arduino loop()循環(huán), //brights 自增一次。直到brights=255時(shí)候,將brights 置零重新計(jì)數(shù)。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計(jì)數(shù)一個(gè)PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個(gè)PWM 周期均遍歷所有引腳 { if(i < brights[j])\   所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調(diào)整LED 亮度的話,我們用64 級(jí)精度就行。這樣速度就是2x32x64=4ms。就不會(huì)閃了。

    標(biāo)簽: Arduino PWM 軟件模擬

    上傳時(shí)間: 2013-10-23

    上傳用戶:mqien

  • This package implements a Kalman filter as described in the paper "A Statistical Algorithm for Esti

    This package implements a Kalman filter as described in the paper "A Statistical Algorithm for Estimating Speed from Single Loop Volume and Occupancy Measurements" by D. J. Dailey.

    標(biāo)簽: Statistical implements Algorithm described

    上傳時(shí)間: 2013-12-12

    上傳用戶:cc1915

  • 我搜索了這個(gè)網(wǎng)站

    我搜索了這個(gè)網(wǎng)站,見(jiàn)提供的CD player都是 c++,delphi源程序的;我就提供一個(gè)用win32匯編寫(xiě)的CD player。功能跟界面絕對(duì)不輸于用上面軟件編寫(xiě)的,具體功能如下: 1. CD loop. 2. Track loop. 3. Random track play. 4. Track sample. 5. Play list. 6. Track select. 7. Master volume control. 8. CD Speaker volume controls. 9. Multiple CD drive support.

    標(biāo)簽: 搜索 網(wǎng)站

    上傳時(shí)間: 2015-07-14

    上傳用戶:遠(yuǎn)遠(yuǎn)ssad

主站蜘蛛池模板: 赫章县| 常宁市| 英吉沙县| 翁牛特旗| 乌拉特中旗| 庆安县| 阿拉善左旗| 宿州市| 商丘市| 乐亭县| 德兴市| 彭泽县| 高唐县| 肇东市| 大安市| 荥阳市| 南乐县| 甘孜县| 田林县| 台前县| 建宁县| 曲麻莱县| 章丘市| 普安县| 太白县| 九江县| 牡丹江市| 宁化县| 高平市| 惠来县| 扬中市| 汪清县| 深泽县| 保德县| 洪湖市| 丹巴县| 横山县| 柞水县| 陈巴尔虎旗| 屏边| 西贡区|