單片機(jī)畢業(yè)設(shè)計(jì)
《單片機(jī)畢業(yè)設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)畢業(yè)設(shè)計(jì)(27頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 重慶工貿(mào)職業(yè)技術(shù)學(xué)院 題目: 點(diǎn)陣LED多功能系統(tǒng)設(shè)計(jì)與制作 任務(wù)與要求: 采用51單片機(jī)作為微控制器.通過(guò)1個(gè)16x16的點(diǎn)陣LED進(jìn)行文字顯示學(xué)號(hào)和姓名.在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足、穩(wěn)定、清晰無(wú)串?dāng)_. 文字顯示具有每排字有滾動(dòng)和逐排等顯示方式. 時(shí)間: 年 月 日 至 年 月 日 共 周 所屬系部: 機(jī)電工程系 學(xué)生姓名:嚴(yán)偉 學(xué) 號(hào):1001020234 專業(yè): 機(jī)電一體化 指導(dǎo)單位或教研室: 指導(dǎo)教師:
2、張顯 職 稱:教師 重慶工貿(mào)職業(yè)技術(shù)學(xué)院制 年 月 日 畢業(yè)設(shè)計(jì)(論文)進(jìn)度計(jì)劃表 日 期 工 作 內(nèi) 容 執(zhí) 行 情 況 指導(dǎo)教師 簽 字 教師對(duì)進(jìn)度計(jì)劃實(shí)施情況總評(píng) 簽名 年 月 日 本表作評(píng)定學(xué)生平時(shí)成績(jī)的依據(jù)之一
3、 點(diǎn)陣LED多功能系統(tǒng)設(shè)計(jì)與制作 【摘要】 本論文闡述了基于單片機(jī)STC89C51的1616點(diǎn)陣LED電子顯示屏的設(shè)計(jì)。分別闡述了顯示屏顯示的基本原理,硬件設(shè)計(jì)、控制方法及其程序的實(shí)現(xiàn)。經(jīng)過(guò)調(diào)試和分析,設(shè)計(jì)的結(jié)果能夠?qū)崿F(xiàn)對(duì)漢字的靜態(tài)和動(dòng)態(tài)顯示,動(dòng)態(tài)顯示的內(nèi)容有多種方式,同時(shí)又可通過(guò)上位機(jī)更新顯示的內(nèi)容。本文給出了一種基于AT89C52單片機(jī)的16*16點(diǎn)陣的設(shè)計(jì)方案,包括系統(tǒng)具體的硬件設(shè)計(jì)方案,軟件流程圖和部分匯編語(yǔ)言程序等方面。在負(fù)載范圍內(nèi),只需通過(guò)簡(jiǎn)單的級(jí)聯(lián)就可以對(duì)顯示屏進(jìn)行擴(kuò)展,是一種成本低廉的圖文顯示方案??蓮V泛應(yīng)用于各種公共場(chǎng)合,如車站、碼頭、銀行、學(xué)校、火車、公共汽車顯示等。
4、 關(guān)鍵字:STC89C51;1616點(diǎn)陣;LED;顯示屏 Abstract: This paper based on single chip STC89C51 16 and lattice LED electronic display design. Are described respectively, and the screen shows the basic principle, hardware design, control methods and the realization of the program. Through testing and analysis,
5、the results of the design can realize the static and dynamic characters, according to the content of the dynamic display a variety of ways, and at the same time, but also through the upper machine update display content. This paper presents a method based on the microcontroller of AT89C52 16 * 16 la
6、ttice design scheme, including the system of concrete hardware design, software flow chart and part of assembly language program, etc. In the load range, only through the simple cascade can be extended to screen, is a kind of cheap graphic display scheme. Can be widely used in all kinds of public pl
7、aces, such as railway stations, docks, Banks, schools, train, bus display, etc. Key words: STC89C51;16*16 lattice;screen 目錄 1 功能要求和論證的方案 - 1 - 1.1 方案論證...........................................................- 1 - 1.1.1 動(dòng)態(tài)掃描簡(jiǎn)介 - 1- 1.1.2串行傳輸?shù)姆绞?..............................
8、..................- 2 - 1.3顯示模塊論證........................................................ - 3- 1.4數(shù)據(jù)傳輸論證........................................................- 3 - 2 顯示原理及顯示方式 - 4 - 2.1 靜態(tài)顯示方式.......................................................- 4 - 2.2 動(dòng)態(tài)顯示方式..............................
9、.........................- 4 - 2.3 點(diǎn)陣顯示原理.......................................................- 4 - 3 系統(tǒng)硬件部分設(shè)計(jì) - 5 - 3.1單片機(jī)系統(tǒng)及外圍電路 - 5 - 3.2 列驅(qū)動(dòng)電路 - 5 - 3.3 行驅(qū)動(dòng)電路 - 7 - 3.4 單片機(jī)最小系統(tǒng)電路................................................- 9 - 3.5 電源電路 - 10 - 4 系統(tǒng)軟件部分設(shè)計(jì) - 10 - 4.1 系統(tǒng)主程序設(shè)計(jì)......
10、..............................................- 10 - 4.2 顯示驅(qū)動(dòng)程序......................................................- 11 - 5 系統(tǒng)調(diào)試及性能、程序分析 - 12 - 5.1 調(diào)試及性能分析....................................................- 12 - 5.2 程序介紹及流程....................................................- 12 - 5.2.1 定義端
11、口.....................................................- 12 - 5.2.2 漢字子模.....................................................- 13 - 5.3 開中斷............................................................- 15 - 5.3.1延時(shí)程序......................................................- 16 - 5.3.2主程序.............
12、...........................................- 17 - 5.3.3 控制點(diǎn)亮程序..................................................- 19- 6 制作成果和調(diào)試結(jié)果 - 21 - 6.1制作成果........................................................- 21 - 6.2調(diào)試結(jié)果........................................................- 22 - 結(jié)束語(yǔ) - 23 - 參考文獻(xiàn) -
13、 24 - - 22 - 1 功能要求和論證的方案 要求采用51單片機(jī)作為微控制器.通過(guò)1個(gè)16x16的點(diǎn)陣LED進(jìn)行文字顯示學(xué)號(hào)和姓名.在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足、穩(wěn)定、清晰無(wú)串?dāng)_. 文字顯示具有每排字有滾動(dòng)和逐排等顯示方式. 1.1方案論證 從理論上說(shuō),不論顯示圖形還是文字,只要控制與組成這些圖形或文字的各個(gè)點(diǎn)所在位置相對(duì)應(yīng)的LED器件發(fā)光,就可以得到我們想要的顯示結(jié)果,這種同時(shí)控制各個(gè)發(fā)光點(diǎn)亮滅的方法稱為靜態(tài)驅(qū)動(dòng)顯示方式。1616的點(diǎn)陣共有256個(gè)發(fā)光二極管,顯然單片機(jī)沒(méi)有這么多端口,如果我們采用鎖存器來(lái)擴(kuò)展端口,按8位的鎖存器來(lái)計(jì)算,161
14、6的點(diǎn)陣需要256/8=32個(gè)鎖存器。這個(gè)數(shù)字很龐大,因?yàn)槲覀儍H僅是1616的點(diǎn)陣,在實(shí)際應(yīng)用中的顯示屏往往要大的多,這樣在鎖存器上花的成本將是一個(gè)很龐大的數(shù)字。因此在實(shí)際應(yīng)用中的顯示屏幾乎都不采用這種設(shè)計(jì),而采用另一種稱為動(dòng)態(tài)掃描的顯示方法。 1.1.1 動(dòng)態(tài)掃描簡(jiǎn)介 動(dòng)態(tài)掃描的意思簡(jiǎn)單地說(shuō)就是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行(比如16行)的同名列共用一套列驅(qū)動(dòng)器。具體就1616的點(diǎn)陣來(lái)說(shuō),我們把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第一行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第一行使其燃亮一定的時(shí)間,然后熄滅;再送出第二行的
15、數(shù)據(jù)并鎖存,然后選通第二行使其燃亮相同的時(shí)間,然后熄滅;…… 第十六行之后又重新燃亮第一行,這樣反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,我們就能看到顯示屏上穩(wěn)定的圖形了。 采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)列驅(qū)動(dòng)器。顯示數(shù)據(jù)通常存儲(chǔ)在單片機(jī)的存儲(chǔ)器中,按8位一個(gè)字節(jié)的形式順序排放。顯示時(shí)要把一行中各列的數(shù)據(jù)都傳送到相應(yīng)的列驅(qū)動(dòng)器上去,這就存在一個(gè)顯示數(shù)據(jù)傳輸?shù)膯?wèn)題。從控制電路到列驅(qū)動(dòng)器的數(shù)據(jù)傳輸可以采用并行方式或串行方式。顯然,采用并行方式時(shí),從控制電路到列驅(qū)動(dòng)器的線路數(shù)量大,相應(yīng)的硬件數(shù)目多。當(dāng)列數(shù)很多時(shí),并行傳輸?shù)姆桨甘遣?/p>
16、可取的。 1.1.2串行傳輸?shù)姆绞? 采用串行傳輸?shù)姆椒ǎ刂齐娐房梢灾挥靡桓盘?hào)線,將列數(shù)據(jù)一位一位傳往列驅(qū)動(dòng)器,在硬件方面無(wú)疑是十分經(jīng)濟(jì)的。但是,串行傳輸過(guò)程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都已傳輸?shù)轿恢?,這一行的各列才能并行地進(jìn)行顯示。這樣,對(duì)于一行的顯示過(guò)程就可以分解成列數(shù)據(jù)準(zhǔn)備(傳輸)和列數(shù)據(jù)顯示兩個(gè)部分。對(duì)于串行傳輸方式來(lái)說(shuō),列數(shù)據(jù)準(zhǔn)備時(shí)間可能相當(dāng)長(zhǎng),在行掃描周期確定的情況下,留給行顯示的時(shí)間就太少了,以至影響到LED的亮度。 解決串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時(shí)間矛盾問(wèn)題,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)
17、據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯示就需要具有鎖存功能。經(jīng)過(guò)上述分析,可以歸納出列驅(qū)動(dòng)器電路應(yīng)具備的主要功能。對(duì)于列數(shù)據(jù)準(zhǔn)備來(lái)說(shuō),它應(yīng)能實(shí)現(xiàn)串入并出的移位功能;對(duì)于列數(shù)據(jù)顯示來(lái)說(shuō),應(yīng)具有并行鎖存的功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時(shí),串并移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會(huì)影響本行的顯示。圖1-1為顯示屏電路實(shí)現(xiàn)的結(jié)構(gòu)框圖。 圖1-1 1.3 顯示模塊論證 (1)點(diǎn)亮LED數(shù)碼管的方式有靜態(tài)和動(dòng)態(tài)2種方法。本文以8段LED作為示例來(lái)論證方案 (2)這種模塊由64個(gè)發(fā)光LED芯片以88的形式構(gòu)成一個(gè)正方形模塊,然后用2列8針引腳將內(nèi)部電路接口引
18、出,供驅(qū)動(dòng)電路使用。 (3)行對(duì)應(yīng)的給LED的陽(yáng)極,先給第一行以高電平,如果送給16列的代碼為EFFF,則第一行的第4個(gè)LED被點(diǎn)亮,再給第二行以高電平,如果送給16列的代碼為EF07,則第二行的第4、9、10、11、12、13個(gè)被點(diǎn)亮,接著給第三行以高電平,同時(shí)給列以驅(qū)動(dòng)代碼,這樣不斷地進(jìn)行行行的掃描,只要速度夠快,由于人的視覺(jué)暫留作用,就不會(huì)感覺(jué)到明顯的閃爍感。 1.4 數(shù)據(jù)傳輸論證 采用動(dòng)態(tài)顯示方式進(jìn)行顯示時(shí),每一行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)驅(qū)動(dòng)器。顯示數(shù)據(jù)通常存儲(chǔ)在單片機(jī)的存儲(chǔ)器中,按8位一個(gè)字節(jié)的形式順序排放。顯示時(shí)要把一行中各列的數(shù)據(jù)都傳送到相應(yīng)的列驅(qū)動(dòng)器上去,這就
19、存在一個(gè)顯示數(shù)據(jù)傳輸?shù)膯?wèn)題。從控制電路到列驅(qū)動(dòng)器的數(shù)據(jù)傳輸可以采用并列方式或串行方式。 顯然,采用并行方式時(shí),從控制電路到列驅(qū)動(dòng)器的線路數(shù)量大,相應(yīng)的硬件數(shù)目多。當(dāng)列數(shù)很多時(shí),并列傳輸?shù)姆桨甘遣豢扇〉摹? 采用串行傳輸?shù)姆椒?,控制電路可以只用一根信?hào)線,將列數(shù)據(jù)一位一位傳往列驅(qū)動(dòng)器,在硬件方面無(wú)疑是十分經(jīng)濟(jì)的。但是,串行傳輸過(guò)程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都以傳輸?shù)轿恢?,這一行的各列才能并行地進(jìn)行顯示。這樣,對(duì)于一行的顯示過(guò)程就可以分解成列數(shù)據(jù)準(zhǔn)備(傳輸)和列數(shù)據(jù)顯示兩部分。對(duì)于串行傳輸方式來(lái)說(shuō),列數(shù)據(jù)準(zhǔn)備時(shí)間可能相當(dāng)長(zhǎng),在行掃描周期確定的情況下留給行顯示
20、的時(shí)間就太少了,以致影響到LED的亮度。 解決串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時(shí)間矛盾問(wèn)題,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一列數(shù)據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯示就需要具有所存功能。經(jīng)過(guò)上述分析,就可以歸納出列驅(qū)動(dòng)器電路應(yīng)具有的功能。對(duì)于列數(shù)據(jù)準(zhǔn)備來(lái)說(shuō),它應(yīng)能實(shí)現(xiàn)串入并處的移位功能;對(duì)于列數(shù)據(jù)顯示來(lái)說(shuō),應(yīng)具有并行鎖存的功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時(shí),串并移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會(huì)影響本行的顯示。 2顯示原理及顯示方式 下面重點(diǎn)介紹點(diǎn)陣LED數(shù)碼燈的原理和方式 2.1 靜態(tài)顯示方式 靜態(tài)顯示方式,即8段LED數(shù)
21、碼管在顯示某一個(gè)數(shù)碼時(shí),加在數(shù)碼管上的段碼保持不變,直至換顯其他數(shù)碼為止。這樣數(shù)碼管的每一段均應(yīng)由一條輸出線來(lái)控制,每顯示以為數(shù)碼需要8根輸出線,當(dāng)N位顯示則需N8根輸出控制線。占用較多I/O資源。 2.2動(dòng)態(tài)顯示方式 為解決靜態(tài)顯示占用較多I/O資源的問(wèn)題,在多位顯示時(shí)通常采用動(dòng)態(tài)顯示方式,動(dòng)態(tài)顯示是將所有數(shù)碼管的段碼線對(duì)應(yīng)并聯(lián)在一起,由一個(gè)8位的輸出口控制,每位數(shù)碼管的公共端分別出一位I/O線控制。顯示不同數(shù)碼時(shí),由位線控制各位輪流顯示。位線控制某位選通時(shí),該位應(yīng)顯示數(shù)碼的段碼同時(shí)加在段碼線上,即每一時(shí)刻僅僅有一位數(shù)碼管是被點(diǎn)亮的,當(dāng)輪流顯示的速度較快(每秒24次以上),由于人眼的視覺(jué)
22、暫留現(xiàn)象,看起來(lái)就像所有位同時(shí)顯示一樣,這時(shí),我們就能看到穩(wěn)定的圖像了 2.3 點(diǎn)陣顯示原理 點(diǎn)陣顯示器實(shí)際上就是LED 顯示器,構(gòu)成顯示器的所有LED都依矩陣形式排列。從內(nèi)部結(jié)構(gòu)看,點(diǎn)亮LED 的方法就是要讓該LED所對(duì)應(yīng)的Y線、X線加上高、低電平,使LED處于正向偏置狀態(tài)。使用多行掃描的方式,可以實(shí)現(xiàn)很多動(dòng)態(tài)效果,點(diǎn)陣顯示器常采用掃描法,掃描方式包括:行掃描和列掃描。行掃描就是控制點(diǎn)陣顯示器的行線依次輸出有效驅(qū)動(dòng)電平,當(dāng)每行行線狀態(tài)有效時(shí),分別輸出對(duì)應(yīng)的行掃描碼之列線驅(qū)動(dòng)該行LED點(diǎn)亮。列掃描控制列線依次輸出有效驅(qū)動(dòng)電平,當(dāng)?shù)趎列有效時(shí),輸出列掃描至行線,驅(qū)動(dòng)該列LED點(diǎn)亮。 行掃描
23、和列掃描都要求點(diǎn)陣顯示器依次驅(qū)動(dòng)一行或一列(8個(gè)LED)。 具體就8x8的點(diǎn)陣來(lái)說(shuō),把所有同1行的發(fā)光管的陽(yáng)極連在一起,把所有同1列的發(fā)光管的陰極連在一起(共陽(yáng)極的接法),先送出對(duì)應(yīng)第一行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定時(shí)間,然后熄滅;再送出第二行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;以此類推,第8行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,就能夠看到顯示屏上穩(wěn)定的圖形了。 3系統(tǒng)硬件部分設(shè)計(jì) 硬件電路大致上可以分成單片機(jī)系統(tǒng)及外圍電路、列驅(qū)動(dòng)電路和行驅(qū)動(dòng)電路三部分。 3.1單片機(jī)系統(tǒng)及
24、外圍電路 單片機(jī)采用89C51或其兼容系列的芯片,采用24M或更高頻率的晶振,以獲得較高的刷新頻率,使顯示更穩(wěn)定。單片機(jī)的串口與列驅(qū)動(dòng)器相連,用來(lái)送顯示數(shù)據(jù)。P1口低4位與行驅(qū)動(dòng)器相連,送出行選信號(hào);P1.5~P1.7口則用來(lái)發(fā)送控制信號(hào)。P0和P2口空著,在有必要時(shí)可以擴(kuò)展系統(tǒng)的ROM和RAM。 3.2列驅(qū)動(dòng)電路 列驅(qū)動(dòng)電路由集成電路74HC595構(gòu)成,它具有一個(gè)8位串入并出的移位寄存器和一個(gè)8位輸出鎖存器的結(jié)構(gòu),而且移位寄存器和輸出鎖存器的控制是各自獨(dú)立的,可以實(shí)現(xiàn)在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù),即達(dá)到重疊處理的目的。 74HC595的外形及內(nèi)部結(jié)構(gòu)如圖2所示。它的輸
25、入側(cè)有8個(gè)串行移位寄存器,每個(gè)移位寄存器的輸出都連接一個(gè)輸出鎖存器。引腳SI是串行數(shù)據(jù)的輸入端。引腳SCK是移位寄存器的移位時(shí)鐘脈沖,在其上升沿發(fā)生移位,并將SI的下一個(gè)數(shù)據(jù)打入最低位。移位后的各位信號(hào)出現(xiàn)在各移位寄存器的輸出端,也就是輸出鎖存器的輸入端。RCK是輸出鎖存器的打入信號(hào),其上升沿將移位寄存器的輸出打入到輸出鎖存器。引腳G是輸出三態(tài)門的開放信號(hào),只有當(dāng)其為低時(shí)鎖存器的輸出才開放,否則為高阻態(tài)。SCLR信號(hào)是移位寄存器的清零輸入端,當(dāng)其為低時(shí)移位寄存器的輸出全部為零。由于SCK和RCK兩個(gè)信號(hào)是互相獨(dú)立的,所以能夠做到輸入串行移位與輸出鎖存互不干擾。芯片的輸出端為QA~QH,最高位Q
26、H可作為多片74HC595級(jí)聯(lián)應(yīng)用時(shí),向上一級(jí)的級(jí)聯(lián)輸出。但因QH受輸出鎖存器打入控制,所以還從輸出鎖存器前引出了QH’,作為與移位寄存器完全同步的級(jí)聯(lián)輸出。 圖3-1列驅(qū)動(dòng)及控制 3.3行驅(qū)動(dòng)電路 單片機(jī)P1口低4位輸出的行號(hào)經(jīng)4/16線譯碼器74LS154譯碼后生成16條行選通信號(hào)線,再經(jīng)過(guò)驅(qū)動(dòng)器驅(qū)動(dòng)對(duì)應(yīng)的行線。一條行線上要帶動(dòng)16列的LED進(jìn)行顯示,按每一LED器件20mA電流計(jì)算,16個(gè)LED同時(shí)發(fā)光時(shí),需要320mA電流,選用三極管8550作為驅(qū)動(dòng)管可滿足要求。 圖3-2 行控制及驅(qū)動(dòng) 3.4單片機(jī)最小系統(tǒng)電路 復(fù)位是單片機(jī)的初始化操作。其主要功能是把PC
27、初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需按復(fù)位鍵重新啟動(dòng)。RST引腳是復(fù)位信號(hào)的輸入端。復(fù)位信號(hào)是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩周期(即二個(gè)機(jī)器周期)以上。若使用頗率為6MHz的晶振,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)超過(guò)4us才能完成復(fù)位操作。 圖3-3復(fù)位信號(hào)的電路邏輯圖 整個(gè)復(fù)位電路包括芯片內(nèi)、外兩部分。外部電路產(chǎn)生的復(fù)位信號(hào)(RST)送至施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個(gè)機(jī)器周期的S5P2時(shí)刻對(duì)施密特觸發(fā)器的輸出進(jìn)行采樣,然后才得到內(nèi)部復(fù)位操作所需要的信號(hào)。
28、 復(fù)位操作有上電自動(dòng)復(fù)位相按鍵手動(dòng)復(fù)位兩種方式。上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的,其電路如圖4(a)所示。這佯,只要電源Vcc的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位,即接通電源就成了系統(tǒng)的復(fù)位初始化。 按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中,按鍵電平復(fù)位是通過(guò)使復(fù)位端經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的,其電路如圖4(b)所示;而按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來(lái)實(shí)現(xiàn)的,其電路如圖4(c)所示: (a)上電復(fù)位 (b)按鍵電平復(fù)位 (c)按鍵脈沖復(fù)位 圖3-4復(fù)位電路 上述電路圖中的電阻、電容參數(shù)適用于6MHz晶振,
29、能保證復(fù)位信號(hào)高電平持續(xù)時(shí)間大于2個(gè)機(jī)器周期。 3.5 電源電路 圖3-5電源電路 4系統(tǒng)軟件部分設(shè)計(jì) 這部分重點(diǎn)介紹主程序和顯示驅(qū)動(dòng)程序的設(shè)計(jì)和要求。 4.1系統(tǒng)主程序設(shè)計(jì) 系統(tǒng)主程序開始以后,首先是對(duì)系統(tǒng)環(huán)境初始化,包括設(shè)置串口、定時(shí)器、中斷和端口;接著自左到右以“滾動(dòng)”效果顯示班級(jí)姓名,停留約0.5s;,由于單片機(jī)沒(méi)有停機(jī)指令,所以可以設(shè)置系統(tǒng)程序不斷的循環(huán)執(zhí)行上述顯示效果。 LED顯示屏硬件電路只要硬件質(zhì)量可靠,引腳焊接正確,一般無(wú)需調(diào)試即可 正常工作。軟件部分需要調(diào)試的主要有顯示屏刷新頻率及顯示效果兩部分。顯示屏刷新率由定時(shí)器T0的溢出率和單片機(jī)的晶振頻率決定
30、,。 從理論上來(lái)說(shuō),24Hz以上的刷新頻率就能看到穩(wěn)定的連續(xù)的顯示,刷新率越高,顯示越穩(wěn)定,同時(shí)刷新頻率越高,顯示驅(qū)動(dòng)程序占用的CPU時(shí)間越多。試驗(yàn)證明,在目測(cè)條件下刷新頻率40Hz一下的畫面看起來(lái)閃爍較嚴(yán)重,刷新頻率50Hz以上的已基本察覺(jué)不出畫面的閃爍,刷新頻率達(dá)到85Hz以上時(shí)再增加畫面閃爍沒(méi)有明顯的改善 顯示屏軟件的主要功能是向屏體提供顯示數(shù)據(jù),并產(chǎn)生各種控制信號(hào),使屏幕按設(shè)計(jì)的要求顯示。根據(jù)軟件分層次設(shè)計(jì)的原理,我們可把顯示屏的軟件系統(tǒng)分成兩大層:第一層是底層的顯示驅(qū)動(dòng)程序,第二層是上層的系統(tǒng)應(yīng)用程序。顯示驅(qū)動(dòng)程序負(fù)責(zé)向屏體送顯示數(shù)據(jù),并負(fù)責(zé)產(chǎn)生行掃描信號(hào)和其它控制信號(hào),
31、配合完成LED顯示屏的掃描顯示工作。顯示驅(qū)動(dòng)程序由定時(shí)器T0中斷程序?qū)崿F(xiàn)。系統(tǒng)應(yīng)用程序完成系統(tǒng)環(huán)境設(shè)置(初始化)、顯示效果處理等工作,由主程序來(lái)實(shí)現(xiàn)。 從有利于實(shí)現(xiàn)較復(fù)雜的算法(顯示效果處理)和有利于程序結(jié)構(gòu)化考慮,顯示屏程序適宜采用C語(yǔ)言編寫。 4.2 顯示驅(qū)動(dòng)程序 顯示驅(qū)動(dòng)程序在進(jìn)入中斷后首先要對(duì)定時(shí)器T0重新賦初值以保證顯示屏刷新率的穩(wěn)定,1/16掃描的顯示屏的刷新率(幀頻)的計(jì)算公式如下: 其中fosc為晶振頻率,t0為定時(shí)器T0初值(工作在16位定時(shí)器模式)。 然后顯示驅(qū)動(dòng)程序查詢當(dāng)前燃亮的行號(hào),從顯示緩存區(qū)內(nèi)讀取下一行的顯示數(shù)據(jù),并通過(guò)串
32、口發(fā)送給移位寄存器。為消除在切換行顯示數(shù)據(jù)的時(shí)候產(chǎn)生拖尾現(xiàn)象,驅(qū)動(dòng)程序先要關(guān)閉顯示屏,即消隱,等顯示數(shù)據(jù)打入輸出鎖存器并鎖存,然后再輸出新的行號(hào),重新打開顯示。 5系統(tǒng)調(diào)試及性能、程序分析 最后程序是否能正常的工作,LED燈是否能正常的顯示出來(lái),都要看調(diào)試是否得當(dāng),下面就主要介紹系統(tǒng)的調(diào)試及性能,程序的分析。 5.1 調(diào)試及性能分析 LED顯示屏硬件電路只要器件質(zhì)量可靠,管腳焊接正確,一般無(wú)需調(diào)試即可正常工作。軟件部分需要調(diào)試的主要有顯示屏刷新頻率及顯示效果兩部分。顯示屏刷新率由定時(shí)器T0的溢出率和單片機(jī)的晶振頻率決定,下表給出了實(shí)驗(yàn)調(diào)試時(shí)采用的頻率及其對(duì)應(yīng)的定時(shí)器T0初值。
33、
顯示屏刷新率(幀頻)與T0初值關(guān)系表(24M晶振)
刷新率(Hz)
25
50
62.5
75
85
100
120
T0初值
0xec78
0xf63c
0xf830
0xf97e
0xfa42
0xfb1e
0xfbee
5.2 程序介紹及流程
/
*頭文件*/
#include
34、sbit EN_port = P1^3; sbit DA_in_port = P1^2; sbit CLK_port = P1^1; sbit Latch_port = P1^0; #define ABCD_port P1 //HC138 ABCD端口定義 //sbit D_port = P1^7; //sbit C_port = P1^6; //sbit B_port = P1^5; //sbit A_port = P1^4; 5.2.2 漢字子模 uchar code ziku_table[]={ 0xff,0xff,0xff,0xff,0xff,0xff,0x
35、ff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*顯示8行空白*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*顯示8行空白*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
36、,0xff,0xff,0xff, 0xFF,0xFF,0x1F,0xFC,0xEF,0xFB,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, 0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xFB,0x1F,0xFC,0xFF,0xFF,/*"1",0*/ 0xFF,0xFF,0x1F,0xFC,0xEF,0xFB,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xF3, 0x1F,0xF4,0xFF,0xF7,0xF
37、F,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xFB,0x1F,0xFC,0xFF,0xFF,/*"1",1*/ 0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE, 0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*"6",2*/ 0xFF,0xFF,0x7F,0xFE,0xBF,0xFE,0xBF,0xFE,0xBF,0xFE,0xDF,
38、0xFE,0xDF,0xFE,0xEF,0xFE, 0xEF,0xFE,0xF7,0xFE,0xFB,0xFE,0x03,0xF0,0xFF,0xFE,0xFF,0xFE,0x3F,0xF8,0xFF,0xFF,/*"8",3*/ 0xFF,0xFF,0x7F,0xFF,0x3F,0xFF,0x5F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF, 0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x1F,0xFC,0xFF,0xFF,/*"9",4*/ 0xFF,
39、0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE, 0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*"7",2*/ 0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE, 0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF
40、7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*"3",2*/ 0xFF,0xFF,0x0F,0xF8,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0x7F,0xFE, 0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xF7,0xF7,0xF7,0xF7,0xFB,0x0F,0xFC,0xFF,0xFF,/*"8",2*/ 0xBD,0xFF,0xBB,0x83,0xDB,0xBB,0xEF,0xDB,0x01,0xDA,0xEF,0xEB,0xEF,0xEB,0x00,0xDA,
41、 0xEF,0xBB,0xCF,0xBB,0xB7,0xBB,0x77,0xA3,0x7B,0xDB,0xFC,0xFB,0xFF,0xFB,0xFF,0xFB,/*"6",0*/ 0x7F,0xFF,0x77,0xF7,0x6F,0xFB,0x03,0x80,0xFB,0xDF,0xFD,0xEF,0x0F,0xF8,0xEF,0xFB, 0xEF,0xFB,0x0F,0xF8,0xDF,0xFD,0xDF,0xDD,0xEF,0xDD,0xEF,0xDD,0xF7,0xC3,0xF9,0xFF,/*"畢",1*/ 0xFF,0xFF,0x03,0x80,0xBB,0xBF,
42、0x3D,0xDF,0xDD,0xF7,0x03,0xE0,0xDF,0xFF,0x6F,0xFF, 0x6F,0xF7,0x07,0xE0,0x7F,0xFF,0x7F,0xDF,0x01,0x80,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,/*"業(yè)",2*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*顯示8行空白*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf
43、f,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*顯示8行空白*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, }; 5.3 開中斷 圖5-1中斷流程圖 uchar data dis
44、p_buff[32]; //32 個(gè)顯示數(shù)據(jù)緩存 //數(shù)據(jù)格式為 第1級(jí)第1行高八位,低八位,第1級(jí)第2行高八位。。。。。。 uchar data disp_han; //目前顯示到第幾行,第1行數(shù)值為0,第2行數(shù)值為1。。。。 void T0_Set() /*定義中斷方式*/ { TMOD = 0x01; //定時(shí)0,工作在方式1 TR0 = 1; //啟動(dòng)計(jì)數(shù) EA = 1; //開總中斷 ET0 = 1; //開定時(shí)器0中斷 return; } 5.3.1 延時(shí)程序 圖5-2延時(shí)程序流程 void delay_1ms
45、(uchar x) { uchar j; while(x--){ for(j=0;j<125;j++) {;} } } 5.3.2 主程序 圖5-3主程序流程 void main() { uchar i; uint data_temp[3]; uint temp,temp1; uchar hanzi; uchar han; uchar shift; for(i=0;i<32;i++) disp_buff[i]=0xff; T0_Set(); while(1){ for(hanzi=0;hanzi<15;hanzi++){ //最多顯示多少
46、個(gè)字 for(shift=0;shift<16;shift++){ //一個(gè)字移位16位 for(han=0;han<16;han++){ //一個(gè)字有16行數(shù)據(jù) data_temp[0]=ziku_table[(hanzi*32)+(han*2)+1]*0x100 + ziku_table[(hanzi*32)+(han*2)]; data_temp[1]=ziku_table[((hanzi+1)*32)+(han*2)+1]*0x100 + ziku_table[((hanzi+1)*32)+(han*2)]; //右往左移動(dòng) temp = data_temp[0]
47、; temp1 = data_temp[1]; for(i=shift;i>0;i--){ temp = (temp>>1) ; if((temp1&0x0001)!=0) temp = temp + 0x8000; temp1 = (temp1>>1); } disp_buff[han*2+1]=temp/0x100; disp_buff[han*2+0]=temp%0x100; } delay_1ms(60); //移位速度 } } } } 5.3.3 控制點(diǎn)亮程序 圖5-4點(diǎn)亮流程 void SLED_Disp() interrupt 1 u
48、sing 3 { uchar i; uchar data_buff; uchar temp; uchar han; TH0 = (65536-1000)/256; TL0 = (65536-1000)/256; Latch_port = 0; //HC595鎖定輸出,避免數(shù)據(jù)傳輸過(guò)程中,屏數(shù)據(jù)變化從而顯示閃爍 CLK_port = 0; han=disp_han; //------------------------ temp = disp_han*2 + 1; data_buff = disp_buff[temp]; for(i=0;i<8;i++){
49、 if((data_buff&0x80)!=0) DA_in_port = 1; else DA_in_port = 0; CLK_port = 1; CLK_port = 0; data_buff <<= 1; } temp = disp_han*2; data_buff = disp_buff[temp]; for(i=0;i<8;i++){ if((data_buff&0x80)!=0) DA_in_port = 1; else DA_in_port = 0; CLK_port = 1; CLK_port = 0; data_buff <<= 1; } //
50、---------------------------- EN_port = 1; //關(guān)屏顯示,原理為使HC138輸出全為1,從而三極管截止,點(diǎn)陣不顯示 ABCD_port = (ABCD_port & 0x0f)|(han<<4); //HC138譯碼輸出 Latch_port = 1; //允許HC595數(shù)據(jù)輸出到Q1-Q8端口 EN_port = 0; //HC138輸出有效,打開顯示 Latch_port = 0; //鎖定HC595數(shù)據(jù)輸出 disp_han++; //顯示下一行數(shù)據(jù) f(disp_han>=16) disp_han=0; 6
51、制作成果和調(diào)試結(jié)果 最后就是做出來(lái)的實(shí)物和調(diào)試的結(jié)果。 6.1制作成果 圖6-1實(shí)物圖 6.2調(diào)試結(jié)果 將USB接口接在電腦上,打開電源,寫入以.HEX為后綴的文件,在關(guān)掉電源,等待1S鐘在打開電源,屏幕能能夠穩(wěn)定、清晰無(wú)串?dāng)_的滾動(dòng)循環(huán)顯示自己的名字。在最小系統(tǒng)板上有復(fù)位按鈕可以讓我們更簡(jiǎn)單的控制顯示的過(guò)程。 圖6-2 實(shí)物圖 結(jié)束語(yǔ) 通過(guò)對(duì)點(diǎn)陣LED顯示屏的設(shè)計(jì)與制作,真是讓我受益匪淺,學(xué)到了很多東西。此次畢業(yè)設(shè)計(jì)軟件與硬件相結(jié)合,考察了我們的焊接水平與編程能力.經(jīng)過(guò)多次的實(shí)訓(xùn)焊接很順
52、利就完成了;可到了編程時(shí)就出現(xiàn)了很大的障礙,本來(lái)還以為編程會(huì)很簡(jiǎn)單的,等到實(shí)際操作起來(lái)才知道它的復(fù)雜性,沒(méi)有想像中的那么得心應(yīng)手,理解流程是有思維的前提.單片機(jī)是我們上學(xué)期開設(shè)的課程,所以很多專業(yè)知識(shí)也都忘記了.不過(guò)經(jīng)過(guò)我們一步步的努力,花費(fèi)的時(shí)間與精力終于沒(méi)有白費(fèi),效果漸漸地出現(xiàn)了.其實(shí)本身程序的思維是正確的,只是步驟中有點(diǎn)小錯(cuò)誤,所以導(dǎo)致整個(gè)程序的結(jié)果很亂,在仔細(xì)修改程序之后,終于一步步地達(dá)到效果了。 最后在自己和同學(xué)竭盡全力,老師的精心指導(dǎo)下,畢業(yè)設(shè)計(jì)才得以完成。這份成果是我自己和指導(dǎo)老師共同努力的結(jié)果,在享受我們成果之時(shí),不得不感慨單片機(jī)的重要性與高難度性,從中也學(xué)到了很多知識(shí).
53、,也讓我們對(duì)單片機(jī)有了更深一步的了解。 參考文獻(xiàn) [1]李全利 編著 :《單片機(jī)原理及接口技術(shù)》(第二版)[M].北京:高級(jí)教育出版社.2004 [2]張志良 主編 :《單片機(jī)原理及控制技術(shù)》(第二版)[M].北京:機(jī)械工業(yè)出版社.2005 [3]周越主編《單片機(jī)技術(shù)實(shí)驗(yàn)實(shí)訓(xùn)教程》[S]中國(guó)水利水電出版社2007年 [4]周越主編《單片機(jī)應(yīng)用技術(shù)》[M]中國(guó)水利水電出版社2009年 [5]李全利編《單片機(jī)原理及應(yīng)用技術(shù)》[M]高等教育出版社2004年 [6]李忠國(guó) 陳剛編著《單片機(jī)應(yīng)用技能實(shí)訓(xùn)》[S]人民郵電出版社2006年 [7]郭振民 丁紅主編《電子設(shè)計(jì)自動(dòng)化EDA》[M]中國(guó)水利水電出版社2009年 [8]周潤(rùn)景等編著《Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例》[S]電子工業(yè)出版社2006 [9] 張毅剛 主編 :《單片機(jī)原理及應(yīng)用》[M].北京:高級(jí)教育出版社.2006
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政溝通與講義協(xié)調(diào)-ppt課件(演講稿)
- 利潤(rùn)表及其分析課件
- 企業(yè)管理決策模擬大賽(商道使用)總結(jié)課件
- 藥品包裝材料和容器
- 反校園欺凌主題班會(huì)課件
- 蝴蝶效應(yīng)與中醫(yī)養(yǎng)生課件
- 新課程課堂教學(xué)的境界課件
- 人教版英語(yǔ)七年級(jí)下冊(cè)Unit-1-Section-A-Grammar-Focus-3c課件
- 下腔靜脈濾器植入術(shù)
- 團(tuán)隊(duì)建設(shè)(中外管理)
- 不擠不搶好朋友課件
- 人教版數(shù)學(xué)一年級(jí)上冊(cè)數(shù)學(xué)樂(lè)園課件
- 八年級(jí)上冊(cè)數(shù)學(xué)-一元一次不等式組ppt課件
- 健康生活習(xí)慣養(yǎng)成教育課件
- 免疫應(yīng)答ppt課件(英文)