實(shí)現(xiàn)哈弗曼,詳細(xì)的寫明了實(shí)現(xiàn)方法,同時還附有中文解釋,在看程序更容易弄懂
標(biāo)簽:
上傳時間: 2013-12-29
上傳用戶:FreeSky
小車的驅(qū)動程序,驅(qū)動板就是一個51的最小系統(tǒng)板,具體的看程序內(nèi)部吧
標(biāo)簽: 小車程序 上位機(jī) 下位機(jī)
上傳時間: 2015-04-12
上傳用戶:edwalik
1.此代碼基于紅牛開發(fā)板,請根據(jù)自己的板子進(jìn)行修改。 2.通過修改網(wǎng)上的代碼實(shí)現(xiàn),修改前的功能開了一個很大的緩存接收app數(shù)據(jù),然后一次性全部數(shù)據(jù)寫入, 但是這個在實(shí)際應(yīng)用中沒多大用,所以修改為一次寫入128個字節(jié)。 3.程序flash的偏移地址為0x8010000,所以app編譯前應(yīng)該在mdk中設(shè)置 Option窗口->Target頁->IROM1,start 改為 0x8010000 4.設(shè)置中斷向量重映射,我用的方法是在app端的main函數(shù)起始位置添加語句 SCB->VTOR = FLASH_BASE | 0x10000; 5.啟動時如果發(fā)現(xiàn)沒有app,會進(jìn)入bootloader模式(燈全亮),如果發(fā)現(xiàn)有程序就要看程序的功能了。 如果有app,但是又想重新升級的話就按住某個鍵(我這里是Tamper),然后按復(fù)位,松開復(fù)位之前不要松開 按鍵,這樣就會進(jìn)入bootloader模式。 6.進(jìn)入bootloader后通過串口1接收升級app數(shù)據(jù),bin文件數(shù)據(jù),接收完成后按User1鍵進(jìn)行升級操作,完成后 復(fù)位或者按User2鍵可以運(yùn)行剛寫入的app。
上傳時間: 2015-05-18
上傳用戶:llma2017
在本課中,我們要用一個按鍵來實(shí)現(xiàn)跑馬燈的 10 級調(diào)速。這又會涉及到鍵的去抖的問 題。 本課的試驗(yàn)結(jié)果是,每按一次按鍵,跑馬速度就降低一級,共 10 級。 這里我們又增加了一個變量 speedlever,來保存當(dāng)前的速度檔次。 在按鍵里的處理中,多了當(dāng)前檔次的延時值的設(shè)置。 請看程序: ―――――――――――――――― #define uchar unsigned char //定義一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一個 52 標(biāo)準(zhǔn)內(nèi)核的頭文件 sbit P10 = P1^0; //頭文件中沒有定義的 IO 就要自己來定義了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //長定時溢出標(biāo)記,預(yù)置是 0 uchar speed=10; //設(shè)置一個變量保存默認(rèn)的跑馬燈的移動速度 uchar speedlever=0; //保存當(dāng)前的速度檔次 char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的 //一個按鍵控制的 10 級變速跑馬燈試驗(yàn) void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預(yù)定的寫入 P1 的值 uchar ledi; //用來指示顯示順序 uint n; RCAP2H =0x10; //賦 T2 的預(yù)置值 0x1000,溢出 30 次就是 1 秒鐘 RCAP2L =0x00; TR2=1; //啟動定時器 ET2=1; //打開定時器 2 中斷 EA=1; //打開總中斷 while(1) //主程序循環(huán) { if(ldelay) //發(fā)現(xiàn)有時間溢出標(biāo)記,進(jìn)入處理 { ldelay=0; //清除標(biāo)記 P1=ledp[ledi]; //讀出一個值送到 P1 口 ledi++; //指向下一個 if(ledi==4) { ledi=0; //到了最后一個燈就換到第一個 } } if(!K1) //如果讀到 K1 為 0 { for(n=0;n<1000;n++); //等待按鍵穩(wěn)定 while(!K1); //等待按鍵松開 for(n=0;n<1000;n++); //等待按鍵穩(wěn)定松開 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //檔次和延時之間的預(yù)算法則,也可以用查表方法,做出 不規(guī)則的法則 } } } //定時器 2 中斷 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比較一個變化的數(shù)值,以實(shí)現(xiàn)變化的時間溢出,同時限制了最慢速 度為 1 秒 { t=0; ldelay=1;//每次長時間的溢出,就置一個標(biāo)記,以便主程序處理 } } ―――――――――――――――――――――― 請打開 lesson11 目錄的工程,編譯,運(yùn)行,看結(jié)果: 按 K1,速度則降低一次,總共 10 個檔次。
上傳時間: 2017-11-06
上傳用戶:szcyclone
LED 一般是恒流操作的,如何改變 LED 的亮度呢?答案就是 PWM 控制。在一定的 頻率的方波中,調(diào)整高電平和低電平的占空比,即可實(shí)現(xiàn)。比如我們用低電平點(diǎn)亮一個 LED 燈,我們假設(shè)把一個頻率周期分為 10 個時間等份,如果方波中的高低電平占空比是 9:1, 這是就是一個比較暗的亮度,如果方波中高低電平占空比是 10:0,這時,全部是高電平, 燈是滅的。如果占空比是 5:5,就是一個中間亮度,如果高低比是 1:9,是一個比較亮的 亮度,如果高低是 0:10,這時全部是低電平,就是最亮的。 實(shí)際上應(yīng)用中,電視屏幕墻中的幾十百萬 LED 象素都是這樣控制的,而且每一個象素 都有紅綠藍(lán) 3 個 LED,每個 LED 可以變化的亮度是幾百到幾萬或者更多的級別,以實(shí)現(xiàn)真 彩色的顯示。還有在您的手機(jī)中,背光燈的亮度如果是可以變化的,也應(yīng)該是這種工作方式。 目前的城市彩燈也有很多都使用了 LED,需要控制亮度是也是 PWM 控制。 下面來分析我們的例程,在這個例程中,我們將定時器 2 溢出定為 1/1200 秒。每 10 次脈沖輸出一個 120HZ 頻率。這每 10 次脈沖再用來控制高低電平的 10 個比值。這樣,在 每個 1/120 秒的方波周期中,我們都可以改變方波的輸出占空比,從而控制 LED 燈的 10 個 級別的亮度。 為什么輸出方波的頻率要 120HZ 這么高?因?yàn)槿绻l率太低,人眼就會看到閃爍感 覺。一般起碼要在 60HZ 以上才感覺好點(diǎn),120HZ 就基本上看不到閃爍,只能看到亮度的變 化了。 下面請看程序,程序中有比較多的注釋: ――――――――――――――――――――――― #define uchar unsigned char //定義一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一個 52 標(biāo)準(zhǔn)內(nèi)核的頭文件 sbit P10 = P1^0; //要控制的 LED 燈 sbit K1= P3^2; //按鍵 K1 uchar scale;//用于保存占空比的輸出 0 的時間份額,總共 10 份 char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的 //模擬 PWM 輸出控制燈的 10 個亮度級別 void main(void) // 主程序 { uint n; RCAP2H =0xF3; //賦 T2 的預(yù)置值,溢出 1 次是 1/1200 秒鐘 RCAP2L =0x98; TR2=1; //啟動定時器 ET2=1; //打開定時器 2 中斷 EA=1; //打開總中斷 while(1) //程序循環(huán) { ;//主程序在這里就不斷自循環(huán),實(shí)際應(yīng)用中,這里是做主要工作 for(n=0;n<50000;n++); //每過一會兒就自動加一個檔次的亮度 scale++; if(scale==10)scale=0; } } //1/1200 秒定時器 2 中斷 timer2() interrupt 5 { static uchar tt; //tt 用來保存當(dāng)前時間在一秒中的比例位置 TF2=0; tt++; if(tt==10) //每 1/120 秒整開始輸出低電平 { tt=0; if(scale!=0) //這里加這一句是為了消除滅燈狀態(tài)產(chǎn)生的鬼影 P10=0; } if(scale==tt) //按照當(dāng)前占空比切換輸出高電平 P10=1; } ―――――――――――――――――― 在主程序中,每延時一段時間,就自動換一個占空比,以使亮度自動變化,方便觀察。 編譯,運(yùn)行,看結(jié)果。 可以看到,LED 的亮度以每種亮度 1 秒左右不斷變化,共有 10 個級別。
上傳時間: 2017-11-06
上傳用戶:szcyclone
優(yōu)秀的木馬程序,自己看吧
上傳時間: 2015-01-05
上傳用戶:leixinzhuo
J2ME的動畫制作程序, 在很短的時間內(nèi), 連續(xù)在同一個位置畫上好幾張圖, 最適合的時間是在一秒中內(nèi)畫20到30張圖, 這樣的效果是讓用戶看起來會有不間斷的感覺.
上傳時間: 2015-01-07
上傳用戶:風(fēng)之驕子
經(jīng)典游戲俄羅斯方塊的制作程序,想成為游戲制作高手,次程序不能不看
上傳時間: 2014-01-22
上傳用戶:葉山豪
這是一個不錯的程序 值得亦看 可以仔細(xì)研究研究
標(biāo)簽: 程序
上傳時間: 2015-01-17
上傳用戶:weixiao99
這是一個不錯的程序 值得亦看 可以仔細(xì)研究研究
標(biāo)簽: 程序
上傳時間: 2013-12-14
上傳用戶:妄想演繹師
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1