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

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

計(jì)算機(jī)控制系統(tǒng)(tǒng)

  • 微型計算機課程設(shè)計論文—通用微機發(fā)聲程序的匯編設(shè)計

    微型計算機課程設(shè)計論文—通用微機發(fā)聲程序的匯編設(shè)計 本文講述了在微型計算機中利用可編程時間間隔定時器的通用發(fā)聲程序設(shè)計,重點講述了程序的發(fā)聲原理,節(jié)拍的產(chǎn)生,按節(jié)拍改變的動畫程序原理,并以設(shè)計一個簡單的樂曲評分程序為引子,分析程序設(shè)計的細節(jié)。關(guān)鍵字:微機 8253 通用發(fā)聲程序 動畫技術(shù) 直接寫屏 1. 可編程時間間隔定時器8253在通用個人計算機中,有一個可編程時間間隔定時器8253,它能夠根據(jù)程序提供的計數(shù)值和工作方式,產(chǎn)生各種形狀和各種頻率的計數(shù)/定時脈沖,提供給系統(tǒng)各個部件使用。本設(shè)計是利用計算機控制發(fā)聲的原理,編寫演奏樂曲的程序。    在8253/54定時器內(nèi)部有3個獨立工作的計數(shù)器:計數(shù)器0,計數(shù)器1和計數(shù)器2,每個計數(shù)器都分配有一個斷口地址,分別為40H,41H和42H.8253/54內(nèi)部還有一個公用的控制寄存器,端地址為43H.端口地址輸入到8253/54的CS,AL,A0端,分別對3個計數(shù)器和控制器尋址.     對8353/54編程時,先要設(shè)定控制字,以選擇計數(shù)器,確定工作方式和計數(shù)值的格式.每計數(shù)器由三個引腳與外部聯(lián)系,見教材第320頁圖9-1.CLK為時鐘輸入端,GATE為門控信號輸入端,OUT為計數(shù)/定時信號輸入端.每個計數(shù)器中包含一個16位計數(shù)寄存器,這個計數(shù)器時以倒計數(shù)的方式計數(shù)的,也就是說,從計數(shù)初值逐次減1,直到減為0為止.     8253/54的三個計數(shù)器是分別編程的,在對任一個計數(shù)器編程時,必須首先講控制字節(jié)寫入控制寄存器.控制字的作用是告訴8253/54選擇哪個計數(shù)器工作,要求輸出什么樣的脈沖波形.另外,對8253/54的初始化工作還包括,向選定的計數(shù)器輸入一個計數(shù)初值,因為這個計數(shù)值可以是8為的,也可以是16為的,而8253/5的數(shù)據(jù)總線是8位的,所以要用兩條輸出指令來寫入初值.下面給出8253/54初始化程序段的一個例子,將計數(shù)器2設(shè)定為方式3,(關(guān)于計數(shù)器的工作方式參閱教材第325—330頁)計數(shù)初值為65536.    MOV   AL,10110110B ;選擇計數(shù)器2,按方式3工作,計數(shù)值是二進制格式    OUT   43H,AL      ; j將控制字送入控制寄存器    MOV   AL,0        ;計數(shù)初值為0    OUT   42H,AL      ;將計數(shù)初值的低字節(jié)送入計數(shù)器2    OUT   42H,AL      ;將計數(shù)初值的高字節(jié)送入計數(shù)器2    在IBM PC中8253/54的三個時鐘端CLK0,CLK1和CLK2的輸入頻率都是1.1931817MHZ. PC機上的大多數(shù)I/O都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的.關(guān)于8255A的結(jié)構(gòu)和工作原理及應(yīng)用舉例參閱教材第340—373頁.教材第364頁的”PC/XT機中的揚聲器接口電路”一節(jié)介紹了揚聲器的驅(qū)動原理,并給出了通用發(fā)聲程序.本設(shè)計正是基于這個原理,通過編程,控制加到揚聲器上的信號的頻率,奏出樂曲的.2.發(fā)聲程序的設(shè)計下面是能產(chǎn)生頻率為f的通用發(fā)聲程序:MOV      AL, 10110110B   ;8253控制字:通道2,先寫低字節(jié),后寫高字節(jié)        ;方式3,二進制計數(shù)OUT      43H, AL                  ;寫入控制字MOV      DX, 0012H               ;被除數(shù)高位MOV      AX, 35DEH              ;被除數(shù)低位 DIV      ID      ;求計數(shù)初值n,結(jié)果在AX中OUT      42H, AL     ;送出低8位MOV      AL, AHOUT      42H,AL     ;送出高8位IN      AL, 61H     ;讀入8255A端口B的內(nèi)容MOV      AH, AL                  ;保護B口的原狀態(tài)OR  AL, 03H     ;使B口后兩位置1,其余位保留OUT 61H,AL     ;接通揚聲器,使它發(fā)聲

    標簽: 微型計算機 發(fā)聲程序 論文 微機

    上傳時間: 2013-10-17

    上傳用戶:sunjet

  • RD系列微型打印機打印實例

    C51控制并口打印機實例:/* 沈陽新榮達電子 *//* 2004-12-7 */#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define data_8 P0sbit BUSY = P1^2; //打印機 BUSY 接P1.2sbit STB = P1^0; //打印機 STB 接P1.0void print(uchar j) //打印子程序{ uchar i;while(BUSY){}; //BUSY=1,打印機忙,等待BUSY 為0 再發(fā)數(shù)data_8=j;STB=0;i++;i--;STB=1; //給出數(shù)據(jù)鎖存時鐘BUSY=1;}void main(void){BUSY = 1; //忙信號置高STB = 1; //選通信號置高print(0x1b); //打印機初始化命令print(0x38);print(0x04);for(;;){print(0xd0); //發(fā)送漢字內(nèi)碼“新榮達”print(0xc2);print(0xc8);print(0xd9);print(0xb4);print(0xef);print(0x0d); //換行}}

    標簽: 微型打印機 打印

    上傳時間: 2013-11-13

    上傳用戶:lwq11

  • 單片機模糊邏輯控制

    單片機模糊模糊控制是目前在控制領(lǐng)域所采用的三種智能控制方法中最具實際意義的方法。模糊控制的采用解決了大量過去人們無法解決的問題,并且在工業(yè)控制、家用電器和各個領(lǐng)域已取得了令人觸目的成效。本書是一本系統(tǒng)地介紹模糊控制的理論、技術(shù)、方法和應(yīng)用的著作;內(nèi)容包括模糊控制基礎(chǔ)、模糊控制器、模糊控制系統(tǒng)、模糊控制系統(tǒng)的穩(wěn)定性、模糊控制系統(tǒng)的開發(fā)軟件,用單片微型機實現(xiàn)模糊控制的技術(shù)和方法,模糊控制在家用電器和工業(yè)上應(yīng)用的實際例子;反映了模糊控制目前的水平。 單片機模糊模糊控制目錄 : 第一章 模糊邏輯、神經(jīng)網(wǎng)絡(luò)集成電路的發(fā)展 1.1 模糊邏輯及其集成電路的發(fā)展1.1.1 模糊邏輯的誕生和發(fā)展1.1.2 模糊集成電路的發(fā)展進程1.2 神經(jīng)網(wǎng)絡(luò)及其集成電路的發(fā)展1.2.1 神經(jīng)網(wǎng)絡(luò)的形成歷史1.2.2 神經(jīng)網(wǎng)絡(luò)集成電路的發(fā)展1.3 模糊邏輯和神經(jīng)網(wǎng)絡(luò)的結(jié)合1.3.1 模糊邏輯和神經(jīng)網(wǎng)絡(luò)結(jié)合的意義1.3.2 模糊邏輯和神經(jīng)網(wǎng)絡(luò)結(jié)合的前景第二章 模糊邏輯及其理論基礎(chǔ) 2.1 模糊集合與隸屬函數(shù)2.1.1 模糊集合概念2.1.2 隸屬函數(shù)2.1.3 分解定理與擴張定理2.1.4 模糊數(shù)2.2 模糊關(guān)系、模糊矩陣與模糊變換2.2.1 模糊關(guān)系2.2.2 模糊矩陣2.2.3 模糊變換2.3模糊邏輯和函數(shù)2.3.1模糊命題2.3.2模糊邏輯2.3.3模糊邏輯函數(shù)2.4模糊語言2.4.1 語言及語言的模糊性2.4.2 模糊語言2.4.3 語法規(guī)則和算子2.4.4 模糊條件語句2.5 模糊推理2.5.1 模糊推理的CRI法2.5.2 模糊推理的TVR法2.5.3 模糊推理的直接法2.5.4 模糊推理的精確值法2.5.5 模糊推理的強度轉(zhuǎn)移法第三章 模糊控制基礎(chǔ) 3.1 模糊控制的系統(tǒng)結(jié)構(gòu)3.2 精確量的模糊化3.2.1 語言變量的分檔3.2.2 語言變量值的表示方法3.2.3 精確量轉(zhuǎn)換成模糊量3.3 模糊量的精確化3.3.1 最大隸屬度法3.3.2 中位數(shù)法3.3.3 重心法3.4 模糊控制規(guī)則及控制算法3.4.1 模糊控制規(guī)則的格式3.4.2 模糊控制規(guī)則的生成3.4.3 模糊控制規(guī)則的優(yōu)化3.4.4 模糊控制算法3.5 模糊控制的神經(jīng)網(wǎng)絡(luò)方法3.5.1 神經(jīng)元和神經(jīng)網(wǎng)絡(luò)3.5.2 神經(jīng)網(wǎng)絡(luò)的分布存儲和容錯性3.5.3 神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法3.5.4 神經(jīng)網(wǎng)絡(luò)實現(xiàn)的模糊控制3.5.5 神經(jīng)網(wǎng)絡(luò)構(gòu)造隸屬函數(shù)3.5.6 神經(jīng)網(wǎng)絡(luò)存儲控制規(guī)則3.5.7 神經(jīng)網(wǎng)絡(luò)實現(xiàn)模糊化、反模糊化第四章 模糊控制器 4.1 模糊控制器結(jié)構(gòu)4.2 模糊控制器設(shè)計4.2.1 常規(guī)模糊控制器設(shè)計4.2.2 變結(jié)構(gòu)模糊控制器設(shè)計4.2.3 自組織模糊控制器設(shè)計4.2.4 自適應(yīng)模糊控制器設(shè)計4.3 模糊控制器的數(shù)學(xué)模型4.3.1 常規(guī)模糊控制器的數(shù)學(xué)模型4.3.2 模糊控制器數(shù)學(xué)模型的建立第五章 模糊控制系統(tǒng) 5.1 模糊系統(tǒng)的辨識和建模5.1.1 模糊系統(tǒng)辨識的數(shù)學(xué)基礎(chǔ)5.1.2 基于模糊關(guān)系方程的模糊模型辨識5.1.3 基于語言控制規(guī)則的模糊模型辨識5.2 模糊控制系統(tǒng)的設(shè)計5.2.1 模糊控制系統(tǒng)的一般設(shè)計過程5.2.2 模糊控制系統(tǒng)的典型設(shè)計5.3 模糊控制系統(tǒng)的穩(wěn)定性5.3.1 穩(wěn)定性分析的Lyapunov直接法5.3.2 語言規(guī)則描述的模糊控制系統(tǒng)的穩(wěn)定性5.3.3 關(guān)系方程描述的模糊控制系統(tǒng)的穩(wěn)定性第六章 數(shù)字單片機與模糊控制6.1 數(shù)字單片機MC68HC705P96.1.1 MC68HC705P9單片機性能概論6.1.2 MC68HC705P9單片機基本結(jié)構(gòu)6.1.3 MC68HC705P9指令系統(tǒng)6.2 數(shù)字單片機模糊控制方式6.2.1 數(shù)字單片機與模糊控制關(guān)系6.2.2 數(shù)字單片機模糊控制方式第七章 模糊單片機與模糊控制7.1 模糊單片機NLX2307.1.1 模糊單片機NLX230性能概況7.1.2 NLX230的結(jié)構(gòu)及引腳7.1.3 NLX230的模糊推理方式7.1.4 NLX230的內(nèi)部寄存器7.1.5 NLX230的操作及接口技術(shù)7.2 NLX230開發(fā)系統(tǒng)7.3 NLX230應(yīng)用例子第八章 模糊控制的開發(fā)軟件8.1 模糊推理機原理8.2 模糊推理機的算法8.3 模糊推理機結(jié)構(gòu)和清單8.4 模糊邏輯知識基發(fā)生器8.5 模糊推理開發(fā)環(huán)境8.5.1 FIDE的工作條件8.5.2 FIDE的結(jié)構(gòu)8.5.3 FIDE的工作過程第九章 模糊控制在家用電器中的應(yīng)用9.1 模糊控制的電冰箱9.1.1 電冰箱模糊控制系統(tǒng)結(jié)構(gòu)9.1.2 模糊控制規(guī)則和模糊量9.1.3 控制系統(tǒng)的電路結(jié)構(gòu)9.1.4 控制規(guī)則的自調(diào)整9.2 模糊控制的電飯鍋9.2.1 煮飯的工藝過程曲線9.2.2 模糊控制的邏輯結(jié)構(gòu)9.2.3 模糊量和模糊推理9.2.4 控制軟件框圖9.3 模糊控制的微波爐9.3.1 控制電路的結(jié)構(gòu)框圖9.3.2 微波爐的模糊量與推理9.3.3 微波爐控制電路結(jié)構(gòu)原理9.3.4 控制軟件原理及框圖9.4 模糊控制的洗衣機9.4.1 模糊洗衣機控制系統(tǒng)邏輯結(jié)構(gòu)9.4.2 模糊洗衣機的模糊推理9.4.3 洗衣機物理量檢測方法9.4.4 布質(zhì)和布量的模糊推理第十章 模糊控制在工程上的應(yīng)用10.1 模糊參數(shù)自適應(yīng)PID控制器10.1.1 自校正PID控制器10.1.2 模糊參數(shù)自適應(yīng)PID控制系統(tǒng)結(jié)構(gòu)10.1.3 模糊控制規(guī)則的產(chǎn)生10.1.4 模糊推理機理及運行結(jié)果10.2 恒溫爐模糊控制10.2.1 恒溫爐模糊控制的系統(tǒng)結(jié)構(gòu)10.2.2 模糊控制器及控制規(guī)則的形成10.2.3 模糊控制器的校正10.3 感應(yīng)電機模糊矢量控制10.3.1 模糊矢量控制系統(tǒng)結(jié)構(gòu)10.3.2 矢量控制的基本原理10.3.3 模糊電阻觀測器10.3.4 模糊控制器及運行

    標簽: 單片機 模糊邏輯 控制

    上傳時間: 2014-12-28

    上傳用戶:semi1981

  • Ba-Nd-Ti系微波介質(zhì)陶瓷Q值的提高和方法機理

    利用系介質(zhì)陶瓷材料研制的微波元器件,廣泛應(yīng)用于航空航天、軍事及民用通信及電子設(shè)備中,在理論分析和工藝試驗的基礎(chǔ)上,通過對介質(zhì)陶瓷材料組分和控制溫度工藝研究,優(yōu)化BaO-Nd2O3-TiO2組分材料,改進煅燒溫度等工藝方法,研制出性能穩(wěn)定性介質(zhì)陶瓷材料。為研制用于高頻、超高頻電子設(shè)備中性能穩(wěn)定微波元器件找到了有效的途徑。

    標簽: Ba-Nd-Ti 微波介質(zhì) Q值 陶瓷

    上傳時間: 2013-11-05

    上傳用戶:kangqiaoyibie

  • 傾角度傳感器在水利閘門自動控制中的應(yīng)用

    傾角度傳感器,應(yīng)用于水利閘門自動控制系統(tǒng) ——目前,翻板式水閘門控制系統(tǒng)前端設(shè)備一般是由翻板水閘、油缸以及固定在油缸上的鋼索式閘門開度儀組成。油缸與閘門上端通過轉(zhuǎn)軸連接,油缸的伸縮帶動閘門的開閉。在油缸的伸縮過程中帶動鋼索伸縮,它們之間成一種函數(shù)關(guān)系,只要測量出鋼索的長度就能算出閘門的角度。 這種鋼索式開度儀運行的問題是: 1.由于傳感鋼索外置于油缸伸縮桿上,當水流中有漂浮物體經(jīng)過閘門時,如樹枝、木板等,沖擊某側(cè)鋼索出現(xiàn)變形,大大影響測量精度。當有較大的漂浮物體沖擊時,鋼索有可能被沖斷。 2.外置鋼索 長時間浸泡在水質(zhì)惡劣的水里,鋼索被銹蝕,經(jīng)過一段時間,發(fā)生鋼索斷線,不能測量閘門油缸伸縮桿長度導(dǎo)致閘門自動控制系統(tǒng)不能正常工作,只能用手動控制,易因左右油缸阻力差異和目測誤差損壞閘門閘板。 3.鋼索在有腐蝕氣體的環(huán)境里,鋼索產(chǎn)生銹蝕影響測量精度且特別是北方地區(qū)冬夏溫差而增大傳感器誤差。 鑒于遠控制系統(tǒng)中的閘門開度儀的不足之處,采用新型非接觸測控制技術(shù),可以彌補原閘門開度儀的不足。系統(tǒng)原理是當閘門在開閉運動過程中,閘門掃過的角度與油缸轉(zhuǎn)動的角度有一定的函數(shù)關(guān)系,測量出油缸的角度即可算出閘門的開閉角度,正是基于此中關(guān)系,可以采用測量油缸角度而遠離閘門的非接觸方法。 采用的傳感器為傾角傳感器,應(yīng)用于電子數(shù)字水平儀,醫(yī)療,機械調(diào)平,角度測量和監(jiān)視,汽車,起重機械的角度測量,輪船橫滾縱傾測量,軌道尺,電子羅盤傾斜補償,人體姿態(tài)測量等領(lǐng)域。 我們提供的傾角傳感器產(chǎn)品包括: 1、單軸、雙軸(前后和左右的傾斜角度測量) 2、測量范圍:0~±15°~±45°~±90°等 3、電源電壓:9~36VDC(可直接與車上蓄電池直接連接) 4、輸出信號:0~5V、4~20mA、RS232/485、CAN總線、開關(guān)量

    標簽: 傾角度傳感器 中的應(yīng)用 水利 閘門

    上傳時間: 2013-11-01

    上傳用戶:elinuxzj

  • PC控制技術(shù)--德國倍福行業(yè)解決方案

    德國倍福(Beckhoff)進入中國市場已有12個年頭了。倍福進入中國著實給這片群雄逐鹿,國際巨頭各占一方的中國自動化市場平添了一絲新意。有人說,倍福的產(chǎn)品和技術(shù)獨樹一幟,不同凡響,此言也算名副其實。 當PLC控制器風靡全球之際,倍福在上世紀80年代率先提出PC控制的理念,推出了基于DOS系統(tǒng)的單片機作為機械設(shè)備的控制系統(tǒng)。而后從工控機到嵌入式PC,從WindowsNT、XP發(fā)展到今天的Windows CE、嵌入式XP,可謂緊跟計算機發(fā)展的新潮流,將控制技術(shù)與計算機技術(shù)結(jié)合得淋漓盡致,因而被微軟評為嵌入式系統(tǒng)全球黃金級合作伙伴也就不足為奇了。 在機械設(shè)備控制方面,倍福沒有因循傳統(tǒng)數(shù)控系統(tǒng)(通常被用于高速車床、磨床、鏜銑床、數(shù)控加工中心等)的程式,而是大膽地提出了基于軟件的開放式運動控制理念,把PLC/NC/CNC/HMI放在一個硬件平臺上來完成,并把應(yīng)用對象鎖定在非標準的機械加工設(shè)備上,為運動控制開辟了一片新的天地。

    標簽: PC控制 方案

    上傳時間: 2013-10-30

    上傳用戶:manking0408

  • 基于MC9S12XHY系列的汽車控制解決方案

            電子發(fā)燒友訊: 飛思卡爾是全球嵌入式處理解決方案、高級汽車電子、消費電子、工業(yè)控制和網(wǎng)絡(luò)市場的領(lǐng)導(dǎo)者。從微處理器和微控制器到傳感器、模擬集成電路(IC)和連接,我們的技術(shù)為創(chuàng)新奠定基礎(chǔ),構(gòu)建更加環(huán)保、安全、健康和互連的世界   MC9S12XHY系列是飛思卡爾公司的經(jīng)過優(yōu)化的,汽車16位微控制器產(chǎn)品系列,具有低成本,高性能的特點。該系列是聯(lián)接低端16位微控制器(如:MC9S12HY系列),和高性能32位解決方案的橋梁。MC9S12XHY系列定位于低端汽車儀器群集應(yīng)用,它包括支持CAN和LIN/J2602通信,并傳送典型的群集請求,如步進失速檢測(SSD)和LCD驅(qū)動器的步進電機控制。   MC9S12XHY系列具有16位微控制器的所有優(yōu)點和效率,同時又保持了飛思卡爾公司現(xiàn)有的8位和16位MCU系列的優(yōu)勢,即低成本、低功耗、EMC和代碼尺寸效率等優(yōu)點。與MC9S12HY系列相同,MC9S12XHY系列可以運行16位寬的訪問,而不會出現(xiàn)外設(shè)和存儲器的等待狀態(tài)。MC9S12XHY系列為100引腳LQFP和112引腳LQFP封裝,旨在最大限度地與100LQFP,MC9S12HY系列兼容。除了每個模塊具有I/O端口外,還可提供更多的,具有中斷功能的I/O端口,具有從停止或等待模式喚醒功能。    圖1 MC9S12XHY系列方框圖截圖

    標簽: MC9 S12 XHY MC

    上傳時間: 2014-12-31

    上傳用戶:66666

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

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

    標簽: Arduino PWM 軟件模擬

    上傳時間: 2013-10-08

    上傳用戶:dingdingcandy

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

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

    標簽: Arduino PWM 軟件模擬

    上傳時間: 2013-10-23

    上傳用戶:mqien

  • 由于開發(fā)時間創(chuàng)促

    由于開發(fā)時間創(chuàng)促,未對分辨率進行分類考慮,所以強烈推薦1024X768下面運行。 (對于winXP操作系統(tǒng),可以正常運行,但是會發(fā)現(xiàn)速度很慢,具體問題有待解決。對于 其他操作系統(tǒng)有可能出現(xiàn)不可預(yù)料的問題) 控制鍵 1P:方向鍵 w s a d 開火: j 2P:方向鍵 上 下 左 右 開火: 小鍵盤0 本游戲內(nèi)置15種彩蛋,具有一定趣味性,但需要慢慢體會。 由于為了節(jié)約空間,所以去掉了背景圖,并把一些圖片地效果改低,唯一優(yōu)點就是小

    標簽:

    上傳時間: 2015-01-14

    上傳用戶:kytqcool

主站蜘蛛池模板: 宜良县| 永宁县| 左云县| 桐庐县| 屏东县| 桑植县| 凌海市| 攀枝花市| 玉龙| 浦北县| 历史| 苏尼特左旗| 松滋市| 奈曼旗| 屏南县| 德钦县| 石台县| 永吉县| 丽水市| 邵武市| 丰宁| 九江县| 盘锦市| 富阳市| 类乌齐县| 微山县| 高要市| 新余市| 东方市| 当阳市| 腾冲县| 新津县| 乳源| 宁陵县| 巩义市| 永定县| 新巴尔虎左旗| 新宾| 长宁县| 鹤岗市| 垣曲县|