片單機(jī)原理及應(yīng)用課程設(shè)計(jì)led點(diǎn)陣顯示屏-大學(xué)畢設(shè)論文_第1頁(yè)
片單機(jī)原理及應(yīng)用課程設(shè)計(jì)led點(diǎn)陣顯示屏-大學(xué)畢設(shè)論文_第2頁(yè)
片單機(jī)原理及應(yīng)用課程設(shè)計(jì)led點(diǎn)陣顯示屏-大學(xué)畢設(shè)論文_第3頁(yè)
片單機(jī)原理及應(yīng)用課程設(shè)計(jì)led點(diǎn)陣顯示屏-大學(xué)畢設(shè)論文_第4頁(yè)
片單機(jī)原理及應(yīng)用課程設(shè)計(jì)led點(diǎn)陣顯示屏-大學(xué)畢設(shè)論文_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)原理及應(yīng)用課程設(shè)計(jì)指導(dǎo)書使用班級(jí):電子專業(yè)指導(dǎo)教師:編制教師:長(zhǎng)春工程學(xué)院電氣與信息學(xué)院電子信息教研室2014年2月一、課程設(shè)計(jì)目的單片機(jī)原理及應(yīng)用課程設(shè)計(jì)是配合“單片機(jī)原理及應(yīng)用”課程和實(shí)驗(yàn)教學(xué)的一個(gè)重要環(huán)節(jié),它能起到鞏固所學(xué)知識(shí)、加強(qiáng)綜合能力、提高軟、硬件設(shè)計(jì)調(diào)試方面的能力、啟發(fā)創(chuàng)新思想的效果。同時(shí),幫助學(xué)生將相關(guān)專業(yè)課程綜合起來(lái),融會(huì)貫通,形成系統(tǒng)的概念,迅速邁過從理論到實(shí)際的門檻。本課程設(shè)計(jì)的目的是培訓(xùn)學(xué)生的綜合設(shè)計(jì)能力、電子線路的組裝調(diào)試能力和創(chuàng)新能力,通過查閱資料、選定方案、設(shè)計(jì)電路、安裝調(diào)試、寫報(bào)告等過程,使學(xué)生得到一次科學(xué)研究工作的啟蒙訓(xùn)練。二、課程設(shè)計(jì)任務(wù)及內(nèi)容1、資料查閱1)查閱與本人設(shè)計(jì)相關(guān)的文章、方案,列舉3種以上設(shè)計(jì)方案;2)對(duì)以上設(shè)計(jì)方案進(jìn)行分析、比較,選擇本次設(shè)計(jì)所使用的設(shè)計(jì)方案;3)把以上設(shè)計(jì)方案及分析、比較過程以文字方式體現(xiàn)在設(shè)計(jì)報(bào)告中的方案選擇中。2、設(shè)計(jì)題目(5)題目:LED點(diǎn)陣顯示屏★★☆☆☆要求:1)設(shè)計(jì)由(4~8)個(gè)8*8LED點(diǎn)陣組成的顯示屏系統(tǒng);2)能夠顯示英文、漢字以及部分特殊圖形;3)可以設(shè)置多種(不少于3種)的切換顯示方式;4)采用雙色多三色LED點(diǎn)陣顯示簡(jiǎn)單彩色圖樣*;5)顯示簡(jiǎn)單動(dòng)態(tài)圖像或曲線等*。3、電路設(shè)計(jì)用Protel繪制電路原理圖,并繪制PCB板圖。要求原理圖完整,清晰,參數(shù)準(zhǔn)確。PCB板圖布局合理、美觀,走線清晰明了,制版尺寸小。4、仿真實(shí)現(xiàn)用Proteus軟件對(duì)所設(shè)計(jì)內(nèi)容進(jìn)行仿真實(shí)驗(yàn)或使用硬件搭建,實(shí)現(xiàn)題目要求的內(nèi)容。5、撰寫論文按照所閱讀的標(biāo)準(zhǔn)期刊文獻(xiàn)文章格式撰寫一篇所設(shè)計(jì)的單片機(jī)系統(tǒng)進(jìn)行綜合描述。要求有:摘要:對(duì)全篇文章進(jìn)行簡(jiǎn)單扼要的介紹;引言:對(duì)所設(shè)計(jì)的題目背景進(jìn)行簡(jiǎn)介;正文論述:各部分詳細(xì)的設(shè)計(jì)方案分析及選擇,軟硬件設(shè)計(jì)、理論計(jì)算;Protus仿真過程及結(jié)果截圖;原理圖、PCB圖等各種圖表;并以附錄的形式提供單片機(jī)程序及程序框圖。從硬件(各部分原理、整體系統(tǒng)組成原理)和軟件(編程思想、流程圖)等方面對(duì)系統(tǒng)進(jìn)行全面的論述。結(jié)論:總結(jié)所設(shè)計(jì)的題目的實(shí)現(xiàn)情況及展望。三、課程設(shè)計(jì)成果要求1、開題報(bào)告主要內(nèi)容:進(jìn)行題目可行性論證,對(duì)設(shè)計(jì)方案進(jìn)行選擇,給出選擇依據(jù);2、電路圖繪制主要內(nèi)容:針對(duì)所設(shè)計(jì)題目繪制原理圖、PCB圖。原理圖要求器件擺放合理、軸線清晰明了;PCB圖要求布線合理、美觀,制版盡可能小。3、軟件系統(tǒng)仿真主要內(nèi)容:使用Protus軟件對(duì)所設(shè)計(jì)題目進(jìn)行軟件仿真或使用硬件搭建,驗(yàn)證系統(tǒng)的可行性并保留結(jié)果(答辯時(shí)需演示)。4、課程設(shè)計(jì)論文主要內(nèi)容:撰寫課程設(shè)計(jì)論文(論文詳細(xì)要求參見附件)。一組一份設(shè)計(jì)論文。分組建議:3人。四、課程設(shè)計(jì)具體時(shí)間安排及成績(jī)考核1、時(shí)間安排:?jiǎn)卧獌?nèi)容時(shí)間1公布題目,布置任務(wù),學(xué)生獨(dú)立選題。1天2進(jìn)行題目分析和系統(tǒng)分解,確定設(shè)計(jì)方案。1天3繪制Protel原理圖和PCB圖2天3繪制Proteus原理圖或搭建硬件電路2天4編制程序,進(jìn)行程序調(diào)試和系統(tǒng)功能測(cè)試3天5組織進(jìn)行課程設(shè)計(jì)答辯,了解學(xué)生設(shè)計(jì)水平,是否獨(dú)立完成及全面表現(xiàn)并由教師給出評(píng)語(yǔ)和成績(jī)1天合計(jì)10天2、成績(jī)考核:按平時(shí)表現(xiàn)、出勤情況、設(shè)計(jì)完成情況、報(bào)告的完整性和規(guī)范性以及答辯情況給出實(shí)習(xí)的綜合成績(jī)(五級(jí)分制)。給分比例如下:(1)平時(shí)表現(xiàn)、出勤情況(20%)(2)Protel電路原理圖及PCB板圖(15%);(3)Proteus設(shè)計(jì)演示(15%);(4)設(shè)計(jì)論文(25%);(5)答辯(25%)。五、參考書1.谷樹忠等編著:《AltiumDesigner教程—原理圖、PCB設(shè)計(jì)與仿真》電子工業(yè)出版社,2011.11;2.李曉林等編著:《單片機(jī)原理與接口技術(shù)(第2版)》電子工業(yè)出版社,2011.2;3.胡啟明等編著:《Proteus從入門到精通100例》電子工業(yè)出版社,2012.9;4.劉波主編:《51單片機(jī)應(yīng)用開發(fā)典型范例——基于Proteus仿真》電子工業(yè)出版社,2014.1CHANGCHUNINSTITUTEOFTECHNOLOGY單片機(jī)原理及應(yīng)用課程設(shè)計(jì)(英文標(biāo)題:TimesNewRoman英文字體,3號(hào),居中)設(shè)計(jì)題目:LED點(diǎn)陣顯示屏學(xué)生姓名:L學(xué)院名稱:電氣與信息工程學(xué)院專業(yè)名稱:電子信息工程班級(jí)名稱:電子1241學(xué)號(hào):L完成時(shí)間:L2015年月日

任務(wù)分配表班級(jí)學(xué)號(hào)姓名完成主要任務(wù)電子124110趙玉瑩P(yáng)rotel原理圖及pcb板繪制整理實(shí)驗(yàn)報(bào)告電子124113崔賀Proteus圖繪制電子124136王文立編程

LED點(diǎn)陣顯示屏趙玉瑩1,崔賀1,王文立1(電子124110號(hào),13號(hào),36號(hào))摘要:本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以芯片AT89C51作為核心控制器,通過硬件電路的制作及軟件程序的編制,設(shè)計(jì)制作了一種4個(gè)8*8LED點(diǎn)陣組成的顯示屏系統(tǒng)。實(shí)現(xiàn)LED的動(dòng)態(tài)顯,所謂動(dòng)態(tài)顯示就是一位一位的輪流點(diǎn)亮LED,在每一時(shí)刻只有一位顯示器在工作(點(diǎn)亮),但由于人眼的視覺暫留效應(yīng)和發(fā)光二極管熄滅時(shí)的余輝,將出現(xiàn)多個(gè)字符“同時(shí)”顯示的現(xiàn)象。即在每一瞬間,所有LED會(huì)顯示相同的字,并實(shí)現(xiàn)文字、英文、圖形的顯示,以及圖形的上移、左移、右移的移動(dòng)效果并顯示簡(jiǎn)單動(dòng)態(tài)圖像或曲線。關(guān)鍵詞:AT89C51單片機(jī),LED,顯示0引言(簡(jiǎn)介所設(shè)計(jì)的題目?jī)?nèi)容及設(shè)計(jì)的意義)LED電子顯示屏是集微電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理技術(shù)于一體的大型顯示屏系統(tǒng),本設(shè)計(jì)實(shí)現(xiàn)了LED的動(dòng)態(tài)、靜態(tài)顯,所謂動(dòng)態(tài)顯示就是一位一位的輪流點(diǎn)亮LED,在每一時(shí)刻只有一位顯示器在工作(點(diǎn)亮),但由于人眼的視覺暫留效應(yīng)和發(fā)光二極管熄滅時(shí)的余輝,將出現(xiàn)多個(gè)字符“同時(shí)”顯示的現(xiàn)象。即在每一瞬間,所有LED會(huì)顯示相同的字,并實(shí)現(xiàn)文字、英文、圖形的顯示,以及圖形的上移、左移、右移的移動(dòng)效果?;贚ED的字符動(dòng)態(tài)顯示系統(tǒng)具有設(shè)計(jì)簡(jiǎn)單、顯示方式和顯示信息可控、擴(kuò)容靈活和成本低等特點(diǎn),非常適合一些漢字信息動(dòng)態(tài)顯示場(chǎng)合。1系統(tǒng)方案(包括方案論證,選擇的過程和依據(jù),用系統(tǒng)框圖論述)……建立以AT89C51單片機(jī)為核心的控制器,采用串行傳輸、動(dòng)態(tài)掃描技術(shù),設(shè)計(jì)出擁有多功能的模塊化16*16LED點(diǎn)陣動(dòng)態(tài)顯示系統(tǒng)。通過仿真驗(yàn)證,該方法正確可行,能有效縮短系統(tǒng)的開發(fā)周期、提高效率、節(jié)約成本1LED點(diǎn)陣動(dòng)態(tài)顯示系統(tǒng)原理2系統(tǒng)硬件電路(包括硬件系統(tǒng)原理框圖、各部分電路圖及其工作原理簡(jiǎn)介)簡(jiǎn)介:用到的器件有:AT89C51,74LS164,74LS595,MATRIX-8*8-GREEN.從理論上說(shuō),不論顯示圖形還是文字,只要控制與組成這些圖形或文字的各個(gè)點(diǎn)所在位置相對(duì)應(yīng)的LED器件發(fā)光,就可以得到我們想要的顯示結(jié)果,這種同時(shí)控制各個(gè)發(fā)光點(diǎn)亮滅的方法稱為靜態(tài)驅(qū)動(dòng)顯示方式。16×16的點(diǎn)陣共有256個(gè)發(fā)光二極管,顯然單片機(jī)沒有這么多端口,如果我們采用鎖存器來(lái)擴(kuò)展端口,按8位的鎖存器來(lái)計(jì)算,16×16的點(diǎn)陣需要256/8=32個(gè)鎖存器。這個(gè)數(shù)字很龐大,因?yàn)槲覀儍H僅是16×16的點(diǎn)陣,在實(shí)際應(yīng)用中的顯示屏往往要大得多,這樣在鎖存器上花的成本將是一個(gè)很龐大的數(shù)字。因此在實(shí)際應(yīng)用中的顯示屏都不采用這種設(shè)計(jì),而采用另一種稱為動(dòng)態(tài)掃描的顯示方法。動(dòng)態(tài)掃描的意思簡(jiǎn)單地說(shuō)就是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行(比如16行)的同名列共用一套列驅(qū)動(dòng)器。具體就16×16的點(diǎn)陣來(lái)說(shuō),把所有同l行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第l行使其燃亮一定的時(shí)間,然后熄滅;再送出第2行的數(shù)據(jù)并鎮(zhèn)存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;-…·第16行之后,又重新燃亮第1行,腹輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現(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ù)膯栴}。從控制電路到列驅(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ì)的。但是,串行傳輸過程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都已傳輸?shù)轿恢螅@一行的各列才能并行地進(jìn)行顯示。這樣,對(duì)于一行的顯示過程就可以分解成列數(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í)間矛盾問題,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯示就需要具有鎖存功能。經(jīng)過上述分析,可以歸納出列驅(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為顯示屏電路實(shí)現(xiàn)的結(jié)構(gòu)框圖。圖1顯示屏電路框圖硬件電路大致上可以分成單片機(jī)系統(tǒng)及外圍電路、列驅(qū)動(dòng)電路和行驅(qū)動(dòng)電路三部分1.單片機(jī)系統(tǒng)及外圍電路單片機(jī)采用89C51或其兼容系列的芯片,采用24MHz或更高頻率的晶振,以獲得較高的刷新頻率,使顯示更穩(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)。PO和P2口空著,在有必要時(shí)可以擴(kuò)展系統(tǒng)的ROM和RAM。16×16點(diǎn)陣顯示屏的硬件原理圖如圖2所示。圖216×16點(diǎn)陣顯示屏的硬件原理圖2.列驅(qū)動(dòng)電路列驅(qū)動(dòng)電路由集成電路74LS595構(gòu)成。它具有一個(gè)8位串人并出的移位寄存器和一個(gè)8位輸出鎖存器的結(jié)構(gòu),而且移位寄存器和輸出鎖存器的控制是各自獨(dú)立的,可以實(shí)現(xiàn)在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù),即達(dá)到重疊處理的目的。74LS595的外形及內(nèi)部結(jié)構(gòu)如圖3所示。它的輸入側(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)是移位寄存器的靖0輸入端,當(dāng)其為低時(shí)移位寄存器的輸出全部為o。由于SCK和RCK兩個(gè)信號(hào)是互相獨(dú)立的,所以能夠做到輸人串行移位與輸出鎖存互不干擾。芯片的輸出端為QA~QH.最高位QH可作為多片74LS595級(jí)聯(lián)應(yīng)用時(shí),向上一級(jí)的級(jí)聯(lián)輸出。但因QH受輸出鎖存器打人控制,所以還從輸出鎖存器前引出了QH’,作為與移位寄存器完全同步的級(jí)聯(lián)輸出。圖374LS595的外形3.行驅(qū)動(dòng)電路單片機(jī)P1口低4位輸出的行號(hào)經(jīng)4/16線譯碼器74LSl64譯碼后生成16條行選通信號(hào)線,再經(jīng)過驅(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)管可滿足要求。4.系統(tǒng)程序的設(shè)計(jì)顯示屏軟件的主要功能是向屏體提供顯示數(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),配合完成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ǔ)言編寫。5.顯示驅(qū)動(dòng)程序顯示驅(qū)動(dòng)程序查詢當(dāng)前燃亮的行號(hào),從顯示緩存區(qū)內(nèi)讀取下一行的顯示數(shù)據(jù),并通過串口發(fā)送給移位寄存器。為消除在切換行顯示數(shù)據(jù)的時(shí)候產(chǎn)生拖尾現(xiàn)象,驅(qū)動(dòng)程序先要關(guān)閉顯示屏,即消隱,等顯示數(shù)據(jù)打人輸出鎖存器并鎖存,然后再輸出新的行號(hào),重新打開顯示。圖4為顯示驅(qū)動(dòng)程序(顯示屏掃描函數(shù))流程圖。圖4顯示驅(qū)動(dòng)程序流程圖3系統(tǒng)軟件設(shè)計(jì)(包括主流程圖及各部分功能模塊流程圖,部分需要講解的模塊源碼)主程序流程圖顯示完成Ib=ib+1顯示完成Ib=ib+1下一屏上下跑馬顯示開始定義端口和移動(dòng)效果顯示系統(tǒng)數(shù)據(jù)初始化讀取第一個(gè)數(shù)據(jù)的地址顯示數(shù)據(jù)左跑馬右跑馬顯示等待單片機(jī)讀取數(shù)據(jù)開始定義端口和移動(dòng)效果顯示右跑馬顯示顯示數(shù)據(jù)左跑馬讀取第一個(gè)數(shù)據(jù)的地址等待單片機(jī)讀取數(shù)據(jù)系統(tǒng)數(shù)據(jù)初始化右跑馬顯示顯示數(shù)據(jù)左跑馬讀取第一個(gè)數(shù)據(jù)的地址等待單片機(jī)讀取數(shù)據(jù)系統(tǒng)數(shù)據(jù)初始化跑馬顯示子程序流程圖子程序結(jié)束延時(shí)顯示單字移動(dòng)顯示完成子程序結(jié)束延時(shí)顯示單字移動(dòng)顯示完成開始讀取字形的地址判斷是左右半字對(duì)屏幕進(jìn)行掃描顯示當(dāng)tmp為0指向下一個(gè)漢字將漢字進(jìn)行8行或者8列移動(dòng)繼續(xù)移動(dòng)剩下的半個(gè)字節(jié)更新點(diǎn)陣開始讀取字形的地址判斷是左右半字對(duì)屏幕進(jìn)行掃描顯示當(dāng)tmp為0指向下一個(gè)漢字將漢字進(jìn)行8行或者8列移動(dòng)繼續(xù)移動(dòng)剩下的半個(gè)字節(jié)更新點(diǎn)陣單字移動(dòng)顯示完成單字移動(dòng)顯示完成//**********16x16點(diǎn)陣***************//#include<reg51.h> //預(yù)處理命令reg51.h是一個(gè)庫(kù)文件#include<intrins.h> //移位庫(kù)函數(shù)包含于此頭文件中#defineDATAOUTP2//P2作為數(shù)據(jù)輸出端口#defineSPEED13voidymove(chardir,unsignedchar*ptr,charspeed); //定義縱向移動(dòng)方向,指定*ptr指針為無(wú)符號(hào)字符型,定義速度(為字符)voidxmove(chardir,unsignedchar*ptr,charn,charspeed);voiddelay(unsignedinta); //定義延時(shí)子程序指定a為無(wú)符號(hào)整數(shù)型voiddisplay(); //定義顯示停頓延時(shí)voiddisplaytime(chartime);//定義顯示延時(shí)時(shí)間time為字符型voidinit164(); // 代表:74ls164?sbitADATA=DATAOUT^0; //定義輸出端口p2端口名稱sbitASCK=DATAOUT^1;sbitLATCH=DATAOUT^2;sbitBDATA=DATAOUT^3;sbitBCLK=DATAOUT^4;//上面的程序?qū)崿F(xiàn)的是對(duì)所輸入字形的橫向和縱向的移動(dòng),加入的是xmove和ymove。同時(shí)也定義出了輸出端口。 //定義字形codeunsignedcharxin[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,//心0x1F,0x7C,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1F,0xFC,0x0F,0xF8,0x07,0xF0,0x03,0xE0,0x01,0xC0,0x00,0x80,0x00,0x00,0x00,0x00};codeunsignedcharD[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0, //D0x38,0x38,0x38,0x1C,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x38,0x78,0x7F,0xE0,0x00,0x00,0x00,0x00};codeunsignedcharZ[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x38,0x18,0x20,0x30,0x00,0x60,0x01,0xC0,//Z0x03,0x80,0x03,0x00,0x0E,0x00,0x1C,0x06,0x38,0x0C,0x7F,0xFC,0x00,0x00,0x00,0x00};codeunsignedcharzhao[32]={0x08,0x00,0x08,0x08,0x08,0x88,0x7E,0x88,0x08,0x50,0x0A,0x50,0xFF,0x20,0x08,0x20,//趙0x28,0x50,0x2E,0x48,0x28,0x8C,0x39,0x04,0x48,0x00,0x44,0x06,0x83,0xFC,0x00,0x00}; codeunsignedcharyu[32]={0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00, //玉0x01,0x00,0x01,0x00,0x01,0x10,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x40,0x01,0x30,0x01,0x10,0x01,0x04,0xFF,0xFE,0x00,0x00};codeunsignedcharying[32]={0x04,0x40,0x04,0x48,0x7F,0xFC,0x04,0x40,0x04,0x40,0x7F,0xFE,0x40,0x02,0xBF,0xF4,//瑩0x01,0x00,0x01,0x10,0x3F,0xF8,0x01,0x00,0x01,0x40,0x01,0x24,0xFF,0xFE,0x00,0x00};codeunsignedcharcui[32]={ 0x01,0x00,0x21,0x08,0x21,0x08,0x3F,0xF8,//崔0x28,0x08,0x11,0x00,0x10,0x88,0x3F,0xFC,0x50,0x80,0x9F,0xF8,0x10,0x80,0x1F,0xF8,0x10,0x80,0x10,0x84,0x1F,0xFE,0x10,0x00};codeunsignedcharhe[32]={ 0x10,0x00,0x10,0x04,0x7F,0x7E,0x11,0x44,//賀0x11,0x44,0x25,0x7C,0x42,0x10,0x9F,0xF8,0x10,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x02,0xC0,0x0C,0x30,0x30,0x08};codeunsignedcharwang[32]={ 0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00, //王0x01,0x00,0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00};codeunsignedcharwen[32]={ 0x02,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE, //文0x10,0x10,0x08,0x10,0x08,0x20,0x04,0x20,0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x04,0x60,0x08,0x10,0x30,0x0E,0xC0,0x04};codeunsignedcharli[32]={ 0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x08, //立0x7F,0xFC,0x00,0x00,0x00,0x10,0x10,0x10,0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,0x04,0x80,0x00,0x04,0xFF,0xFE,0x00,0x00};codeunsignedcharzhen[32]={ 0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x10,0x1F,0xF8,0x10,0x10,0x1F,0xF0,0x10,0x10, //真0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x14,0xFF,0xFE,0x08,0x20,0x10,0x18,0x20,0x08};codeunsignedcharniu[32]={0x01,0x00,0x11,0x00,0x11,0x10,0x1F,0xF8,0x21,0x00,0x21,0x00,0x41,0x00,0x01,0x04, //牛0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00};codeunsignedchargth[32]={0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,//! code為存儲(chǔ)類型標(biāo)識(shí)符0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00};unsignedcharidatabuffer[32]; //無(wú)符號(hào)字符型 數(shù)據(jù)buffer緩存voidmain(void) { unsignedchari; //定義無(wú)符號(hào)字符i init164(); while(1) //循環(huán)語(yǔ)句對(duì)所輸入字符的循環(huán)要求 { for(i=0;i<32;i++) // 掃描心型 顯示心形 buffer[i]=xin[i]; displaytime(1); //加延時(shí) xmove(1,D,2,SPEED); //顯示D和后面的一個(gè)字符有速度限制 且為橫向移動(dòng) displaytime(1); //實(shí)際方針中會(huì)有些許停頓 xmove(1,zhao,3,SPEED); //同上 displaytime(1); xmove(1,cui,2,SPEED); displaytime(1); xmove(1,wang,3,SPEED); displaytime(1); ymove(1,0,SPEED); //縱向移動(dòng) ymove(1,zhen,SPEED); ymove(1,niu,SPEED); ymove(1,0,SPEED); xmove(0,zhen,3,SPEED); //zhenniu!三個(gè)字符左右上下移動(dòng) ymove(0,gth,SPEED); ymove(0,0,SPEED); xmove(1,xin,1,SPEED); }}//這部分的程序是主程序,是將輸入的字形上下左右移動(dòng),同時(shí)也加入了每一段字形顯示后的延時(shí)displaytime(1),能夠讓實(shí)際效果更佳好看/*************子函數(shù)******************/voiddelay(unsignedinta) //定義子函數(shù)delay延時(shí)子程序的編寫定義a為無(wú)符號(hào)整數(shù)型{ while(a--); //循環(huán)a減}voiddisplay() //延時(shí)的定義{ unsignedcharhang,ib,k,tmp; //定義無(wú)符號(hào)字符型hangibktmpDATAOUT=0x0; //數(shù)據(jù)初始輸出值為0 BDATA=0; //位變量聲明bdata為0 for(hang=0;hang<16;hang++) //掃描16行 { ASCK=0; //p2端口定義 LATCH=0; BCLK=0; for(ib=0;ib<2;ib++) { tmp=buffer[hang*2+ib]; for(k=0;k<8;k++) { tmp<<=1; ASCK=0; ADATA=CY; ASCK=1; } } DATAOUT|=0x14; //LATCH=1; //BCLK=1; BDATA=1; } delay(64); ASCK=0; ASCK=1;}voiddisplaytime(chartime) //設(shè)置停頓時(shí)間;{ unsignedchari; //定義無(wú)符號(hào)字節(jié)型i while(time--) //用while語(yǔ)句實(shí)現(xiàn)延遲 { i=130; while(i--) display(); }} //這個(gè)模塊是對(duì)延時(shí)程序的編寫,其中應(yīng)用了while語(yǔ)句,for循環(huán)語(yǔ)句。具體是對(duì)16行進(jìn)行掃描的時(shí)候?qū)敵龆丝诘馁x值不同來(lái)實(shí)現(xiàn)不同程度的延時(shí)。voidinit164() //子程序init164的定義{ chari; BDATA=1; for(i=0;i<16;i++) { BCLK=0; BCLK=1; }}voidxmove(chardir,unsignedchar*ptr,charn,charspeed)//*方向n是要移動(dòng)的漢字個(gè)數(shù)移動(dòng)速度*// { unsignedchari=0,ib=0; //對(duì)i和ib的定義 unsignedinttmp=0,speedm=0; unsignedcharbuffer2[16];//半個(gè)漢字的緩存 n*=2;//左半字和右半字,所以要x2 for(i=0;i<16;i++)//清零 buffer2[i]=0; if(dir==1)//當(dāng)dir為1的時(shí)候進(jìn)行走有移動(dòng) {/****向左移動(dòng)****/ for(n;n>0;n--) { if(ptr!=0) { tmp=n%2; //判斷是左半字還是右半字 for(i=0;i<16;i++) buffer2[i]=ptr[i*2+tmp]; if(tmp) //tmp為1時(shí),將地址指向下一個(gè)漢字 ptr+=32; } for(tmp=8;tmp>0;tmp--)//要移動(dòng)8列 { ib=0; for(i=0;i<16;i++) {//要移16行,共16個(gè)字節(jié) buffer[ib]<<=1;//移第一個(gè)半字 if(buffer[ib+1]&0x80) buffer[ib]++; ib++; buffer[ib]<<=1; //移后半字 if(buffer2[i]&0x80) buffer[ib]++; ib++; buffer2[i]<<=1; //緩沖左半字向左移一位 } speedm=speed; //更新點(diǎn)陣 while(speedm--) display(); } } }//此模塊是對(duì)字形的左移,點(diǎn)陣是一個(gè)個(gè)字節(jié)的并行送出的。所以要實(shí)現(xiàn)點(diǎn)陣的左移,就要考考慮動(dòng)態(tài)的發(fā)送字節(jié)的數(shù)據(jù),而漢字的每一個(gè)字節(jié)的編碼是固定的,這時(shí)候就//就需要一個(gè)數(shù)據(jù)緩存區(qū)buffer來(lái)完成點(diǎn)陣的左移//// else {/******向右移動(dòng)******/ for(n;n>0;n--) { if(ptr!=0) { tmp=(n+1)%2; //判斷左半字還是右半字 for(i=0;i<16;i++) buffer2[i]=ptr[i*2+tmp]; if(tmp==0) //tmp為0時(shí),將地址指向下一個(gè)漢字 ptr+=32; } for(tmp=8;tmp>0;tmp--)//要移動(dòng)8列 { ib=0; for(i=0;i<16;i++) {//要移16行,共16個(gè)字節(jié) buffer[ib+1]>>=1; //移右半字 if(buffer[ib]&0x01) buffer[ib+1]|=0x80; buffer[ib]>>=1; //移左半字 if(buffer2[i]&0x01) buffer[ib]|=0x80; ib+=2; buffer2[i]>>=1; //下個(gè)漢字的右半字向右移一位 } speedm=speed; while(speedm--)//更新點(diǎn)陣 display(); } } }}voidymove(chardir,unsignedchar*ptr,charspeed){//dir=上移動(dòng),dir=0為下移動(dòng) chari=0,j=0,ib=0; unsignedinttmp=0,speedm=0; if(dir==0)//當(dāng)dir為0的時(shí)候是實(shí)現(xiàn)的上下移動(dòng)。 { /****向下移****/ ib=31; for(i=16;i>0;i--)//下移16行 { for(j=29;j>-1;j--) buffer[j+2]=buffer[j]; //將上一行的內(nèi)容復(fù)制到下一行 if(ptr==0) { //移空時(shí),buffer的首行用0移入 buffer[0]=0; buffer[1]=0; } else { //否則,處理buffer的首行元素 buffer[1]=ptr[ib]; buffer[0]=ptr[ib-1]; ib=ib-2; } speedm=speed; while(speedm--) //更新點(diǎn)陣 display(); } }/******向上移*******/ else { ib=0; //數(shù)組元素序號(hào) for(i=0;i<16;i++)//上移16行 { for(j=0;j<30;j++) //將下一行的內(nèi)容復(fù)制到上一行 buffer[j]=buffer[j+2]; if(ptr==0)//移入為空,buffer的末行用0移入 { buffer[30]=0; buffer[31]=0; } else { //否則,處理buffer的末行元素 buffer[30]=ptr[ib]; buffer[31]=ptr[ib+1]; ib=ib+2; } speedm=speed; //更新點(diǎn)陣 while(speedm--) display(); //每一個(gè)字移動(dòng)完成后都會(huì)加一個(gè)延遲的停頓 } } }4系統(tǒng)調(diào)試與結(jié)果分析(包括調(diào)試過程中遇到的問題及解決方法,最終實(shí)現(xiàn)的結(jié)果,要有各種運(yùn)行結(jié)果的仿真截圖)……5結(jié)論(對(duì)整個(gè)設(shè)計(jì)做總結(jié))……參考文獻(xiàn)參考文獻(xiàn):小五,宋體,1.5倍行距參考文獻(xiàn):[1]葉景.基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)[J].中國(guó)新通信,2008(7):49[2][3]……附錄一:protel原理圖附錄二:protelPCB板圖附錄三:Proteus電路圖附錄四:程序源代碼(注:左右分欄,中間加豎線)注:全文無(wú)特殊說(shuō)明處,中文均采用宋體,英文和數(shù)字均采用TimeNewRoman

附件2:論文書寫范例:注:全文無(wú)特殊說(shuō)明處,中文均采用宋體,英文和數(shù)字均采用TimeNewRoman基于單片機(jī)的數(shù)字電子時(shí)鐘設(shè)計(jì)劉碧瑩1,張麗麗1,張玲鳳2,陳勁宇2(1.電子0842班2號(hào)、7號(hào))(2.電子0841班8號(hào)、10號(hào))摘要:本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以芯片AT89C52作為核心控制器,通過硬件電路的制作及軟件程序的編制,設(shè)計(jì)制作了一種多功能數(shù)字時(shí)鐘系統(tǒng)。利用1602液晶同時(shí)顯示日期、星期和時(shí)間,并且可以對(duì)其進(jìn)行設(shè)置。同事利用數(shù)模轉(zhuǎn)換芯片DAC0832在示波器上可以實(shí)現(xiàn)同步顯示時(shí)鐘;12h/24h顯示模式間進(jìn)行切換;整點(diǎn)鬧鈴、整點(diǎn)報(bào)時(shí)功能;多組鬧鐘秒表設(shè)計(jì)等功能關(guān)鍵詞:?jiǎn)纹瑱C(jī)數(shù)字電子鐘0引言目前的數(shù)字電子鐘體積大,誤差大,攜帶、使用不方便,無(wú)多組時(shí)間同時(shí)記錄功能,不具備整點(diǎn)同時(shí)鬧鈴和報(bào)時(shí)功能。在現(xiàn)有數(shù)字電子鐘技術(shù)的基

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論