基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告_第1頁
基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告_第2頁
基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告_第3頁
基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告_第4頁
基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告目錄1.引言 21.1背景 21.2設(shè)計(jì)目的 21.3參考資料 22.方案設(shè)計(jì)與比較論證2.1設(shè)計(jì)任務(wù) 22.2設(shè)計(jì)要求 22.3方案的選擇 33.總體設(shè)計(jì) 33.1開發(fā)與運(yùn)行環(huán)境 33.2系統(tǒng)軟件工作流程圖 33.3硬件結(jié)構(gòu) 44.系統(tǒng)功能測試與整體指標(biāo) 64.1系統(tǒng)各模塊功能的性能測試 64.1.1LED小燈模塊 64.1.2點(diǎn)陣模塊 94.1.3按鍵模塊 104.2系統(tǒng)功能測試 124.3系統(tǒng)誤差與問題分析 125.總結(jié) 13附錄1;詳細(xì)程序 14基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第1頁?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第1頁。1.引言1.1背景隨著電子技術(shù)的飛速發(fā)展,電子行業(yè)和社會上的各行各業(yè)息息相關(guān),從家用電器到航空航天,無一不與電子產(chǎn)業(yè)的發(fā)展密切相關(guān)。當(dāng)我們看到大街小巷都是變幻多彩的霓虹燈時(shí),心中是否會感到很新奇?當(dāng)我們看到絢麗多彩的廣告牌時(shí),心中是否會覺得很神奇?這些神奇的流水燈只是電子產(chǎn)業(yè)的冰山一角,更多的知識需要我們在以后的道路上慢慢探索。在單片機(jī)上實(shí)現(xiàn)流水燈很簡單,只需要幾條指令就可以完成,大部分學(xué)生都可以完成任務(wù)。于是我們就思考一個(gè)新的問題,能不能實(shí)現(xiàn)一個(gè)亮度漸變的、按規(guī)律移動的超酷流水燈?這就是本次設(shè)計(jì)的背景及意義。1.2設(shè)計(jì)目的本次基于51單片機(jī)的流水燈設(shè)計(jì)主要是為了讓我們增進(jìn)對80C51單片機(jī)電路的感性認(rèn)識,加深對理論方面的理解。了解軟硬件的有關(guān)知識,并掌握軟硬件設(shè)計(jì)過程、方法及實(shí)現(xiàn),為以后設(shè)計(jì)和實(shí)現(xiàn)應(yīng)用系統(tǒng)打下良好基礎(chǔ)。雖然本次設(shè)計(jì)較為簡單,但是涵蓋的內(nèi)容較為豐富,運(yùn)用了單片機(jī)的動態(tài)掃描、定時(shí)器、中斷,用for循環(huán)來實(shí)現(xiàn)彗星燈的效果,PWM波控制LED的亮滅程度,獨(dú)立按鍵的應(yīng)用等等,另外,通過簡單課題的設(shè)計(jì)練習(xí),使我們了解必須提交的各項(xiàng)工程文件,達(dá)到鞏固、充實(shí)和綜合運(yùn)用所學(xué)知識解決實(shí)際問題的目的。1.3參考資料【1】單片機(jī)原理及應(yīng)用·馬永杰主編·清華大學(xué)出版社2011.8【2】51單片機(jī)C語言教程·郭天祥主編·電子工業(yè)出版社2009.12【3】模擬電子技術(shù)基礎(chǔ)·康華光主編·高等教育出版社2006.012.方案設(shè)計(jì)與比較論證2.1設(shè)計(jì)任務(wù)(1)基于51單片機(jī)實(shí)現(xiàn)一個(gè)亮度漸變的、按規(guī)律移動的超酷流水燈;(2)基于51單片機(jī)實(shí)現(xiàn)在點(diǎn)陣上動態(tài)顯示“心”型和依次顯示“西北師大”;(3)通過獨(dú)立按鍵實(shí)現(xiàn)流水燈和點(diǎn)陣顯示的切換。2.2設(shè)計(jì)要求基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第2頁。(1)應(yīng)用STC89C51單片機(jī);基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第2頁。(2)將LED亮度漸變和按規(guī)律移動相結(jié)合;(3)通過獨(dú)立按鍵實(shí)現(xiàn)流水燈和點(diǎn)陣的切換;2.3方案的選擇本系統(tǒng)以STC89C51單片機(jī)為核心,通過獨(dú)立按鍵來實(shí)現(xiàn)LED小燈和點(diǎn)陣顯示的切換,所以整個(gè)系統(tǒng)可以包括以下的幾個(gè)模塊:點(diǎn)陣模塊;鍵盤模塊;LED小燈點(diǎn)亮模塊。下面一一來說明三種模塊的選擇。點(diǎn)陣模塊:點(diǎn)陣模塊我選擇的是51單片機(jī)上自帶的8×8點(diǎn)陣,用動態(tài)掃描技術(shù)可以很好的在點(diǎn)陣上顯示出“心”型和文字;鍵盤模塊:方案一、利用矩陣鍵盤,矩陣鍵盤可以很好的實(shí)現(xiàn)LED小燈和點(diǎn)陣顯示的切換,但利用的單片機(jī)的資源太多;方案二、利用獨(dú)立鍵盤,獨(dú)立鍵盤在本系統(tǒng)中是物盡其才,在本系統(tǒng)中,按鍵少,獨(dú)立鍵盤原理簡單,所以本系統(tǒng)選擇了獨(dú)立鍵盤;LED點(diǎn)亮模塊:LED點(diǎn)亮模塊我是用PWM波控制LED小燈的明暗程度,用定時(shí)器、中斷技術(shù)以及動態(tài)掃描實(shí)現(xiàn)按一定的規(guī)律移動。3.總體設(shè)計(jì)3.1開發(fā)與運(yùn)行環(huán)境本設(shè)計(jì)采用的是STC89C51單片機(jī),該單片機(jī)采用的MCU51內(nèi)核,因此具有很好的兼容性,內(nèi)部帶有8KB的ROM,能夠存儲大量的程序,在KeiluVision4上編寫程序,通過STC_ISP_V483燒錄到STC89C51芯片里,KeiluVision4支持匯編和C語言平臺,最突出特點(diǎn)是具有ISP在系統(tǒng)燒寫功能,使得燒寫程序更加方便。3.2系統(tǒng)軟件工作流程圖本次設(shè)計(jì)是通過按不同按鍵來實(shí)現(xiàn)流水燈和點(diǎn)陣顯示的,當(dāng)按下按鍵1時(shí),單片機(jī)執(zhí)行超級流水燈的程序;當(dāng)按下按鍵2時(shí),單片機(jī)執(zhí)行第二套程序,點(diǎn)陣中依次顯示“西北師大”的靜態(tài)字樣;當(dāng)按下按鍵3時(shí),單片機(jī)執(zhí)行第三套程序,點(diǎn)陣中動態(tài)的畫出“心”型?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第3頁。系統(tǒng)軟件工作流程圖如下所示:基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第3頁。開始開始按下獨(dú)立按鍵按下獨(dú)立按鍵YY按鍵1?按鍵1?NYN執(zhí)行第三套程序點(diǎn)陣動態(tài)“心”型超級流水燈結(jié)束執(zhí)行第一套程序點(diǎn)陣“西北師大”執(zhí)行第二套程序按鍵2?NYN執(zhí)行第三套程序點(diǎn)陣動態(tài)“心”型超級流水燈結(jié)束執(zhí)行第一套程序點(diǎn)陣“西北師大”執(zhí)行第二套程序按鍵2?3.3硬件結(jié)構(gòu)STC89C51單片機(jī)LED燈模塊、點(diǎn)陣模塊、獨(dú)立按鍵模塊電路圖分別如下:基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第4頁?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第4頁。8×8LED點(diǎn)陣模塊獨(dú)立按鍵模塊STC89C52單片機(jī)實(shí)物圖如下:基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第5頁。基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第5頁。4.系統(tǒng)功能測試與整體指標(biāo)4.1系統(tǒng)各模塊功能的性能測試4.1.1LED小燈模塊本次設(shè)計(jì)的超級流水燈是用PWM波調(diào)光和流水燈行走花案相結(jié)合,在實(shí)現(xiàn)LED燈光移動中同時(shí)實(shí)現(xiàn)燈光的逐漸變亮的過程,在這個(gè)過程中用到了for循環(huán),子程序調(diào)用,中斷和定時(shí)器的使用等等,演示效果較好。以下是超級流水燈的部分程序,我將以備注的形式分析整個(gè)過程。//定時(shí)器0中斷過程實(shí)現(xiàn)PWM調(diào)光voidLedLum_isr(void)interrupt1//125HzPWM{staticuchari=0;if(LedLum[0]>i)Led1=1;elseLed1=0;if(LedLum[1]>i)Led2=1;elseLed2=0;if(LedLum[2]>i)Led3=1;elseLed3=0;if(LedLum[3]>i)Led4=1;elseLed4=0;if(LedLum[4]>i)Led5=1;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第6頁。elseLed5=0;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第6頁。if(LedLum[5]>i)Led6=1;elseLed6=0;if(LedLum[6]>i)Led7=1;elseLed7=0;if(LedLum[7]>i)Led8=1;elseLed8=0;i++;if(i==64)i=0;Time_1ms_Count++;if(Time_1ms_Count>=8){Time_1ms_Flag=1;Time_1ms_Count=0;}}//延時(shí)程序voidDelayNms(uintTick){Time_1ms_Count=0;for(;Tick>0;Tick--){Time_1ms_Flag=0;while(Time_1ms_Flag==0);}}//==========================================//(1)第1,3,5,7個(gè)燈半亮,其余的全亮。voidJob1(void){LedLum[0]=LedLum[2]=LedLum[4]=LedLum[6]=32;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第7頁。LedLum[1]=LedLum[3]=LedLum[5]=LedLum[7]=64;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第7頁。DelayNms(1000);//保持1S}//==========================================//(2)第1個(gè)亮1/8,第2個(gè)亮2/8,第3個(gè)亮3/8,第4個(gè)亮4/8,//第5個(gè)亮5/8,第6個(gè)亮6/8,第7個(gè)亮7/8,第8個(gè)全亮。//這個(gè)就是彗星燈拖尾的程序voidJob2(void){uchari;for(i=0;i<8;i++)LedLum[i]=(i+1)*8;DelayNms(1000);}//==========================================//(3)所有的燈逐漸從暗到全亮,再由全亮到暗。voidJob3(void){uchari,j;for(i=0;i<8;i++)//所有的燈全暗LedLum[i]=0;for(j=0;j<64;j++)//所有的燈逐漸從暗到全亮{for(i=0;i<8;i++)LedLum[i]=j+1;DelayNms(50);//延時(shí)}for(j=64;j>0;j--)//再由全亮到暗{for(i=8;i>0;i--)LedLum[i-1]=j-1;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第8頁。DelayNms(20);基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第8頁。}}//==========================================//(4)8個(gè)燈從第一個(gè)開始依次漸亮,直到最后一個(gè)。//再從最后一個(gè)起漸暗,直到第一個(gè)。voidJob4(void){uchari,j;for(i=0;i<8;i++)//8個(gè)燈從第一個(gè)開始依次漸亮,直到最后一個(gè)。{for(j=0;j<64;j++){LedLum[i]=j+1;DelayNms(10);}//LedLum[i]=0;}for(i=8;i>0;i--)//再從最后一個(gè)起漸暗,直到第一個(gè)。{for(j=64;j>0;j--){LedLum[i-1]=j-1;//LedLum[i-1]=j;DelayNms(10);}//LedLum[i-1]=0;}}4.1.2點(diǎn)陣模塊基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第9頁。點(diǎn)陣顯示分為兩部分,一部分是依次顯示“西北師大”靜態(tài)字樣,另一部分是動態(tài)顯示“心”型圖案?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第9頁。“西北師大”每個(gè)字在點(diǎn)陣中顯示的原理相同,所以我就拿“西”字顯示的原理來講解。顯示“西”的程序如下:ucharcodeseg1[]={0xfe,0x82,0xce,0xaa,0xaa,0xfe,0x28,0xfe};//點(diǎn)陣顯示"西"字ucharcodewei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分別對應(yīng)相應(yīng)的段亮位選選中為0for(i=0;i<8;i++){P0=0xff;LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù)LATCH2=1;LATCH2=0;P1=seg1[i];//取段碼//LATCH2=1;LATCH2=0;delayus(200);//掃描間隙延時(shí)}在整個(gè)過程中,單片機(jī)就是在不斷的對程序進(jìn)行掃描,在很短的時(shí)間內(nèi),人眼無法感覺到LED在閃爍,所以覺得LED一直亮著,從而在點(diǎn)陣上形成一個(gè)字。再在這個(gè)循環(huán)外加個(gè)外循環(huán),加上延時(shí),從而實(shí)現(xiàn)文字的不斷更換。在點(diǎn)陣上動態(tài)顯示“心”型原理和靜態(tài)顯示文字的原理差不多,只不多把文字的更換變成了“心”型下一步要出現(xiàn)的圖案,外循環(huán)延時(shí)縮短一點(diǎn),人眼看上去就覺得“心”型是動態(tài)出現(xiàn)的。具體程序見附錄1.4.1.3按鍵模塊按鍵模塊選擇是四個(gè)獨(dú)立按鍵中的其中三個(gè),它操作簡單、方便,利用的資源少,我是通過按鍵掃描函數(shù),通過對返回值的判斷從而決定執(zhí)行哪套程序,需要注意的是,在按鍵掃描函數(shù)中要加延時(shí)實(shí)現(xiàn)去抖,否則有時(shí)會檢測錯(cuò)誤。鍵盤掃描函數(shù)程序如下,我以備注的形式詳細(xì)分析:unsignedcharKeyScan(void){基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第10頁。if(!KEY1)//如果檢測到低電平,說明按鍵按下基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第10頁。{delayms(10);//延時(shí)去抖,一般10-20msif(!KEY1)//再次確認(rèn)按鍵是否按下,沒有按下則退出{while(!KEY1);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出{return1;}}}elseif(!KEY2)//如果檢測到低電平,說明按鍵按下{delayms(10);//延時(shí)去抖,一般10-20msif(!KEY2)//再次確認(rèn)按鍵是否按下,沒有按下則退出{while(!KEY2);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出{return2;}}}elseif(!KEY3)//如果檢測到低電平,說明按鍵按下{delayms(10);//延時(shí)去抖,一般10-20msif(!KEY3)//再次確認(rèn)按鍵是否按下,沒有按下則退出{while(!KEY3);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出{return3;}基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第11頁。}基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第11頁。}elseif(!KEY4)//如果檢測到低電平,說明按鍵按下{delayms(10);//延時(shí)去抖,一般10-20msif(!KEY4)//再次確認(rèn)按鍵是否按下,沒有按下則退出{while(!KEY4);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出{return4;}}}elsereturn0;}4.2系統(tǒng)功能測試啟動系統(tǒng),按下按鍵1,執(zhí)行第一套程序,超級流水燈啟動,運(yùn)行正常;按下按鍵2,執(zhí)行第二套程序,點(diǎn)陣中依次顯示“西北師大”四個(gè)字樣,運(yùn)行正常;按下按鍵3,執(zhí)行第三套程序,點(diǎn)陣中動態(tài)顯示“心”型圖案,運(yùn)行正常。通過測試,本設(shè)計(jì)的功能基本都能達(dá)到。4.3系統(tǒng)誤差與問題分析我在調(diào)試本系統(tǒng)的時(shí)候出現(xiàn)了一下幾點(diǎn)問題。錯(cuò)誤1:當(dāng)我按下獨(dú)立鍵盤后,再去按另一個(gè)按鍵,單片機(jī)不執(zhí)行后面按鍵的程序;原因:只有當(dāng)前一個(gè)程序完整的執(zhí)行完之后,再按下按鍵,系統(tǒng)才會去執(zhí)行后面的程序;錯(cuò)誤2:當(dāng)我按下按鍵1后,LED燈一直亮著,沒有想預(yù)想的那樣顯示出來;原因:延時(shí)時(shí)間太短,肉眼無法識別它的閃爍,將延時(shí)調(diào)長一點(diǎn)就好了。錯(cuò)誤3:當(dāng)一套程序執(zhí)行完之后我再按其他的鍵,希望它執(zhí)行另一套程序,但是沒有實(shí)現(xiàn),系統(tǒng)一直在執(zhí)行前一套程序。原因:在內(nèi)循環(huán)上出現(xiàn)錯(cuò)誤,變成了死循環(huán),無法跳出內(nèi)循環(huán)?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第12頁。錯(cuò)誤4:我想在按鍵按下去之后,如果不按其他鍵了,系統(tǒng)能一直執(zhí)行循環(huán)執(zhí)行前一套程序,比如,我按下按鍵1,如果我不再按按鍵2或3的話,系統(tǒng)能一直執(zhí)行第一套程序,執(zhí)行完之后再循環(huán),所以我在里面加了一個(gè)while(1),希望它能一直循環(huán)下去,因?yàn)樗耐庋h(huán)已經(jīng)判斷了按鍵的值,所以我想當(dāng)改變按鍵值時(shí)這個(gè)循環(huán)還是跳出來的,但是確實(shí)跳不出這個(gè)死循環(huán),這個(gè)問題我始終沒有解決。最后,保險(xiǎn)起見,我選擇了按鍵后只執(zhí)行一次程序。基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第12頁。錯(cuò)誤5:在我調(diào)試過程中,單獨(dú)調(diào)試點(diǎn)陣顯示的時(shí)候,點(diǎn)陣中的LED特別亮,但是將這個(gè)程序和按鍵模塊、流水燈模塊加到一起時(shí),運(yùn)行起來,點(diǎn)陣中的LED顯示就特別暗,這個(gè)問題始終沒有解決。5.總結(jié)這次課程設(shè)計(jì)使我掌握了很多實(shí)踐知識,對單片機(jī)有了進(jìn)一步的了解。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,進(jìn)而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。這次設(shè)計(jì)也使我學(xué)會了方案的選擇,對于實(shí)現(xiàn)同一種效果的方案可能會很多很多,我們要學(xué)會選擇最優(yōu)方案,比如同樣的效果哪個(gè)程序所占的存儲空間最少,運(yùn)行速度最快等等,都是需要我們考慮的。此外,對于書本上的知識,我們不能死守教條,要學(xué)會變通,這樣更有利于我們學(xué)習(xí)和創(chuàng)新。整個(gè)設(shè)計(jì)過程可以說不是很順利,因?yàn)橛泻芏嘀R已經(jīng)淡忘,還有很多新的東西沒有掌握,所以這次設(shè)計(jì)在不斷的復(fù)習(xí)、學(xué)習(xí)中度過,使我受益匪淺,也使我對單片機(jī)的運(yùn)用有了進(jìn)一步的了解和掌握,也為今后的學(xué)習(xí)生活和工作打下良好的基礎(chǔ)?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第13頁?;?1單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第13頁。附錄1;詳細(xì)程序#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar#defineTime_125us(0x100-125)//Fosc=12MsbitKEY1=P3^2;sbitKEY2=P3^3;sbitKEY3=P3^4;sbitKEY4=P3^5;sbitLed1=P1^0;sbitLed2=P1^1;sbitLed3=P1^2;sbitLed4=P1^3;sbitLed5=P1^4;sbitLed6=P1^5;sbitLed7=P1^6;sbitLed8=P1^7;sbitLATCH1=P2^6;sbitLATCH2=P2^7;ucharcodeseg1[]={0xfe,0x82,0xce,0xaa,0xaa,0xfe,0x28,0xfe};//點(diǎn)陣顯示"西"字ucharcodeseg2[]={0x2e,0xaa,0x6a,0x28,0x2c,0xea,0x28,0x28};//點(diǎn)陣顯示"北"字基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第14頁。ucharcodeseg3[]={0x84,0x44,0x55,0xd7,0xd5,0xdf,0x44,0x5f};//點(diǎn)陣顯示"師"字基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第14頁。ucharcodeseg4[]={0x82,0x44,0x28,0x10,0x10,0xfe,0x10,0x10};//點(diǎn)陣顯示"大"字ucharcodewei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};ucharcodeseg11[]={0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00};ucharcodeseg12[]={0x00,0x00,0x00,0x00,0x00,0x10,0x24,0x00};ucharcodeseg13[]={0x00,0x00,0x00,0x00,0x00,0x10,0x6c,0x00};ucharcodeseg14[]={0x00,0x00,0x00,0x00,0x00,0x92,0x6c,0x00};ucharcodeseg15[]={0x00,0x00,0x00,0x00,0x82,0x92,0x6c,0x00};ucharcodeseg16[]={0x00,0x00,0x00,0x44,0x82,0x92,0x6c,0x00};ucharcodeseg17[]={0x00,0x00,0x28,0x44,0x82,0x92,0x6C,0x00};ucharcodeseg18[]={0x00,0x10,0x28,0x44,0x82,0x92,0x6C,0x00};//心的形狀voiddelayus(uintt);//us級延時(shí)函數(shù)聲明voiddelayms(uintt);//ms級延時(shí)函數(shù)聲明ucharKeyScan(void);//鍵盤掃描voidDelayNms(uintTick);bitTime_1ms_Flag;ucharTime_1ms_Count=0,LedLum[8]={0,0,0,0,0,0,0,0};voidLedLum_isr(void)interrupt1//125HzPWM{staticuchari=0;if(LedLum[0]>i)Led1=1;elseLed1=0;if(LedLum[1]>i)Led2=1;elseLed2=0;if(LedLum[2]>i)Led3=1;elseLed3=0;if(LedLum[3]>i)Led4=1;elseLed4=0;if(LedLum[4]>i)Led5=1;elseLed5=0;if(LedLum[5]>i)Led6=1;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第15頁。elseLed6=0;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第15頁。if(LedLum[6]>i)Led7=1;elseLed7=0;if(LedLum[7]>i)Led8=1;elseLed8=0;i++;if(i==64)i=0;Time_1ms_Count++;if(Time_1ms_Count>=8){Time_1ms_Flag=1;Time_1ms_Count=0;}}voidDelayNms(uintTick){Time_1ms_Count=0;for(;Tick>0;Tick--){Time_1ms_Flag=0;while(Time_1ms_Flag==0);}}//(1)第1,3,5,7個(gè)燈半亮,其余的全亮。voidJob1(void){LedLum[0]=LedLum[2]=LedLum[4]=LedLum[6]=32;LedLum[1]=LedLum[3]=LedLum[5]=LedLum[7]=64;DelayNms(1000);//保持3S}//(2)第1個(gè)亮1/8,第2個(gè)亮2/8,第3個(gè)亮3/8,第4個(gè)亮4/8,//第5個(gè)亮5/8,第6個(gè)亮6/8,第7個(gè)亮7/8,第8個(gè)全亮。voidJob2(void){uchari;for(i=0;i<8;i++)LedLum[i]=(i+1)*8;DelayNms(1000);}//(3)所有的燈逐漸從暗到全亮,再由全亮到暗。voidJob3(void){uchari,j;for(i=0;i<8;i++)//所有的燈全暗LedLum[i]=0;for(j=0;j<64;j++)//所有的燈逐漸從暗到全亮{for(i=0;i<8;i++)LedLum[i]=j+1;DelayNms(50);//延時(shí)}基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第16頁。for(j=64;j>0;j--)//再由全亮到暗基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第16頁。{for(i=8;i>0;i--)LedLum[i-1]=j-1;DelayNms(20);}}//(4)8個(gè)燈從第一個(gè)開始依次漸亮,直到最后一個(gè)。//再從最后一個(gè)起漸暗,直到第一個(gè)。voidJob4(void){uchari,j;for(i=0;i<8;i++)//8個(gè)燈從第一個(gè)開始依次漸亮,直到最后一個(gè)。{for(j=0;j<64;j++){LedLum[i]=j+1;DelayNms(10);}//LedLum[i]=0;}for(i=8;i>0;i--)//再從最后一個(gè)起漸暗,直到第一個(gè)。{for(j=64;j>0;j--){LedLum[i-1]=j-1;//LedLum[i-1]=j;DelayNms(10);}//LedLum[i-1]=0;}}voidmain(void){TMOD|=0x02;TMOD&=0x52;TH0=Time_125us;TR0=1;EA=1;ET0=1;//定時(shí)器開關(guān)打開while(1){ uchari,j,num;num=KeyScan();if(num==1){ Job1();Job2();Job3();Job4(); }if(num==2){for(j=0;j<100;j++) {for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù)基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第17頁。 LATCH2=1;LATCH2=0;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第17頁。 P1=seg1[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<100;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg2[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí)} } for(j=0;j<100;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg3[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí)} } for(j=0;j<100;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg4[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí)} } LATCH1=1; LATCH2=1; P0=0Xff; P1=0x00;}if(num==3){ for(j=0;j<10;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0;基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第18頁。 P1=seg11[i];//取段碼基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第18頁。// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<10;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg12[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<10;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg13[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<10;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg14[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<10;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg15[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<10;j++) {基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第19頁。 for(i=0;i<8;i++)基于51單片機(jī)的流水燈及點(diǎn)陣設(shè)計(jì)報(bào)告全文共21頁,當(dāng)前為第19頁。 { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg16[i];//取段碼// LATCH2=1;LATCH2=0; delayus(200);//掃描間隙延時(shí) } } for(j=0;j<10;j++) { for(i=0;i<8;i++) { P0=0xff; LATCH1=1;LATCH1=0;P0=wei[i];//取顯示數(shù)據(jù) LATCH2=1;LATCH2=0; P1=seg17[i];//取段碼// LATCH2=1;L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論