單片機(jī)課設(shè)--紅外遙控及點(diǎn)陣顯示應(yīng)用(共22頁)_第1頁
單片機(jī)課設(shè)--紅外遙控及點(diǎn)陣顯示應(yīng)用(共22頁)_第2頁
單片機(jī)課設(shè)--紅外遙控及點(diǎn)陣顯示應(yīng)用(共22頁)_第3頁
單片機(jī)課設(shè)--紅外遙控及點(diǎn)陣顯示應(yīng)用(共22頁)_第4頁
單片機(jī)課設(shè)--紅外遙控及點(diǎn)陣顯示應(yīng)用(共22頁)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄專心-專注-專業(yè)1. 主要元器件介紹1.1 AT89C51單片機(jī)1.1.1 AT89C51單片機(jī)的硬件結(jié)構(gòu) AT89C52單片機(jī)的內(nèi)部結(jié)構(gòu)與MCS-51系列單片機(jī)的構(gòu)成基本相同。CPU是由運(yùn)算器和控制器所構(gòu)成的。運(yùn)算器主要用來對(duì)操作數(shù)進(jìn)行算術(shù)、邏輯運(yùn)算和位操作的??刂破魇菃纹瑱C(jī)的指揮控制部件,主要任務(wù)的識(shí)別指令,并根據(jù)指令的性質(zhì)控制單片機(jī)各功能部件,從而保證單片機(jī)各部分能自動(dòng)而協(xié)調(diào)地工作。它的程序存儲(chǔ)器為8K字節(jié)可重擦寫Flash閃速存儲(chǔ)器,閃爍存儲(chǔ)器允許在線+5V電擦除、電寫入或使用編程器對(duì)其重復(fù)編程。數(shù)據(jù)存儲(chǔ)器比51系列的單片機(jī)相比大了許多為256字節(jié)RAM

2、。AT89C52單片機(jī)的指令系統(tǒng)和引腳功能與MCS-51的完全兼容。FLASHCPU串行通訊口RAM輸入輸出接口計(jì)數(shù)器定時(shí)器時(shí)鐘 圖1 8單片機(jī)89C52結(jié)構(gòu)框圖1.1.2 AT89C52管腳說明VCC:電源GND:接地P0口:P0口是一個(gè)8位漏級(jí)開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0口端口寫“1”時(shí),引腳作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時(shí),P0口也用來接受指令字節(jié):在程序效驗(yàn)時(shí),輸出指令字節(jié)。程序效驗(yàn)時(shí),需要外部上拉電阻。P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8位

3、是雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯電平。對(duì)P1口寫“1”時(shí),內(nèi)部上拉電阻的原因,將輸出 電流ILL。此外,與AT89C51不同之處是,P1.0和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù) 輸入(P1.0/T2)和輸出(P1.1/T2EX),具體 圖 2 AT89C52外部引腳如下表所示 表 1 P1.0和P1.1的第二功能 引腳號(hào)功能特性P1.0T2(定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時(shí)鐘輸出P1.1T2EX定時(shí)/計(jì)數(shù)2捕獲/重裝載觸發(fā)和方向控制 在Flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,

4、P2輸出緩沖級(jí)可驅(qū)動(dòng)吸收或輸出電流4個(gè)TTL邏輯電平。對(duì)P2口寫“1”時(shí),通過內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流ILL。 在訪問外部好曾許存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在Flash編程和校驗(yàn)時(shí),P2口接收低8位地址字節(jié)和一些控制信號(hào)。 P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯電平。對(duì)P3口寫“1”時(shí),內(nèi)部上拉電

5、阻把端口拉高,此時(shí)可以作為輸入端口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流ILL。P3口除了作為一般、的I/O口線外,更重要的是它的第二功能,如下表所示。 表 2 P3口引腳第二功能引腳號(hào)第二功能P3.0RXD(串行輸入)P3.1TXD(串行輸出)P3.2INT0(外部中斷0)P3.3INT1(外部中斷1)P3.4T0(定時(shí)器0外部輸入)P3.5T1(定時(shí)器1外部輸入)P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) 在Flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。 RST:復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2個(gè)機(jī)器周期以高電平將使用單片

6、機(jī)復(fù)位。 ALE/:地址鎖存器控制信號(hào)(ALE)是訪問外部程序存儲(chǔ)器時(shí),鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳()也使用作編程輸入脈沖。 在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過。 如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作無效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOVC指令時(shí)有效。否則,ALE將被微弱拉高。這個(gè)ALE使能標(biāo)志位的設(shè)置對(duì)微控制器處于外部執(zhí)行模式下無效。 :外部程序儲(chǔ)存器選通信號(hào)()是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89C52從外部程

7、序存儲(chǔ)器執(zhí)行外部代碼時(shí),在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)儲(chǔ)存器時(shí),將不被激活。 :訪問外部程序存儲(chǔ)器控制信號(hào)。為使能從0000HFFFFH的外部程序存儲(chǔ)器讀取指令,端必須保持低電平(接地)。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。 在flash編程期間,也接受12伏VPP電壓。 XTA L1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 XTA L2:振蕩器反相放大器的輸出端。1.1.3存儲(chǔ)器結(jié)構(gòu) MCS-51器件有單獨(dú)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器都可以64K尋址。1. 程序存儲(chǔ)器 如果EA引腳接地,程序讀取只從外部存儲(chǔ)器開始。對(duì)于89C52,如果EA接VCC,程序

8、先從內(nèi)部存儲(chǔ)器(地址為0000H1FFFFH)開始,接著從外部尋址,尋址范圍為:2000HFFFFH。2. 數(shù)據(jù)存儲(chǔ)器 AT89C52有256字節(jié)RAM。高128字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當(dāng)一條指令訪問高于7FH的地址時(shí),尋址方式?jīng)Q定CPU訪問高字節(jié)RAM還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。1.1.4定時(shí)器1. 定時(shí)器0和定時(shí)器1在AT89C52中,定時(shí)器0和定時(shí)器1都是16位加法計(jì)數(shù)結(jié)構(gòu),分別由TH0(地址8CH)和TL0(地址8AH)及TH1(地址8DH)和TL1(地址8BH)兩個(gè)8位計(jì)數(shù)器組

9、成。這4個(gè)計(jì)數(shù)器均屬于專用寄存器之列。每個(gè)定時(shí)器/計(jì)數(shù)器都有定時(shí)和計(jì)數(shù)兩種功能。2. 計(jì)數(shù)功能 所謂的計(jì)數(shù)功能是指對(duì)外部事件進(jìn)行計(jì)數(shù)。外部事件的發(fā)生以輸入脈沖表示,因此計(jì)數(shù)功能的實(shí)質(zhì)就是對(duì)外脈沖進(jìn)行計(jì)數(shù)。MCS-51系列的芯片有T0(P3.4)和T1(P3.5)兩個(gè)信號(hào)引腳,分別就是這兩個(gè)計(jì)數(shù)器的計(jì)數(shù)輸入端。外部輸入的脈沖在負(fù)跳變時(shí)有效,進(jìn)行計(jì)數(shù)器加1。計(jì)數(shù)方式下,單片機(jī)在每個(gè)機(jī)器周期的S5P2拍節(jié)對(duì)外部計(jì)數(shù)脈沖進(jìn)行采樣。如果前一個(gè)機(jī)器周期采樣為高電平,后一個(gè)機(jī)器周期采樣為低電平,即為一個(gè)有效計(jì)數(shù)脈沖。在下一個(gè)機(jī)器周期的S3P1進(jìn)行計(jì)數(shù)??梢姴蓸佑?jì)數(shù)脈沖是在2個(gè)機(jī)器周期進(jìn)行的。鑒于此,計(jì)數(shù)脈沖

10、的頻率不能高于振蕩脈沖的頻率不能高于振蕩脈沖頻率的1/24。3. 定時(shí)功能 定時(shí)器也是通過計(jì)數(shù)器的計(jì)數(shù)來實(shí)現(xiàn)的,不過此時(shí)的計(jì)數(shù)脈沖來自單片機(jī)的內(nèi)部,即每個(gè)機(jī)器周期產(chǎn)生一個(gè)計(jì)數(shù)脈沖。也就是每個(gè)機(jī)器周期計(jì)數(shù)加1。由于一個(gè)機(jī)器周期等于12個(gè)振蕩脈沖周期,因此計(jì)數(shù)頻率為振蕩頻率的1/12。如果單片機(jī)采用12MHz晶體,則計(jì)數(shù)頻率為1MHz。即每微秒計(jì)數(shù)器加1。這樣不但可以根據(jù)計(jì)數(shù)值計(jì)算出定時(shí)時(shí)間,也可以反過來按定時(shí)時(shí)間的要求計(jì)算出計(jì)數(shù)器的預(yù)置值。4. 定時(shí)器2 定時(shí)器2是一個(gè)16位定時(shí)器/計(jì)數(shù)器,它既可以作定時(shí)器,又可以做事件計(jì)數(shù)器。其工作方式由特殊寄存器T2CON中的C/T2位選擇(如表2所示)。定

11、時(shí)器2有三種工作模式:捕捉方式、自動(dòng)重載(向上或向下計(jì)數(shù))和波特率發(fā)生器。如表3.3所示,工作模式由T2CON中的相關(guān)為選擇。定時(shí)器2有2個(gè)8位寄存器:TH2和TL2。在定時(shí)工作方式中,每個(gè)機(jī)器周期,TL2寄存器都會(huì)加1。由于一個(gè)機(jī)器周期由12個(gè)晶振周期構(gòu)成,因此,計(jì)數(shù)頻率就是晶振頻率的1/12。表 3.3 定時(shí)器2工作模式RCLK+TCLKCP/RL2TR2MODE00116位自動(dòng)重載01116位捕捉1×1波特率發(fā)生器××0不用 在計(jì)數(shù)工作方式下,寄存器在相關(guān)外部輸入角T2發(fā)生1至0的下降沿時(shí)增加1。在這種方式下,每個(gè)機(jī)器周期的S5P2期間采樣外部輸入。一個(gè)周期

12、采樣到高電平,而下一個(gè)周期采樣到低電平,計(jì)數(shù)器加1。在檢測到跳變的這個(gè)周期的S3P1期間,新的計(jì)數(shù)值出現(xiàn)在寄存器中。因?yàn)樽R(shí)別10的跳變需要2個(gè)機(jī)器周期(24個(gè)晶振周期),所以,最大的計(jì)數(shù)頻率不高于晶振頻率的1/24。為了確保給定的電平在采樣前采樣到一次,電平應(yīng)該至少在一個(gè)完整的機(jī)器周期內(nèi)保持不變。表4 T2MOD-定時(shí)器2控制寄存器 T2MOD地址:0C9H 復(fù)位值:×××××00B-T2OEDCEN76543210符號(hào)功能無定義,預(yù)留擴(kuò)展T2OE定時(shí)器2輸出允許位DCEN置1后,定時(shí)器2可配置向上或向下計(jì)數(shù)1.1.5中斷 AT89C52有6個(gè)

13、中斷源:兩個(gè)外部中斷(INT0和INT1),三個(gè)定時(shí)中斷定時(shí)器0、1、2和一個(gè)串行中斷。每個(gè)中斷源都可以通過置位或清除特殊寄存器IE中的相關(guān)中斷允許控制位分別使得中斷源有效或無效。IE還包括一個(gè)中斷總控制位EA,它能禁止所有中斷。 如表3.5所示,IE.6位是不可用的。對(duì)于AT89S52,IE.5位也是不能用的。用戶軟件不應(yīng)給這些位寫1。它們?yōu)锳T89系列新產(chǎn)品預(yù)留。定時(shí)器2可以被寄存器T2CON中的TF2和EXF2的或邏輯觸發(fā)。程序進(jìn)入中斷服務(wù)后,這些標(biāo)志位都可以由硬件清0。實(shí)際上,中斷服務(wù)程序必須判定是否是TF2或EXF2激活中斷。標(biāo)志位也必須由軟件清0。定時(shí)器0和定時(shí)器1標(biāo)志位TF0和T

14、F1在計(jì)數(shù)溢出的那個(gè)周期的S5P2被置位。它們的值一直到下一個(gè)周期被電路捕捉下來。然而,定時(shí)器2的標(biāo)志位TF2在計(jì)數(shù)溢出的那個(gè)周期被置位,在同一個(gè)周期被電路捕捉下來。表 3 中斷允許控制位符號(hào)位地址功能EAIE.7中斷允許控制位,EA=0,中斷總禁止;EA=1,各中斷由各自的控制位設(shè)定-IE.6預(yù)留ET2IE.5定時(shí)器2中斷允許控制位ESIE.4串行口中斷允許控制位ET1IE.3定時(shí)器1中斷允許控制位EX1IE.2外部中斷1允許控制位ET0IE.1定時(shí)器0中斷允許控制位EX0IE.0外部中斷0允許控制位1. 2 16*16點(diǎn)陣LED 8×8單色點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)二

15、極管是放置在行線與列線的叉點(diǎn)上。下圖為8×8點(diǎn)陣LED外觀及引腳圖,其等效電路如下圖所示,只要其對(duì)應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。圖4 8×8點(diǎn)陣外觀及引腳圖 proteus中用8×8點(diǎn)陣組成的16×16點(diǎn)陣,如下圖:圖5 16×16點(diǎn)陣點(diǎn)陣LED一般采用掃描式顯示,實(shí)際運(yùn)用分為三種方式:(1)點(diǎn)掃描; (2)行掃描;(3)列掃描。 若使用第一種方式,其掃描頻率必須大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三種方式,則頻率必須大于16×8=128Hz,周期小于7.8ms即可符合視覺暫留要求。此外

16、一次驅(qū)動(dòng)一列或一行(8顆LED)時(shí)需外加驅(qū)動(dòng)電路提高電流,否則LED亮度會(huì)不足。1.3 紅外控制相關(guān)介紹紅外遙控系統(tǒng)由發(fā)射和接收兩大部份組成,應(yīng)用編/解碼專用集成電路芯片來進(jìn)行控制操作,如圖1 所示。發(fā)射部份包括鍵盤矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部份包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路。LED編碼調(diào)制鍵盤解碼解調(diào)光/電放大圖6 紅外遙控系統(tǒng)框圖HT6221 鍵碼的形成:當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms 的組合表示二進(jìn)制的“0”;以脈寬為0.565m

17、s、間隔1.685ms、周期為2.25ms 的組合表示二進(jìn)制的“1”。2 設(shè)計(jì)原理或方法2.1設(shè)計(jì)總體思路 本次課程設(shè)計(jì)的要求是利用紅外遙控器控制,在16×16點(diǎn)陣的顯示器件上循顯示“武漢理工大學(xué)”6個(gè)漢字,控制項(xiàng)目:循環(huán)顯示的速度可調(diào),循環(huán)顯示進(jìn)入方向(從左至右、從右至左、從上到下、從下往上)。由于要用16*16點(diǎn)陣顯示漢字,而80C51的I/O接口是8位的,我們可以用4個(gè)8*8點(diǎn)陣來組成。由于80C51的I/O口不多(只有4組,32個(gè)),為了節(jié)約I/O口,我們用4線-16譯碼器作為點(diǎn)陣的列驅(qū)動(dòng),P2口和P0口作為數(shù)據(jù)線。改變漢字移動(dòng)的速度,可以通過用按鍵改變漢字在LED上的顯示時(shí)

18、間來改變,通過改變的數(shù)值大小就可以改變漢字的移動(dòng)速度。 題目所要求的用紅外控制我們可以先用開關(guān)模擬達(dá)到要求,再將開關(guān)的功能用紅外來實(shí)現(xiàn),這樣就可以基本上達(dá)到要求。通過紅外接收器所解出來的碼將其送到89C51的一個(gè)I/O口以達(dá)到開關(guān)的效果。這樣就可以基本達(dá)到要求了。2.2與題目相關(guān)的具體設(shè)計(jì)漢字的顯示:可以采用掃描的方式,先使一個(gè)I/O口產(chǎn)生一個(gè)選行(列)信號(hào),先選中一行,對(duì)選中的行進(jìn)行掃描,然后用另外2組I/O口輸送數(shù)據(jù),這樣一個(gè)字的1/16就送到LED點(diǎn)陣上了,接著選下一行,這樣經(jīng)過16次就可以顯示一個(gè)字了,再適當(dāng)延時(shí)使顯示的字清晰。漢字的移動(dòng):在LED上顯示一個(gè)漢字并延時(shí)后,可以通過增加所

19、取表的地址(加2);這樣下一次LED上顯示的字就移動(dòng)了一個(gè)點(diǎn)陣,可以通過適當(dāng)?shù)脑O(shè)計(jì)來控制漢字移動(dòng)循環(huán)的的次數(shù)。漢字的左右上下移動(dòng):可以通過建立不同的表,來實(shí)現(xiàn)漢字的各種移動(dòng),或者改變查表的方式來實(shí)現(xiàn)。3.系統(tǒng)硬件線路設(shè)計(jì)圖圖7 仿真電路圖4.程序框圖開始系統(tǒng)初始化賦初值(控制移動(dòng)速度)P3.2=0? 否是移動(dòng)速度增加 移動(dòng)速度減慢P3.7=0? 否 是 左移動(dòng) 右移動(dòng)上移動(dòng) 下移動(dòng) 圖8 系統(tǒng)主程序流程圖5.資源分配 P1.0到P1.3接4-16譯碼器給16*16點(diǎn)陣提列信號(hào)。P0.0到P0.7接16*16點(diǎn)陣的上半塊作為數(shù)據(jù)線,給16*16點(diǎn)陣上部提供數(shù)據(jù),點(diǎn)亮相應(yīng)的LED,P2.0到P2.

20、7接16*16點(diǎn)陣的下半塊作為數(shù)據(jù)線,給16*16點(diǎn)陣下部提供數(shù)據(jù),點(diǎn)亮相應(yīng)的LED。P3.2接開關(guān),用于控制移動(dòng)速度,P3.7接開關(guān),用于控制漢字的顯示的移動(dòng)方向。表5資源分配表P1.0-P1.3接4-16譯碼器P0.0-P0.7接16*16點(diǎn)陣的上半塊作為數(shù)據(jù)線P2.0-P2.7接16*16點(diǎn)陣的下半塊作為數(shù)據(jù)線P3.2接開關(guān)控制移動(dòng)速度P3.7接開關(guān)控制顯示的移動(dòng)方向6.源程序#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit key0=P37;sbit key1=P32;uch

21、ar zt,z,speed,flag;uchar code hanzi=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /" ",0x20,0x40,0x20,0xC0,0x24,0x7E,0x24,0x40,0x24,0x40,0xA4,0x3F,0x24,0x22,0x24,0x22,0x20,0x2

22、0,0xFF,0x03,0x20,0x0C,0x22,0x10,0x2C,0x20,0x20,0x40,0x20,0xF8,0x00,0x00, /"武",0x10,0x04,0x60,0x04,0x02,0x7C,0x0C,0x03,0xC0,0x80,0x02,0x80,0x1E,0x40,0xE2,0x20,0x02,0x13,0x02,0x0C,0x02,0x13,0xE2,0x20,0x1E,0x40,0x00,0x80,0x00,0x80,0x00,0x00, /"漢",0x04,0x20,0x84,0x60,0x84,0x20,0xFC,0

23、x1F,0x84,0x10,0x84,0x10,0x00,0x40,0xFE,0x44,0x92,0x44,0x92,0x44,0xFE,0x7F,0x92,0x44,0x92,0x44,0xFE,0x44,0x00,0x40,0x00,0x00, /"理", 0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00

24、, /"工", 0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00, /"大",0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,0x90,0x06,0x90,0x05,0x98,0

25、x04,0x14,0x04,0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00, /"學(xué)",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /" ",;uchar code lie=0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7

26、, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff;void delay(uchar x) /延時(shí)函數(shù)uchar i,j;for(i=0;i<x;i+)for(j=0;j<120;j+);void scanf_dir() /判斷按鍵 if(key0=0) delay(3);if(key0=0) zt+; while(!key0); if(zt=4) zt=0; void left() /左移動(dòng)uchar i,zishu,x;P1=0xff;for(zishu=0;zishu<6;zishu+) /6個(gè)字 P0=0xff; P2=0xff; fo

27、r(x=0;x<16;x+)/從左向右移動(dòng)16次,(第一屏、第二屏。) if(zt!=0) break; for(z=0;z<speed;z+)/改變?cè)趜<的值可以調(diào)整移動(dòng)速度for(i=0;i<16;i+)/16列循環(huán)顯示 scanf_dir();if(zt!=0)break;P1=liei;P0=hanzi2*i+zishu*32+x*2;P2=hanzi2*i+zishu*32+x*2+1;delay(3); P0=0xff; P2=0xff; void showc(uchar c,uchar b,uchar n,uchar l)/右移動(dòng)輔助函數(shù) uchar i;

28、 for(i=0;i<n;i+) scanf_dir();if(zt!=1)break; P1=liei+l;P0=hanzic*32+i*2+b*2;P2=hanzic*32+i*2+1+b*2;delay(3);P0=0xff; P2=0xff; void right()/右移動(dòng)uchar i,zishu;P1=0x00;for(zishu=0;zishu<6;zishu+) for(i=0;i<16;i+) if(zt!=1) break;for(z=0;z<speed;z+)/這個(gè)可以調(diào)整移動(dòng)速度showc(zishu,0,16-i,i);showc(zishu

29、+1,15-i,i,0); void up()/上移動(dòng)uchar i,zishu,y,n;uchar t1,t2,t3;P1=0x00;for(zishu=0;zishu<6;zishu+)P0=0xff;P2=0xff;for(n=0;n<2;n+) for(y=0;y<8;y+) if(zt!=2)break;for(z=0;z<speed;z+)/可以調(diào)整移動(dòng)速度 for(i=0;i<16;i+) scanf_dir(); if(zt!=2)break; if(n=0)t1=hanzi2*i+zishu*32; t2=hanzi2*i+1+zishu*32;

30、 t3=hanzi2*i+zishu*32+32; else t1=hanzi2*i+1+zishu*32;t2=hanzi2*i+zishu*32+32;t3=hanzi2*i+1+zishu*32+32;P1=liei; P0=(t1>>y)|(t2<<(7-y); P2=(t2>>y)|(t3<<(7-y); delay(1); P0=0xff; P2=0xff; void down()/下移動(dòng)uchar i,zishu,y,n;uchar t1,t2,t3;P1=0x00;for(zishu=0;zishu<6;zishu+)P0=

31、0xff;P2=0xff;for(n=0;n<2;n+) for(y=0;y<8;y+) if(zt!=3)break;for(z=0;z<speed;z+)/調(diào)整速度 for(i=0;i<16;i+) scanf_dir();if(zt!=3)break; if(n=0)t1=hanzi2*i+zishu*32; t2=hanzi2*i+1+zishu*32; t3=hanzi2*i+1+zishu*32+32; else t1=hanzi2*i+1+zishu*32+32;t2=hanzi2*i+zishu*32;t3=hanzi2*i+zishu*32+32;P1

32、=liei; P0=(t1<<y)|(t3>>(7-y); P2=(t2<<y)|(t1>>(7-y); delay(1); P0=0xff; P2=0xff; void main()zt=0;EA=1;EX0=1;IT0=1;speed=20;while(1) scanf_dir();switch(zt) case 0:if(zt=0) left(); case 1:if(zt=1) right(); case 2:if(zt=2) up(); case 4:if(zt=3) down(); default:break; void exint(

33、) interrupt 0flag+;if(flag=1)speed=3;else if(flag=2)speed=100;else if(flag=3)speed=20;flag=0;/紅外程序void Ircordpro(void)/紅外碼值處理函數(shù) unsigned char i, j, k; unsigned char cord,value; k=1; for(i=0;i<4;i+)/處理4個(gè)字節(jié) for(j=1;j<=8;j+) /處理1個(gè)字節(jié)8位 cord=irdatak; if(cord>7)/大于某值為1 value=value|0x80; else valu

34、e=value; if(j<8) value=value>>1; k+; IRcordi=value; value=0; irpro_ok=1;/處理完畢標(biāo)志位置1 7性能分析 程序通過keil軟件編譯生成.hex文件加載到protues軟件的原理原理圖中能夠進(jìn)行仿真,可以用開關(guān)控制漢字的移動(dòng)速度和移動(dòng)速度。系統(tǒng)開始顯示后,漢字先左移,右移動(dòng),上移動(dòng),下移動(dòng)。漢字顯示很清晰明亮,效果很不錯(cuò)。由于PROTUES沒有紅外模塊的仿真,所以用開關(guān)代替了紅外,實(shí)現(xiàn)了相同的功能。用開關(guān)控制漢字的移動(dòng)速度也比較明顯。8.總結(jié)和心得 作為一名電信專業(yè)的大三學(xué)生,我覺得這個(gè)單片機(jī)是十分有意義的,而且是十分必要的。在已度過的大學(xué)時(shí)間里,我們大多數(shù)接觸的是專業(yè)課。我們?cè)谡n堂上掌握的僅僅是專業(yè)課的理論知識(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論