C8051F單片機(jī)是完全集成的混合信號系統(tǒng)級芯片(SOC),具有與8051完全兼容的指令內(nèi)核,該單片機(jī)采用流水線處理技術(shù),能在執(zhí)行指令期間預(yù)處理下一條指令,提高了效率。而且大部分型號的C8051F單片機(jī),片內(nèi)集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬和數(shù)字外設(shè)及其他功能部件,內(nèi)置FLASH程序存儲器和RAM數(shù)據(jù)存儲器,部分芯片上還集成了外部數(shù)據(jù)存儲器,即XRAM。C8051F單片機(jī)具有片內(nèi)調(diào)試電路,通過4腳的JTAG接口可以進(jìn)行非侵入式、全速的在系統(tǒng)調(diào)試。下表為C8051F系列具有代表性的型號的主要特性:
標(biāo)簽: C8051F020 SOC 片上系統(tǒng) 單片機(jī)
上傳時(shí)間: 2013-10-29
上傳用戶:781354052
本文列舉了單片機(jī)在熱處理爐中的一個(gè)實(shí)際應(yīng)用,并對設(shè)計(jì)的WDY-1 溫控儀的組成及主要電路的作用進(jìn)行了詳細(xì)的介紹。關(guān)鍵詞:單片機(jī);控制;溫度。單片微型計(jì)算機(jī)是隨著超大規(guī)模集成電路技術(shù)的發(fā)展而誕生的,由于它具有體積小、功能強(qiáng)、性價(jià)比高等特點(diǎn),所以廣泛應(yīng)用于電子儀表、家用電器、節(jié)能裝置、軍事裝置、機(jī)器人、工業(yè)控制等諸多領(lǐng)域,使產(chǎn)品小型化、智能化,既提高了產(chǎn)品的功能和質(zhì)量,又降低了成本,簡化了設(shè)計(jì)。本文主要介紹單片機(jī)在溫度控制中的應(yīng)用。東風(fēng)汽車公司變速箱廠熱工科無罐爐,主要用于變速箱齒輪、軸類零件的滲碳熱處理工序。原來用XWB 型自動平衡記錄儀控制溫度,二位式控溫方式,使得具有大慣量性的無罐爐溫度波動大,誤差達(dá)±10℃左右。并且儀表使用環(huán)境教惡劣,油煙、灰塵常使儀表的機(jī)械傳動部分卡死,不但維修工作量大,而且產(chǎn)品質(zhì)量不易保證。隨著國民經(jīng)濟(jì)的發(fā)展,汽車工業(yè)不斷壯大,產(chǎn)品市場競爭激烈,優(yōu)勝劣汰。由此,我們經(jīng)過認(rèn)真的調(diào)研和設(shè)計(jì),尋求了一種更好的控溫方法,亦即本文介紹的WDY-1 溫控儀取代XWB 型自動平衡記錄儀。
標(biāo)簽: 單片機(jī) 中的應(yīng)用 溫度控制
上傳時(shí)間: 2013-10-13
上傳用戶:panpanpan
本文介紹了ATmega128 單片機(jī)的基本功能,設(shè)計(jì)了以其為核心的永磁無刷直流電動機(jī)控制系統(tǒng)。充分利用它運(yùn)算速度快、片內(nèi)外設(shè)豐富的特點(diǎn),采用PWM 方式,實(shí)現(xiàn)對無刷直流電動機(jī)的位置與速度控制,并給出了總體設(shè)計(jì)方案和相應(yīng)的軟件策略。傳統(tǒng)的無刷直流電動機(jī)控制系統(tǒng)一般由分立的模擬器件構(gòu)成。模擬控制系統(tǒng)使用方便,價(jià)格便宜,應(yīng)用廣泛。但是,模擬器件也有本質(zhì)的缺陷:元器件特征參數(shù)受溫度影響;器件的老化;不便于維護(hù)、無法升級。隨著微處理器性能的不斷提高,以其為核心的數(shù)字控制系統(tǒng)正逐漸應(yīng)用于無刷直流電動機(jī)的控制,并取得了非常好的效果。它終將取代模擬控制系統(tǒng)。ATmega128 單片機(jī)是ATMEL 公司研發(fā)出的增強(qiáng)型內(nèi)置Flash 的精簡指令集CPU(RISC)高性能低功耗CMOS 微處理器。它片內(nèi)集成了豐富的外設(shè),大大簡化了控制系統(tǒng)的硬件電路,提高了系統(tǒng)的性能,能滿足電機(jī)控制系統(tǒng)的要求。本文探討了無刷直流電動機(jī)的ATmega128單片機(jī)控制系統(tǒng)和無刷直流電動機(jī)的控制策略。
標(biāo)簽: 單片機(jī) 無刷直流電機(jī) 控制系統(tǒng)
上傳時(shí)間: 2014-01-20
上傳用戶:zhliu007
TEA1504開關(guān)電源低功耗控制芯片的應(yīng)用:介紹了Philips 公司開發(fā)的Green Chip TM 綠色芯片TEA1504 的內(nèi)部結(jié)構(gòu)及工作原理,該控制芯片集成了開關(guān)電源的PWM 控制、高低頻模式轉(zhuǎn)換、柵極驅(qū)動和保護(hù)等功能,同時(shí)上有瞬態(tài)響應(yīng)快,啟動電流過沖小,待機(jī)功耗低等特點(diǎn)。關(guān)鍵詞:開關(guān)電源 TEA1504 脈寬調(diào)制低功耗1 前言開關(guān)電源以其供電效率高,穩(wěn)壓范圍大,體積小被越來越多的電子電器設(shè)備所采用,在大屏幕電視機(jī)、監(jiān)視器、計(jì)算機(jī)等電器的待機(jī)或備用(stand-by)狀態(tài)會繼續(xù)耗電,為此,Philips 公司采用BiCOMS 工藝開發(fā)出了被之為Green Chip TM(綠色芯片)的高壓開關(guān)電源控制芯片。該類集成芯片(IC)的穩(wěn)壓范圍為90~276V(AC),能將開關(guān)電源待機(jī)功耗降至2W 以下,其本身的待機(jī)損耗小于100mW,并具有快速和高效的片內(nèi)啟動電流源;在負(fù)載功率較低時(shí),它還能自動轉(zhuǎn)換到低頻工作模式,從而降低了開關(guān)電源的損耗。高水平的集成技術(shù)使IC 的外圍元件大大減少,以實(shí)現(xiàn)開關(guān)電源的小型化、高效率和高可靠性。本文介紹的TEA1504 是Green Chip TM 系列IC 中的重要成員之一。
標(biāo)簽: 1504 TEA 開關(guān)電源 低功耗
上傳時(shí)間: 2013-12-27
上傳用戶:lyy1234
MCS51系列單片機(jī)軟件控制復(fù)位的可靠方法:文章指出了一種廣泛流傳的誤解:在MCS-51系列單片機(jī)中,只要用指令使程序從起始地址開始執(zhí)行,就可以復(fù)位單片機(jī),擺脫干擾。通過實(shí)驗(yàn),揭示了軟件控制復(fù)位的可靠方法。有的單片機(jī)(如8098)有專門的復(fù)位指令,某些增強(qiáng)型MCS-51系統(tǒng)單片機(jī)雖然沒有復(fù)位指令,但片內(nèi)集成了WATCHDOG電路,故抗干擾也不成問題。而普及型MCS-51系列單片機(jī)(如8031和8032)既然無復(fù)位指令,又不帶硬件WATCHDOS,如果沒有外接硬件WATCHDOG電路,就必須采用軟件抗干擾技術(shù)。常用的軟件抗干擾技術(shù)有:軟件陷阱、指令冗余、軟件WATCHDOG等,它們的作用是在系統(tǒng)受干擾時(shí)能及時(shí)發(fā)現(xiàn),再用軟件的方法使系統(tǒng)復(fù)位。所謂軟件復(fù)位就是用一系列指令來模仿復(fù)位操作,這就是MCS-51系列單片機(jī)所特有的軟件復(fù)位技術(shù)。現(xiàn)用一簡單的實(shí)驗(yàn)說明。接于P1.0的發(fā)光二極管LED0用來表示主程序的工作情況,接于P1.1的發(fā)光二極管LED1用于表示低級中斷子程序的工作情況,接于P1.2的發(fā)光二極管LED2用來表示高級中斷子程序的工作情況,接于P3.2口的按鈕用來設(shè)立干擾標(biāo)志,程序檢測到干擾標(biāo)志后故意進(jìn)入死循環(huán)或掉進(jìn)陷井,模仿受干擾的情況,從而檢驗(yàn)各種復(fù)位方法的實(shí)際效果。實(shí)驗(yàn)初始化程序如下:
上傳時(shí)間: 2013-11-03
上傳用戶:sevenbestfei
單片開關(guān)電源集成電路于20世紀(jì)如年代中、后期問世以來,在國際上獲得廣泛應(yīng)用,已成為開發(fā)中、小功率無工頻變壓器式高效開關(guān)電源的首選產(chǎn)品。本書從實(shí)用角度出發(fā),全面系統(tǒng)深入地闡述了單片開關(guān)電源的設(shè)計(jì)與應(yīng)用。全書共10章。第1至4章分別介紹了六大系列TOPswitch、TOPSwitch—II、TinySwitch、TNY256、MC33370、TOPSwitch—FX等67種型號的單片開關(guān)電源集成電路的原理與應(yīng)用。第5章講述L4960、L4970/4970A系列15種型號的單片開關(guān)式穩(wěn)壓器。第6章介紹16種單片開關(guān)電源模塊的設(shè)計(jì)。第7章闡述單片開關(guān)電源的特殊應(yīng)用。第8、9、10章分別介紹單片開關(guān)電源的設(shè)計(jì)指南、電磁兼容性及酗試技術(shù)、外圍電路關(guān)鍵元器件的選擇。這是國內(nèi)第一部關(guān)于單片開關(guān)電源的專著,充分反映了該領(lǐng)域的國內(nèi)外最新研究成果。 第1章 單片開關(guān)電源概述 1.1 開關(guān)電源的發(fā)展趨勢 1.1.1 開關(guān)電源的發(fā)展歷史 1.1.2 單片開關(guān)電源的發(fā)展趨勢 1.2 開關(guān)電源的基本原理 1.2.1 開關(guān)電源的控制方式 1.2.2 脈寬調(diào)制式開關(guān)電源的基本原理 1.3 單片開關(guān)電源的產(chǎn)品分類及主要特點(diǎn) 1.4 單片開關(guān)電源的基本原理及反饋電路類型 1.4.1 單片開關(guān)電源的基本原理 1.4.2 單片開關(guān)電源的兩種工作模式 1.4.3 反饋電路的四種基本類型 1.5 單片開關(guān)電源典型產(chǎn)品的技術(shù)指標(biāo) 第2章 三端單片開關(guān)電源的原理與應(yīng)用 2.1 TOPSwitch—II系列的產(chǎn)品分類及性能特點(diǎn) 2.1.1 TOPSwitch—II的產(chǎn)品分類 2.1.2 TOPSwitch—II的性能特點(diǎn) 2.2 TOPSwitch—II系列單片開關(guān)電源的工作原理
標(biāo)簽: 單片開關(guān) 電源
上傳時(shí)間: 2013-10-29
上傳用戶:潛水的三貢
單片機(jī)模糊模糊控制是目前在控制領(lǐng)域所采用的三種智能控制方法中最具實(shí)際意義的方法。模糊控制的采用解決了大量過去人們無法解決的問題,并且在工業(yè)控制、家用電器和各個(gè)領(lǐng)域已取得了令人觸目的成效。本書是一本系統(tǒng)地介紹模糊控制的理論、技術(shù)、方法和應(yīng)用的著作;內(nèi)容包括模糊控制基礎(chǔ)、模糊控制器、模糊控制系統(tǒng)、模糊控制系統(tǒng)的穩(wěn)定性、模糊控制系統(tǒng)的開發(fā)軟件,用單片微型機(jī)實(shí)現(xiàn)模糊控制的技術(shù)和方法,模糊控制在家用電器和工業(yè)上應(yīng)用的實(shí)際例子;反映了模糊控制目前的水平。 單片機(jī)模糊模糊控制目錄 : 第一章 模糊邏輯、神經(jīng)網(wǎng)絡(luò)集成電路的發(fā)展 1.1 模糊邏輯及其集成電路的發(fā)展1.1.1 模糊邏輯的誕生和發(fā)展1.1.2 模糊集成電路的發(fā)展進(jìn)程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 分解定理與擴(kuò)張定理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 模糊推理的強(qiáng)度轉(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ò)的分布存儲和容錯(cuò)性3.5.3 神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法3.5.4 神經(jīng)網(wǎng)絡(luò)實(shí)現(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ò)實(shí)現(xiàn)模糊化、反模糊化第四章 模糊控制器 4.1 模糊控制器結(jié)構(gòu)4.2 模糊控制器設(shè)計(jì)4.2.1 常規(guī)模糊控制器設(shè)計(jì)4.2.2 變結(jié)構(gòu)模糊控制器設(shè)計(jì)4.2.3 自組織模糊控制器設(shè)計(jì)4.2.4 自適應(yīng)模糊控制器設(shè)計(jì)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è)計(jì)5.2.1 模糊控制系統(tǒng)的一般設(shè)計(jì)過程5.2.2 模糊控制系統(tǒng)的典型設(shè)計(jì)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ù)字單片機(jī)與模糊控制6.1 數(shù)字單片機(jī)MC68HC705P96.1.1 MC68HC705P9單片機(jī)性能概論6.1.2 MC68HC705P9單片機(jī)基本結(jié)構(gòu)6.1.3 MC68HC705P9指令系統(tǒng)6.2 數(shù)字單片機(jī)模糊控制方式6.2.1 數(shù)字單片機(jī)與模糊控制關(guān)系6.2.2 數(shù)字單片機(jī)模糊控制方式第七章 模糊單片機(jī)與模糊控制7.1 模糊單片機(jī)NLX2307.1.1 模糊單片機(jī)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 模糊推理機(jī)原理8.2 模糊推理機(jī)的算法8.3 模糊推理機(jī)結(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 模糊控制的洗衣機(jī)9.4.1 模糊洗衣機(jī)控制系統(tǒng)邏輯結(jié)構(gòu)9.4.2 模糊洗衣機(jī)的模糊推理9.4.3 洗衣機(jī)物理量檢測方法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 模糊推理機(jī)理及運(yùn)行結(jié)果10.2 恒溫爐模糊控制10.2.1 恒溫爐模糊控制的系統(tǒng)結(jié)構(gòu)10.2.2 模糊控制器及控制規(guī)則的形成10.2.3 模糊控制器的校正10.3 感應(yīng)電機(jī)模糊矢量控制10.3.1 模糊矢量控制系統(tǒng)結(jié)構(gòu)10.3.2 矢量控制的基本原理10.3.3 模糊電阻觀測器10.3.4 模糊控制器及運(yùn)行
上傳時(shí)間: 2014-12-28
上傳用戶:semi1981
德國倍福(Beckhoff)進(jìn)入中國市場已有12個(gè)年頭了。倍福進(jìn)入中國著實(shí)給這片群雄逐鹿,國際巨頭各占一方的中國自動化市場平添了一絲新意。有人說,倍福的產(chǎn)品和技術(shù)獨(dú)樹一幟,不同凡響,此言也算名副其實(shí)。 當(dāng)PLC控制器風(fēng)靡全球之際,倍福在上世紀(jì)80年代率先提出PC控制的理念,推出了基于DOS系統(tǒng)的單片機(jī)作為機(jī)械設(shè)備的控制系統(tǒng)。而后從工控機(jī)到嵌入式PC,從WindowsNT、XP發(fā)展到今天的Windows CE、嵌入式XP,可謂緊跟計(jì)算機(jī)發(fā)展的新潮流,將控制技術(shù)與計(jì)算機(jī)技術(shù)結(jié)合得淋漓盡致,因而被微軟評為嵌入式系統(tǒng)全球黃金級合作伙伴也就不足為奇了。 在機(jī)械設(shè)備控制方面,倍福沒有因循傳統(tǒng)數(shù)控系統(tǒng)(通常被用于高速車床、磨床、鏜銑床、數(shù)控加工中心等)的程式,而是大膽地提出了基于軟件的開放式運(yùn)動控制理念,把PLC/NC/CNC/HMI放在一個(gè)硬件平臺上來完成,并把應(yīng)用對象鎖定在非標(biāo)準(zhǔn)的機(jī)械加工設(shè)備上,為運(yùn)動控制開辟了一片新的天地。
上傳時(shí)間: 2013-10-30
上傳用戶:manking0408
設(shè)計(jì)了一種片上系統(tǒng)(SoC)復(fù)位電路。該電路能對外部輸入信號進(jìn)行同步化處理以抑制亞穩(wěn)態(tài),采用多級D觸發(fā)器進(jìn)行濾波提升抗干擾能力,并且控制產(chǎn)生系統(tǒng)所需的復(fù)位時(shí)序以滿足軟硬件協(xié)同設(shè)計(jì)需求。同時(shí),完成了可測性設(shè)計(jì)(DFT)。基于Xilinx spartan-6 FPGA進(jìn)行了驗(yàn)證。結(jié)果表明該電路可以抑制90 ?滋s以下的外部干擾信號,并能正確產(chǎn)生系統(tǒng)所需的復(fù)位信號。
標(biāo)簽: 片上系統(tǒng) 復(fù)位電路
上傳時(shí)間: 2014-12-29
上傳用戶:guojin_0704
注:1.這篇文章斷斷續(xù)續(xù)寫了很久,畫圖技術(shù)也不精,難免錯(cuò)漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進(jìn)全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調(diào)制波,通過調(dià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 級精度。但是有時(shí)候我們會覺得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。 通過調(diào)整一個(gè)周期里面輸出腳高/低電平的時(shí)間比(即是占空比)去獲得給一個(gè)用電器不同 的平均功率。 如圖所示,假設(shè)PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個(gè)信號時(shí)間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實(shí)現(xiàn)難點(diǎn)在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個(gè)簡單的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); } } } 這是一個(gè)軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由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 低電平。無 論輸出高低電平都保持30us。 那么說,如果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è)簡單一點(diǎn)的。思維風(fēng)格完全不同。不過對于驅(qū)動一個(gè)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; } 可以看出,這段代碼少了一個(gè)For 循環(huán)。它先輸出一個(gè)高電平,然后維持(bright*30)us。然 后輸出一個(gè)低電平,維持時(shí)間((255-bright)*30)us。這樣兩次高低就能完成一個(gè)PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運(yùn)行起來不占CPU 時(shí)間,所以軟件模擬一個(gè)引腳的PWM 完全沒有實(shí)用意義。我們軟件模擬的價(jià)值在于:他能將任意的數(shù)字IO 口變成PWM 引腳。 當(dāng)一片Arduino 要同時(shí)控制多個(gè)PWM,并且沒有其他重任務(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 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時(shí)間: 2013-10-08
上傳用戶:dingdingcandy
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1