版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 8×8點(diǎn)陣LED數(shù)碼圖形顯示器的課程設(shè)計(jì)</p><p> 第一章 總體方案設(shè)計(jì)</p><p><b> 1.1總體設(shè)計(jì)要求</b></p><p> 本系統(tǒng)采用單片機(jī)AT89C51為L(zhǎng)ED顯示屏的控制核心,制造一種簡(jiǎn)單的8×8顯示屏,能夠在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足,可顯示圖形和
2、文字,顯示圖形和文字穩(wěn)定、清晰無(wú)串?dāng)_,圖形或文字顯示有靜止、移入移出等顯示方式。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡(jiǎn)單,容易實(shí)現(xiàn),性能穩(wěn)定可靠,成本低等特點(diǎn)。</p><p> 根據(jù)設(shè)計(jì)要求,初步確定設(shè)計(jì)方案如下:</p><p> 1. 選擇AT89C51單片機(jī)(晶振頻率為f=12MHZ)作為整個(gè)系統(tǒng)的核心器件,對(duì)整個(gè)系統(tǒng)進(jìn)行總體控制,發(fā)送并時(shí)時(shí)處理系統(tǒng)信息。</p><p&
3、gt; 2.通過(guò)編程顯示數(shù)字:“★,●,心形圖”。</p><p> 3.動(dòng)態(tài)顯示,即跑馬燈文字幕,每0.25秒左移一次。 </p><p> 4. 掃描信號(hào)連接到單片機(jī)的P0口,顯示信號(hào)連接到單片機(jī)的P2口。</p><p> 5.點(diǎn)陣的點(diǎn)亮過(guò)程有程序控制,由驅(qū)動(dòng)電路完成,點(diǎn)陣采用單色顯示,其中驅(qū)動(dòng)電路采共陰型高態(tài)掃描、高態(tài)顯示信號(hào)的驅(qū)動(dòng)電路。</p
4、><p><b> 1.2系統(tǒng)框圖</b></p><p> 本文設(shè)計(jì)行、列驅(qū)動(dòng)電路,顯示屏電路,運(yùn)用單片機(jī)的智能化,系統(tǒng)的將每個(gè)功能電路模塊連接在一起,總體結(jié)構(gòu)設(shè)計(jì)如下圖1-1所示:</p><p> 圖 1-1 系統(tǒng)框圖</p><p> 第二章 系統(tǒng)硬件電路的設(shè)計(jì)</p><p>
5、本系統(tǒng)的硬件電路是由單片機(jī)最小系統(tǒng)、動(dòng)態(tài)顯示驅(qū)動(dòng)電路兩部分組成。其中,單片機(jī)最小系統(tǒng)包括電源電路、復(fù)位電路和晶振電路構(gòu)成;顯示部分使用共陰型高臺(tái)掃描、高態(tài)顯示信號(hào)驅(qū)動(dòng)電路,完成“跑馬燈”文字幕效果。</p><p> 2.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)</p><p> 2.1.1 單片機(jī)的時(shí)鐘電路</p><p> AT89C51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反向
6、放大器,引線X1和X2分別是放大器的輸入端和輸出端。單片機(jī)內(nèi)部雖然有振蕩電路,但要形成時(shí)鐘,外部還需附加電路。AT89C51的時(shí)鐘產(chǎn)生方式有兩種:內(nèi)部時(shí)鐘電方式和外部時(shí)鐘方式。由于外部時(shí)鐘方式用于多片單片機(jī)組成的系統(tǒng)中,所以此處選用內(nèi)部時(shí)鐘方式。</p><p> 內(nèi)部時(shí)鐘方式:利用其內(nèi)部的振蕩電路在X1和X2引線上外接定時(shí)元件,內(nèi)部振蕩電路產(chǎn)生自激振蕩。最常用的是在 X1和X2之間接晶體振蕩器與電路構(gòu)成穩(wěn)定的
7、自激振蕩器,如圖2-1電路所示為單片機(jī)最常用的時(shí)鐘振蕩電路的接法,其中晶振可選用振蕩頻率為12MHz的石英晶體,電容器一般選擇30PF左右。</p><p> 圖2-1使用片內(nèi)振蕩電路的時(shí)鐘電路</p><p> 2.1.2 單片機(jī)的復(fù)位電路</p><p> 本設(shè)計(jì)中AT89C51是采用上電自動(dòng)復(fù)位和按鍵復(fù)位兩種方式。最簡(jiǎn)單的復(fù)位電路如圖2-2所示。上電瞬間
8、,RC電路充電,RST引線端出現(xiàn)正脈沖,只要RST端保持10ms以上的高電平,就能使單片機(jī)有效地復(fù)位。其中R1和R2分別選擇200Ω和2KΩ的電阻,電容器一般選擇22μF。</p><p> 圖2-2 AT89C51的復(fù)位電路</p><p> 2.1.3 AT89C51的最小應(yīng)用系統(tǒng)</p><p> AT89C51是片內(nèi)有程序存儲(chǔ)器的單片機(jī),要構(gòu)成最小應(yīng)用
9、系統(tǒng)時(shí)只要將單片機(jī)接上外部的晶體或時(shí)鐘電路和復(fù)位電路即可,如圖2-3所示。這樣構(gòu)成的最小系統(tǒng)簡(jiǎn)單可靠,其特點(diǎn)是沒(méi)有外部擴(kuò)展,有可供用戶使用的大量的I∕O線。</p><p> 圖2-3 AT89C51單片機(jī)構(gòu)成的最小系統(tǒng)</p><p> 2.2 顯示器及接口設(shè)計(jì)</p><p> 2.2.1 8×8點(diǎn)陣LED顯示器的組成原理及控制方式</p&
10、gt;<p> 本次設(shè)計(jì)中采用8×8點(diǎn)陣LED顯示器,簡(jiǎn)稱LED點(diǎn)陣板或LED矩陣板。它是以發(fā)光二極管為像素,按照行與列的順序排列起來(lái),用集成工藝制成的顯示器件。有單色和雙色之分,這種顯示器有共陽(yáng)極接法和共陰極接法兩種,設(shè)計(jì)中用到的是共陽(yáng)極的顯示器。共陽(yáng)極接法的原理圖如圖2-4所示,圖中畫出了8×8點(diǎn)陣的二極管。每一行發(fā)光二極管的陽(yáng)極接在一起,有一個(gè)引出端r,每一列發(fā)光二極管的陰極接在一起,有一個(gè)引出
11、端c。當(dāng)給發(fā)光二極管陽(yáng)極引出端r1加高電平,陰極引出端c1加低電平時(shí),左上角的二極管被點(diǎn)亮因此,對(duì)于行和列的電平進(jìn)行掃描控制時(shí),可以達(dá)到顯示不同字符的目的。</p><p> 圖2-4 8×8點(diǎn)陣LED顯示器組成原理圖</p><p> (1).“★”在8X8LED點(diǎn)陣上顯示圖如下圖所示</p><p> 12H,14H,3CH,48H,3CH,1
12、4H,12H,00H</p><p> (2).“●”在8X8LED點(diǎn)陣上顯示圖如下圖所示</p><p> 00H,00H,38H,44H,44H,44H,38H,00H</p><p> (3).心形圖在8X8LED點(diǎn)陣上顯示圖如下圖所示</p><p> 30H,48H,44H,22H,44H,48H,30H,00H</p
13、><p> 圖2-5 8×8點(diǎn)陣LED引腳的排列圖</p><p> 2.2.2 8×8點(diǎn)陣LED顯示器與單片機(jī)的接口</p><p> 8×8點(diǎn)陣LED的引腳圖如圖2-5所示,當(dāng)采用單片機(jī)進(jìn)行控制時(shí),連接點(diǎn)陣顯示器的共陽(yáng)極r端需經(jīng)驅(qū)動(dòng)三極管9012與單片機(jī)的P2口相連,而共陰極c端需經(jīng)限流電阻與單片機(jī)的P0口相連。在編程控制時(shí),將
14、8×8點(diǎn)陣LED顯示分成行和列兩部分,字符數(shù)據(jù)從P0口輸出,掃描控制字從P2口輸出,每一列由一個(gè)字節(jié)的數(shù)據(jù)組成,數(shù)據(jù)可一次送入,然后掃描一行,顯示一個(gè)字需要掃描8次。</p><p> 2.2.3 驅(qū)動(dòng)電路的設(shè)計(jì)</p><p> 顯示器驅(qū)動(dòng)是一個(gè)非常重要的問(wèn)題,如果驅(qū)動(dòng)能力差,顯示器亮度就低;而驅(qū)動(dòng)器長(zhǎng)期在超負(fù)荷下運(yùn)行則很容易損壞。</p><p>
15、 如果是靜態(tài)顯示,則LED驅(qū)動(dòng)器的選擇較為簡(jiǎn)單,只要驅(qū)動(dòng)器的驅(qū)動(dòng)能力與顯示器工作電流相匹配即可。而且只須考慮段的驅(qū)動(dòng),因?yàn)?,共?yáng)極接+5V,而共陰極接地,所以位的驅(qū)動(dòng)無(wú)須考慮。</p><p> 動(dòng)態(tài)顯示則不然,由于一位數(shù)據(jù)的顯示是由段和位選信號(hào)共同配合完成的,因此,必須同時(shí)考慮段和位的驅(qū)動(dòng)能力,而且段的驅(qū)動(dòng)能力決定位的驅(qū)動(dòng)能力。</p><p> 理論分析表明,同樣的驅(qū)動(dòng)器,當(dāng)其驅(qū)
16、動(dòng)靜態(tài)顯示器時(shí),其亮度為驅(qū)動(dòng)動(dòng)態(tài)顯示器的n倍,n近似為顯示位數(shù)。所以要使動(dòng)態(tài)顯示器達(dá)到靜態(tài)顯示器的亮度,必須將驅(qū)動(dòng)器能力提高n倍。</p><p> 本設(shè)計(jì)中,因?yàn)椴捎昧?×8點(diǎn)陣LED顯示器,用AT89C51單片機(jī)進(jìn)行控制,因此它很適宜于按掃描方式動(dòng)態(tài)顯示多個(gè)字符數(shù)據(jù),所以我們只選用了8個(gè)PNP型三極管作為驅(qū)動(dòng)顯示器的電路。如圖2-6所示,因AT89C51單片機(jī)的I∕O口有20mA的吸入電流,正因?yàn)?/p>
17、這一特點(diǎn),使的本設(shè)計(jì)中的驅(qū)動(dòng)電路部分大大簡(jiǎn)化,不用附加專門的驅(qū)動(dòng)電路即可正常工作。</p><p> 圖2-6 顯示驅(qū)動(dòng)電路</p><p> 2.3電源電路的設(shè)計(jì)</p><p> 電源電路采用普通集成穩(wěn)壓電路,在本設(shè)計(jì)中,由于考慮到成本問(wèn)題,這部分電路就以輸出+5V的穩(wěn)壓電源代替。</p><p> 第三章. 8×8點(diǎn)陣
18、顯示器控制系統(tǒng)的硬件設(shè)計(jì)</p><p> 3.1 硬件系統(tǒng)的總體設(shè)計(jì)</p><p> 根據(jù)設(shè)計(jì)要求與設(shè)計(jì)方案,硬件電路的設(shè)計(jì)框圖如圖3-1所示。硬件電路結(jié)構(gòu)由8個(gè)部分組成:時(shí)鐘電路、復(fù)位電路、按鍵接口電路、電源電路、點(diǎn)陣顯示陽(yáng)極驅(qū)動(dòng)電路、點(diǎn)陣顯示陰極驅(qū)動(dòng)電路和8×8點(diǎn)陣顯示電路。</p><p> 圖3-1 8×8點(diǎn)陣顯示器組成原理框圖
19、</p><p> 3.2 單片機(jī)AT89C51芯片的性能及功能的分析</p><p> 3.2.1 AT89C51的主要特性: </p><p> · 32條可編程I/O線 · 兩個(gè)16位定時(shí)器/計(jì)數(shù)器· 6個(gè)中斷源 · 可編程串行通道
20、· 低功耗的閑置和掉電模式· 片內(nèi)振蕩器和時(shí)鐘電路</p><p> 3.2.2 AT89C51管腳說(shuō)明:</p><p> ?、賄CC:供電電壓。 GND:接地。②P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIA
21、SH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> ③ P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p>
22、<p> ?、?#160;P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口
23、輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p> ?、軵3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> ?、轗ST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),
24、要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。⑦ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,
25、MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。</p><p> ?、?/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。⑨ /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)
26、器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。⑩XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。</p><p> 3.3 具體電路及功能分析</p><p> 3.3.1 顯示電路</p><p>
27、本設(shè)計(jì)采用雙色8×8點(diǎn)陣模塊顯示,但是在設(shè)計(jì)中我們只用單色顯示,我們通過(guò)改變限流電阻的阻值的大小來(lái)改變顯示字符的亮度。</p><p> 3.3.2 電源電路</p><p> 電源電路采用普通的三端集成穩(wěn)壓電源。為整個(gè)系統(tǒng)提供+5V的電壓。</p><p> 3.3.3 電路原理圖 </p><p> 圖3-2 電路原理
28、圖</p><p> 3.4.硬件系統(tǒng)連線 (1).把“單片機(jī)系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DR1-DR8”端口上;(2).把“單片機(jī)系統(tǒng)”區(qū)域中的P3端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DC1-DC8”端口上;(3).把“單片機(jī)系統(tǒng)”區(qū)域中的P2.0/A8端子用導(dǎo)線連接到“獨(dú)立式鍵盤”區(qū)域中的SP1端子上;</p><p> 第四章 系統(tǒng)軟件
29、電路的設(shè)計(jì)</p><p> 4.1 軟件設(shè)計(jì)思想</p><p> 主程序先進(jìn)行設(shè)置中斷,并啟動(dòng),再進(jìn)行鍵盤掃描載入★,●,心形圖,然后判斷一組字型是否掃描完,按不同情況進(jìn)行循環(huán)調(diào)用子程序。進(jìn)入子程序后,首先設(shè)置相應(yīng)的程序,反復(fù)調(diào)用顯示子程序,并在顯示過(guò)程中反復(fù)調(diào)用鍵盤掃描子程序進(jìn)行延時(shí),判斷是否退出相應(yīng)的方式顯示子程序。設(shè)計(jì)過(guò)程中,能很好得提高按鍵響應(yīng)速度。如圖4-1所示為軟件系統(tǒng)
30、框圖。</p><p> 圖 4-1 軟件設(shè)計(jì)框圖</p><p> 字符編碼:8×8點(diǎn)陣可以看成是從上至下8個(gè)字節(jié),每個(gè)字節(jié)8位,因?yàn)樵擖c(diǎn)陣為共陰型點(diǎn)陣,因此若該燈亮,則該位為“1”;該燈不亮,則該位為“0”。所以★,●,心形圖的編碼為,從上至下:</p><p> “★”: 12H,14H,3CH,48H,3CH,14H,12H,00H<
31、/p><p> “●”: 00H,00H,38H,44H,44H,44H,38H,00H</p><p> “心形圖”: 30H,48H,44H,22H,44H,48H,30H,00H</p><p><b> 4.2 主程序設(shè)計(jì)</b></p><p> 主程序首先設(shè)置并啟動(dòng)T0中斷,然后調(diào)用初始化程序,為后面程序
32、要用到的數(shù)據(jù)調(diào)入,并清零一些用到的數(shù)據(jù)單元,然后載入★,●,心形圖,進(jìn)行掃描。圖4-2為主程序流程圖。 </p><p> 圖 4-2 主程序流程圖</p><p><b> 主程序如下:</b></p><p> COLUMN REG P0 ;行</p><p>
33、; ROW REG P2 ;列</p><p> SCANCODE EQU 10000000B ;掃描碼</p><p> SPEED EQU 1 ;0.25s延遲</p><p> S_TIME E
34、QU -2500 ;2.5ms掃描時(shí)間</p><p> ORG 0000H ;程序從0000H地址開始</p><p> JMP MAIN ;跳至MAIN</p><p> ORG 000BH ;TIMER0中斷
35、向量</p><p> JMP TIMER0 ;跳至TIMER0中斷子程序</p><p> MAIN: MOV IE,#82H ;設(shè)定TIMER0中斷</p><p> MOV TOMD,#01H ;使用T0定時(shí)器,方式1</p><p
36、> MOV SP,#60H ;移開堆棧指針</p><p> SETB RS0 ;切換到RB1</p><p> MOV R1,#20H ;顯示存儲(chǔ)起始地址</p><p> MOV R2,#8 ;掃描8行</
37、p><p> MOV R3,#SCANCODE ;載入掃描碼</p><p> CLR RS0 ;切換回RB0</p><p> MOV TH0,#0F6H ;設(shè)定每行掃描時(shí)間</p><p> MOV TL0,#3CH ;設(shè)定每
38、行掃描時(shí)間</p><p> SETB TR0 ;啟動(dòng)TIMER0</p><p> LOOP: MOV DPTR,#TABLE ;將數(shù)據(jù)指針指向TABLE地址</p><p> MOV R4,#4 ;4組字型 </p><p>
39、 SJMP $ ;等待中斷或其他</p><p><b> 4.3 子程序設(shè)計(jì)</b></p><p> 子程序中包括動(dòng)態(tài)顯示程序、按鍵程序、延時(shí)程序和中斷程序四種,下面依次詳細(xì)介紹。</p><p> 4.3.1 動(dòng)態(tài)顯示程序設(shè)計(jì)</p><p> 本系統(tǒng)中采用左移動(dòng)
40、態(tài)顯示方式。對(duì)于8×8LED陣列,其左移就是顯示4個(gè)不同的字型。首先掃描第一個(gè)字型,同樣是8行、8次掃描,8次顯示;完成第一個(gè)字型后,再掃描第二個(gè)字型;完成第二個(gè)字型后,再掃描第三個(gè)字型······依次類推,即可產(chǎn)生“★,●,心形圖”左移的感覺(jué)。</p><p> 假如第一個(gè)字型的編碼為00H 00H 36H 49H 49H 36H
41、 00H 00H;第二個(gè)字型的編碼為00H 1CH 22H 41H 41H 22H 1CH 00H,也就是把第一個(gè)字型編碼中,第1行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)、第2行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)、第3行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)、第4行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)······依次類推。</p><p> 當(dāng)?shù)谝粋€(gè)字型掃描完成后,就
42、進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第二個(gè)字型的編碼。同樣的,當(dāng)?shù)诙€(gè)字型掃描完成后,就進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第三個(gè)字型的編碼。這個(gè)調(diào)整動(dòng)作是將8個(gè)編碼根據(jù)順序填入存儲(chǔ)器,調(diào)整存儲(chǔ)器地址的程序流程圖如圖4-3所示。</p><p> 圖 4-3 動(dòng)態(tài)顯示流程圖</p><p> 動(dòng)態(tài)顯示子程序如下:</p><p> MOV R2,#8
43、 ;轉(zhuǎn)移次數(shù)</p><p> MOV R0,#20H ;R0內(nèi)置目的存儲(chǔ)器地址</p><p> MOV R1,#21H ;R1內(nèi)置來(lái)源存儲(chǔ)器地址</p><p> MOV 28H,@R0 ;先將第一行內(nèi)容搬至28H地址</p><p> MOVE_L: MOV
44、A,@R1 ;將來(lái)源存儲(chǔ)器內(nèi)容搬至ACC</p><p> MOV @R0,A ;將ACC內(nèi)容搬至目的存儲(chǔ)器</p><p> INC R0 ;下一個(gè)目的地址</p><p> INC R1 ;下一個(gè)來(lái)源地址</p><p&
45、gt; DJNZ R2,MOVE_L ;跳至MOVE_L,執(zhí)行8次</p><p> RET ;返回</p><p> 4.3.2 按鍵程序設(shè)計(jì)</p><p> 系統(tǒng)中采用獨(dú)立式非編碼鍵盤,在P1口接一個(gè)按鍵,P0端口分別控制8×8LED陣列。當(dāng)有鍵按下時(shí),對(duì)應(yīng)的LED亮;反之則滅。如圖4
46、-4所示為按鍵控制流程圖。</p><p><b> 按鍵子程序如下:</b></p><p> ORG 0000H</p><p> START: MOV P1,#0FFH ;置P1口為輸入狀態(tài)</p><p> LOOP: MOV A,P1 ;讀入P1口
47、狀態(tài)數(shù)據(jù)</p><p><b> NOP</b></p><p> MOV P0,A ;將狀態(tài)數(shù)據(jù)送入P0口,控制LED陣列</p><p> SJMP LOOP ;繼續(xù)循環(huán)</p><p><b> END</b></p>
48、<p> 4.3.3 延時(shí)程序設(shè)計(jì)</p><p> 延時(shí)程序在單片機(jī)編程中使用非常廣泛,也很重要,在本設(shè)計(jì)的程序中用到了延時(shí)子程序。已知晶振12MHZ,所以機(jī)器周期為1μs,但執(zhí)行一次DJZN操作為2μs,則延時(shí)時(shí)間是(1×200×250)次×2μs/次=100000μs=100ms。延時(shí)流程圖如圖4-5所示。 </p><p> 圖 4-5
49、 延時(shí)流程圖</p><p><b> 程序如下:</b></p><p> DELAY: MOV R7,#1</p><p> D1: MOV R6,#200</p><p> D2: MOV R5,#250</p><p> DJNZ R
50、5,$</p><p> DJNZ R6,D2</p><p> DJNZ R7,D1</p><p><b> RET</b></p><p> 4.3.4 中斷程序設(shè)計(jì)</p><p> 顯示程序在進(jìn)入中斷后首先要對(duì)定時(shí)器T0重新賦初值,以保證顯示屏刷新率的穩(wěn)定。根據(jù)設(shè)計(jì)要求
51、,設(shè)定掃描時(shí)間為2.5ms,那么定時(shí)器T0定時(shí)2.5ms,則定時(shí)初值計(jì)算公式為:</p><p> 定時(shí)時(shí)間t×時(shí)鐘頻率/12</p><p> 中斷流程圖如圖4-6所示。</p><p> 圖4-6 中斷流程圖</p><p><b> 中斷子程序如下:</b></p><p&g
52、t; TIMER0: CLR TR0 ;關(guān)閉TIMER0</p><p> PUSH A ;儲(chǔ)存ACC</p><p> SETB RS0 ;切換到RB1</p><p> MOV COLUMN,#0 ;關(guān)閉LED陣列&
53、lt;/p><p> MOV A,@R1 ;取出顯示信號(hào)</p><p> ?。皇褂霉碴?yáng)極式LED陣列,則加入下一列指令</p><p><b> CPL A</b></p><p> MOV ROW,A ;輸出顯示信號(hào)</p><
54、;p> MOV A,R3 ;載入掃描碼</p><p> MOV COLUMN,A ;輸出掃描碼(顯示一行)</p><p> RR A ;下一個(gè)掃描碼</p><p> MOV R3,A ;儲(chǔ)存下一個(gè)掃描碼&l
55、t;/p><p> INC R1 ;下一個(gè)顯示信號(hào)</p><p> DJNZ R2,NEXT_C ;未超過(guò)8行則跳至NEXT_C</p><p> MOV R2,#8 ;重新開始掃描</p><p> MOV R1,#20H
56、 ;從第一行開始掃描</p><p> NEXY_C: MOV TH0,#F6H ;設(shè)定每行掃描時(shí)間</p><p> MOV TL0,#3CH ;設(shè)定每行掃描時(shí)間</p><p> SETB TR0 ;啟動(dòng)TIMER0</p><p&
57、gt; CLR RS0 ;切換回RB0</p><p> POP A ;取回ACC</p><p><b> RETI</b></p><p> 第五章 調(diào)試及性能分析</p><p><b> 5.1 軟件調(diào)試<
58、/b></p><p> 軟件調(diào)試主要是利用計(jì)算機(jī)仿真針對(duì)程序中可能存在的錯(cuò)誤進(jìn)行檢測(cè),直到得到正確的顯示結(jié)果。按照程序流程圖在KEIL C51軟件中編寫好程序,在此軟件中檢測(cè)編寫好的程序是否有誤語(yǔ)法錯(cuò)誤。此次軟件調(diào)試參考前面的子程序,選擇動(dòng)態(tài)顯示程序和延時(shí)程序進(jìn)行調(diào)試,并觀察其結(jié)果,如圖5-1、5-2所示。</p><p> 圖 5-1 動(dòng)態(tài)顯示程序調(diào)試結(jié)果</p>
59、;<p> 圖 5-2 延時(shí)程序調(diào)試結(jié)果</p><p><b> 5.2 性能分析</b></p><p> 此次系統(tǒng)設(shè)計(jì)結(jié)果較好,LED顯示屏能很好的顯示信息。這個(gè)方案設(shè)計(jì)的8x8的點(diǎn)陣LED圖文顯示屏,電路簡(jiǎn)單,成本較低,且較容易擴(kuò)展成更大的顯示屏;顯示屏各點(diǎn)亮度均勻、充足;顯示圖形或文字穩(wěn)定、清晰無(wú)串?dāng)_;可用靜止、移入移出等多種顯示方式顯
60、示圖形或文字。</p><p><b> 總結(jié)</b></p><p> 通過(guò)此次論文設(shè)計(jì),讓我學(xué)到了許多知道的和不知道的,都有提高,在單片機(jī)的選擇、顯示屏的組合還有各種器件的選用有了一個(gè)明確的認(rèn)識(shí),程序設(shè)計(jì)上清晰地思路,理論在實(shí)踐方面的運(yùn)用能力有巨大的提高。在實(shí)踐以前,由于對(duì)單片機(jī)有一定的興趣,我通過(guò)課外學(xué)習(xí)已經(jīng)接觸了很多概念以及設(shè)計(jì)方式,但不專業(yè)。但是通過(guò)這次
61、深層次的學(xué)習(xí)、設(shè)計(jì)我有了一定的實(shí)踐經(jīng)驗(yàn)和理論基礎(chǔ),也讓我可以進(jìn)行更深的研究學(xué)習(xí),在設(shè)計(jì)思路上,通過(guò)查閱資料了解了許多方法,認(rèn)識(shí)到形式的多樣性,模仿優(yōu)秀作品是每個(gè)設(shè)計(jì)師必走之路,但是做設(shè)計(jì)必須要有自己的思想,人也要有自己的鮮明個(gè)性,久了就成了自己的風(fēng)格,風(fēng)格的養(yǎng)成與一個(gè)人的藝術(shù)素養(yǎng)和個(gè)人修養(yǎng)有直接關(guān)系。</p><p> 要拓展自己的知識(shí)面,使自己的知識(shí)系統(tǒng)化知識(shí)需要接觸社會(huì)的方方面面,光有書本知識(shí)是遠(yuǎn)遠(yuǎn)不夠的。
62、要求自己在以后的學(xué)習(xí)中多想,多讀,多學(xué)。要求自己的寫作水平一定要過(guò)硬。經(jīng)驗(yàn)的提高,讓我今后在設(shè)計(jì)時(shí)更加方便、快捷,也為畢業(yè)后的就業(yè)提供了保障。 </p><p><b> 參考文獻(xiàn)</b></p><p> [1]張曉峰,高斌·電氣自動(dòng)化實(shí)驗(yàn)教程·國(guó)防工業(yè)出版社,2010年3月 </p><p> [2] 樓然苗,李光
63、飛·51系列單片機(jī)設(shè)計(jì)實(shí)例·北航出版社,2005年1月</p><p> [3] 王幸之,鐘愛琴,王雷,王閃·AT89系列單片機(jī)原理與接口技術(shù)·北京航空航天大學(xué)出版社,2004年5月</p><p> [4] 朱定華·單片機(jī)原理及接口技術(shù)·電子工業(yè)出版社,2001年4月</p><p> [5] 趙茂
64、泰·智能儀器原理及應(yīng)用·電子工業(yè)出版社,2004年2月</p><p> [6] 范力旻·單片機(jī)原理及應(yīng)用技術(shù)·電子工業(yè)出版社,2009年1月</p><p><b> 附錄</b></p><p><b> 1.1 元件清單</b></p><p>&
65、lt;b> 1.2 程序清單</b></p><p> COLUMN REG P0 ;行</p><p> ROW REG P2 ;列</p><p> SCANCODE EQU 10000000B
66、 ;掃描碼</p><p> SPEED EQU 1 ;0.25s延遲</p><p> S_TIME EQU -2500 ;2ms掃描時(shí)間</p><p> ORG 0000H ;程序從0000H地址開
67、始</p><p> JMP START ;跳至START</p><p> ORG 000BH ;TIMER0中斷向量</p><p> JMP TIMER0 ;跳至TIMER0中斷子程序</p><p> START
68、: MOV IE,#82H ;設(shè)定TIMER0中斷</p><p> MOV TOMD,#01H ;使用T0定時(shí)器,方式1</p><p> MOV SP,#60H ;移開堆棧指針</p><p> SETB RS0
69、 ;切換到RB1</p><p> MOV R1,#20H ;顯示存儲(chǔ)起始地址</p><p> MOV R2,#8 ;掃描8行</p><p> MOV R3,#SCANCODE ;載入掃描碼</p><p> CLR RS0
70、 ;切換回RB0</p><p> MOV TH0,#0F6H ;設(shè)定每行掃描時(shí)間</p><p> MOV TL0,#3CH ;設(shè)定每行掃描時(shí)間</p><p> SETB TR0 ;啟動(dòng)TIMER0</p><p&g
71、t; LOOP: MOV DPTR,#TABLE ;將數(shù)據(jù)指針指向TABLE地址</p><p> MOV R4,#4 ;4組字型 </p><p> NEXT: MOV R2,#8 ;加載數(shù)據(jù)數(shù)量</p><p> MOV R0,
72、#20H ;儲(chǔ)存存儲(chǔ)器起始地址</p><p> CALL LOADING ;加載一個(gè)字型</p><p> CALL DELAY ;延時(shí)</p><p> DJNZ R4,NEXT ;跳至NEXT形成一個(gè)循環(huán)</p><
73、;p> JMP LOOP ;跳至LOOP形成一個(gè)循環(huán)</p><p> LOADING: MOV R3,#0 ;間距</p><p> L_1: MOV A,R3 ;將間距放入ACC</p><p> MOVC A
74、,@A+DPTR ;讀入數(shù)據(jù)</p><p> MOV @R0,A ;將數(shù)據(jù)存入存儲(chǔ)器</p><p> INC R3 ;指向下一個(gè)讀取地址</p><p> INC R0 ;指向下一個(gè)儲(chǔ)存地址</p>
75、<p> DJNZ R2,L_1 ;跳至L_1形成一個(gè)循環(huán)</p><p> INC DPTR ;下一筆數(shù)據(jù)</p><p><b> RET</b></p><p> DELAY: MOV R7,#1
76、 </p><p> D1: MOV R6,#200</p><p> D2: MOV R5,#250</p><p> DJNZ R5,$</p><p> DJNZ R6,D2</p><p> DJNZ R7,D1</p><
77、;p><b> RET</b></p><p> TIMER0: CLR TR0 ;關(guān)閉TIMER0</p><p> PUSH A ;儲(chǔ)存ACC</p><p> SETB RS0 ;切換到
78、RB1</p><p> MOV COLUMN,#0 ;關(guān)閉LED陣列</p><p> MOV A,@R1 ;取出顯示信號(hào)</p><p> ;使用共陽(yáng)極式LED陣列,則加入下一列指令</p><p><b> CPL A</b></p
79、><p> MOV ROW,A ;輸出顯示信號(hào)</p><p> MOV A,R3 ;載入掃描碼</p><p> MOV COLUMN,A ;輸出掃描碼(顯示一行)</p><p> RR A
80、 ;下一個(gè)掃描碼</p><p> MOV R3,A ;儲(chǔ)存下一個(gè)掃描碼</p><p> INC R1 ;下一個(gè)顯示信號(hào)</p><p> DJNZ R2,NEXT_C ;未超過(guò)8行則跳至NEXT_C</p>&l
81、t;p> MOV R2,#8 ;重新開始掃描</p><p> MOV R1,#20H ;從第一行開始掃描</p><p> NEXY_C: MOV TH0,#F6H ;設(shè)定每行掃描時(shí)間</p><p> MOV TL0,#3CH
82、 ;設(shè)定每行掃描時(shí)間</p><p> SETB TR0 ;啟動(dòng)TIMER0</p><p> CLR RS0 ;切換回RB0</p><p> POP A ;取回ACC</p><
83、p><b> RETI</b></p><p> TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH GRAPH: DB 12H,14H,3CH,48H,3CH,14H,12H,00H &
84、#160; DB 00H,00H,38H,44H,44H,44H,38H,00H DB 30H,48H,44H,22
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)--4個(gè)8×8點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---4個(gè)8×8點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 課程設(shè)計(jì)--8×8led點(diǎn)陣屏仿電梯數(shù)字滾動(dòng)顯示
- led16x16點(diǎn)陣課程設(shè)計(jì)--16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 16x16點(diǎn)陣課程設(shè)計(jì)--16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 課程設(shè)計(jì)--led1616點(diǎn)陣顯示設(shè)計(jì)
- 8×8×8光立方畢業(yè)方案說(shuō)明書
- 基于c語(yǔ)言的8x8點(diǎn)陣課程設(shè)計(jì)
- 16×16點(diǎn)陣eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)--1616點(diǎn)陣顯示
- eda課程設(shè)計(jì)-- 1616點(diǎn)陣顯示
- 16×16點(diǎn)陣(滾動(dòng)顯示)
- 8x8點(diǎn)陣廣告牌課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告--1616點(diǎn)陣顯示
- 16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---16×16點(diǎn)陣led室內(nèi)電子顯示屏的設(shè)計(jì)
- 8x_8點(diǎn)陣動(dòng)態(tài)廣告牌課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--16×16 led點(diǎn)陣顯示漢字
- 畢業(yè)論文---16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)模塊
- 8x8led顯示課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論