單片機課程設(shè)計報告——16x16LED滾動顯示_第1頁
單片機課程設(shè)計報告——16x16LED滾動顯示_第2頁
單片機課程設(shè)計報告——16x16LED滾動顯示_第3頁
單片機課程設(shè)計報告——16x16LED滾動顯示_第4頁
單片機課程設(shè)計報告——16x16LED滾動顯示_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、16x16LED滾動顯示課程設(shè)計:單片機課程設(shè)計專業(yè)名稱:電氣工程及其自動化學(xué) 號: 學(xué)生姓名: 同組人員: 指導(dǎo)教師:2014年12月8日課程設(shè)計任務(wù)書20142015學(xué)年第1學(xué)期學(xué)生姓名:專業(yè)班級:電氣工程及其自動化 2012級(2)班指導(dǎo)教師:工作部門:、課程設(shè)計題目:16X16LED滾動顯示1.電機控制6.籃球比賽計分器2.簡易電子琴設(shè)計7.密碼鎖控制3.公交車報站器設(shè)計8.交通信號燈控制4.鍵盤花樣彩燈控制9.溫度控制系統(tǒng)5.數(shù)碼顯示搶答器控制10.自選二、課程設(shè)計內(nèi)容1. 根據(jù)具體設(shè)計課題的技術(shù)指標(biāo)和給定條件,以單片機為核心器件,能獨立而正確地進行方案論證和電路設(shè)計,完成仿真操作。

2、要求概念清楚、方案合理、方法正確、步驟完整;2. 熟悉、掌握各種外圍接口電路芯片的工作原理和控制方法;3. 熟練使用單片機匯編語言或C51進行軟件設(shè)計;4. 熟練使用Proteus、Keil軟件進行仿真電路測試;5. 熟練使用Protel軟件設(shè)計印刷電路板;6. 學(xué)會查閱有關(guān)參考資料和手冊,并能正確選擇有關(guān)元器件和參數(shù);7. 編寫設(shè)計報告,參考畢業(yè)設(shè)計論文格式。(1)根據(jù)課題要求確定系統(tǒng)設(shè)計方案;(2)繪制系統(tǒng)框圖、系統(tǒng)仿真原理圖(印刷電路板圖),列出元器件明細(xì)表;(3)計算電路參數(shù)和選擇元器件,畫出軟件框圖,列出程序清單;(4)打印仿真結(jié)果,根據(jù)測試結(jié)果進行誤差分析與修改調(diào)整;(5)對設(shè)計進

3、行全面總結(jié)。三、進度安排1 時間安排序號內(nèi) 容學(xué)時安排(天)1方案論證和總體設(shè)計12硬件設(shè)計測試13軟件設(shè)計14仿真測試及PCB設(shè)計15答辯1合計5設(shè)計指導(dǎo)地點:K2-407單片機、微機原理實驗室2 執(zhí)行要求單片機應(yīng)用課程設(shè)計共 9個選題,學(xué)生可自選課題。每組不超過2人,為避免雷同,在設(shè)計中每個同學(xué)所采用的方案不可一樣。四、課程設(shè)計考核辦法與成績評定根據(jù)過程、報告、答辯等確定設(shè)計成績,成績分優(yōu)、良、中、及格、不及格五等。評定項目基本內(nèi)涵分值設(shè)計過程考勤10分答辯回答問題情況20分實物或仿真測試正常無故障運行20分設(shè)計報告完成設(shè)計任務(wù)、報告規(guī)范性等情況50分90100分:優(yōu);8089分:良;70

4、79分:中;6069分,及格;60分以下:不及格六、課程設(shè)計參考資料1 賀哲榮.AT89S51單片機硬件設(shè)計與編程實例.北京:中國電力出版社.20122 李泉溪.單片機原理與應(yīng)用實例仿真.北京:北京航空航天大學(xué)出版社,2012.3 王平.單片機應(yīng)用設(shè)計與制作.北京:清華大學(xué)出版社,2012.4 彭為等.單片機典型系統(tǒng)設(shè)計實例精講.北京:電子工業(yè)出版社,2007王慶利等.單片機設(shè)計案例實踐教程.北京:北京郵電大學(xué)出版社,2008 韓志軍等單片機應(yīng)用系統(tǒng)設(shè)計一一入門向?qū)c設(shè)計實例北京:機械工業(yè)出版社,20057皮大能等.單片機課程設(shè)計指導(dǎo)書.北京:北京理工大學(xué)出版社,2010指導(dǎo)教師:2014年1

5、2月8日教研室主任:2014 年 12 月 8 日目錄摘要1引言2一 16X 16LED點陣的總體設(shè)計3.1.1 設(shè)計的功能要求 3.1.2 設(shè)計論證 3.1.3 實驗原理 3.1.4 總體設(shè)計框圖 4.二 硬件設(shè)計 4.2.1主要芯片介紹 4.2.2 16 X 16LED點陣顯示制作7.2.3用4個8X 8LED點陣構(gòu)成16X 16LED點陣 82.4 實驗電路及連線 8.三 軟件設(shè)計 8.3.1 實驗要求及程序流程圖 9.3. 2 程序清單 1.5.四 實驗結(jié)果 1.6.五 系統(tǒng)調(diào)試 1.7.六 心得體會 17七 參考文獻 1820摘要本設(shè)計使用AT89C55系列高速單片機作為主控制模塊,

6、利用簡單的外圍電路來驅(qū)動16X16的點陣LED顯示屏。利用AT89C55系列高速單片機本身強大的 功能,可以很方便的實現(xiàn)單片機與 PC機間的數(shù)據(jù)傳輸及存儲,并能利用軟件方 便的進行顯示內(nèi)容的多樣變化,另一方面點陣顯示屏廣泛的應(yīng)用于醫(yī)院、機場、 銀行等公共場所,所以本設(shè)計具有很強的現(xiàn)實應(yīng)用性。本LED顯示屏能夠以動態(tài)掃描的方式同時顯示 4個8X 8點陣漢字,并能通 過上位機軟件修改顯示內(nèi)容和顯示效果等等。 把字符內(nèi)碼存儲在空閑的單片機程 序存儲器空間,使本LED顯示系統(tǒng)能掉電存儲1024個字符。設(shè)計中采用了 SPI 接口的GB2312標(biāo)準(zhǔn)字庫,支持所有的國標(biāo)字符和 ASCII標(biāo)準(zhǔn)字符的顯示。因為

7、 采用串行傳輸方式,使本系統(tǒng)的可擴展性得到提升,便于多個顯示單元的級聯(lián)。本文從LED的顯示原理入手,詳細(xì)闡述了 LED動態(tài)顯示的過程,以及硬件電 路的設(shè)計、計算和軟件的算法。關(guān)鍵詞:LED動態(tài)顯示AT89C55點陣漢字顯示仿真引言LED 顯示屏是一種通過控制半導(dǎo)體發(fā)光二極管的顯示方式, 用來顯示文字、 圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。圖文顯示屏 可與計算機同步顯示漢字、 英文文本和圖形; 視頻顯示屏采用微型計算機進行控 制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可 顯示二維、三維動畫、錄像、電視、 VCD 節(jié)目以及現(xiàn)場實況。 LED 顯示屏

8、顯示 畫面色彩鮮艷, 立體感強, 靜如油畫,動如電影, 廣泛應(yīng)用于車站、 碼頭、機場、 商場、醫(yī)院、賓館、銀行、證券市場、建筑市場、拍賣行、工業(yè)企業(yè)管理和其它 公共場所。它的優(yōu)點:亮度高、工作電壓低、功耗小、微型化、易與集成電路匹配、驅(qū) 動簡單、壽命長、耐沖擊、性能穩(wěn)定。當(dāng)今社會在飛速發(fā)展無疑能源、健康、空 間的利用,成了人們著重關(guān)注的對象。而在這個信息傳遞極速的社會, LED 的 出現(xiàn)給人們帶來了希望之光。 LED 的特色之處一是節(jié)能 (直接功耗, 間接耗能), 二是基本無電離輻射, 三提高空間利用率。 而這些特色又恰好解決了上述的三種 問題。然而 LED 點陣顯示屏的特點不僅僅于此 LED

9、 點陣顯示屏用的是數(shù)碼管, 而數(shù)碼管具有實用 ,便宜等優(yōu)點。 做出來的 LED 點陣顯示很耐用。 LED 點陣顯示 屏之所以受到廣泛重視而得到迅速發(fā)展,是與 LED 顯示屏本身所具有的優(yōu)點分 不開的。 LED 點陣顯示屏的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐 氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。本文 要求設(shè)計一個能顯示 16X16 點陣圖文 LED 顯示屏,要求能顯示圖文或文字,顯 示圖文或文字應(yīng)穩(wěn)定、 清晰,圖文或文字顯示,以卷簾形式向上下左右滾動顯示。16 X 16LED點陣的總體設(shè)計1.1 設(shè)計的功能要求設(shè)計一個能顯示16X16點陣圖文LED顯示屏,

10、要求能顯示圖文或文字,顯示 圖文或文字應(yīng)穩(wěn)定、清晰,圖文或文字顯示,以卷簾形式向上滾動顯示。1.2 設(shè)計論證1. 圖文顯示采用動態(tài)掃描的顯示方法,逐行輪流點亮,這樣掃描驅(qū)動電路就 可以實現(xiàn)多行(比如16行)的同名列共用一套驅(qū)動器。具體就16x 16的點陣來 說,把所有同 1 行的發(fā)光管的陽極連在一起, 把所有同 1 列的發(fā)光管的陰極連在 一起(共陽極的接法),先送出對應(yīng)第一行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第 1 行使其燃亮一定時間, 然后熄滅; 再送出第二行的數(shù)據(jù)并鎖存, 然后選通第 2 行使其燃亮相同的時間,然后熄滅;以此類推,第 16 行之后,又重新燃亮第 1 行,反復(fù)輪回。當(dāng)這樣輪回的

11、速度足夠快(每秒 24 次以上),由于人眼的視覺 暫留現(xiàn)象,就能夠看到顯示屏上穩(wěn)定的圖形了。2. 采用串行傳輸?shù)姆椒?,控制電路可以只用一根信號線,將列數(shù)據(jù)一位一位 傳往列驅(qū)動器, 在硬件方面無疑是十分經(jīng)濟的。 但是,在行掃描周期確定的情況 下留給行顯示的時間就太少了,以致影響到 LED的亮度。解決串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時間矛盾問題,可以采用重疊處 理的方法。 即在顯示本行各列數(shù)據(jù)的同時, 傳送下一列數(shù)據(jù)。 為了達(dá)到重疊處理 的目的,列數(shù)據(jù)的顯示就需要具有所存功能。 經(jīng)過上述分析, 就可以歸納出列驅(qū) 動器電路應(yīng)具有的功能。 對于列數(shù)據(jù)準(zhǔn)備來說, 它應(yīng)能實現(xiàn)串入并處的移位功能; 對于列

12、數(shù)據(jù)顯示來說, 應(yīng)具有并行鎖存的功能。 這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入 并行鎖存器進行顯示時, 串并移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù), 而不會影 響本行的顯示。1.3 實驗原理16X 16掃描LED點陣的工作原理同8位掃描數(shù)碼管類似。它有16個共陰極輸出端口,每個共陰極對應(yīng)有16個LED顯示燈。所以其掃描譯碼地址需 4位信 號線。要使16點陣上某個點亮,如第10行第4列的LED點亮,只要讓列選信號 為“0100”,從而選中第4列,再給第10行一個高電平,即可點亮該 LED本 實驗通過74LS164和74LS595芯片寫入字形,產(chǎn)生掃描信號。為了顯示整個漢字, 首先分布好漢字的排列,以行給漢字信

13、息;然后以大于24HZ的頻率掃描列,即每行逐一加高電平,根據(jù)人眼的視覺殘留特性,使之形成整個漢字的顯示。1.4 總體設(shè)計框圖硬件設(shè)計2.1主要芯片介紹1.AT89C55 介紹AT89C55為8位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管 腳排布上與通用的8xc52相同,其主要用于會聚調(diào)整時的功能控制。功能包括 對會聚主IC內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU!信等。主 要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9腳)為復(fù)位輸入端

14、口,外接電阻電容組成的復(fù)位電路。VCC(40腳)和VSS(20腳)為供電端口,分別接+5V電源的正負(fù)端。P0P3為可 編程通用I/O腳,其功能用途由軟件定義,在本設(shè)計中,P0端口( 3239腳)被定義為N1功能控制端口,分別與N1的相應(yīng)功能管腳相連接,13腳定義為IR 輸入端,10腳和11腳定義為I2C總線控制端口,分別連接 N1的SDAS( 18腳) 和SCLS( 19腳)端口,12腳、27腳及28腳定義為握手信號功能端口,連接 主板CPU的相應(yīng)功能端,用于當(dāng)前制式的檢測及會聚調(diào)整狀態(tài)進入的控制功能。>XTAL1KTAL2RSTPOO/ADO P01/AD1P0.2/AD2P0 4/A

15、D4P0.5/AD5P0.6/AD6P07/AD7P2O/A6P2.1 /ASP2.2/A10PSENP2 3/A11ALEP2 4;A12EAP2.5/A13P1 M2P2.6/A14P277A15P3.0fiXDP1 1/T2EXP3.1/TXDP1 2P3.2flNTyP1.3P3.31NT1P1.4P3.4fT0P1.5P3.5<riP1 6P3.6/WRP1.7P3 7用D圖2.1 AT89C55 單片機引腳圖亙iQ 丄 22Ai£y :1 11 11 222. 74LS595 介紹74595的數(shù)據(jù)端:Q1-Q7:八位并行輸出端,可以直接控制數(shù)碼管的8個段Q7'

16、;:級聯(lián)輸出端。我將它接下一個 595的SI端。DS串行數(shù)據(jù)輸入端。STcp:存儲寄存器的時鐘脈沖輸入口SHcp移位寄存器的時鐘脈沖輸入口OE的非輸出使能端MR的非芯片復(fù)位端11u121013CPH-ss DCPSTR -EM -oO 1 2 3 4 5 6 7 r QQQQQQQQQ715.2 3T衛(wèi)圖2.2 74LS595芯片引腳圖3.74LS164 介紹清除端(CLEAR為低電平時,輸出端(QA- QH均為低電平。串行數(shù)據(jù)輸入端(A, B)可控制數(shù)據(jù)。當(dāng) A B任意一個為 低電平,則禁止新數(shù)據(jù)輸入, 在時鐘端(CLOCK脈沖上升沿作用下Q0為低電平。當(dāng)A、B有一個為高電平, 則另一個就允

17、許輸入數(shù)據(jù),并在 CLOCK上升沿作用下決定Q0的狀態(tài)。引腳功能:LOCK :時鐘輸入端LEAR 同步清除輸入端(低電平有效)1,2:串行數(shù)據(jù)輸入端8-Q15 輸出端2.2 16 X 16LED點陣顯示制作以UCDO中文宋體字庫為例,每一個字由16行16列的點陣組成顯示。即國 家標(biāo)準(zhǔn)漢字庫中的每一個字均由256點陣來表示。我們可以把每一個點理解為一 個像素,而把每一個字的字形理解為一幅圖像。 事實上這個漢字屏不僅可以顯示 漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。這里我們以“魏”字說明,如 下圖所示:圖2.4為字模提取軟件提取16X16LED漢字顯示代碼2.3 用4個8X 8LED點陣構(gòu)成

18、16X 16LED點陣Proteus 中只有5X 7和8X 8等LED點陣,并沒有16X 16LED點陣,而在實 際應(yīng)用中,要良好地顯示一個漢字,則至少需要16X 16點陣。下面我們就首先介紹使用8X 8點陣構(gòu)建16X 16點陣的方法,并構(gòu)建一塊16X 16LED點陣,用于 本例的顯示任務(wù)。從Proteus的元件庫中找到“MATRIX-8X8-RED元器件,并將四塊該元器件放入Proteus文檔區(qū)編輯窗口中。此時需要注意,如果該元器件保持初始的 位置(沒有轉(zhuǎn)動方向),我們要首先將其左轉(zhuǎn)90°,使其水平放置,那么此時它的左面8個引腳是其行線,右邊8個引腳是其列線(當(dāng)然,如果你是將右轉(zhuǎn),

19、 則右邊8個引腳是行線)。然后我們將四個元器件對應(yīng)的行線和列線分別進行連 接,使每一條行線引腳接一行16個LED,列線也相同。并注意要將行線和列線 引出一定長度的引腳,以便下面我們使用。連接好的16X 16點陣如下圖。圖2.5 16 X 16點陣圖2.4 實驗電路及連線電路主要由單片機和一些外部設(shè)備連接而成,利用4個8*8LED顯示組裝成16*16LED顯示,2個74LS595和2個74LS164組成。該顯示器采用 AT89C55單片 機作為控制器,12MHz晶振,其中P0 口作為字符數(shù)據(jù)輸出口, P2 口作為顯示器 掃描輸出口,第31管腳(EA接電源。電路包括單片機、電源電路、時鐘電路、 復(fù)

20、位電路、驅(qū)動電路和LED點陣電路等。本設(shè)計的核心是利用單片機讀取顯示字型碼,通過驅(qū)動電路對16X16LED點陣進行動態(tài)掃描,以實現(xiàn)漢字的滾動顯示。ASCKLATCBB"GG> C1ECLKSbSftjDF nlSTjCFXTA12FDXYAUJ PDLVAD1 PDlBAESFDL3AD3口 WAD* FDj&AK口 TfAPT1Dph-'asFZAOPZ 丸"口PZSW.T3 PZJSW1* I臨T咽停ADA1XTDtre h TPatxffLKJ» IHUK MOMBB#L-L»IT塞囪人nn三 軟件設(shè)計P1DHTF i.mwP

21、12P13F3JVHXH fSLima1 FlWTHF3ZtfWTTP.3.«HiniP3STI PHSCUM PJ.7/ffS圖2.6總電路接線圖3.1實驗要求及程序流程圖本軟件要求實現(xiàn)如下要求:漢字要穩(wěn)定、明亮并且文字要以一定速度上升滾 動顯示。顯示屏軟件模塊:初始化程序、主程序、多字滾動、顯示程序、掃描程序。顯示程序的主要功能是向屏體提供顯示數(shù)據(jù),并產(chǎn)生各種控制信號,使屏幕按設(shè) 計的要求顯示。軟件設(shè)計中,顯示屏的軟件系統(tǒng)分為兩層;第一層是底層的顯示 驅(qū)動程序,第二層是上層的系統(tǒng)應(yīng)用程序。顯示驅(qū)動程序負(fù)責(zé)向屏體送顯示數(shù)據(jù),并負(fù)責(zé)產(chǎn)生行掃描信號和其他控制信號,配合完成LED顯示屏的

22、掃描顯示工作。顯示驅(qū)動器程序由定時器T0中斷程序?qū)崿F(xiàn)。系統(tǒng)應(yīng)用程序完成系統(tǒng)環(huán)境設(shè)置(初 始化)、顯示效果處理等工作,由主程序來實現(xiàn)。顯示驅(qū)動程序在進入中斷后首先要對定時器 T0重新賦初值,以保證顯示屏 刷新率的穩(wěn)定,1/16掃描顯示屏的刷新率(幀頻)計算公式如下:刷頻率(幀頻)=1/16 X T0 溢=1/16 X f/12 (65536-t )其中f位晶振頻率,t為定時器T0初值(工作在16位定時器模式)。 然 后顯示驅(qū)動程序查詢當(dāng)前燃亮的行號,從顯示緩存區(qū)內(nèi)讀取下一行的顯示數(shù)據(jù), 并通過串口發(fā)送給移位寄存器。為消除在切換行顯示數(shù)據(jù)的時候產(chǎn)生拖尾現(xiàn)象, 驅(qū)動程序先要關(guān)閉顯示屏,即消隱,等顯示

23、數(shù)據(jù)打入輸出鎖存器并鎖存, 然后再 輸出新的行號,重新打開顯示。圖3.1系統(tǒng)主程序流程圖3.2 程序清單#include <reg51.h>#include <intrins.h>#define DATAOUT P2 /P2 use as data#define SPEED 13void ymove(char dir,unsigned char *ptr,char speed);void xmove(char dir,unsigned char *ptr,char n,char speed);void delay(unsigned int a);void display

24、();void displaytime(char time);void init164();sbit ADATA= DATAOUTP;sbit ASCK= DATAOUTA1;sbit LATCH= DATAOUTA2;sbit BDATA= DATAOUTA3;sbit BCLK= DATAOUTA4;code unsigned char xin32=0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,/ 心0x1F,0x7C,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE, 0x1F,0xFC,0x0F,0xF8,0x07,0xF0,0x03,0xE

25、0, 0x01,0xC0,0x00,0x80,0x00,0x00,0x00,0x00;code unsigned char zhong32=0x01,0x00,0x01,0x00,0x01,0x04,0x7F,0xFE, /中 0x41,0x04,0x41,0x04,0x41,0x04,0x41,0x04, 0x7F,0xFC,0x41,0x04,0x01,0x00,0x01,0x00, 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00;code unsigned char guo32=0x00,0x04,0x7F,0xFE,0x40,0x24,0x5F,0xF4

26、,/國0x41,0x04,0x41,0x04,0x41,0x44,0x4F,0xE4, 0x41,0x04,0x41,0x44,0x41,0x24,0x41,0x04, 0x5F,0xF4,0x40,0x04,0x7F,0xFC,0x40,0x04;code unsigned char dui32=0x7C,0x40,0x44,0x40,0x48,0x40,0x48,0x40,/隊0x50,0x40,0x48,0x40,0x48,0x40,0x44,0xA0, 0x44,0xA0,0x44,0xA0,0x69,0x10,0x51,0x10, 0x42,0x08,0x44,0x06,0x48,0

27、x04,0x00,0x00;code unsigned char jia32=0x10,0x00,0x10,0x00,0x10,0x04,0x12,0x7E,/ 加0xFF,0x44,0x12,0x44,0x12,0x44,0x12,0x44, 0x12,0x44,0x22,0x44,0x22,0x44,0x22,0x44, 0x22,0x44,0x4A,0x7C,0x84,0x44,0x00,0x00;code unsigned char you32=0x00,0x40,0x40,0x40,0x30,0x40,0x10,0x44, / 油0x87,0xFE,0x64,0x44,0x24,0x

28、44,0x0C,0x44,0x14,0x44,0x27,0xFC,0xE4,0x44,0x24,0x44,/!0x24,0x44,0x24,0x44,0x27,0xFC,0x24,0x04 ; code unsigned char gth32= 0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00;unsigned char ida

29、ta buffer32;void main(void)unsigned char i;init164();while(1)for(i=0;i<32;i+) bufferi=xini;displaytime(1); xmove(1,zhong,3,SPEED); displaytime(1); ymove(1,0,SPEED); ymove(1,jia,SPEED); ymove(1,you,SPEED);ymove(1,0,SPEED); xmove(0,jia,3,SPEED); ymove(0,gth,SPEED);ymove(0,0,SPEED);xmove(1,xin,1,SPE

30、ED); 子函數(shù)*void delay(unsigned int a) while(a-); void display()unsigned char hang,ib,k,tmp;DATAOUT= 0x0;BDATA = 0; for(hang=0;hang<16;hang+) ASCK =0;LATCH=0;BCLK =0;for(ib=0;ib<2;ib+) tmp = bufferhang*2+ib;for(k=0;k<8;k+) tmp <<=1; ASCK =0; ADATA =CY;ASCK =1; DATAOUT|=0x14; /LATCH=1;/BC

31、LK=1;BDATA=1; delay(64);ASCK =0;ASCK =1; void displaytime(char time) unsigned char i;while(time-) i=130; while(i-) display(); void init164() char i;BDATA=1; for(i=0;i<16;i+) BCLK =0;BCLK =1; void xmove(char dir,unsigned char *ptr,char n,char speed)/*方向 n是要移動的漢字個數(shù)移動速度*/unsigned char i=0,ib=0;unsig

32、ned int tmp=0, speedm=0;unsigned char buffer216;/半個漢字的緩存n*=2;/左半字和右半字,所以要x2for(i=0;i<16;i+)/清零buffer2i=0;if(dir = 1) /*向左移動 */for(n;n>0;n-) if(ptr != 0) tmp = n%2;/判斷是左半字還是右半字for(i=0;i<16;i+)buffer2i=ptri*2+tmp;if(tmp)/tmp 為 1 時,將地址指向下一個漢字ptr+=32; for(tmp=8;tmp>0;tmp-)/ 要移動 8 列 ib=0;for(

33、i=0;i<16;i+)/要移 16 行,共 16 個字節(jié)bufferib <<=1; / 移第一個半字 if(bufferib+1 & 0x80) bufferib+;ib+;bufferib<<=1;/移后半字if(buffer2i & 0x80) bufferib+;ib+;buffer2i<<=1; /緩沖左半字向左移一位 speedm=speed; /更新點陣 while(speedm-)display(); /else*向右移動 */for(n;n>0;n-) if(ptr != 0) tmp = (n+1) % 2

34、; / 判斷左半字還是右半字 for(i=0;i<16;i+)buffer2i=ptri*2+tmp;if(tmp = 0)/tmp 為 0 時,將地址指向下一個漢字ptr+=32; for(tmp=8;tmp>0;tmp-)/要移動 8 列 ib=0;for(i=0;i<16;i+) /要移 16 行,共 16 個字節(jié) bufferib+1 >>= 1; /移右半字 if(bufferib & 0x01) bufferib+1 |=0x80 ;bufferib >>= 1;/移左半字if(buffer2i & 0x01)bufferi

35、b |= 0x80;ib+=2;buffer2i >>=1;/下個漢字的右半字向右移一位 speedm=speed;while(speedm-) / 更新點陣display(); void ymove(char dir,unsigned char *ptr, char speed) /dir=1 上移動, dir=0 為下移動char i=0, j=0, ib=0;unsigned int tmp=0, speedm=0;if(dir=0)/*向下移 */ib=31;for(i=16;i>0;i-)/下移 16 行for(j=29;j>-1;j-)bufferj+2=b

36、ufferj;/ 將上一行的內(nèi)容復(fù)制到下一行if(ptr=0)/ 移空時, buffer 的首行用 0 移入 buffer0=0; buffer1=0; else/ 否則,處理 buffer 的首行元素buffer1=ptrib;buffer0=ptrib-1;ib=ib-2speedm=speed; while(speedm-)display();/更新點陣/*向上移*else ib=0; / 數(shù)組元素序號for(i=0;i<16;i+) / 上移 16 行 for(j=0;j<30;j+)/ 將下一行的內(nèi)容復(fù)制到上一行bufferj=bufferj+2;if(ptr=0) /

37、移入為空, buffer 的末行用 0 移入 buffer30=0;buffer31=0; else/ 否則,處理 buffer 的末行元素buffer30=ptrib; buffer31=ptrib+1;ib=ib+2; speedm=speed; / 更新點陣while(speedm-)display(); 四實驗結(jié)果aMTA. rackTCLiiXIVaIS>0 v-racB11iia 13|TlAU iz 1*13hieSITJ-.KTALa陽S白口?JTU"L1ra勺嗣1 magPWTfa mo百 POfiADfFarc*flsFZHi'iMlP2.IW5Ff

38、aiaALK 四FZ-IM12 FZJL* I3FirrrzFZ«." 1*H17WF3HK>:Pm VTTiF3 imcpFl J- i -iTmFU” HKTIF1.»F.-hTOFl ft"smP1 Ama£inEM.Tf3.T/KFXTAL2UTTMLBjyrz .<rwr uiJi 口 S皿 D.WAMF2J3iAB fZ.U*®P2JVA-I! PZJA1I P2.a12PZAl-i rufAWfa-IHMl! diFraFUiTirrr 甲 3L*nuPUH'l ”,srfTFT 3ZE I DAT."系統(tǒng)調(diào)試軟件調(diào)試:軟件為網(wǎng)絡(luò)所提供,其原理在上一模塊已作說明,在這里再作說明,軟件經(jīng)調(diào)試無誤,直接將其下再到單片機中,看是否達(dá)到所要的效果軟件部分是先參考書上的例子,然后自己根據(jù)硬件電路寫程序,由于以前所學(xué)是單片機 匯編語言,所以這個系統(tǒng)在編寫程序過程中都米用匯編語言編寫。剛剛開始,編寫不會一次性通過,經(jīng)

溫馨提示

  • 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

提交評論