程序分析
發(fā)布時間:2012/6/12 20:35:27 訪問次數(shù):952
程序進入無限DSP56F807PY80循環(huán)以后,每10ms改變一次Penod的值,并且當(dāng)Period等于1023時將Updown變量由0變?yōu)?,而當(dāng)Period等于O時,將UpDown由1變?yōu)?,這樣就形成了上升和下降的過程。隨后調(diào)用SetPeriod函數(shù)來設(shè)置CCPRIL及附加的2位。
按我們的想像,當(dāng)占空比從1%變化到990/6時,燈將會如熒火蟲一樣一閃一閃地發(fā)光。結(jié)果事實令我們大失所望,燈的明暗變化那是有了,可是變化的樣子根本不像熒火蟲的發(fā)光。問題何在呢?原來這段程序非常線性地控制了流經(jīng)LED的平均龜流,但電流的線性并不意味著LED發(fā)光強度的線性,更不意味著與熒火蟲發(fā)光的過程一致。如何解決這一問題呢?
理想的方法是:抓個熒火蟲,關(guān)在黑盒子里,放個照度計,每隔一段時間采樣一次,如實記錄下光亮強度與時間芙系的曲線;然后研究LED的亮度,同樣將發(fā)光管置于黑盒子中,通過調(diào)節(jié)流過發(fā)光管的電流,擬合出一條與熒火蟲發(fā)光過程一致的曲線出來。
這似乎太離譜了吧,我只想嘗嘗蘋果的滋味,你卻讓我從種蘋果樹開始工作?當(dāng)然,這個練習(xí)中我們不會這么做。但是這里提出這個問題絕非玩笑,事實上很多單片機初學(xué)者會把完成一個項目當(dāng)成是“編寫程序”,進行預(yù)算時考慮很不周到。殊不知編程僅僅只是項目很小的一部分工作,大量的工作是在程序之外做的。由此造成項目的誤工、誤期乃至各種糾紛。也許能不能考慮到這些程序外的東西可以作為老鳥和菜烏的區(qū)分吧9
閑言少敘,回到任務(wù)中來。為避免浩大的工程,我們就借助于自己的眼睛作為儀器,來大致地確定一下LED的亮度等級。因為不想節(jié)外生枝再來做個數(shù)碼管用作顯示,所以這里用了最原始的方法來做這個工作。程序2是一段調(diào)整數(shù)碼管亮度的程序,變量LedBright的值決定了LED的亮度。不斷改寫LedBright,然后重新編譯、鏈接,再將得到的代碼寫入芯片來觀察LED的亮度。為簡單起見,這里將LED的亮度分成20等分,通過人眼大致判斷的方法來確定對應(yīng)的LedBrigh{f直的大小。和理想的方法相比,這是一個非常屎始和粗略的方法,但就是這樣,要分出這20個級別來,要花的時間也不少,建議讀者都能夠動手做一做以體會其中的艱辛。從作者的經(jīng)驗來看,不同型號的LED對于參數(shù)的影響很大,如果使用高亮度LED,R2應(yīng)取1k(/,而普通亮度的LED,F(xiàn)l2可以取3300。另外,各人眼光也不盡相同,作者獲得的數(shù)據(jù)未必與你得到的一致,因此自己做一做是很有必要的。
通過實驗,確定了20個數(shù)值對應(yīng)20級亮度,那么程序3就是用來實現(xiàn)熒火蟲燈了。這段程序就不再多作解釋了,這里使用了查表的方法來確定亮度的變化。將程序?qū)懭胄酒\行,馬上就能看到LED的變化了,瞧,一閃一閃,那不正是夏夜里的熒火蟲嗎?
按我們的想像,當(dāng)占空比從1%變化到990/6時,燈將會如熒火蟲一樣一閃一閃地發(fā)光。結(jié)果事實令我們大失所望,燈的明暗變化那是有了,可是變化的樣子根本不像熒火蟲的發(fā)光。問題何在呢?原來這段程序非常線性地控制了流經(jīng)LED的平均龜流,但電流的線性并不意味著LED發(fā)光強度的線性,更不意味著與熒火蟲發(fā)光的過程一致。如何解決這一問題呢?
理想的方法是:抓個熒火蟲,關(guān)在黑盒子里,放個照度計,每隔一段時間采樣一次,如實記錄下光亮強度與時間芙系的曲線;然后研究LED的亮度,同樣將發(fā)光管置于黑盒子中,通過調(diào)節(jié)流過發(fā)光管的電流,擬合出一條與熒火蟲發(fā)光過程一致的曲線出來。
這似乎太離譜了吧,我只想嘗嘗蘋果的滋味,你卻讓我從種蘋果樹開始工作?當(dāng)然,這個練習(xí)中我們不會這么做。但是這里提出這個問題絕非玩笑,事實上很多單片機初學(xué)者會把完成一個項目當(dāng)成是“編寫程序”,進行預(yù)算時考慮很不周到。殊不知編程僅僅只是項目很小的一部分工作,大量的工作是在程序之外做的。由此造成項目的誤工、誤期乃至各種糾紛。也許能不能考慮到這些程序外的東西可以作為老鳥和菜烏的區(qū)分吧9
閑言少敘,回到任務(wù)中來。為避免浩大的工程,我們就借助于自己的眼睛作為儀器,來大致地確定一下LED的亮度等級。因為不想節(jié)外生枝再來做個數(shù)碼管用作顯示,所以這里用了最原始的方法來做這個工作。程序2是一段調(diào)整數(shù)碼管亮度的程序,變量LedBright的值決定了LED的亮度。不斷改寫LedBright,然后重新編譯、鏈接,再將得到的代碼寫入芯片來觀察LED的亮度。為簡單起見,這里將LED的亮度分成20等分,通過人眼大致判斷的方法來確定對應(yīng)的LedBrigh{f直的大小。和理想的方法相比,這是一個非常屎始和粗略的方法,但就是這樣,要分出這20個級別來,要花的時間也不少,建議讀者都能夠動手做一做以體會其中的艱辛。從作者的經(jīng)驗來看,不同型號的LED對于參數(shù)的影響很大,如果使用高亮度LED,R2應(yīng)取1k(/,而普通亮度的LED,F(xiàn)l2可以取3300。另外,各人眼光也不盡相同,作者獲得的數(shù)據(jù)未必與你得到的一致,因此自己做一做是很有必要的。
通過實驗,確定了20個數(shù)值對應(yīng)20級亮度,那么程序3就是用來實現(xiàn)熒火蟲燈了。這段程序就不再多作解釋了,這里使用了查表的方法來確定亮度的變化。將程序?qū)懭胄酒\行,馬上就能看到LED的變化了,瞧,一閃一閃,那不正是夏夜里的熒火蟲嗎?
程序進入無限DSP56F807PY80循環(huán)以后,每10ms改變一次Penod的值,并且當(dāng)Period等于1023時將Updown變量由0變?yōu)?,而當(dāng)Period等于O時,將UpDown由1變?yōu)?,這樣就形成了上升和下降的過程。隨后調(diào)用SetPeriod函數(shù)來設(shè)置CCPRIL及附加的2位。
按我們的想像,當(dāng)占空比從1%變化到990/6時,燈將會如熒火蟲一樣一閃一閃地發(fā)光。結(jié)果事實令我們大失所望,燈的明暗變化那是有了,可是變化的樣子根本不像熒火蟲的發(fā)光。問題何在呢?原來這段程序非常線性地控制了流經(jīng)LED的平均龜流,但電流的線性并不意味著LED發(fā)光強度的線性,更不意味著與熒火蟲發(fā)光的過程一致。如何解決這一問題呢?
理想的方法是:抓個熒火蟲,關(guān)在黑盒子里,放個照度計,每隔一段時間采樣一次,如實記錄下光亮強度與時間芙系的曲線;然后研究LED的亮度,同樣將發(fā)光管置于黑盒子中,通過調(diào)節(jié)流過發(fā)光管的電流,擬合出一條與熒火蟲發(fā)光過程一致的曲線出來。
這似乎太離譜了吧,我只想嘗嘗蘋果的滋味,你卻讓我從種蘋果樹開始工作?當(dāng)然,這個練習(xí)中我們不會這么做。但是這里提出這個問題絕非玩笑,事實上很多單片機初學(xué)者會把完成一個項目當(dāng)成是“編寫程序”,進行預(yù)算時考慮很不周到。殊不知編程僅僅只是項目很小的一部分工作,大量的工作是在程序之外做的。由此造成項目的誤工、誤期乃至各種糾紛。也許能不能考慮到這些程序外的東西可以作為老鳥和菜烏的區(qū)分吧9
閑言少敘,回到任務(wù)中來。為避免浩大的工程,我們就借助于自己的眼睛作為儀器,來大致地確定一下LED的亮度等級。因為不想節(jié)外生枝再來做個數(shù)碼管用作顯示,所以這里用了最原始的方法來做這個工作。程序2是一段調(diào)整數(shù)碼管亮度的程序,變量LedBright的值決定了LED的亮度。不斷改寫LedBright,然后重新編譯、鏈接,再將得到的代碼寫入芯片來觀察LED的亮度。為簡單起見,這里將LED的亮度分成20等分,通過人眼大致判斷的方法來確定對應(yīng)的LedBrigh{f直的大小。和理想的方法相比,這是一個非常屎始和粗略的方法,但就是這樣,要分出這20個級別來,要花的時間也不少,建議讀者都能夠動手做一做以體會其中的艱辛。從作者的經(jīng)驗來看,不同型號的LED對于參數(shù)的影響很大,如果使用高亮度LED,R2應(yīng)取1k(/,而普通亮度的LED,F(xiàn)l2可以取3300。另外,各人眼光也不盡相同,作者獲得的數(shù)據(jù)未必與你得到的一致,因此自己做一做是很有必要的。
通過實驗,確定了20個數(shù)值對應(yīng)20級亮度,那么程序3就是用來實現(xiàn)熒火蟲燈了。這段程序就不再多作解釋了,這里使用了查表的方法來確定亮度的變化。將程序?qū)懭胄酒\行,馬上就能看到LED的變化了,瞧,一閃一閃,那不正是夏夜里的熒火蟲嗎?
按我們的想像,當(dāng)占空比從1%變化到990/6時,燈將會如熒火蟲一樣一閃一閃地發(fā)光。結(jié)果事實令我們大失所望,燈的明暗變化那是有了,可是變化的樣子根本不像熒火蟲的發(fā)光。問題何在呢?原來這段程序非常線性地控制了流經(jīng)LED的平均龜流,但電流的線性并不意味著LED發(fā)光強度的線性,更不意味著與熒火蟲發(fā)光的過程一致。如何解決這一問題呢?
理想的方法是:抓個熒火蟲,關(guān)在黑盒子里,放個照度計,每隔一段時間采樣一次,如實記錄下光亮強度與時間芙系的曲線;然后研究LED的亮度,同樣將發(fā)光管置于黑盒子中,通過調(diào)節(jié)流過發(fā)光管的電流,擬合出一條與熒火蟲發(fā)光過程一致的曲線出來。
這似乎太離譜了吧,我只想嘗嘗蘋果的滋味,你卻讓我從種蘋果樹開始工作?當(dāng)然,這個練習(xí)中我們不會這么做。但是這里提出這個問題絕非玩笑,事實上很多單片機初學(xué)者會把完成一個項目當(dāng)成是“編寫程序”,進行預(yù)算時考慮很不周到。殊不知編程僅僅只是項目很小的一部分工作,大量的工作是在程序之外做的。由此造成項目的誤工、誤期乃至各種糾紛。也許能不能考慮到這些程序外的東西可以作為老鳥和菜烏的區(qū)分吧9
閑言少敘,回到任務(wù)中來。為避免浩大的工程,我們就借助于自己的眼睛作為儀器,來大致地確定一下LED的亮度等級。因為不想節(jié)外生枝再來做個數(shù)碼管用作顯示,所以這里用了最原始的方法來做這個工作。程序2是一段調(diào)整數(shù)碼管亮度的程序,變量LedBright的值決定了LED的亮度。不斷改寫LedBright,然后重新編譯、鏈接,再將得到的代碼寫入芯片來觀察LED的亮度。為簡單起見,這里將LED的亮度分成20等分,通過人眼大致判斷的方法來確定對應(yīng)的LedBrigh{f直的大小。和理想的方法相比,這是一個非常屎始和粗略的方法,但就是這樣,要分出這20個級別來,要花的時間也不少,建議讀者都能夠動手做一做以體會其中的艱辛。從作者的經(jīng)驗來看,不同型號的LED對于參數(shù)的影響很大,如果使用高亮度LED,R2應(yīng)取1k(/,而普通亮度的LED,F(xiàn)l2可以取3300。另外,各人眼光也不盡相同,作者獲得的數(shù)據(jù)未必與你得到的一致,因此自己做一做是很有必要的。
通過實驗,確定了20個數(shù)值對應(yīng)20級亮度,那么程序3就是用來實現(xiàn)熒火蟲燈了。這段程序就不再多作解釋了,這里使用了查表的方法來確定亮度的變化。將程序?qū)懭胄酒\行,馬上就能看到LED的變化了,瞧,一閃一閃,那不正是夏夜里的熒火蟲嗎?
上一篇:熒火蟲功能的實現(xiàn)
上一篇:控制器功能介紹
熱門點擊
- 信號波和載波的關(guān)系
- 混頻器-加減法器件
- 使用共振電路和負(fù)阻元件
- 定子繞組串接飽和電抗器調(diào)節(jié)電壓的調(diào)速方法
- 提高三端穩(wěn)定器輸出電壓的方法
- 無功電流和無功功率
- 開關(guān)電路十濾波器=降壓型開關(guān)電源
- 各電容器的確定
- 程序分析
- 制作感言
推薦技術(shù)資料
- 低功耗14位180MSPS數(shù)模
- 直接數(shù)字頻率合成器(DDS)應(yīng)用分析
- 110V, 75A RMS 集
- 超精密電流感應(yīng)放大器產(chǎn)品介紹
- RJ、16 位定時器 KB 和 RTC應(yīng)用探
- RL78-S3 CPU 內(nèi)核&
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究