流水燈技術(shù)報(bào)告_第1頁(yè)
流水燈技術(shù)報(bào)告_第2頁(yè)
流水燈技術(shù)報(bào)告_第3頁(yè)
流水燈技術(shù)報(bào)告_第4頁(yè)
流水燈技術(shù)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一屆全國(guó)大學(xué)生智能汽車(chē)邀請(qǐng)賽技術(shù)報(bào)告流水燈創(chuàng)新實(shí)驗(yàn)5創(chuàng)新實(shí)驗(yàn)89C52單片機(jī)控制的流水燈創(chuàng)新實(shí)驗(yàn)技術(shù)報(bào)告學(xué)校:蘭州交通大學(xué)隊(duì)伍名稱(chēng):智能一號(hào)參賽隊(duì)員:韋鵬鄧彬劉光智帶隊(duì)教師:劉虎

目錄關(guān)于技術(shù)報(bào)告和研究論文使用授權(quán)的說(shuō)明…………單片機(jī)控制流水燈實(shí)驗(yàn)原理1.摘要2.電路圖及原理概述3.軟件編程4.源程序流水燈創(chuàng)新實(shí)驗(yàn)5流水燈創(chuàng)新實(shí)驗(yàn)關(guān)于技術(shù)報(bào)告和研究論文使用授權(quán)的說(shuō)明 本人完全了解蘭州交通大學(xué)創(chuàng)新實(shí)驗(yàn)技術(shù)報(bào)告的保留、使用和研究論文的規(guī)定,即:參賽作品著作權(quán)歸參賽者本人,技術(shù)報(bào)告以及參賽作品的視頻、圖像資料,并將相關(guān)內(nèi)容編纂收錄在組委會(huì)出版論文集中。參賽隊(duì)員簽名:韋鵬鄧彬劉光智帶隊(duì)教師簽名:劉虎日期:2011年3月10號(hào)流水燈創(chuàng)新實(shí)驗(yàn)單片機(jī)控制流水燈原理

1.摘要當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動(dòng)化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未見(jiàn)的速度被單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說(shuō),智能控制與自動(dòng)控制的核心就是單片機(jī)。目前,一個(gè)學(xué)習(xí)與應(yīng)用單片機(jī)的高潮正在工廠、學(xué)校及企事業(yè)單位大規(guī)模地興起。學(xué)習(xí)單片機(jī)的最有效方法就是理論與實(shí)踐并重,本文筆者用AT89C51單片機(jī)自制了一款簡(jiǎn)易的流水燈,重點(diǎn)介紹了其軟件編程方法,以期給單片機(jī)初學(xué)者以啟發(fā),更快地成為單片機(jī)領(lǐng)域的優(yōu)秀人才。2.電路圖及原理敘述按照單片機(jī)系統(tǒng)擴(kuò)展與系統(tǒng)配置狀況,單片機(jī)應(yīng)用系統(tǒng)可分為最小系統(tǒng)、最小功耗系統(tǒng)及典型系統(tǒng)等。AT89C51單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機(jī),具有豐富的內(nèi)部資源:4kB閃存、128BRAM、32根I/O口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、5個(gè)向量?jī)杉?jí)中斷結(jié)構(gòu)、2個(gè)全雙工的串行口,具有4.25~5.50V的電壓工作范圍和0~24MHz工作頻率,使用AT89C51單片機(jī)時(shí)無(wú)須外擴(kuò)存儲(chǔ)器。因此,最簡(jiǎn)單的流水燈實(shí)際上就是一個(gè)帶有8個(gè)發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成的單個(gè)單片機(jī)。其硬件組成如圖1所示。

圖1流水燈硬件原理圖“從原理圖中可以看出,如果要讓接在P1.0口的LED1亮起來(lái),那么只要把P1.0口的電平變?yōu)榈碗娖骄涂梢粤?;相反,如果要接在P1.0口的LED1熄滅,就要把P1.0口的電平變?yōu)楦唠娖?;同理,接在P1.1~P1.7口的其他7個(gè)LED的點(diǎn)亮和熄滅的方法同LED1。因此,要實(shí)現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1~LED8依次點(diǎn)亮、熄滅,8只LED燈便會(huì)一亮一暗的做流水燈了。在此我們還應(yīng)注意一點(diǎn),由于人眼的視覺(jué)暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時(shí)間很短,我們?cè)诳刂贫O管亮滅的時(shí)候應(yīng)該延時(shí)一段時(shí)間,否則我們就看不到流水”效果了。3.軟件編程單片機(jī)的應(yīng)用系統(tǒng)由硬件和軟件組成,上述硬件原理圖搭建完成上電之后,我們還不能看到流水燈循環(huán)點(diǎn)亮的現(xiàn)象,我們還需要告訴單片機(jī)怎么來(lái)進(jìn)行工作,即編寫(xiě)程序控制單片機(jī)管腳電平的高低變化,來(lái)實(shí)現(xiàn)發(fā)光二極管的一亮一滅。軟件編程是單片機(jī)應(yīng)用系統(tǒng)中的一個(gè)重要的組成部分,是單片機(jī)學(xué)習(xí)的重點(diǎn)和難點(diǎn)。下面以我們的單片機(jī)控制功能即實(shí)現(xiàn)LED燈流水效果和播放音樂(lè),來(lái)介紹實(shí)現(xiàn)單片機(jī)控制的軟件編程方法。4.源程序:/********************************** 類(lèi)型:流水燈的寫(xiě)法,此程序是最原始的寫(xiě)法。 現(xiàn)象:LED以各種方式產(chǎn)生流水的發(fā)光效果;揚(yáng)聲器發(fā)出悅耳的音樂(lè)聲。 編寫(xiě):智能一號(hào) 時(shí)間:2011.3 修改:無(wú)【版權(quán)】智能一號(hào)【聲明】此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息!***********************源代碼*******************************/#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharucharcodetable1[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//定義八個(gè)燈的工作狀態(tài)。ucharcodetable2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//定義八個(gè)燈的工作狀態(tài)。ucharcodetable3[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0x7e,0xbe,0xde,0xee,0xf6,0xfa,0xfc,0x7c, 0xbc,0xdc,0xec,0xf4,0xf8,0x78,0xb8,0xd8, 0xe8,0xf0,0x70,0xb0,0xd0,0xe0,0x60,0xa0, 0xc0,0x40,0x80,0x00};ucharcodetable4[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//疊花編碼表 0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f,0x3e, 0x3d,0x3b,0x37,0x2f,0x1f,0x1e,0x1d,0x1b, 0x17,0x0f,0x0e,0x0d,0x0b,0x07,0x06,0x05, 0x03,0x02,0x01,0x00};ucharcodetable5[]={0xfe,0xfc,0xf8,0xf0,0xe1,0xc3,0x86,0x0c, 0x18,0x30,0x61,0xc3,0x86,0x0c,0x18,0x30, 0x61,0xc3,0x86,0x0c,0x18,0x30,0x61,0xc3, 0x86,0x0c,0x18,0x30,0x61,0xc3,0x86,0x0c};ucharcodetable6[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfe,0xfc,0xf8,0xf0,0xe1,0xc3,0x86,0x0c, 0x18,0x30,0x61,0xc3,0x86,0x0c,0x18,0x30, 0x61,0xc3,0x86,0x0c,0x18,0x30,0x61,0xc3};voidplaymusic(void);uinti,j,k,t,LED,LED1;#definetime140#definetime25#definetime350voiddelayms(uintn);voidmod1();voidmod3();//兩排燈相對(duì)跑voidmod4();//所有燈閃爍voidmod5();//兩排燈做乒乓運(yùn)動(dòng)voidmod6();//一排燈做乒乓運(yùn)動(dòng)voidmod7();//一排燈左右移動(dòng)voidmod8();//亮燈對(duì)碰voidmod9();//上下對(duì)換voidmod10();//左右對(duì)換voidmod2();//每個(gè)燈逐個(gè)滅voidmod11();//所有燈左右移動(dòng)voidmod12();//貪吃蛇移動(dòng)voidmod13();/*流水燈間隔閃亮*/voidmod14();//所有燈亮voidmod15();//上下間隔亮voidmod16();//左同向疊花voidmod17();//反向疊花voidmod18();//右同向疊花voidmod19();//上下間隔閃voidmod20();//隊(duì)列右移main(){ while(1) { mod4();//所有燈閃爍 mod1();//每個(gè)燈逐個(gè)亮 mod2();//每個(gè)燈逐個(gè)滅 mod3();//兩排燈相對(duì)跑 mod6();//一排燈做乒乓運(yùn)動(dòng) mod7();//一排燈左右移動(dòng) mod11();//所有燈左右動(dòng) mod5();//兩排燈做乒乓運(yùn)動(dòng) mod8();//亮燈對(duì)碰 mod3();//兩排燈相對(duì)跑 mod9();//上下對(duì)換 mod4();//所有燈閃爍mod10();//左右對(duì)換mod1();//每個(gè)燈逐個(gè)?mod11();//所有燈左右動(dòng)mod4();//所有燈閃爍mod12();//貪吃蛇移動(dòng)mod20();//隊(duì)列右移mod13();//流水燈間隔閃亮mod4();//所有燈閃爍mod15();//疊花mod16();//右同向疊花mod11();//所有燈左右動(dòng)mod18();//右同向疊花mod17();//反向疊花mod3();//兩排燈相對(duì)跑mod12();//貪吃蛇移動(dòng)mod15();//上下間隔亮mod19();//上下間隔?mod14();//所有燈亮mod20();//隊(duì)列右移mod4();//所有燈閃爍mod14();//所有燈亮playmusic(); }}//////////////////延時(shí)函數(shù)////////////////////////////////////voiddelayms(uintn){ uinti,j; for(i=0;i<n;i++) for(j=0;j<90;j++);}//////////////////////////////////////////////////////////voidmod1()//每個(gè)燈逐個(gè)亮{ P0=P1=P2=P3=0xff; delayms(time1); LED=0xfe; LED1=0x7f; for(i=0;i<8;i++) { P0=LED; LED<<=1; delayms(time1); } LED=0xfe; for(i=0;i<8;i++) { P1=LED; LED<<=1; delayms(time1); } for(i=0;i<8;i++) { P3=LED1; LED1>>=1; delayms(time1); } LED1=0x7f; for(i=0;i<8;i++) { P2=LED1; LED1>>=1; delayms(time1); }}voidmod2()//每個(gè)燈逐個(gè)滅{ LED=0x01; LED1=0x80; for(i=0;i<8;i++) { P2=LED; LED<<=1; LED=LED|0x01; delayms(time1); } LED=0x01; for(i=0;i<8;i++) { P3=LED; LED<<=1; LED=LED|0x01; delayms(time1); } for(i=0;i<8;i++) { P1=LED1; LED1>>=1; LED1=LED1|0x80; delayms(time1); } LED1=0x80; for(i=0;i<8;i++) { P0=LED1; LED1>>=1; LED1=LED1|0x80; delayms(time1); }}voidmod3()//兩排燈相對(duì)跑{ for(j=0;j<time2;j++) { LED=0xfc; LED1=0x3f; for(i=0;i<4;i++) { P0=P2=LED; P1=P3=LED1; delayms(time1); LED<<=2; LED=LED|0x03; LED1=LED1>>2; LED1=LED1|0xc0; } LED=0xfc; LED1=0x3f; for(i=0;i<4;i++) { P0=P2=LED1; P1=P3=LED; delayms(time1); LED1>>=2; LED1=LED1|0xc0; LED<<=2; LED=LED|0x03; } }}voidmod4()//所有燈閃爍{ for(i=0;i<10;i++) { LED=0x00; P0=P1=P2=P3=LED; delayms(100); P0=P1=P2=P3=~LED; delayms(100); }}voidmod5()//兩排燈做乒乓運(yùn)動(dòng){ for(j=0;j<time2;j++) { LED=0xfc; LED1=0x3f; for(i=0;i<4;i++) { P0=P2=LED; P1=P3=LED1; delayms(time1); LED<<=2; LED=LED|0x03; LED1=LED1>>2; LED1=LED1|0xc0; } LED=0xfc; LED1=0x3f; for(i=0;i<4;i++) { P0=P2=LED1; P1=P3=LED; delayms(30); LED1>>=2; LED1=LED1|0xc0; LED<<=2; LED=LED|0x03; } } }voidmod6()//一排燈做乒乓運(yùn)動(dòng){ for(j=0;j<time2;j++) { LED=0xfe; LED1=0x7f; for(i=0;i<8;i++) { P0=P2=LED; delayms(time3); LED<<=1; LED=LED|0x01; } LED=0xfe; for(i=0;i<8;i++) { P1=P3=LED; delayms(time3); LED<<=1; LED=LED|0x01; } for(i=0;i<8;i++) { P1=P3=LED1; delayms(time3); LED1>>=1; LED1=LED1|0x80; } LED1=0x7f; for(i=0;i<8;i++) { P0=P2=LED1; delayms(time3); LED1>>=1; LED1=LED1|0x80; } }}voidmod7()//一排燈左右移動(dòng){ for(j=0;j<time2;j++) { LED=0xfe; LED1=0x7f; for(i=0;i<9;i++) { P0=P2=LED; delayms(time3); LED<<=1; LED=LED|0x01; } LED=0xfe; for(i=0;i<9;i++) { P1=P3=LED; delayms(time3); LED<<=1; LED=LED|0x01; } for(i=0;i<9;i++) { P1=P3=LED1; delayms(time3); LED1>>=1; LED1=LED1|0x80; } LED1=0x7f; for(i=0;i<9;i++) { P0=P2=LED1; delayms(time3); LED1>>=1; LED1=LED1|0x80; } }}voidmod8()//亮燈對(duì)碰{ for(j=0;j<time2;j++) { LED=0xfc; LED1=0x3f; for(i=0;i<5;i++) { P0=P2=LED; P1=P3=LED1; delayms(time1); LED<<=2; LED=LED|0x03; LED1=LED1>>2; LED1=LED1|0xc0; } }}voidmod9()//上下對(duì)換{ for(i=0;i<4;i++) { P0=P1=0; P2=P3=0xff; delayms(250); P2=P3=0; P0=P1=0xff; delayms(250); }}voidmod10()//左右對(duì)換{ for(i=0;i<4;i++) { P0=P2=0; P1=P3=0xff; delayms(180); P1=P3=0; P0=P2=0xff; delayms(180); }}voidmod11()//所有燈左右移動(dòng){ for(j=0;j<2;j++) { P0=P1=P2=P3=0xff; LED=0xfe; LED1=0x7f; for(i=0;i<8;i++) { P0=P2=LED; delayms(time1); LED<<=1; } LED=0xfe; for(i=0;i<8;i++) { P1=P3=LED; delayms(time1); LED<<=1; } P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P1=P3=LED1; delayms(time1); LED1>>=1; } LED1=0x7f; for(i=0;i<8;i++) { P0=P2=LED1; delayms(time1); LED1>>=1; } }}voidmod12()//貪吃蛇右移動(dòng){ for(k=0;k<5;k++) { P0=P1=P2=P3=0xff; LED=0xfe; LED1=0x7f; for(i=0;i<8;i++) { P0=P2=LED; delayms(time1); LED<<=1; } ///////////尾巴移出///////////// for(i=0,j=0;i<8,j<8;i++,j++) { P0=P2=table1[i]; P1=P3=table2[j]; delayms(time1); } /////////頭移出//////////////// for(i=0;i<8;i++) { P0=P2=0xff; P1=P3=table1[i]; delayms(time1); } }}voidmod13()/*流水燈間隔閃亮*/{ for(i=10;i>0;i--) { P0=P1=P2=P3=0x55; delayms(250); P0=P1=P2=P3=0xaa; delayms(180); } }voidmod14()//所有燈亮{P0=P1=P2=P3=0; }voidmod15()//上下間隔亮{ P0=P1=0x55; P2=P3=~0x55;}voidmod16()//左同向疊花{ for(k=0;k<36;k++) { P3=P1=table3[k]; P2=P0=table3[k]; delayms(200); }}voidmod17()//反向疊花{ for(k=0;k<36;k++) { P3=P1=table3[k]; P2=P0=table4[k]; delayms(200); }}voidmod18()//右同向疊花{ for(k=0;k<36;k++) { P3=P1=table4[k]; P2=P0=table4[k]; delayms(200); }}voidmod19()//上下間隔閃{ P0=P1=0x55; P2=P3=0xaa; delayms(300); P2=P3=0x55; P0=P1=0xaa; delayms(300);}voidmod20()//隊(duì)列右移{ for(j=0;j<3;j++) { for(k=0;k<32;k++) { P0=P2=table5[k]; P1=P3=table6[k]; delayms(120); } }}////////////////////////////////////////////////////////////////////////////////////////////////////////////*-----------------------------------------------名稱(chēng):對(duì)面的女孩看過(guò)來(lái)------------------------------------------------*/#include<reg52.h>sbitspeaker=P1^7;//定義音樂(lè)輸出端口,需要連接到對(duì)應(yīng)的喇叭,請(qǐng)參考電路圖unsignedchartimer0h,timer0l,time;//對(duì)面的女孩看過(guò)來(lái)codeunsignedcharsszymmh[]={1,2,1,1,2,2,5,2,2,5,2,2,1,2,2,7,1,2,2,2,2,2,2,2,1,2,2,6,1,1, 1,2,1, 1,2,1, 1,2,1,6,1,2,1,2,2,3,2,1,2,2,1,1,2,1,2,2,4,1,2,1,1,2,2,5,2,2,5,2,2,1,2,2,7,1,2,2,2,2,2,2,2,1,2,2,6,1,1, 1,2,1, 1,2,1, 1,2,1,6,1,2,1,2,2,3,2,1,2,2,1,1,2,1,5,2,2,0,0,0};//音階頻率表高八位codeunsignedcharFREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};//音階頻率表低八位codeunsignedcharFREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};/******************************************************************//*延時(shí)函數(shù)*//******************************************************************/voiddelay(unsignedchart){unsignedchart1;unsignedlongt2;for(t1=0;t1<t;t1++){for(t2=0;t2<6000;t2++){}}TR0=0;}/******************************************************************//*定時(shí)器中斷函數(shù)*//******************************************************************/voidt0int()interrupt1{TR0=0;speaker=!speaker;TH0=timer0h;TL0=timer0l;TR0=1;}/******************************************************************//*音樂(lè)處理函數(shù)*/

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論