單片機(jī)課程教學(xué)設(shè)計(jì)-16個LED燈的多樣顯示控制器_第1頁
單片機(jī)課程教學(xué)設(shè)計(jì)-16個LED燈的多樣顯示控制器_第2頁
單片機(jī)課程教學(xué)設(shè)計(jì)-16個LED燈的多樣顯示控制器_第3頁
單片機(jī)課程教學(xué)設(shè)計(jì)-16個LED燈的多樣顯示控制器_第4頁
單片機(jī)課程教學(xué)設(shè)計(jì)-16個LED燈的多樣顯示控制器_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、信息工程學(xué)院課程設(shè)計(jì)報(bào)節(jié)日彩燈控制器設(shè)計(jì)稱:電子信息工程專業(yè)綜合課程設(shè)計(jì)(1)評閱成績:.評閱教師:設(shè)計(jì)時間:2016.06.22指導(dǎo)教師:目錄1.課程設(shè)計(jì)的性質(zhì)和目的課程設(shè)計(jì)的要求2.1設(shè)計(jì)題目2.2設(shè)計(jì)要求1.主要儀器設(shè)備及軟件四、課題分析及設(shè)計(jì)2.4.1設(shè)計(jì)任務(wù)2.4.2設(shè)計(jì)方案2.4.3系統(tǒng)硬件設(shè)計(jì)2.4.3.1單片機(jī)最小系統(tǒng)4.3.2控制電路介紹4.3.3 Proteus電路仿真圖4.4軟件設(shè)計(jì)4.4.1程序流程圖4.4.2軟件程序及分析五、組裝調(diào)試125.1硬件12六、總結(jié)1.3、課程設(shè)計(jì)的性質(zhì)和目的學(xué)習(xí)基本理論在實(shí)踐中綜合運(yùn)用的初步經(jīng)驗(yàn), 掌握電路設(shè)計(jì)的基本方法、設(shè) 計(jì)步驟,培養(yǎng)

2、綜合設(shè)計(jì)與調(diào)試能力;掌握匯編語言程序設(shè)計(jì)方法;培養(yǎng)實(shí)踐技能, 提高分析和解決實(shí)際問題的能力。、課程設(shè)計(jì)的要求2.1設(shè)計(jì)題目節(jié)日彩燈控制器設(shè)計(jì)。2.2設(shè)計(jì)要求設(shè)計(jì)一個16個LED丁的多樣顯示控制器。1.選擇兩個I/O端口控制16個LED流水燈。2.設(shè)置四個按鍵K1K4,按下K1跑馬燈,K2鴛鴦戲水,K3雙流水燈,a則循環(huán)三種控制方式。3.跑馬燈:共16個LED逐次點(diǎn)亮,每隔100msS亮一個 LED,點(diǎn)亮 100ms后關(guān)閉,然后繼續(xù)上次操作。4.鴛鴦戲水燈:第一次單數(shù)燈點(diǎn)亮,延時100ms關(guān)閉,然后雙數(shù)燈點(diǎn)亮,延時100ms關(guān)閉,然后繼續(xù)上次操作。間隔100ms再依次向兩邊擴(kuò)散5.雙流水燈:16

3、個LED依次向中間點(diǎn)亮,點(diǎn)亮,間隔100ms然后繼續(xù)上次操作。三、主要儀器設(shè)備及軟件計(jì)算機(jī)、KeilC51軟件、Proteus軟件、單片機(jī)AT89C51 LED燈、電阻、撥碼開關(guān)、晶振。四、課題分析及設(shè)計(jì)4.1設(shè)計(jì)任務(wù)彩燈用16個發(fā)光二極管代替;電路具有控制16個LED燈逐個點(diǎn)亮、單數(shù)點(diǎn) 亮、雙數(shù)點(diǎn)亮、擴(kuò)散點(diǎn)亮等功能(用 4個按鍵切換LED顯示狀態(tài));彩燈兩燈移 動時間間隔為100ms4.2設(shè)計(jì)方案本課題使用AT89C51單片機(jī)時無須外擴(kuò)存儲器。因此,本流水燈實(shí)際上就是 一個帶有16個發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、 復(fù)位、電源等電路和必要的軟件組成的單個單片機(jī)。如果要

4、讓接在 P0.0 口和P2.0 口的16個LED亮起來,那么只要把P0.0 口和P2.0 口的電平變?yōu)榈碗娖骄涂梢粤?;相反,如果要接在P0.0 口的LED熄滅,就 要把P0.0 口的電平變?yōu)楦唠娖?;同理,接在P0.1P0.7 口的其他7個LED的點(diǎn) 亮和熄滅的方法同以上LED因此,要實(shí)現(xiàn)流水燈功能,我們只要將發(fā)光二極管LEDLED16依次點(diǎn)亮、熄滅,16只LED燈便會一亮一暗的做流水燈或跑馬燈了。 同樣的道理,可以讓16個燈上移或下移點(diǎn)亮,全亮、全滅。在此我們還應(yīng)注意一點(diǎn),由于人眼的視覺暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應(yīng)該延時一段時間,否則我們就看不 到“流

5、水”效果了。4.3系統(tǒng)硬件設(shè)計(jì)AT89C51是一種帶 4K字節(jié) FLASH存儲器(FPEROFlash Programmable andErasable Read Only Memory )的低電壓、高性能 CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單 片機(jī)的可擦除只讀存儲器可以反復(fù)擦除 1000次。該器件采用ATMEI高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-51指令集和輸出管腳相兼容。由于 將多功能8位CPU和閃速存儲器組合在單個芯片中,ATMEL勺AT89C51是一種高效微控制器,AT89C2051是它的一種精簡

6、版本。AT89C5仲片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排列如圖4.1所示。U1XTA.UPSEN AL三0 13 3- G71 11111P P P PPF prAn=nr5i4.3.1單片機(jī)最小系統(tǒng)(1)P0 口介紹PU.U/IJ ro 1 侶口 1 FO 2/AD2 ro D/ADS Fci 4 am Uo no匚ISFO Z/ADT-F2.DAAeP2.2/A10P2. 3/A1 1IN 4/心心門2 WAI弓P2.E/A1 4 口丄?/Al 5P3.Q/RX口 F P. HJdJ Pl Z?/1MTn R3.3/lTjri" 仏 TO P3 6

7、rT1 pa.GAVFf P3 7/J7T7圖4.1 AT89C51單片機(jī)芯片引腳3a5ZiZP0 口為一個8位漏級開路雙向I/O 口,每腳可吸收8TTL門電流。當(dāng)P0 口 的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義4為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時,P0輸出原碼,此時P0外部必須接上拉電阻(2) P1 口介紹P1 口是一個內(nèi)部提供上拉電阻的8位雙向I/O 口,P1 口緩沖器能接收輸出4TTL門電流。P1 口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時,將輸出電流,這是由于

8、內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時,P1 口作為低八位地址接收。(3) 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ù)存儲器進(jìn)行存取時,P2 口輸出地址的高八位。在給出地址“ 1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在FLASH編程和校驗(yàn)時接收高八位地址信號和控制信號。(4

9、) P3 口介紹P3 口管腳是8個帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4個TTL門電 流。當(dāng)P3 口寫入“ 1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL )這是由于上拉的緣故。P3 口也 可作為AT89C51的一些特殊功能口。復(fù)位系統(tǒng)(5) 上電復(fù)位電路AT89C5啲上電復(fù)位電路如圖4.2所示,只要在RST復(fù)位輸入引腳上接一電容至Vcc端,下接一個電阻到地即可。對于 CMO型單片機(jī),由于在RST端內(nèi)部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1卩F。上電復(fù)位的工作過程是在加電時,復(fù)位電路通過電容加給RST端一個短暫的高電

10、平信號, 此高電平信號隨著Vcc對電容的充電過程而逐漸回落,即RST端的高電平持續(xù)時間取決于電容的充電時間。為了保證系統(tǒng)能夠可靠地復(fù)位,RST端的高電平信號必須維持足夠長的時間。上電時,Vcc的上升時間約為10ms而振蕩器的起振時 間取決于振蕩頻率,如晶振頻率為 10MHz起振時間為1ms晶振頻率為1MHz起振時間則為10ms在如圖的復(fù)位電路中,當(dāng) Vcc掉電時,必然會使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個負(fù)電壓將不會對 器件產(chǎn)生損害。另外,在復(fù)位期間,端口引腳處于隨機(jī)狀態(tài),復(fù)位后,系統(tǒng)將端 口置為全“ I”態(tài)。如果系統(tǒng)在上電時得不到有效的復(fù)位, 則程序計(jì)數(shù)器PC

11、將得 不到一個合適的初值,因此,CPU可能會從一個未被定義的位置開始執(zhí)行程序。VccIMF占ATM9C;IasTM,2 kQGMD圖4.2上電復(fù)位電路(6) 手動復(fù)位電路手動按鈕復(fù)位需要人為在復(fù)位輸入端 RST上加入高電平。一般采用的辦法是在RST端和正電源Vcc之間接一個按鈕。如圖4-3所示,當(dāng)人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復(fù)位的電路如所示。由于人的動作再快也會使按鈕保持接通達(dá)數(shù)十毫秒,所以,完全能夠滿足復(fù)位的時間要求。LRST230三C3P聿NALz卓"P1 0P1 1Pi 0J lOuFIWk2I S圖4.3手動復(fù)位電路(7) 晶振系統(tǒng)晶振是

12、給單片機(jī)提供工作信號脈沖的.這個脈沖就是單片機(jī)的工作速度.比 如12M晶振.單片機(jī)工作速度就是每秒12M.單片機(jī)內(nèi)部也有晶振,接外部晶振可 以或得更穩(wěn)定的頻率。因?yàn)榫д衽c單片機(jī)的腳XTAL0和腳XTAL1構(gòu)成的振蕩電路 中會產(chǎn)生偕波(也就是不希望存在的其他頻率的波),這個波電路的影響不大,但 會降低電路的時鐘振蕩器的穩(wěn)定性,如圖 4.4所示。80C51型單片機(jī)內(nèi)有一高增益反相放大器,按如圖連接可構(gòu)成自激振蕩電路,振蕩頻率取決于石英晶體的振蕩頻率,范圍可取1.2 12MHz C01.C02主要起頻率微調(diào)和穩(wěn)定作用,電容值可取 5 30Pf。432控制電路介紹(1)按鍵機(jī)械式按鍵再按下或釋放時,由

13、于機(jī)械彈性作用的影響,通常伴隨有一定時 間的觸點(diǎn)機(jī)械抖動,然后其觸點(diǎn)才穩(wěn)定下來。抖動時間的長短與開關(guān)的機(jī)械特性 有關(guān),一般為5 10 ms,如圖4.5所示。PI.1PI2PI.3 PI-A 卩MPISPl?ATMCSIK31<4圖4.5按鍵控制電路(2) LED電路能直接與單片機(jī)接口,可方LED顯示器具有功耗低,接口控制方便等優(yōu)點(diǎn),便地實(shí)現(xiàn)各種不同的操作。16個發(fā)光二極管L1-L16分別接在單片機(jī)P0.0-P0.7,P2.0-P2.7。輸出“ 0”,發(fā)光二極管亮。433 P roteus電路仿真圖1主士rrr 卜yUHr W Mlri T41*1 = 9 HkA 4 rid-Mu 4 4

14、 "UMTIB rP-nOj-M-_ 1 _Kfli上-H.u* 'a*Fr 1 h琵卻 r.-B fin '»-H 1, j_ _c 1 J 1:|1'r pJwtar" ,_隔沖 J. B-nu 豐喘._|玄F甕縣尸.質(zhì)亠亠二二“:“嚴(yán):-:一一 w”一手h圖4.7電路原理圖4.4軟件設(shè)計(jì)4.4.1程序流程圖圖4.9主程序流程圖在主程序中,應(yīng)該盡量的使得任務(wù)簡化,不要讓中斷服務(wù)程序作過多復(fù)雜的任務(wù),而要盡量把這些復(fù)雜的任務(wù)放到主程序中間去完成。中斷流程如圖所示。去抖功能:讀入鍵值,存入地址,然后延遲 10ms后,也就是一個很短的時間之后

15、,再次讀入一個鍵值,兩次鍵值相比較,如果一樣則不是因?yàn)橥獠吭蚨秳赢a(chǎn)生按鍵,如果不一樣則說明是別的原因產(chǎn)生的按鍵抖動。這樣的一個程序就可以 去除因?yàn)槎秳赢a(chǎn)生的錯誤輸入信號。442軟件程序及分析(1)主要程序分析:/定義8051寄存器的頭文件定義intrins.h 函數(shù)定義數(shù)學(xué)函數(shù)#inelude <reg51.h> #i nclude vintrin s.h> #in elude <math.h> #in elude <stdio.h>#defi ne u8 un sig ned char#defi ne s8 sig ned char#defi ne

16、 u16#defi ne s16#defi ne u32#defi ne s32#defi ne fp32#defi ne fp64un sig ned short sig ned short un sig ned int sig ned int floatdouble/定義無符號字符定義無符號整型定于無符號整型定義浮點(diǎn)數(shù) 雙倍精度浮點(diǎn)數(shù)#defi ne INT8U un sig ned char按鍵1 按鍵2 按鍵3 按鍵4#defi ne INT16U un sig ned intsbit K1 = P19sbit K2 = P11;/sbit K3 = P 1八2;/按鍵檢測時間 獲取到

17、按鍵的值sbit K4 = P 1八3;/#defi ne KEY_CHK_TIM 10u8 _g_key_value;跑馬燈數(shù)組:code u16 dis pcode16=0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff,0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f;雙流水燈數(shù)組:code u16 dis pcode116=0xfe7f,0xfc3f,0xf81f,0xf00f,0xe007,0xc003,0x8001,0x0000,0x7ffe,0x3ffc,0x

18、1ff8,0x0ff0,0x07e0,0x03c0,0x0180,0x0000;定時器初始化函數(shù):void timenit(void) TMOD |= 0x01; TH0 = 0xf8;TL0 = 0x2f;/=1;ET0 = 1;EA = 1;ES = 1;TRO設(shè)定定時器初值/(65535-63535)大約 60ms打開定時器開中斷(2)void dis p0(void) /調(diào)用前面的跑馬燈數(shù)組u8 i; / 定義 ifor(i = 0 ;i<16;i+)跑馬燈運(yùn)行方式:P0 = dis pcodei>>8; P2 = dis pcodei; delay_ms(100);

19、/ P0/P1/口運(yùn)行第二行數(shù)組 口運(yùn)行第一行數(shù)組延時100ms(3) 鴛鴦燈運(yùn)行方式:void dis p1(void)delay_ms(100);P0 = 0xaa;P2 = 0xaa; delay_ms(100);P0 = 0x55;P2 = 0x55; delay_ms(100);(4) 雙流水燈運(yùn)行方式:void dis p2(void)u8 i;for(i = 0 ;i<8;i+)P0 = dis pcode1i>>8;P2 = dis pcode1i;delay_ms(100);:/P0/P2/P0/P0/延時100ms口 8個LED單數(shù)亮口 8個LED燈亮雙數(shù)

20、燈亮雙數(shù)燈亮延時100ms口運(yùn)行第二行數(shù)組,逐個點(diǎn)亮,向中間 口運(yùn)行第一行數(shù)組,逐個點(diǎn)亮,向中間for(i = 8 ;i<16;i+)P0 = dis pcode1i>>8;P2 = dis pcode1i; delay_ms(100);/向兩邊亮向兩邊亮延時100msk1_P re_kep_tim = 0;/中斷計(jì)數(shù)清零(5)按鍵掃描函數(shù):k1_ pre_kep_tim k1_p ress_flag = 0;if (k1_short_ press_flag =1 ) k1_short_ press_flag = 0;=0;/k1/k1/按鍵按下保持時間清零按鍵按下標(biāo)志清零短

21、按標(biāo)志為1短按標(biāo)志清零g_key_value = 1;/觸發(fā)1號短按鍵else if (k1_p ress_flag = 0)k1_P re_kep_tim+;if (k1_ pre_kep_tim > KEY_CHK_TIM) k1_short_ press_flag = 1;/累加定時中斷次數(shù)/短按標(biāo)志置1void key_sca n(v oid)1 staticu16k1_P re_kep_tim = 0;/k1按鍵按下保持時間staticu8k1_p ress_flag = 0;/k1按鍵按下標(biāo)志staticu8k1_short_ press_flag=0;/k1短按觸發(fā)標(biāo)志st

22、aticu16k2_p re_ke p_tim = 0;/k2按鍵按下保持時間staticu8k2_p ress_flag = 0;/k2按鍵按下標(biāo)志staticu8k2_pre_ctn_ti m=0; /按鍵連續(xù)觸發(fā)的間隔延時計(jì)數(shù)staticu16k3_p re_ke p_tim = 0;/k3按鍵按下保持時間staticu8k3_p ress_flag = 0;/k3按鍵按下標(biāo)志staticu8k3_pre_ctn_tim=0;/k1短按觸發(fā)標(biāo)志staticu16k4_p re_kep_tim = 0;/k4按鍵按下保持時間staticu8k4_p ress_flag = 0;/k4按鍵按

23、下標(biāo)志if (K1 = 1)/當(dāng)按鍵松開為真if (k1_pre_kep_tim > 300) (6)主程序:/只運(yùn)行跑馬燈if (con_f = 1) dis pO();if (con_f = 2) dis p1();/只運(yùn)行鴛鴦燈if (con_f = 3) dis p2();/只運(yùn)行雙流水/循環(huán)以上三種if (con_f = 4) dis pO();dis p1();dis p2();五、組裝調(diào)試5.1硬件硬件包括MCS-51單片機(jī),LED發(fā)光二極管,晶振,電容,開關(guān),電源,電 阻及導(dǎo)線。將所有硬件配齊,按電路原理圖組裝好電路,在電路板上一一對應(yīng),所有硬件準(zhǔn)備就緒后,接通電源,軟硬結(jié)合。首先用燒錄軟件給單片機(jī)芯片加載*hex文件,等待加載完畢,運(yùn)行電路。當(dāng)按下 K1時,跑馬燈開始,16個LED 燈從上到下逐個點(diǎn)亮,第一個燈亮,然后滅,然后每個間隔時間為 100ms當(dāng)按下K2時,鴛鴦燈開始,16個LED燈先單數(shù)亮,然后雙數(shù)亮,間隔時間也是100ms 當(dāng)K3按下時,雙流水燈開始,16個LED燈依次往中間移動,然后再依次往外 移動

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論