版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文)</p><p> 設(shè)計(jì)(論文)題目:__彩燈循環(huán)控制系統(tǒng) </p><p> 專(zhuān) 業(yè):____ </p><p> 班 級(jí):_____ _ _</p><p> 學(xué) 號(hào):___ _____ ____</p
2、><p> 姓 名:_ _ __</p><p> 指導(dǎo)教師: _ _</p><p><b> 目錄</b></p><p><b> 摘要1</b></p><p><b> 第1章
3、緒論2</b></p><p> 1.1 單片機(jī)的簡(jiǎn)介2</p><p> 1.2 單片機(jī)的應(yīng)用領(lǐng)域2</p><p> 1.3 單片機(jī)的發(fā)展趨勢(shì)2</p><p> 第2章 彩燈硬件電路框架設(shè)計(jì)3</p><p> 2.1 彩燈功能描述3</p><p>
4、2.2 硬件電路設(shè)計(jì)框架3</p><p> 2.3 系統(tǒng)硬件單元電路設(shè)計(jì)及論證4</p><p> 2.3.1 晶振電路4</p><p> 2.3.2 復(fù)位電路4</p><p> 2.3.3 錯(cuò)誤報(bào)警電路4</p><p> 2.3.4 開(kāi)關(guān)電路5</p><p>
5、 2.3.5 發(fā)光電路5</p><p> 第3章 彩燈系統(tǒng)軟件設(shè)計(jì)6</p><p> 3.1 程序設(shè)計(jì)框圖6</p><p> 3.2 子程序設(shè)計(jì)和功能介紹6</p><p> 3.2.1 延時(shí)程序6</p><p> 3.2.2 初始化函數(shù)7</p><p> 3.
6、2.3 彩燈循環(huán)方式控制程序8</p><p> 3.2.4 中斷服務(wù)程序10</p><p> 第4章 系統(tǒng)調(diào)試13</p><p> 4.1 軟件調(diào)試13</p><p> 4.2 硬件調(diào)試13</p><p> 第5章 畢業(yè)設(shè)計(jì)總結(jié)15</p><p><b&g
7、t; 參考文獻(xiàn)16</b></p><p> 附錄1 彩燈電路總圖及元器件清單17</p><p> 附錄2 彩燈整體程序18</p><p><b> 摘要</b></p><p> 單片機(jī)是一種集成電路芯片,采用超大規(guī)模技術(shù)把具有數(shù)據(jù)處理能力(如算術(shù)運(yùn)算,邏輯運(yùn)算、數(shù)據(jù)傳送、中斷處理)的微
8、處理器(CPU)。隨著單片機(jī)技術(shù)的飛速發(fā)展,各種單片機(jī)蜂擁而至,單片機(jī)技術(shù)已成為一個(gè)國(guó)家現(xiàn)代化科技水平的重要標(biāo)志。單片機(jī)可單獨(dú)地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機(jī)最大的特征。單片機(jī)控制系統(tǒng)能夠取代以前利用復(fù)雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng),可以軟件控制來(lái)實(shí)現(xiàn),并能夠?qū)崿F(xiàn)智能化?,F(xiàn)在單片機(jī)控制范疇無(wú)所不在,例如通信產(chǎn)品、家用電器、智能儀器儀表、過(guò)程控制和專(zhuān)用控制裝置等等,單片機(jī)的應(yīng)用領(lǐng)域越來(lái)越廣泛。本畢業(yè)設(shè)計(jì)的課題是“彩
9、燈循環(huán)控制系統(tǒng)的設(shè)計(jì)”。主要考核我們對(duì)單片機(jī)技術(shù),編程能力等方面的情況。觀察獨(dú)立分析、設(shè)計(jì)單片機(jī)的能力,以及實(shí)際編程技能。</p><p> 關(guān)鍵字: 單片機(jī);彩燈;循環(huán);控制</p><p><b> 第1章 緒論</b></p><p> 1.1 單片機(jī)的簡(jiǎn)介</p><p> 單片機(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)
10、稱(chēng),也就是把微處理器(CPU),隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),只讀程序存儲(chǔ)器(ROM),輸入輸出電路(I/O口),還包括定時(shí)計(jì)數(shù)器,串行通信口(SCI),顯示驅(qū)動(dòng)電路(LCD或LED驅(qū)動(dòng)電路),脈寬調(diào)制電路(PWM),A/D轉(zhuǎn)換器等電路集成到一塊單塊芯片上,構(gòu)成一個(gè)最小然而完善的計(jì)算機(jī)系統(tǒng)。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效地完成程序設(shè)計(jì)者事先規(guī)定的任務(wù)。</p><p> 由此來(lái)看,單片機(jī)是可單獨(dú)地完成
11、現(xiàn)代工業(yè)控制所要求的智能化控制系統(tǒng),這是單片機(jī)最大的特征。</p><p> 1.2 單片機(jī)的應(yīng)用領(lǐng)域</p><p> 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡。單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專(zhuān)用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域,大致可分如下幾個(gè)范疇:</p><p> 1.在智能儀器儀表上的應(yīng)用&l
12、t;/p><p> 2.在工業(yè)控制中的應(yīng)用</p><p> 3.在家用電器中的應(yīng)用</p><p> 4.在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用</p><p> 5.單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用</p><p> 1.3 單片機(jī)的發(fā)展趨勢(shì)</p><p> 現(xiàn)在可以說(shuō)單片機(jī)是百花齊放,百家爭(zhēng)
13、鳴的時(shí)期,世界上各大芯片制造公司都推出了自己的單片機(jī),從8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補(bǔ),為單片機(jī)的應(yīng)用提供廣闊的天地。縱觀單片機(jī)的發(fā)展過(guò)程,可以預(yù)示單片機(jī)的發(fā)展趨勢(shì),大致有:</p><p> 1.低功耗CMOS化</p><p><b> 2.微型單片化</b></p>&
14、lt;p> 3.主流與多品種共存</p><p> 第2章 彩燈硬件電路框架設(shè)計(jì)</p><p> 2.1 彩燈功能描述</p><p> 本次畢業(yè)設(shè)計(jì)主要完成功能有:</p><p> (1)當(dāng)按下開(kāi)關(guān)KEY1時(shí),彩燈依次一個(gè)一個(gè)點(diǎn)亮。</p><p> (2)當(dāng)按下開(kāi)關(guān)KEY2時(shí),彩燈每?jī)蓚€(gè)間隔點(diǎn)
15、亮。</p><p> (3)當(dāng)按下開(kāi)關(guān)KEY3時(shí),彩燈燈全部閃爍。</p><p> (4)當(dāng)按下開(kāi)關(guān)(順序)時(shí),以上3種點(diǎn)亮方式依次執(zhí)行一次。</p><p> (5)當(dāng)按下暫停開(kāi)關(guān)時(shí),保持彩燈當(dāng)前狀態(tài),松開(kāi)開(kāi)關(guān)時(shí),繼續(xù)運(yùn)行。</p><p> (6)當(dāng)按下中斷開(kāi)關(guān)時(shí),說(shuō)明彩燈系統(tǒng)出錯(cuò)了,所有紅燈亮,喇叭報(bào)警。(通過(guò)中斷假設(shè)出故障
16、)</p><p> (7)當(dāng)按下復(fù)位開(kāi)關(guān)時(shí),彩燈系統(tǒng)恢復(fù)到最初狀態(tài)。</p><p> 2.2 硬件電路設(shè)計(jì)框架</p><p> 根據(jù)設(shè)計(jì)要求,彩燈硬件電路框圖設(shè)計(jì)如圖2-1所示:</p><p> 圖2-1 彩燈設(shè)計(jì)框圖</p><p> 從框圖中可以看出本次畢業(yè)設(shè)計(jì)單元電路包括了由32只不同顏色組成的
17、發(fā)光電路、12MHz晶振組成的晶振電路、復(fù)位電路、錯(cuò)誤報(bào)警電路、開(kāi)關(guān)電路。</p><p> 2.3 系統(tǒng)硬件單元電路設(shè)計(jì)及論證</p><p> 2.3.1 晶振電路</p><p> 單片機(jī)工作所需要的時(shí)鐘信號(hào)有兩種產(chǎn)生方式,即內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。圖1是內(nèi)部時(shí)鐘方式,改圖中電容C1和C2取33PF,晶體的振蕩頻率取12MHz,晶體振蕩頻率高,則系統(tǒng)
18、的時(shí)鐘頻率也高,單片機(jī)運(yùn)行速度也就快。其實(shí)際連接如圖2-2所示:</p><p><b> 圖2-2 晶振電路</b></p><p> 2.3.2 復(fù)位電路</p><p> 復(fù)位電路如圖2-3所示。當(dāng)單片機(jī)一上電,立即復(fù)位。電容C和電阻實(shí)現(xiàn)上電自動(dòng)復(fù)位。復(fù)位也是使單片機(jī)推出低功耗工作方式而進(jìn)入正常狀態(tài)的一種操作。</p>
19、<p><b> 圖2-3 復(fù)位電路</b></p><p> 2.3.3 錯(cuò)誤報(bào)警電路</p><p> 錯(cuò)誤報(bào)警電路(如圖2-4)的設(shè)計(jì)僅僅由一個(gè)發(fā)聲裝置構(gòu)成,其主要的作用是當(dāng)系統(tǒng)發(fā)出錯(cuò)誤中斷信號(hào)時(shí),向p0.0口提供一個(gè)高電平,報(bào)警電路進(jìn)行錯(cuò)誤報(bào)警。</p><p> 圖2-4 錯(cuò)誤報(bào)警電路</p><
20、;p> 2.3.4 開(kāi)關(guān)電路</p><p> 開(kāi)關(guān)電路(如圖2-5)的設(shè)計(jì)由6個(gè)獨(dú)立的開(kāi)關(guān)按鈕組成,它們分別提供6個(gè)不同的中斷信號(hào),使彩燈完成不同的閃爍效果。 </p><p><b> 圖2-5 開(kāi)關(guān)電路</b></p><p> 2.3.5 發(fā)光電路</p><p> 紅、黃、綠、藍(lán)等
21、色彩的發(fā)光二極管32只,各接一個(gè)限流電阻便設(shè)計(jì)出如圖2-6所示的彩燈發(fā)光電路。</p><p> 圖2-6 部分彩燈連接原理圖</p><p> 第3章 彩燈系統(tǒng)軟件設(shè)計(jì)</p><p> 3.1 程序設(shè)計(jì)框圖</p><p> 本次程序設(shè)計(jì)采用的是C語(yǔ)言程序設(shè)計(jì),其設(shè)計(jì)框圖如圖3-1所示:</p><p>
22、 圖3-1 程序設(shè)計(jì)框圖</p><p> 3.2 子程序設(shè)計(jì)和功能介紹</p><p> 3.2.1 延時(shí)程序</p><p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b><
23、;/p><p> for(x=z;x>0;x--)</p><p> for(y=120;y>0;y--);</p><p><b> }</b></p><p> 程序中定義了一個(gè)返回值為空的delay函數(shù),里含一個(gè)形參——無(wú)符號(hào)整型變量z,還定義了無(wú)符號(hào)整型變量x、y,通過(guò)一個(gè)二重for循環(huán),完成多次
24、空操作,從而實(shí)現(xiàn)延時(shí)功能。</p><p> 3.2.2 初始化函數(shù)</p><p> void init()//定義一個(gè)返回值為空的init函數(shù)</p><p><b> {</b></p><p> EA=1;//開(kāi)放所有中斷</p><p> EX0=1;//允許外部中斷0中斷&
25、lt;/p><p> IT0=1;//外部中斷0的中斷觸發(fā)方式控制位置1,設(shè)置外部中0為邊沿觸發(fā)方式</p><p> ET0=1;//允許T0中斷(定時(shí)器/計(jì)數(shù)器T0的輸出中斷允許位)</p><p> TR0=0;//停止定時(shí)器/計(jì)數(shù)器0</p><p> TH0=(65536-30000)/256;</p><p
26、> TL0=(65536-30000)%256;</p><p> EX1=1;//允許外部中斷1中斷</p><p> IT1=0;//將外部中斷1的中斷觸發(fā)方式控制位置0,即設(shè)置外部中斷1為電平觸發(fā)方式</p><p> PX1=1;//將外部中斷1中斷優(yōu)先級(jí)控制位置1</p><p> ET1=1;//允許T1中斷<
27、;/p><p> TR1=0;//停止定時(shí)器/計(jì)數(shù)器1</p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p><b> P1=0xFF;</b></p><p> P2=0XFF;//將P1口和P2口置
28、1,在P1口和P2口引腳時(shí),應(yīng)先向鎖存器寫(xiě)"1"</p><p> temp1=0x7F;</p><p> temp2=0x7F;</p><p><b> cnt=8;</b></p><p><b> aa=0;</b></p><p>&l
29、t;b> bb=0;</b></p><p> key_int1=1;</p><p><b> key1=1;</b></p><p><b> key2=1;</b></p><p><b> key3=1;</b></p><
30、;p><b> key4=1;</b></p><p> temp_int1=key_int1;</p><p> temp_key1=key1;</p><p> temp_key2=key2;</p><p> temp_key3=key3;</p><p> temp_ke
31、y4=key4;</p><p><b> beep=1;</b></p><p><b> flag=0;</b></p><p> //分別對(duì)temp1、temp2、cnt、aa、bb、key_int1、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_
32、key3、temp_key4、beep、flag賦值</p><p><b> }</b></p><p> 該函數(shù)名為init,該段程序主要是對(duì)中斷優(yōu)先級(jí)、一些中斷控制位、某些變量等進(jìn)行初始化賦值。</p><p> 3.2.3 彩燈循環(huán)方式控制程序</p><p><b> 1.循環(huán)方式1</
33、b></p><p> void FUN1()</p><p><b> {</b></p><p> cnt=8; </p><p> temp1=0X7F;</p><p> temp2=0X7F; //對(duì)cnt、temp1、temp2進(jìn)行賦值</p>
34、<p> while(cnt!=0)//while循環(huán),若cnt不等于0循環(huán)繼續(xù),否則,跳出循環(huán)</p><p><b> {</b></p><p> cnt--;//變量cnt自減1</p><p> temp1=_crol_(temp1,1);</p><p> delay(500);//調(diào)用延
35、時(shí)子函數(shù)</p><p> P2=0xFF; //對(duì)p2口置1</p><p> P1=temp1; //將temp1的值賦給p1口</p><p> temp2=_crol_(temp2,1); //將temp2右移1位 </p><p> delay(500);//調(diào)用延時(shí)子函數(shù)</p><p>
36、 P1=0xFF; //對(duì)p1口置1 </p><p> P2=temp2; //將temp2的值賦給temp2</p><p><b> }</b></p><p> P1=0x0ff; </p><p> P2=0x0ff; //分別對(duì)P1、p2口置1</p&
37、gt;<p><b> }</b></p><p> 設(shè)計(jì)的此段程序的功能是實(shí)現(xiàn)依次一個(gè)一個(gè)的被點(diǎn)亮。</p><p><b> 2.循環(huán)方式2</b></p><p> void FUN2()</p><p><b> {</b></p>
38、<p> temp1=0xAA;</p><p> temp2=0xAA; //將二進(jìn)制數(shù)10101010賦給temp1、temp2</p><p> TR0=1; //啟動(dòng)定時(shí)器/計(jì)數(shù)器0</p><p> while(TR0==1);//while循環(huán),當(dāng)TR0等于1時(shí),進(jìn)行循環(huán)</p><p><
39、b> P1=0x0ff;</b></p><p> P2=0x0ff; //對(duì)p1口和p2口置1</p><p><b> }</b></p><p> 設(shè)計(jì)此段程序?qū)崿F(xiàn)的功能是每隔兩個(gè)間隔點(diǎn)亮一個(gè)燈。</p><p><b> 3.循環(huán)方式3</b></p&
40、gt;<p> void FUN3()</p><p><b> {</b></p><p> temp1=0x0;</p><p> temp2=0x0; //將0賦給temp1、temp2,驅(qū)動(dòng)彩燈發(fā)光</p><p> TR1=1; //啟動(dòng)定時(shí)器/計(jì)數(shù)器1</p>
41、<p> while(TR1==1); //while循環(huán),若TR1等于1,進(jìn)行循環(huán)</p><p><b> P1=0x0ff;</b></p><p> P2=0x0ff; //對(duì)p1口和p2口置1</p><p><b> }</b></p><p> 設(shè)
42、計(jì)此段程序是為了實(shí)現(xiàn)彩燈的全部閃爍。</p><p> 3.2.4 中斷服務(wù)程序</p><p> 1.外部中斷0服務(wù)程序</p><p> void _EX0_() interrupt 0</p><p><b> { </b></p><p> while(1) //wh
43、ile循環(huán),條件真即為1,便循環(huán)</p><p><b> {</b></p><p><b> P1=0x77;</b></p><p> P2=0xee; //對(duì)p1口和p2口賦值</p><p> beep=!beep;//對(duì)beep的值進(jìn)行取反</p><p>
44、; delay(100);//調(diào)用延時(shí)函數(shù)</p><p><b> }</b></p><p><b> }</b></p><p> 此段程序定義了一個(gè)返回值為空的_EX0_函數(shù),關(guān)鍵字interrupt后面的0表示終端號(hào),即表示的外部中斷0,中斷向量地址為0003H。</p><p>
45、 2.定時(shí)器0中斷服務(wù)程序</p><p> void _ET0_() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-50000)/256;//將計(jì)算出的值賦給定時(shí)器0的高8位</p><p> TL0=(65536-50000)%256;//將計(jì)算出的
46、值賦給定時(shí)器0的低8位</p><p> aa++; //aa的值自加1</p><p> if(aa!=20)//判斷aa的值是否等于20,若不得,則執(zhí)行循環(huán)</p><p><b> {</b></p><p><b> P1=temp1;</b></p><p>
47、; P2=temp2;//將temp1、temp2的狀態(tài)值賦給temp1、temp2</p><p> temp1=_cror_(temp1,1);</p><p> temp2=_cror_(temp2,1);//temp1、temp2右移1位</p><p> delay(500);//調(diào)用延時(shí)函數(shù)</p><p><b&
48、gt; }</b></p><p> else //當(dāng)aa的值等于20時(shí)</p><p><b> {</b></p><p> aa=0;//將0賦給aa</p><p> TR0=0;//停止定時(shí)器/計(jì)數(shù)器0</p><p> TH0=(65536-50000)/
49、256;</p><p> TL0=(65536-50000)%256;</p><p><b> }</b></p><p><b> }</b></p><p> 此段程序定義了一個(gè)返回值為空的_ET0_函數(shù),關(guān)鍵字interrupt后面的1表示終端號(hào),即表示定時(shí)器0,中斷向量地址是00
50、0B H。</p><p> 3.外部中斷1服務(wù)程序</p><p> void _EX1_() interrupt 2</p><p><b> {</b></p><p><b> PX1=0;</b></p><p> PX0=1;//設(shè)置外部中斷1、外部中斷
51、0的優(yōu)先級(jí)</p><p> temp_int1=key_int1;//將key_int1的值賦給temp_int1</p><p> while(temp_int1==0)//while循環(huán),若temp_int1的值等于0,循環(huán)</p><p><b> {</b></p><p> temp_int1=key
52、_int1;//將key_int1的值賦給temp_int1</p><p><b> }</b></p><p><b> PX0=0;</b></p><p> PX1=1;//設(shè)置外部中斷0、外部中斷1的優(yōu)先級(jí)</p><p><b> }</b></p&g
53、t;<p> 此段程序定義了一個(gè)返回值為空的_EX1_函數(shù),關(guān)鍵字interrupt后面的2表示終端號(hào),即表示外部中斷1,其中斷向量地址為0013H。</p><p> 4.定時(shí)器1中斷服務(wù)程序</p><p> void _ET1_() interrupt 3</p><p><b> {</b></p>
54、<p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p><b> bb++;</b></p><p> if(bb!=20)</p><p><b> {</b></p><p&g
55、t;<b> P1=temp1;</b></p><p><b> P2=temp2;</b></p><p> temp1=~temp1;</p><p> temp2=~temp2;</p><p> delay(500);</p><p><b>
56、 }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> bb=0;</b></p><p><b> TR1=0;</b></p><p>
57、TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p><b> }</b></p><p><b> }</b></p><p> 此段程序定義了一個(gè)返回值為空的_ET1_函數(shù),關(guān)鍵字interrupt后面的3表示終端
58、號(hào),即表示定時(shí)器1,其中斷向量地址為001BH。</p><p><b> 第4章 系統(tǒng)調(diào)試</b></p><p> 單片機(jī)硬件和軟件調(diào)試的工具分別為:protues 和Keil C51調(diào)試軟件。</p><p><b> 4.1 軟件調(diào)試</b></p><p> 單片機(jī)軟件調(diào)試主要是調(diào)
59、試本次課程設(shè)計(jì)的主程序。其調(diào)試過(guò)程如下:</p><p> ?。?)新建一個(gè)工程。單擊Project菜單,在彈出的下拉菜單中選New Project。</p><p> ?。?)然后選擇你要保存的路徑,輸入工程文件的名字,保存。</p><p> ?。?)新建一個(gè)工程后彈出一個(gè)對(duì)話框,根據(jù)你的需要選擇你使用的單片機(jī)型號(hào)。然后點(diǎn)擊確定。</p><
60、p> ?。?)單擊“File”,選擇“New”,新建文件并在其中輸入程序代碼,然后保存為c語(yǔ)言文件。</p><p> ?。?)回到編輯界面后,單擊“Target 1”前面的“+”號(hào),然后在“Source Group 1”單擊右鍵選擇“Add File To Group ‘Source Group 1’”,選中Test.c文件。</p><p> ?。?)單擊“Project”菜單,
61、選中“Built Target”,完成程序的編譯,在工程文件夾中找到*.hex文件即可。</p><p><b> 4.2 硬件調(diào)試</b></p><p> 單片機(jī)硬件調(diào)試是檢測(cè)在設(shè)計(jì)電路時(shí),電路中存在的一些缺陷,故硬件調(diào)試是必不可少的,其步驟大致如下:</p><p> ?。?)打開(kāi)軟件Protues,將設(shè)計(jì)好的單片機(jī)硬件電路打開(kāi)。&l
62、t;/p><p> ?。?)在確定電路已經(jīng)連接完成后,雙擊AT89C51單片機(jī)加入*.hex文件。</p><p> (3)單擊軟件最左下方的Play按鈕。</p><p> 若無(wú)異常,當(dāng)按下某一按鍵時(shí),能完成以下功能時(shí),則表示設(shè)計(jì)調(diào)試通過(guò)。</p><p> ?。?)當(dāng)按下開(kāi)關(guān)KEY1時(shí),彩燈依次一個(gè)一個(gè)點(diǎn)亮。</p><
63、;p> (2)當(dāng)按下開(kāi)關(guān)KEY2時(shí),彩燈每?jī)蓚€(gè)間隔點(diǎn)亮。</p><p> ?。?)當(dāng)按下開(kāi)關(guān)KEY3時(shí),彩燈燈全部閃爍。</p><p> ?。?)當(dāng)按下開(kāi)關(guān)(順序)時(shí),以上3種點(diǎn)亮方式依次執(zhí)行一次。</p><p> ?。?)當(dāng)按下暫停開(kāi)關(guān)時(shí),保持彩燈當(dāng)前狀態(tài),松開(kāi)開(kāi)關(guān)時(shí),繼續(xù)運(yùn)行。</p><p> ?。?)當(dāng)按下中斷開(kāi)關(guān)時(shí),說(shuō)
64、明彩燈系統(tǒng)出錯(cuò)了,所有紅燈亮,喇叭報(bào)警。(通過(guò)中斷假設(shè)出故障)</p><p> ?。?)當(dāng)按下復(fù)位開(kāi)關(guān)時(shí),彩燈系統(tǒng)恢復(fù)到最初狀態(tài)。</p><p> 第5章 畢業(yè)設(shè)計(jì)總結(jié)</p><p> 大學(xué)三年就會(huì)在這最后的畢業(yè)設(shè)計(jì)總結(jié)劃上一個(gè)圓滿的句號(hào)。我曾經(jīng)以為時(shí)間是一個(gè)不快不慢的東西,但現(xiàn)在我感到時(shí)間過(guò)的是多么的飛快,三年了,感覺(jué)就在一眨眼之間結(jié)束了我的大學(xué)生涯。最
65、能把理論知識(shí)運(yùn)用到實(shí)踐當(dāng)中的過(guò)程就數(shù)畢業(yè)設(shè)計(jì)了。在整個(gè)畢業(yè)設(shè)計(jì)的過(guò)程中每一步都是自己親自做過(guò)的,遇到的問(wèn)題也非常多,在經(jīng)過(guò)遇到問(wèn)題,思索問(wèn)題到解決問(wèn)題的過(guò)程中,收獲是最多的。以往沒(méi)有注意到的問(wèn)題,都在這一次的畢業(yè)設(shè)計(jì)中得以體現(xiàn),這培養(yǎng)了我的細(xì)心,耐心和專(zhuān)心。我覺(jué)得能夠在這次的畢業(yè)設(shè)計(jì)中學(xué)到很多的東西,以往不注意的細(xì)節(jié),在這一次中是必須讓自己去注意的。也是我這三年來(lái)所學(xué)到知識(shí)的一個(gè)體現(xiàn)。我深深知道,每一次的學(xué)習(xí)實(shí)踐環(huán)節(jié)都是那么的來(lái)之不易,
66、都是通過(guò)老師的深思熟慮后,才給我們定下目標(biāo)。然后讓我們?cè)谥R(shí)的海洋里翱翔,讓我們隨著年齡的增長(zhǎng)不斷的擴(kuò)充自己的知識(shí)領(lǐng)域,也逐漸成熟,逐漸長(zhǎng)大,老師同時(shí)也教導(dǎo)我們逐漸成為一個(gè)能夠?yàn)樯磉叺娜耍瑸榧彝?,為?guó)家做出點(diǎn)點(diǎn)貢獻(xiàn)的人,教導(dǎo)我們學(xué)會(huì)感恩。所以,我在這次的畢業(yè)設(shè)計(jì)中,認(rèn)真對(duì)待每一個(gè)過(guò)程,希望自己的認(rèn)真,自己最后的畢業(yè)設(shè)計(jì)的成果能夠回報(bào)老師這么多年來(lái)的教導(dǎo),這么多年的奉獻(xiàn)。</p><p> 最后,由于理論方面所學(xué)
67、有限,理解又不好,再加之動(dòng)手能力的匱乏,在這次畢業(yè)設(shè)計(jì)中難免會(huì)有錯(cuò)誤,還望老師批評(píng)指正。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]林志琦.單片機(jī)原理接口及應(yīng)用.北京:中國(guó)水利水電出版社,2007</p><p> [2]胡輝.單片機(jī)原理與應(yīng)用.北京:中國(guó)水利水電出版社,2007</p>&
68、lt;p> [3]趙文博.單片機(jī)語(yǔ)言C51程序設(shè)計(jì).北京:人民郵電出版社,2005</p><p> [4]譚浩強(qiáng).c程序設(shè)計(jì).北京:清華大學(xué)出版社,1991</p><p> 附錄1 彩燈電路總圖及元器件清單</p><p><b> 元器件清單:</b></p><p> AT89C51一個(gè)、
69、按鍵7個(gè)、發(fā)光二極管32只(不同色)、石英晶振器1個(gè)、電容2個(gè)、極性電容1個(gè)、電阻和導(dǎo)線若</p><p> 附錄2 彩燈整體程序</p><p> #include <reg51.h>//將51單片機(jī)的寄存器包含在頭文件中</p><p> #include <intrins.h>//將內(nèi)部函數(shù)包含在頭文件中</p>&
70、lt;p> #define uint unsigned int//宏定義,用uint代替unsigned int(無(wú)符號(hào)整型變量)</p><p> #define uchar unsigned char//宏定義,用uchar代替unsigned char(無(wú)符號(hào)字符變量)</p><p> uchar temp_int1;</p><p> uch
71、ar temp1;</p><p> uchar temp2;</p><p> uchar temp_key1;</p><p> uchar temp_key2;</p><p> uchar temp_key3;</p><p> uchar temp_key4;//定義無(wú)符號(hào)字符變量temp_int1
72、、temp1、temp2、temp_key1、temp_key2、temp_key3、temp_key4</p><p><b> uint cnt;</b></p><p><b> uint aa;</b></p><p><b> uint bb;</b></p><p
73、> uint flag;//定義無(wú)符號(hào)整型變量cnt、aa、bb、flag</p><p> sbit key1=P0^2;</p><p> sbit key2=P0^3;</p><p> sbit key3=P0^4;</p><p> sbit key4=P0^1;</p><p> sbit
74、 key_int1=P3^3;</p><p> sbit beep=P0^0;//用key1、key2、key3、key4、key_int1、beep代替P0^2、P0^3、P0^4、P0^1、P3^3、P0^0</p><p><b> //延時(shí)函數(shù)</b></p><p> void delay(uint z)//定義了一個(gè)返回值為
75、空的delay函數(shù),里含一個(gè)形參——無(wú)符號(hào)整型變量z</p><p><b> {</b></p><p> uint x,y;//定義了無(wú)符號(hào)整型變量x、y</p><p> for(x=z;x>0;x--)</p><p> for(y=120;y>0;y--);//二重for循環(huán),外循環(huán)循環(huán)z(
76、z的值在delay函數(shù)被調(diào)用時(shí)得到)次,內(nèi)循環(huán)循環(huán)120次,其循環(huán)語(yǔ)句均為空操作,從而實(shí)現(xiàn)延時(shí)功能</p><p><b> }</b></p><p><b> //初始化函數(shù)</b></p><p> void init()//定義一個(gè)返回值為空的init函數(shù)</p><p><b&
77、gt; {</b></p><p> EA=1;//開(kāi)放所有中斷</p><p> EX0=1;//允許外部中斷0中斷</p><p> IT0=1;//外部中斷0的中斷觸發(fā)方式控制位置1,即設(shè)置外部中0為邊沿觸發(fā)方式</p><p> ET0=1;//允許T0中斷(定時(shí)器/計(jì)數(shù)器T0的輸出中斷允許位)</p&g
78、t;<p> TR0=0;//停止定時(shí)器/計(jì)數(shù)器0</p><p> TH0=(65536-30000)/256;</p><p> TL0=(65536-30000)%256;</p><p> EX1=1;//允許外部中斷1中斷</p><p> IT1=0;//將外部中斷1的中斷觸發(fā)方式控制位置0,即設(shè)置外部中斷
79、1為電平觸發(fā)方式</p><p> PX1=1;//將外部中斷1中斷優(yōu)先級(jí)控制位置1</p><p> ET1=1;//允許T1中斷</p><p> TR1=0;//停止定時(shí)器/計(jì)數(shù)器1</p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%2
80、56;</p><p><b> P1=0xFF;</b></p><p> P2=0XFF;//將P1口和P2口置1,因?yàn)樵赑1口和P2口引腳時(shí),應(yīng)先向鎖存器寫(xiě)"1"</p><p> temp1=0x7F;</p><p> temp2=0x7F;</p><p>
81、<b> cnt=8;</b></p><p><b> aa=0;</b></p><p><b> bb=0;</b></p><p> key_int1=1;</p><p><b> key1=1;</b></p><
82、p><b> key2=1;</b></p><p><b> key3=1;</b></p><p><b> key4=1;</b></p><p> temp_int1=key_int1;</p><p> temp_key1=key1;</p>
83、;<p> temp_key2=key2;</p><p> temp_key3=key3;</p><p> temp_key4=key4;</p><p><b> beep=1;</b></p><p> flag=0;//分別對(duì)temp1、temp2、cnt、aa、bb、key_int1、
84、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_key3、temp_key4、beep、flag賦值</p><p><b> }</b></p><p><b> //彩燈方式1</b></p><p> void FUN1()</p>&
85、lt;p><b> {</b></p><p><b> cnt=8;</b></p><p> temp1=0X7F;</p><p> temp2=0X7F;</p><p> while(cnt!=0)</p><p><b> {</
86、b></p><p><b> cnt--;</b></p><p> temp1=_crol_(temp1,1);</p><p> delay(500);</p><p><b> P2=0xFF;</b></p><p><b> P1=tem
87、p1;</b></p><p> temp2=_crol_(temp2,1); </p><p> delay(500);</p><p> P1=0xFF; </p><p><b> P2=temp2;</b></p><p><b> }</
88、b></p><p><b> P1=0x0ff;</b></p><p><b> P2=0x0ff;</b></p><p><b> }</b></p><p><b> //彩燈方式2</b></p><p>
89、 void FUN2()</p><p><b> {</b></p><p> temp1=0xAA;</p><p> temp2=0xAA;</p><p><b> TR0=1;</b></p><p> while(TR0==1);</p>
90、<p><b> P1=0x0ff;</b></p><p><b> P2=0x0ff;</b></p><p><b> }</b></p><p><b> //彩燈方式3</b></p><p> void FUN3()<
91、;/p><p><b> {</b></p><p> temp1=0x0;</p><p> temp2=0x0;</p><p><b> TR1=1;</b></p><p> while(TR1==1); </p><p><
92、;b> P1=0x0ff;</b></p><p><b> P2=0x0ff;</b></p><p><b> }</b></p><p><b> //主函數(shù)</b></p><p> void main()</p><p&
93、gt;<b> { </b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> temp_key1=key1;</p>
94、<p> temp_key2=key2;</p><p> temp_key3=key3;</p><p> temp_key4=key4;</p><p> if(temp_key4==0)</p><p><b> {</b></p><p><b> del
95、ay(5);</b></p><p> temp_key4=key4;</p><p> if(temp_key4==0)//三種彩燈方式依次執(zhí)行</p><p><b> {</b></p><p><b> FUN1();</b></p><p>
96、;<b> FUN2();</b></p><p><b> FUN3();</b></p><p><b> }</b></p><p><b> }</b></p><p> if(temp_key1==0)</p>&l
97、t;p><b> {</b></p><p><b> delay(5);</b></p><p> temp_key1=key1;</p><p> if(temp_key1==0)</p><p><b> {</b></p><p>
98、; FUN1();//執(zhí)行彩燈方式1</p><p><b> }</b></p><p><b> }</b></p><p> if(temp_key2==0)</p><p><b> {</b></p><p><b>
99、; delay(5);</b></p><p> temp_key2=key2;</p><p> if(temp_key2==0)</p><p><b> {</b></p><p> FUN2();//執(zhí)行彩燈方式2</p><p><b> }<
100、;/b></p><p><b> }</b></p><p> if(temp_key3==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> temp_key3=key3
101、;</p><p> if(temp_key3==0)</p><p><b> {</b></p><p> FUN3();//執(zhí)行彩燈方式3</p><p><b> }</b></p><p><b> }</b></p>
102、;<p><b> }</b></p><p><b> }</b></p><p> //外部中斷0服務(wù)程序</p><p> void _EX0_() interrupt 0</p><p><b> {</b></p><p&
103、gt;<b> while(1)</b></p><p><b> {</b></p><p><b> P1=0x77;</b></p><p><b> P2=0xee;</b></p><p> beep=!beep;</p>
104、<p> delay(100);</p><p><b> }</b></p><p><b> }</b></p><p> //定時(shí)器0中斷服務(wù)程序</p><p> void _ET0_() interrupt 1</p><p><b>
105、; {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256; </p><p><b> aa++;</b></p><p> if(aa!=20)</p><p><b> {&
106、lt;/b></p><p><b> P1=temp1;</b></p><p><b> P2=temp2;</b></p><p> temp1=_cror_(temp1,1);</p><p> temp2=_cror_(temp2,1);</p><p&g
107、t; delay(500);</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> aa=0;</b></p><p><
108、;b> TR0=0;</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> }</b></p><p><b> }</b></p><p>
109、; //外部中斷1服務(wù)程序</p><p> void _EX1_() interrupt 2</p><p><b> {</b></p><p><b> PX1=0;</b></p><p><b> PX0=1;</b></p><p>
110、; temp_int1=key_int1;</p><p> while(temp_int1==0)</p><p><b> {</b></p><p> temp_int1=key_int1;</p><p><b> }</b></p><p><b
111、> PX0=0;</b></p><p><b> PX1=1;</b></p><p><b> }</b></p><p> //定時(shí)器1中斷服務(wù)程序</p><p> void _ET1_() interrupt 3</p><p><
112、b> {</b></p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p><b> bb++;</b></p><p> if(bb!=20)</p><p><b>
113、{</b></p><p><b> P1=temp1;</b></p><p><b> P2=temp2;</b></p><p> temp1=~temp1;</p><p> temp2=~temp2;</p><p> delay(500);&
114、lt;/p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> bb=0;</b></p><p><b> TR1=0;<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--彩燈循環(huán)控制電路系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)彩燈循環(huán)點(diǎn)亮的plc控制
- 畢業(yè)設(shè)計(jì)---循環(huán)彩燈控制電路設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----節(jié)日彩燈循環(huán)閃亮控制器
- 音樂(lè)彩燈控制畢業(yè)設(shè)計(jì)
- 彩燈循環(huán)電路的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 循環(huán)彩燈控制器設(shè)計(jì)畢業(yè)論文
- 彩燈控制系統(tǒng)課程設(shè)計(jì)報(bào)告
- 畢業(yè)設(shè)計(jì)----音樂(lè)彩燈控制器
- 基于單片機(jī)的彩燈循環(huán)控制器畢業(yè)設(shè)計(jì)
- 八路彩燈循環(huán)控制設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---可編程控制器 舞臺(tái)彩燈控制系統(tǒng)設(shè)計(jì)
- 基于plc的花樣彩燈控制系統(tǒng)設(shè)計(jì)
- 循環(huán)彩燈課程設(shè)計(jì)
- 課程設(shè)計(jì)---循環(huán)彩燈
- 循環(huán)彩燈控制器設(shè)計(jì)課程設(shè)計(jì)
- 可編程彩燈控制器畢業(yè)設(shè)計(jì)
- 節(jié)日彩燈循環(huán)閃亮控制器
- 畢業(yè)設(shè)計(jì)-音樂(lè)節(jié)奏彩燈控制器設(shè)計(jì)
- 單片機(jī)led彩燈循環(huán)控制畢業(yè)論文
評(píng)論
0/150
提交評(píng)論