




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
51單片機(jī)彩燈控制器的設(shè)計(jì).z.51單片機(jī)彩燈控制器的設(shè)計(jì)原題要求如下:1.用16盞以上的LED小燈,實(shí)現(xiàn)至少4種彩燈燈光效果〔不含全部點(diǎn)亮,全部熄滅〕;2.可以用輸入按鈕在幾種燈光效果間切換;3.可以通過(guò)按鈕暫停彩燈效果,使小燈全亮,再次按下一樣按鈕后繼續(xù)之前的效果;4.增加自動(dòng)在幾種效果間切換的功能,并設(shè)置一個(gè)按鈕可以在自動(dòng)模式和手動(dòng)模式間切換;5.使用定時(shí)中斷延時(shí)。最終作品如下:一共有十鐘燈光效果,分別是:順時(shí)針流水燈、逆時(shí)針流水燈、交替閃爍、順時(shí)針對(duì)角燈、逆時(shí)針對(duì)角燈、順時(shí)針逐個(gè)點(diǎn)亮、順時(shí)針逐個(gè)熄滅、逆時(shí)針逐個(gè)點(diǎn)亮、逆時(shí)針逐個(gè)熄滅、二進(jìn)制加法。程序代碼如下:/**************************************************************************************************模塊名稱:51單片機(jī)彩燈控制器模塊功能:實(shí)現(xiàn)十種循環(huán)彩燈控制編寫日期:2021/12/18**************************************************************************************************/*include<reg51.h>*definefalse0*definetrue1*defineucharunsignedchar*defineuintunsignedintsbitpause_key=P3^0;//暫停按鈕sbitauto_key=P3^1;//手動(dòng)模式的效果切換sbitchange_key=P3^2;//手動(dòng)模式效果切換sbitpauseLed=P3^6;//暫停、啟動(dòng)指示燈sbitautoLed=P3^7;//自動(dòng)、手動(dòng)模式指示燈intledCode[8]={0*fe,0*fd,0*fb,0*f7,0*ef,0*df,0*bf,0*7f};//led段碼(單個(gè)顯示)intledCode2[8]={0*fe,0*fc,0*f8,0*f0,0*e0,0*c0,0*80,0*00};//led段碼〔半顯示半滅〕intdisCode[10]={0*03,0*9f,0*25,0*0d,0*99,0*49,0*41,0*1f,0*01,0*09};//數(shù)碼管段碼0~9voiddisplayLed(void);//顯示led的主函數(shù)voidkeyScan(void);//鍵盤掃描處理函數(shù)voidDelay10ms(unsignedintn);//延時(shí)10msbitisPause=false;//是否暫停bitisAuto=true;//是否自動(dòng)運(yùn)行bitisChange=false;//是否要切換下一個(gè)效果uchartime;//計(jì)時(shí)滿0.5suchartypes;//第幾種燈光顯示方案uintcounts;//燈光的第幾個(gè)51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第1頁(yè)。/*******************************************************************************51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第1頁(yè)。*函數(shù)名:T0_INT*函數(shù)功能:T0定時(shí)器中斷函數(shù)*輸入:無(wú)*輸出:無(wú)*******************************************************************************/voidT0_INT(void)interrupt1{TL0=(65536-50000)/256;TH0=(65536-50000)%256;time++;if(time>=10)//定時(shí)時(shí)間:0.5s{time=0;if(isChange==true)//可以變換下一種顯示效果了{(lán)counts=0;types++;//顯示下一種效果if(types>9)types=0;P0=disCode[types];//更新數(shù)碼管顯示isChange=false;}displayLed();counts++;}}/********************************************************************************函數(shù)名:main*函數(shù)功能:主函數(shù)*輸入:無(wú)*輸出:無(wú)*******************************************************************************/voidmain(void){TMOD=0*61;//01100001//方式一TL0=(65536-50000)/256;//50msTH0=(65536-50000)%256;TR0=1;//開(kāi)啟T0ET0=1;//T0中斷允許EA=1;//總中斷開(kāi)啟time=0;//定時(shí)器時(shí)間擴(kuò)種〔0.5s〕counts=0;//燈光的第幾次types=0;//燈光顯示模式pauseLed=0;//暫停指示燈滅51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第2頁(yè)。P0=disCode[types];//更新數(shù)碼管顯示51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第2頁(yè)。while(1){keyScan();//鍵盤掃描及處理}}/********************************************************************************函數(shù)名:keyScan*函數(shù)功能:鍵盤掃描處理*輸入:無(wú)*輸出:無(wú)*******************************************************************************/voidkeyScan(void){if(pause_key==0)//按下了暫停按鈕{Delay10ms(1);if(pause_key==0){isPause=~isPause;pauseLed=isPause;if(isPause==true){ET0=0;//關(guān)閉T0中斷P0=0*fd;//數(shù)碼管顯示"-〞P1=0*00;//所有的燈都亮起來(lái)P2=0*00;}else{ET0=1;//T0中斷允許P0=disCode[types];//更新數(shù)碼管顯示displayLed();}while(pause_key==0);//防止按鍵重復(fù)檢測(cè)}}if(auto_key==0)//自動(dòng)、手動(dòng)切換按鍵按下{Delay10ms(1);if(auto_key==0){isAuto=~isAuto;autoLed=isAuto;}while(auto_key==0);//防止按鍵重復(fù)檢測(cè)51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第3頁(yè)。}51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第3頁(yè)。if(change_key==0&&isAuto==false)//手動(dòng)模式,并且效果切換按下{Delay10ms(1);if(change_key==0){isChange=true;}while(change_key==0);//防止按鍵重復(fù)檢測(cè)}}/********************************************************************************函數(shù)名:displayLed*函數(shù)功能:顯示led燈*輸入:(全局變量)types:顯示效果;counts:當(dāng)前效果下的第幾次*輸出:無(wú)*******************************************************************************/voiddisplayLed(void){switch(types){case0://順時(shí)針旋轉(zhuǎn)led燈{if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts<8){P1=0*ff;P2=ledCode[7-counts];}else{P1=ledCode[15-counts];P2=0*ff;}break;}case1://逆時(shí)針旋轉(zhuǎn)LED燈{if(counts>=16)counts=0;if(counts>=15)51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第4頁(yè)。{51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第4頁(yè)。if(isAuto==true)isChange=true;}if(counts<8){P1=ledCode[counts];P2=0*ff;}else{P1=0*ff;P2=ledCode[counts-8];}break;}case2://穿插替換{if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts%2==0)//偶數(shù){P1=0*aa;P2=0*aa;}else{P1=0*55;P2=0*55;}break;}case3://對(duì)角順時(shí)針{if(counts>=8)counts=0;if(counts>=7){if(isAuto==true)isChange=true;}P1=ledCode[7-counts];P2=ledCode[7-counts];break;51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第5頁(yè)。}51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第5頁(yè)。case4://對(duì)角逆時(shí)針{if(counts>=8)counts=0;if(counts>=7){if(isAuto==true)isChange=true;}P1=ledCode[counts];P2=ledCode[counts];break;}case5://順時(shí)針逐個(gè)點(diǎn)亮{if(counts>=17)counts=0;if(counts<8){P1=~ledCode2[7-counts];P2=0*ff;}elseif(counts<16){P1=0*00;P2=~ledCode2[15-counts];}else//全亮{P1=0*00;P2=0*00;if(isAuto==true)isChange=true;}break;}case6://順時(shí)針逐個(gè)又滅掉{if(counts>=17)counts=0;if(counts<8){P1=ledCode2[7-counts];P2=0*00;}elseif(counts<16){P1=0*ff;51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第6頁(yè)。P2=ledCode2[15-counts];51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第6頁(yè)。}else//全滅{P1=0*ff;P2=0*ff;if(isAuto==true)isChange=true;}break;}case7://逆時(shí)針逐個(gè)點(diǎn)亮{if(counts>=17)counts=0;if(counts<8){P1=0*ff;P2=ledCode2[counts];}elseif(counts<16){P1=ledCode2[counts-7];P2=0*00;}else//全亮{P1=0*00;P2=0*00;if(isAuto==true)isChange=true;}break;}case8://逆時(shí)針逐個(gè)滅掉{if(counts>=17)counts=0;if(counts<8){P1=0*00;P2=~ledCode2[counts];}elseif(counts<16){P1=~ledCode2[counts-7];P2=0*ff;}51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第7頁(yè)。else//全亮51單片機(jī)彩燈控制器的設(shè)計(jì)全文共8頁(yè),當(dāng)前為第7頁(yè)。{P1=0*ff;P2=0*ff;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文具企業(yè)競(jìng)爭(zhēng)力分析與提升策略考核試卷
- 搬家行業(yè)節(jié)能減排與綠色物流考核試卷
- 期貨市場(chǎng)交易風(fēng)險(xiǎn)監(jiān)測(cè)與預(yù)警考核試卷
- 小學(xué)生抗旱主題班會(huì)課件
- 客廳家具批發(fā)考核試卷
- 工業(yè)氣體批發(fā)考核試卷
- 2023視頻監(jiān)控及火災(zāi)報(bào)警系統(tǒng)施工作業(yè)指導(dǎo)書
- 上海建房合同范本
- 空調(diào)技術(shù)入股合同范本
- 汽修門頭合作合同范本
- 2025年山東青島自貿(mào)發(fā)展有限公司招聘筆試參考題庫(kù)含答案解析
- 液化氣罐的使用和安全防范
- 2025年中考物理總復(fù)習(xí)《內(nèi)能》專項(xiàng)測(cè)試卷含有答案
- 會(huì)計(jì)法律法規(guī)答題答案
- 2024年無(wú)錫工藝職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 劇本殺范本完整版
- 北師大版一年級(jí)語(yǔ)文下冊(cè)第一單元元宵節(jié)《1元宵節(jié)》
- 2024年全球協(xié)作機(jī)器人產(chǎn)業(yè)發(fā)展白皮書
- 消防設(shè)施維保過(guò)程風(fēng)險(xiǎn)及保障措施
- 智能交通系統(tǒng)概論 課件全套 朱文興 第1-10章 緒論 - 城市交通子區(qū)控制系統(tǒng)
- 一鍵自動(dòng)生成spccpkmsappk數(shù)據(jù)工具
評(píng)論
0/150
提交評(píng)論