單片機課設(shè)報告-基于單片機的彩燈控制器電路設(shè)計_第1頁
單片機課設(shè)報告-基于單片機的彩燈控制器電路設(shè)計_第2頁
單片機課設(shè)報告-基于單片機的彩燈控制器電路設(shè)計_第3頁
單片機課設(shè)報告-基于單片機的彩燈控制器電路設(shè)計_第4頁
單片機課設(shè)報告-基于單片機的彩燈控制器電路設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

武漢理工大學(xué)華夏學(xué)院課程設(shè)計報告書課 程 名 稱 單片機原理及應(yīng)用課程設(shè)計 課程設(shè)計總評成績_ 學(xué)生姓名、學(xué) 號 李 唱 學(xué) 生 專 業(yè) 班級 電信1131 指 導(dǎo) 教 師 姓名 李文彥 課程設(shè)計起止日期 1 月04日1月15日 單片機課程設(shè)計任務(wù)書題 目: 基于單片機的彩燈控制器電路設(shè)計 初始條件: 1、51單片機 2、四位一體共陽數(shù)碼管要求完成的主要任務(wù): 1、LED彩燈花樣變幻 2、LED彩燈閃爍速度的加速、減速 3、暫停和復(fù)位 4、花樣模式數(shù)碼管顯示 時間安排: 序號階 段 內(nèi) 容所需時間1方案選擇及電路設(shè)計5天2制作、編程、調(diào)試5天3撰寫課程設(shè)計報告及答辯4天合 計2周指導(dǎo)教師簽名: 年 月 日 基于單片機的彩燈控制器系統(tǒng)設(shè)計作者: 李唱武漢理工大學(xué)華夏學(xué)院信息工程系摘要: 基于單片機的LED流水燈的應(yīng)用十分廣泛,由單片機作為的核心控制器,通過按鍵實現(xiàn)控制功能和數(shù)據(jù)輸入是非常普遍的。通常在所需按鍵數(shù)量不多時,系統(tǒng)常采用獨立式按鍵。這種按鍵的電路配置靈活,軟件結(jié)構(gòu)簡單。由于實際應(yīng)用中,不同系統(tǒng)對按鍵的要求不同,因此,對按鍵程序的設(shè)計要考慮全面,以便更好地完成按鍵所設(shè)定的功能,簡述了該系統(tǒng)中一些重要芯片的基本工作原理,著重論述了硬件線路各個模塊的設(shè)計思想。進而熟練掌握相關(guān)專業(yè)基礎(chǔ)知識的綜合應(yīng)用,提高學(xué)生的實際動手和設(shè)計能力。 本系統(tǒng)是基于AT89C51系列單片機為核心的LED彩燈設(shè)計,實現(xiàn)8個LED燈變化方向和速度的可調(diào)。 關(guān)鍵詞:單片機 獨立式按鍵 LED1、總體設(shè)計方案本方案主要有硬件部分和程序部分構(gòu)成。硬件部分主要由單片機最小系統(tǒng)和輸入輸出設(shè)備構(gòu)成。 首先搭建單片機最小系統(tǒng),包括電源電路,手動復(fù)位電路,時鐘電路。時鐘電路才用內(nèi)部時鐘方式,手動復(fù)位電路采用按鍵電平復(fù)位方式。再根據(jù)要求在P2口串接8個發(fā)光二極管作為輸出設(shè)備,分別通過限流電阻接電源,在P3口串接2個獨立按鍵,作為輸入設(shè)備。通過獨立按鍵控制LED燈的閃爍和移動及速率變化。同時在P1口連接一個數(shù)碼管顯示電路,用于自動計時,實現(xiàn)自動改變LED彩色流水燈的樣式。 程序部分設(shè)定T0為定時工作方式,T0每隔一定的時間掃描獨立按鍵,當(dāng)檢測到某個鍵按下時,在主函數(shù)中執(zhí)行相應(yīng)的程序。程序框圖如圖1所示:開始設(shè)置定時器工作方式開中斷啟動定時器判斷count1的值,強制轉(zhuǎn)換燈的閃爍樣式判斷count2的值確定速率數(shù)碼管計時10s之后,自動改變樣式圖12、硬件原理2.1 AT89C51單片機簡介:AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89S51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。AT89C51單片機示意圖VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時當(dāng)8051通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指鐘寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài), 特殊功能寄存器 初始態(tài) 特殊功能寄存器 初始態(tài) ACC 00H B 00H PSW 00H SP 07H DPH 00H TH0 00H DPL 00H TL0 00H IP xxx00000B TH1 00H IE 0xx00000B TL1 00H TMOD 00H TCON 00H SCON xxxxxxxxB SBUF 00H P0-P3 1111111B PCON 0xxxxxxxB 8051的初始態(tài)(4-2-2)ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。芯片擦除:整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89S51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。3、 電路設(shè)計3.1整體仿真電路圖如圖2所示:圖23.2各部分模塊原理各模塊原理介紹如下:3.2.1單片機最小系統(tǒng)首先搭建單片機最小系統(tǒng),包括電源電路,手動復(fù)位電路,時鐘電路。時鐘電路才用內(nèi)部時鐘方式,手動復(fù)位電路采用按鍵電平復(fù)位方式。時鐘電路用于產(chǎn)生AT89C51單片機工作時所必需的時鐘信號。AT89C51單片機的內(nèi)部電路在時鐘信號的控制下,嚴(yán)格地按時序執(zhí)行指令進行工作。復(fù)位是單片機的初始化操作,除了進入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài),通過復(fù)位按鍵可使單片機重新啟動。如圖3所示:圖33.2.2外圍電路外圍電路主要有輸入設(shè)備和輸出設(shè)備。輸入設(shè)備主要由2個獨立按鍵構(gòu)成,如圖4所示。輸出設(shè)備由8個二極管構(gòu)成,如圖5所示,及七段數(shù)碼管顯示電路,如圖6所示。其中s1鍵控制8個二極管的花樣顯示,s2控制8個二極管點亮的速率。數(shù)碼管用于計時10s,10s之后自動轉(zhuǎn)換二極管顯示樣式,如果10s之內(nèi)有s1按鍵按下,則強制執(zhí)行s1按鍵的內(nèi)容。其中二極管的保護電阻的取值范圍為220-880歐姆之間。 圖4 圖5s1鍵按一下,二極管從上往下單向點亮,哪個送入的是0,就點亮哪個燈,然后依次使0右移,實現(xiàn)依次點亮;按兩下,二極管雙向移動點亮;按三下,二極管4個交替閃爍;按四下,二極管8個交替閃爍;按五下,8個二極管依次點亮,依次熄滅;從而實現(xiàn)二極管的花樣顯示;s2鍵按下,通過延時程序,可以改變二極管點亮的速率。 圖6數(shù)碼管顯示電路,通過往p1.0p1.6寫入0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90會顯示數(shù)字09,自動計時10s;如果10s之內(nèi)沒有按鍵按下,則10s之后,二極管自動改變顯示樣式,如果10s之內(nèi)有按鍵按下,則強制執(zhí)行按鍵內(nèi)容。4 、核心代碼本設(shè)計主要的模塊就是輸出設(shè)備中的8個二極管及七段數(shù)碼管顯示電路,分別如上圖的5、6所示。4 .1 其中控制8個二極管花樣點亮的程序如下,重點以花樣1為說明:if(count1=1) /花樣1: 燈單向向下移模塊子程序 if(count2=1) rate=rate1; /如果s2鍵按一下,執(zhí)行速率1 if(count2=2) rate=rate2; /如果s2鍵按兩下,執(zhí)行速率2 P2=0xfe; /給p2端口送入初值,這時D1點亮 delay(rate); temp=P2; for(i=0;i8;i+) /通過延時及循環(huán),依次點亮D2D8 if(count1=1) temp=_crol_(temp,1); P2=temp; if(count2=1) /并隨時判斷是否有s2鍵按下 rate=rate1; if(count2=2) rate=rate2; delay(rate); if(i=7) i=0; 4 .2 七段數(shù)碼管顯示電路的程序如下:unsigned char code table210=0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /定義數(shù)碼管0-9數(shù)字顯示的表 void display(unsigned char j)P1= table2j/10; /通過片選使兩位數(shù)碼管分別顯示數(shù)字,但是延時時間小,可以實現(xiàn)兩位數(shù)碼管同時顯示 S3 = 1; delay(10); S3 = 0;P1= table2j%10; S4 = 1; delay(10); S4 = 0; 中斷服務(wù)程序如下:void timer0() interrupt 1 TH0=(65536-50000)/256; /T0重新裝初值 TL0=(65536-50000)%256; count+; display(table2index); if(table2index=0 & count=1) /如果數(shù)碼管顯示數(shù)字0時改變流水燈的樣式 count1+; if(count1=6) count1=1; /如果五個花樣顯示完了之后,再按下按鍵S1或數(shù)碼管計數(shù)到10時,再重新從花樣1顯示 if(count=20) /累加計數(shù)器的次數(shù),如果到20次的話數(shù)碼管數(shù)字通過查表自動加1顯示 count=0; table2index=table2index+1; if(table2index=11) table2index=0; if(S1=0) /檢測是否是S1按下 delay(5); /軟件延時消抖 if(S1=0) /再次檢測S1是否確實按下 table2index=0; count1+; /如果s1確實按下,則執(zhí)行s1內(nèi)容 while(!S1); /如果s1沒有按下,繼續(xù)執(zhí)行原來的花樣顯示 if(count1=6) count1=1; if(S2=0) /檢測是否是S2按下 delay(5); /軟件延時消抖 if(S2=0) /再次檢測S2是否確實按下 count2+; while(!S2); /如果s2沒有按下,則繼續(xù)執(zhí)行原來的速率 if(count2=3) count2=1;5 、參考文獻1 C語言程序設(shè)計教程科學(xué)出版社2 單片微型計算機與接口技術(shù)第四版,電子工業(yè)出版社3 單片機原理及應(yīng)用機械工業(yè)出版社4 單片機實用系統(tǒng)設(shè)計技術(shù)國防工業(yè)出版社5 單片機應(yīng)用系統(tǒng)設(shè)計北航出版社附件:附錄一:電路原理圖附錄二:PCB仿真圖附錄三:源程序/目的:實現(xiàn)基于單片機的LED流水燈控制/語言:C; /變量: S1:P3.4口 S2:P3.5口 S3:P3.6口 S4:P3.7口 table1:流水燈樣式控制 table2:數(shù)碼管-9數(shù)字/變量:temp:臨時變量i:臨時變量table2index:存儲table2的下標(biāo)/變量:count:累加計數(shù)器次數(shù) count1:累加單擊第一個按鍵次數(shù)count2:累加單擊第二個按鍵次數(shù) /變量:rate:速度變量rate1:速度變量rate2:速度變量#include#includesbit S1=P34; sbit S2=P35;sbit S3=P36;sbit S4=P37;unsigned char code table19=0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00; /流水燈樣式控制unsigned char code table210=0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /數(shù)碼管-9數(shù)字 unsigned char temp,i,table2index=0;unsigned char count1=0,count2=0,count=0; unsigned char rate=100 ,rate1=100,rate2=500; /*/Begin-延遲 void delay(unsigned char z) unsigned int x,y; for(x=z;x0;x-) for(y=100;y0;y-);/End-延遲/*/Begin-數(shù)碼管數(shù)字顯示void display(unsigned char j) P1= table2j/10; S3 = 1; delay(10); S3 = 0; P1= table2j%10; S4 = 1; delay(10); S4 = 0; /End-數(shù)碼管數(shù)字顯示/*void main() P1=0xff; TMOD=0x01; /設(shè)置定時器T0為工作方式 TH0=(65536-50000)/256; /定時器賦初值 TL0=(65536-50000)%256; EA=1; /開總中斷 ET0=1; /開啟定時器T0中斷 TR0=1; /啟動定時器T0 while(1)/*/Begin-流水燈樣式控制/Begin-花樣 if(count1=1) /花樣:燈單向向下移模塊子程序 if(count2=1) rate=rate1; if(count2=2) rate=rate2; P2=0xfe;delay(rate); temp=P2; for(i=0;i8;i+) if(count1=1) temp=_crol_(temp,1); P2=temp; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); if(i=7) i=0; /End-花樣 /* /Begin-花樣 if(count1=2) /花樣:燈雙向移模塊子程序 P2=0x7f; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); temp=P2; for(i=0;i7;i+) if(count1=2) temp=_cror_(temp,1); P2=temp; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); for(i=0;i7;i+) if(count1=2) temp=_crol_(temp,1); P2=temp; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); /End-花樣/*/Begin-花樣 if(count1=3) /花樣:個交替閃爍模塊子程序 P2=0xf0; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); P2=0x0f; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); if(count1=4) /花樣:八個燈交替閃爍模塊子程序 P2=0xff; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); if(count1=4) P2=P2; if(count2=1) rate=rate1; if(count2=2) rate=rate2; delay(rate); if(count1=5) /花

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論