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