標(biāo)題: 基于單片機(jī)16*16點(diǎn)陣顯示屏的設(shè)計(jì)及論文 [打印本頁(yè)]
作者: 15202495722 時(shí)間: 2016-5-17 09:38
標(biāo)題: 基于單片機(jī)16*16點(diǎn)陣顯示屏的設(shè)計(jì)及論文
摘 要 伴隨著科技的進(jìn)步,LED點(diǎn)陣顯示屏作為一種新興的顯示器件走進(jìn)我們的視野,它是由多個(gè)獨(dú)立的LED發(fā)光二極管封裝而成。通過(guò)LED點(diǎn)陣顯示屏可以顯示數(shù)字、符號(hào)以及文字,通常用在廣告,指示牌,公告牌上。
本設(shè)計(jì)利是一種基于STC89C52單片機(jī)的16*16點(diǎn)陣顯示屏的設(shè)計(jì),其中STC89C52單片機(jī)負(fù)責(zé)對(duì)整個(gè)系統(tǒng)進(jìn)行總體控制,設(shè)計(jì)中使用4塊8*8單紅色點(diǎn)陣屏來(lái)組成16*16點(diǎn)陣屏,通過(guò)三極管來(lái)控制點(diǎn)陣的行方向的控制,而列方向的控制采用兩片串行輸入八位并行輸出的74LS595級(jí)聯(lián)來(lái)控制,通過(guò)快速的動(dòng)態(tài)刷新來(lái)顯示我們需要的內(nèi)容,已達(dá)到動(dòng)態(tài)顯示的目的。
關(guān)鍵詞:點(diǎn)陣 單片機(jī) 譯碼器 動(dòng)態(tài)掃描
Abstract
With advances in technology, LED dot matrix display as a display device into our new vision, it is more independent of the LED light emitting diode packages. LED dot matrix display can show by numbers, symbols and text, often used in advertising, signs, bulletin boards.
The design is based on STC89C52 Lee microcontroller 16 * 16 dot matrix display design, which is responsible for the entire chip STC89C52 overall control system design using four 8 * 8 to form a single red dot-matrix screen 16 * 16 points front panel, through the decoder to control the direction of the control line dot matrix, and the column direction is controlled by two serial input parallel output of the 74LS595 eight cascaded to control, through a fast dynamic refresh to show that we need content, has reached the dynamic display purposes.
Keywords: dot matrix single-chip decoder dynamic scan
目 錄
摘 要 2
第1章 緒 論 4
1.1 課題的研究背景 4
1.1.1 LED電子顯示屏概述 4
1.1.2 LED電子顯示屏的分類 4
1.1.3 設(shè)計(jì)任務(wù) 5
1.2 MCS-51系統(tǒng)單片機(jī)簡(jiǎn)介 6
第2章 總體設(shè)計(jì) 7
2.1 系統(tǒng)概述 7
2.1.1 顯示單元的選擇 7
2.1.2 滾屏方式選擇 7
2.1.3 關(guān)于屏幕的可擴(kuò)展性 7
2.1.4 單片機(jī)控制器的考慮 8
2.1.5 關(guān)于點(diǎn)陣數(shù)據(jù)的存儲(chǔ)方式 8
第3章 硬件電路設(shè)計(jì) 9
3.1 整體設(shè)計(jì)框圖 9
3.2 主控電路 9
3.2.1 STC89C52 單片機(jī)簡(jiǎn)介 9
3.3 LED點(diǎn)陣顯示電路 18
3.3.1 74LS595的總體特點(diǎn)和工作原理 19
3.4整體電路 21
3.5實(shí)物圖 21
第4章 軟件實(shí)現(xiàn) 22
4.1 概述 22
4.2系統(tǒng)程序方案設(shè)計(jì) 22
4.2.1主程序設(shè)計(jì) 23
4.2.2子程序設(shè)計(jì) 24
4.2.3延時(shí)函數(shù) 25
4.2.4行選控制 25
總 結(jié) 27
參考文獻(xiàn) 28
附錄1: 電路原理圖 29
附錄2: LED點(diǎn)陣顯示源程序 30
致 謝 38
元件清單 39
第1章 緒 論1.1 課題的研究背景 本文主要圍繞點(diǎn)陣的特點(diǎn)開展的點(diǎn)陣設(shè)計(jì),設(shè)計(jì)中的難度諸多如限流電阻的計(jì)算,掃描時(shí)間的控制等,下面我們就介紹下點(diǎn)陣的概況。
1.1.1 LED電子顯示屏概述LED電子顯示屏(Light Emitting Diode Panel)是由幾百--幾十萬(wàn)個(gè)半導(dǎo)體發(fā)光二極管構(gòu)成的像素點(diǎn),按矩陣均勻排列組成。利用不同的半導(dǎo)體材料可以制造不同色彩的LED像素點(diǎn)。目前應(yīng)用最廣的是紅色、綠色、黃色。而藍(lán)色和純綠色LED的開發(fā)已經(jīng)達(dá)到了實(shí)用階段。 LED顯示屏是一種通過(guò)控制半導(dǎo)體發(fā)光二極管的亮度的方式,來(lái)顯示文字、圖形、圖像、動(dòng)畫、行情、視頻、錄像信號(hào)等各種信息的顯示屏幕。
LED顯示屏分為圖文顯示屏和條幅顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計(jì)算機(jī)同步顯示漢字、英文文本和圖形;而條幅顯示屏則適用于小容量的字符信息顯示。LED顯示屏因?yàn)槠湎袼貑卧侵鲃?dòng)發(fā)光的,具有亮度高,視角廣、工作電壓低、功耗小、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定等優(yōu)點(diǎn)。因而被廣泛應(yīng)用于車站、碼頭、機(jī)場(chǎng)、商場(chǎng)、醫(yī)院、賓館、銀行、證券市場(chǎng)、建筑市場(chǎng)、拍賣行、工業(yè)企業(yè)管理和其它公共場(chǎng)所。
LED顯示屏的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高氣候耐受性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。
1.1.2 LED電子顯示屏的分類按顏色分類
單基色顯示屏:單一顏色(紅色或綠色)。
雙基色顯示屏:紅和綠雙基色,256級(jí)灰度、可以顯示65536種顏色。
全彩色顯示屏:紅、綠、藍(lán)三基色,256級(jí)灰度的全彩色顯示屏可以顯示一千六百多萬(wàn)種顏色。
按顯示器件分類
LED數(shù)碼顯示屏:顯示器件為7段碼數(shù)碼管,適于制作時(shí)鐘屏、利率屏等,顯示數(shù)字的電子顯示屏。
LED點(diǎn)陣圖文顯示屏:顯示器件是由許多均勻排列的發(fā)光二極管組成的點(diǎn)陣顯示模塊,適于播放文字、圖像信息。
按使用場(chǎng)合分類
室內(nèi)顯示屏:發(fā)光點(diǎn)較小,一般Φ3mm--Φ8mm,顯示面積一般零點(diǎn)幾至十幾平方米。
室外顯示屏:面積一般幾十平方米至幾百平方米,亮度高,可在陽(yáng)光下工作,具有防風(fēng)、防雨、防水功能。
按發(fā)光點(diǎn)直徑分類
室內(nèi)屏:Φ3mm、Φ3.75mm、Φ5mm、
室外屏:Φ10mm、Φ12mm、Φ16mm、Φ19mm、Φ21mm、Φ26mm
室外屏發(fā)光的基本單元為發(fā)光筒,發(fā)光筒的原理是將一組紅、綠、藍(lán)發(fā)光二極管封在一個(gè)塑料筒內(nèi)共同發(fā)光增強(qiáng)亮度。
1.1.3 設(shè)計(jì)任務(wù)本設(shè)計(jì)的任務(wù)就是完成一個(gè)16*16的點(diǎn)陣設(shè)計(jì),并能滾動(dòng)顯示“你好!我是陸敏杰”內(nèi)容。
任務(wù)要求:
(1) 能同時(shí)流動(dòng)顯示漢字
(2) 能實(shí)現(xiàn)顯示漢字無(wú)閃爍
(3) 能實(shí)屏幕亮度較高
1.2 MCS-51系統(tǒng)單片機(jī)簡(jiǎn)介 MCS-51系類單片機(jī)就有:
1.可靠性高:因?yàn)樾酒前垂I(yè)測(cè)控環(huán)境要求設(shè)計(jì)的,故抗干擾的能力優(yōu)于PC機(jī)。系統(tǒng)軟件(如:程序指令,常數(shù),表格)固化在ROM中,不易受病毒破壞。許多信號(hào)的通道均在一個(gè)芯片內(nèi),故運(yùn)行時(shí)系統(tǒng)穩(wěn)定可靠。
2.便于擴(kuò)展:片內(nèi)具有計(jì)算機(jī)正常運(yùn)行所必需的部件,片外有很多工擴(kuò)展用的(總線,并行和串行的輸入/輸出)管腳,很容易組成一定規(guī)模的就算計(jì)機(jī)應(yīng)用系統(tǒng)。
3.控制功能強(qiáng):具有豐富的控制指令:如:條件分支轉(zhuǎn)移指令,I/O的邏輯操作指令,位處理指令。
4.實(shí)用性好:體積小,功耗低,價(jià)格便宜,易于產(chǎn)品化。
單片機(jī)的發(fā)展歷史簡(jiǎn)介:
(1) 第1階段(1971年—1978年),以MCS-48系列為代表,稱4位單片機(jī)。在片內(nèi):CPU有4位或8位;ROM有1KB或2KB;RAM有64B或128B;只有并行接口,無(wú)串行接口;只有1個(gè)8位的定時(shí)/計(jì)時(shí)器;中斷源只有2個(gè)。在片外:尋址范圍只有4KB;芯片引腳有40個(gè)。
(2) 第2階段(1978年—1983年)以MCS-51系列為代表,稱8位單片機(jī)。在片內(nèi):CPU有8位;ROM有4KB或8KB;RAM有128B或256B;有串/并行接口;有2個(gè)或者3個(gè)16位的定時(shí)/計(jì)時(shí)器;中斷源有5至7個(gè)。在片外:尋址范圍有64KB;芯片引腳有40個(gè)。
(3) 第3階段(1983年以后),以MCS-96系列為代表,稱16位單片機(jī)。在片內(nèi):CPU有16位;ROM有8KB;RAM有232B;有串/并行接口;有4個(gè)16位的定時(shí)/計(jì)時(shí)器;中斷源有8個(gè);增加了D/A和A/D轉(zhuǎn)換電路。在片外:尋址范圍有64KB;芯片引腳有48個(gè)或者68個(gè)。
以上是對(duì)MCS-51系列以其優(yōu)良的性價(jià)比,在我國(guó)得到了廣泛的應(yīng)用。
第2章 總體設(shè)計(jì)2.1 系統(tǒng)概述 一個(gè)完備的系統(tǒng)要考慮到多種問(wèn)題的實(shí)現(xiàn),點(diǎn)陣的設(shè)計(jì)也是如此,下面我詳細(xì)說(shuō)明我的設(shè)計(jì)過(guò)程。
2.1.1 顯示單元的選擇顯示一個(gè)簡(jiǎn)體漢字,至少需要16×16點(diǎn)陣來(lái)描述。為了在較遠(yuǎn)距離處獲得清晰的視覺(jué)效果,本設(shè)計(jì)采用4個(gè)8×8點(diǎn)陣,像素直徑5mm的紅色LED模塊拼接成16×16點(diǎn)陣的LED陣列。這樣每個(gè)16×16漢字能夠獲得12×12cm的顯示尺寸,因此在50米處仍能清晰閱讀。本設(shè)計(jì)要求整個(gè)屏幕能顯示“你好!我是陸敏杰”一系列漢字,則需要用使用16*16紅色點(diǎn)陣滾動(dòng)顯示。
2.1.2 滾屏方式選擇字符的位置在屏幕上實(shí)現(xiàn)移動(dòng),即術(shù)語(yǔ)“滾屏”。可以用硬件實(shí)現(xiàn),但無(wú)疑增加了額外的硬件成本及設(shè)計(jì)難度。因此本設(shè)計(jì)采用軟件算法實(shí)現(xiàn)左滾屏顯示的常見滾屏方式。用軟件來(lái)完成滾屏算法,其最大的優(yōu)點(diǎn)在于成本低廉,而且可維護(hù)性、可升級(jí)性大大增強(qiáng)。
2.1.3 關(guān)于屏幕的可擴(kuò)展性除了基本要求外,本設(shè)計(jì)還要實(shí)現(xiàn)顯示單元數(shù)目的隨意擴(kuò)展。在傳統(tǒng)的并行傳輸方式中,因受到列數(shù)據(jù)鎖存器地址線數(shù)目的制約,不能隨意的增添顯示單元,且每個(gè)顯示單元的電路結(jié)構(gòu)不同,PCB結(jié)構(gòu)也不同,完全不符合模塊化設(shè)計(jì)的要求。因此摒棄了傳統(tǒng)的并行傳輸方式,而采用獨(dú)特的串行鎖存技術(shù),通過(guò)控制五根總線就能實(shí)現(xiàn)各顯示單元之間的列數(shù)據(jù)鎖存。不僅板間連接簡(jiǎn)單,更是降低了PCB布局及布線的難度。每個(gè)顯示單元的PCB都是完全一樣的,便于量產(chǎn)。
2.1.4 單片機(jī)控制器的考慮因本設(shè)計(jì)采用軟件來(lái)實(shí)現(xiàn)滾屏,且傳輸方式為串行方式。所以對(duì)微控制器單元的處理速度要求較高,可供選擇的有ARM7和高速8位單片機(jī)。ARM的處理速度極快,但對(duì)于條屏的應(yīng)用,ARM內(nèi)部的資源浪費(fèi)嚴(yán)重,且成本較高。因此選擇高速8位單片機(jī)作為控制器,常見的高速8位單片機(jī)有AVR系列單片機(jī),C8051F系列單片機(jī),STC89C52單片機(jī)。這幾種單片機(jī)的處理速度均能達(dá)到1MIPS/MHz(在時(shí)鐘頻率為1MHz時(shí)處理能力為每秒100萬(wàn)條指令),但AVR系列單片機(jī)的極限時(shí)鐘頻率只能到16MHz,而C8051F系列SOC類似于ARM7,時(shí)鐘速度可到100MHz,但會(huì)浪費(fèi)其內(nèi)部豐富的資源,而且價(jià)格昂貴,用在單色條屏的控制中頗感浪費(fèi)。于是最佳選擇為STC89C52系列單片機(jī),其最高時(shí)鐘能到40MHz,且有較豐富的接口及存儲(chǔ)器資源,價(jià)格極其低廉,零售價(jià)僅為9元/片。大幅降低了產(chǎn)品成本。
2.1.5 關(guān)于點(diǎn)陣數(shù)據(jù)的存儲(chǔ)方式目前使用最廣泛的技術(shù)是,通過(guò)上位機(jī)軟件將待顯示的字符串轉(zhuǎn)換為對(duì)應(yīng)的點(diǎn)陣字模數(shù)據(jù),通過(guò)燒寫的方式將這些字模數(shù)據(jù)按一定的順序編址后存儲(chǔ)在E2PROM中。在條屏顯示的過(guò)程中按規(guī)定的方式取出E2PROM中的字模數(shù)據(jù)進(jìn)行處理。對(duì)于一個(gè)16×16點(diǎn)陣的漢字字模數(shù)據(jù),需要連續(xù)32字節(jié)的E2PROM空間來(lái)存儲(chǔ)。照此計(jì)算,若有256個(gè)需要顯示的字符,則至少需要32B×256=8192字節(jié)(8KB)的E2PROM存儲(chǔ)空間。通常的單片機(jī)內(nèi)部沒(méi)有集成這么大容量的E2PROM。因此這種方案,需要在單片機(jī)外部擴(kuò)展大容量的E2PROM,增加硬件成本。上位機(jī)程序設(shè)計(jì)由于涉及到漢字取模,取模算法的難度較大。在多字下載的時(shí)候傳輸時(shí)間也較長(zhǎng)。諸多弊端使本設(shè)計(jì)放棄了傳統(tǒng)方案。因?yàn)楸驹O(shè)計(jì)只需要很少的顯示內(nèi)容所以直接保存在STC89C52中是足夠的,因此沒(méi)有使用外部設(shè)備。
第3章 硬件電路設(shè)計(jì)3.1 整體設(shè)計(jì)框圖 經(jīng)過(guò)對(duì)此設(shè)計(jì)的分析,為了能夠?qū)崿F(xiàn)要求,利用單片機(jī)STC89C52作為本系統(tǒng)的主控模塊。LED點(diǎn)陣顯示屏作為顯示模塊,把單片機(jī)傳來(lái)的數(shù)據(jù)顯示出來(lái),并且可以實(shí)現(xiàn)滾動(dòng)顯示。硬件整體設(shè)計(jì)框圖如圖1所示:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps3FB.tmp.jpg
圖1 整體設(shè)計(jì)框圖
下面對(duì)硬件電路進(jìn)行說(shuō)明:
3.2 主控電路 此方案通過(guò)主控電路控制完成LED點(diǎn)陣顯示屏的字符滾動(dòng)顯示,主控制器使用STC公司生產(chǎn)的單片機(jī)STC89C52。
3.2.1 STC89C52 單片機(jī)簡(jiǎn)介 STC89C52 是STC公司推出的一款超強(qiáng)抗干擾,加密性強(qiáng),在線可編程,高速,低功耗CMOS 8位單片機(jī)。片內(nèi)含 8k bytes 的可反復(fù)擦寫Flash只讀程序存儲(chǔ)器和256 bytes 的隨機(jī)數(shù)據(jù)存儲(chǔ)器(RAM),器件采用STC公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容, 片內(nèi)置通用8位中央處理器 (CPU)和Flash存儲(chǔ)單元, 功能強(qiáng)大的STC89C52單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場(chǎng)合。
1)STC89C52 外部結(jié)構(gòu)及特性
其外形封裝有兩種方式:雙列直插式40腳封裝(DIP)和方形44腳封裝 (PLCC),直插式40 腳封裝(DIP)和外部總線結(jié)構(gòu)如圖2和圖3所示:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps3FC.tmp.jpg
圖2 STC89C52引腳排列 圖3外部總線
STC89C52的 4 個(gè) 8 位I/O口的功能說(shuō)明如下:
(1)P0口:P0 口是一個(gè) 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。 當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash 編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。
(2)P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向 I/O口,p1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL 邏輯電平。對(duì)P1端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2 分別作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX)。在 flash 編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。
(3)P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng) 4 個(gè) TTL 邏輯電平。對(duì) P2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或用 16 位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR)時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送 1。在使用8 位地址(如 MOVX @RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2 口輸出 P2 鎖存器的內(nèi)容。在 flash 編程和校驗(yàn)時(shí),P2 口也接收高 8 位地址字節(jié)和一些控制信號(hào)。
(4)P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,p2 輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在 flash 編程和校驗(yàn)時(shí),P3 口也接收一些控制信號(hào)。P3 口亦作為AT89C52特殊功能(第二功能)使用,如下所示:
l P3.0 RXD(串行輸入口)
l P3.1 TXD(串行輸出口)
l P3.2 INTO(外部中斷0 輸入口)
l P3.3 INT1(外部中斷 1 輸入口)
l P3.4 TO(定時(shí)器 0 外部輸入)
l P3.5 TI(定時(shí)器 1 外部輸入)
l P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào))
l P3.7(外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào))
2)功耗特性
(1)掉電模式:
典型功耗 <0.1uA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序
(2)空閑模式:
典型功耗 2mA
(3)正常工作模式:
典型功耗 4mA-7mA
(4)掉電模式可由外部中斷喚醒,適用于水表,氣表等電池供電系統(tǒng)及便攜設(shè)備
3)STC單片機(jī)的命名規(guī)則
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41C.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41D.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41E.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps41F.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps420.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps421.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps422.tmp.png STC89 xx xx xx—40 x-xxxx
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps423.tmp.png
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps424.tmp.png
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps434.tmp.png
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps435.tmp.png
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps436.tmp.png
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps437.tmp.png
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps438.tmp.png
4)STC89C52的內(nèi)部組成
STC89C52單片機(jī)在一塊芯片中集成了 CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器、看門狗和多種功能的 I/O 口設(shè)備的等,相當(dāng)于一臺(tái)計(jì)算機(jī)所需要的基本功能部件。
STC89C52單片機(jī)內(nèi)包含的具體部分如下:
l 一個(gè)8 位 CPU。
l 一個(gè)片內(nèi)振蕩器及時(shí)鐘電路。
l 8KB Flash 程序存儲(chǔ)器。
l 256 B RAM 數(shù)據(jù)存儲(chǔ)器。
l 三個(gè)16 位定時(shí)器/計(jì)數(shù)器。
l 可尋址 64KB 的外部數(shù)據(jù)存儲(chǔ)器和 64KB 的外部程序存儲(chǔ)器空間的控制電路。 32 條可編程的 I/O線(4組8 位并行 I/O端口)。
l 一個(gè)可編程全雙工串口通信。
l 8 個(gè)中斷源、兩個(gè)優(yōu)先級(jí)嵌套中斷結(jié)構(gòu)。
STC89C52單片機(jī)的框圖如圖4所示,各功能部件由內(nèi)部總線連接在一起。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps439.tmp.jpg
圖4 STC89C52單片機(jī)框圖
5)特殊功能寄存器SFR
(1)單片機(jī)內(nèi)核特殊功能寄存器
(2)系統(tǒng)管理特殊功能寄存器
(3)中斷特殊功能寄存器
6)STC89C52單片機(jī)定時(shí)器的使用
定時(shí)和計(jì)數(shù)功能由特殊功能寄存器TMOD的控制位C/`T進(jìn)行選擇,TMOD寄存器的各位信息如下表所列。可以看出,2個(gè)定時(shí)/計(jì)數(shù)器有4中操作模式,通過(guò)TMOD的M1和M0選擇。2個(gè)定時(shí)/計(jì)數(shù)器的模式0、1和2都相同,模式3不同,各模式下的功能如圖5所述:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps44A.tmp.jpg
圖5 定時(shí)/計(jì)數(shù)器各模式功能
| | |
| | TMOD.7控制定時(shí)器1,置1時(shí)只有在INIT0腳為高及TR1控制位置1時(shí)才可打開定時(shí)器/計(jì)數(shù)器1 |
| | TMOD.3控制定時(shí)器0,置1時(shí)只有在`INIT1腳為高及TR0控制位置1才可打開定時(shí)器/計(jì)數(shù)器1 |
| | TMOD.6控制定時(shí)器1用作定時(shí)器或計(jì)數(shù)器,清零則用作定時(shí)器(從內(nèi)部系統(tǒng)時(shí)鐘輸入),置1用作計(jì)數(shù)器(從T1/P3.5腳輸入) |
| | TMOD.2控制定時(shí)器0用作定時(shí)器或計(jì)數(shù)器,清零則用作定時(shí)器(從內(nèi)部系統(tǒng)時(shí)鐘輸入),置1用作計(jì)數(shù)器(從T0/P3.4腳輸入) |
| | 定時(shí)器/計(jì)數(shù)器1模式選擇 |
| | 13位定時(shí)器/計(jì)數(shù)器,兼容8048定時(shí)器模式,TL1只用低5位參與分頻,TH1整個(gè)8位全用 |
| 16位定時(shí)器/計(jì)數(shù)器,TL1、TH1全用 |
| 8位自動(dòng)重裝載定時(shí)器,當(dāng)溢出時(shí)將TH1存放的值自動(dòng)重裝入TL1 |
| 定時(shí)器/計(jì)數(shù)器1此時(shí)無(wú)效(停止計(jì)數(shù)) |
| | 定時(shí)器/計(jì)數(shù)器0模式選擇 |
| | 13位定時(shí)器/計(jì)數(shù)器,兼容8048定時(shí)器模式,TL0只用低5位參與分頻,TH1整個(gè)8位全用 |
| 16位定時(shí)器/計(jì)數(shù)器,TL0、TH0全用 |
| 8位自動(dòng)重裝載定時(shí)器,當(dāng)溢出時(shí)將TH1存放的值自動(dòng)重裝入TL0 |
| 定時(shí)器0此時(shí)作為雙8位定時(shí)器/計(jì)數(shù)器。TL0作為一個(gè)8位定時(shí)器/計(jì)數(shù)器,通過(guò)標(biāo)準(zhǔn)定時(shí)器0的控制位控制。TH0僅作為一個(gè)8位定時(shí)器,由定時(shí)器1的控制位控制。 |
(1)模式0
將定時(shí)器設(shè)置成模式0時(shí),類似8048定時(shí)器,即8位計(jì)數(shù)器帶32分頻的預(yù)分頻器。下圖所示為模式0工作方式。此模式下,定時(shí)器配置為13位的計(jì)數(shù)器,由TLn的低5位和THn的8位所構(gòu)成。TLn低5位溢出向THn進(jìn)位,THn計(jì)數(shù)溢出置為TCON中的溢出標(biāo)志位TFn(n=0,1)。GATE=0時(shí),如TRn=1,則定時(shí)器計(jì)數(shù)。GATE=1時(shí),允許由外部輸入INIT1控制定時(shí)器1,INIT0控制定時(shí)器0,這樣可實(shí)現(xiàn)脈寬測(cè)量。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps45B.tmp.jpg
圖6 定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1的模式0
(2)模式1
模式1除了使用THn及TLn全部16位外,其他與模式0完全相同、
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps45C.tmp.jpg
圖7定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1的模式1
(3)模式2
此模式下定時(shí)器/計(jì)數(shù)器0和1作為可自動(dòng)重裝載的8位計(jì)數(shù)器(TLn),如下圖所示,TLn的溢出不僅置位TFn,而且將THn內(nèi)容重新裝入TLn,THn內(nèi)容由軟件預(yù)置,重裝時(shí)THn內(nèi)容不變,模式2的操作對(duì)于定時(shí)器0及定時(shí)器1是相同的。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46C.tmp.jpg
圖8 定時(shí)器/計(jì)數(shù)器0和1的模式2
(4)模式3
對(duì)定時(shí)器1,在模式3時(shí),,定時(shí)器1停止計(jì)數(shù),效果與將TR1設(shè)置為0相同。
對(duì)定時(shí)器0,此模式下定時(shí)器0的TL0及TH0作為2個(gè)獨(dú)立的8位計(jì)數(shù)器。下圖為模式3時(shí)的定時(shí)器0邏輯圖。TL0占用定時(shí)器0的控制位:C/`T、GATE、TR0、INT0及TF0。TH0限定為定時(shí)器功能(計(jì)數(shù)器周期),占用定時(shí)器1的TR1及TF1。此時(shí),TH0控制定時(shí)器1中斷。
模式3是為了增加一個(gè)附加的8位定時(shí)器/計(jì)數(shù)器而提供的,使單片機(jī)具有三個(gè)定時(shí)器/計(jì)數(shù)器。模式3只使用與定時(shí)器/計(jì)數(shù)器0,定時(shí)器T1處于模式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)T1可用來(lái)作串行口波特率發(fā)生器),而T0可作為兩個(gè)定時(shí)器用。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46D.tmp.jpg
圖9 定時(shí)器/計(jì)數(shù)器0的模式3
3.3 LED點(diǎn)陣顯示電路本設(shè)計(jì)使用的是4塊8*8單色點(diǎn)陣屏設(shè)計(jì)16*16點(diǎn)陣屏,采用單色顯示,進(jìn)行顯示所要顯示的字符,通過(guò)三極管來(lái)控制點(diǎn)陣的行方向的顯示,而列方向的16條線則由74LS595的八位并行輸出端控制。
3.3.1 74LS595的總體特點(diǎn)和工作原理1)總體特點(diǎn):74LS595是8位串行輸入轉(zhuǎn)并行輸出移位寄存器,三態(tài)輸出功能,具有數(shù)據(jù)存儲(chǔ)寄存器,移位寄存器和存儲(chǔ)器是分別的時(shí)鐘。數(shù)據(jù)在SHcp的上升沿輸入,在STcp的上升沿進(jìn)入的存儲(chǔ)寄存器中去。如果兩個(gè)時(shí)鐘連在一起,則移位寄存器總是比存儲(chǔ)寄存器早一個(gè)脈沖。在移位的過(guò)程中,輸出端的數(shù)據(jù)可以保持不變。這在串行速度慢的場(chǎng)合很有用處,數(shù)碼管沒(méi)有閃爍感。其DIP封裝引腳圖如圖7所示:
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46E.tmp.jpg
圖7 74LS595引腳圖
各引腳及其功能:
| |
| |
| |
| |
| |
| |
| 并行數(shù)據(jù)輸出口,即儲(chǔ)寄存器的數(shù)據(jù)輸出口 |
2)工作原理
每當(dāng)SHcp上升沿到來(lái)時(shí), Ds引腳當(dāng)前電平值在移位寄存器中左移一位,在下一個(gè)上升沿到來(lái)時(shí)移位寄存器中的所有位都會(huì)向左移一位,同時(shí)Q7'也會(huì)串行輸出移位寄存器中高位的值,這樣連續(xù)進(jìn)行8次,就可以把數(shù)組中每一個(gè)數(shù)(8位的數(shù))送到移位寄存器;然后當(dāng)STcp上升沿到來(lái)時(shí),移位寄存器的值將會(huì)被鎖存到鎖存器里,并從Q1~7引腳輸出。74LS595的主要優(yōu)點(diǎn)是具有數(shù)據(jù)存儲(chǔ)寄存器,在移位的過(guò)程中,輸出端的數(shù)據(jù)可以保持不變。這在串行速度慢的場(chǎng)合很有用處,點(diǎn)陣沒(méi)有閃爍感。
74HC595在5V供電的時(shí)候能夠達(dá)到30MHz的時(shí)鐘速度,每個(gè)并行輸出端口均能承受20mA的灌電流和拉電流。這個(gè)特點(diǎn)保證了不用增加額外的擴(kuò)流電路即可輕松的驅(qū)動(dòng)LED。它輸入端允許500nS的上升(下降)時(shí)間,對(duì)嚴(yán)重畸形的時(shí)鐘脈沖仍能檢測(cè)。這樣就可以容納較大的傳輸線對(duì)地電容,使本設(shè)計(jì)的抗干擾能力增強(qiáng)。
74HC595并行輸出端與LED模塊列線之間通過(guò)20Ω的電阻連接,這里電阻起到分壓,去除紅色LED的并聯(lián)嵌位作用。使紅綠兩組LED均能正常發(fā)光。
由于LED顯示屏的工作電流時(shí)刻在變化,造成了系統(tǒng)電壓的波動(dòng)。這種電壓波動(dòng)有高頻成分,也有低頻成分。輕則對(duì)周圍無(wú)線電環(huán)境造成電磁污染,重則使系統(tǒng)時(shí)鐘紊亂,邏輯錯(cuò)誤。為避免此,在每個(gè)74HC595的電源VCC和GND旁邊都并聯(lián)了兩個(gè)電容,用于濾波和退耦。穩(wěn)定系統(tǒng)電壓,旁路掉電源中的高頻脈動(dòng)成份。消除自激,減小對(duì)外雜散電磁輻射,提高EMI電磁兼容性。
3.4整體電路見附錄1(電路原理圖)
3.5實(shí)物圖 下面為我制作的16*16點(diǎn)陣實(shí)物圖,正面圖與背面圖。
file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps46F.tmp.pngfile:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps480.tmp.png
16*16正面點(diǎn)陣圖 16*16背面點(diǎn)陣圖
第4章 軟件實(shí)現(xiàn)4.1 概述整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來(lái)了。 從軟件的功能不同可分為兩大類: 一是監(jiān)控軟件 (主程序) ,它是整個(gè)控制系統(tǒng)的核心,專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來(lái)完成各種實(shí)質(zhì)性的功能。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。 首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。
4.2系統(tǒng)程序方案設(shè)計(jì)系統(tǒng)程序主要包括了:主程序、點(diǎn)陣顯示驅(qū)動(dòng)程序。
主程序:主要控制整個(gè)顯示部分的初始化,使系統(tǒng)在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足,可顯示文字和數(shù)字,顯示的文字和數(shù)字應(yīng)穩(wěn)定、清晰無(wú)串?dāng)_。文字顯示可以移入移出。本設(shè)計(jì)的顯示內(nèi)容為“你好!我是陸敏杰”實(shí)現(xiàn)向右移動(dòng)功能。
下面是主程序部分:
程序中首先對(duì)各個(gè)變量進(jìn)行初始化,并對(duì)74HC595進(jìn)行初始化,當(dāng)時(shí)初始化過(guò)程完成后,開始顯示處理。
//主函數(shù)
void main()
{
uchar i=1,j=0;
uchar X=0;
//595c初始化
Init595();
//循環(huán)演示
下面的程序是對(duì)顯示的處理主要是對(duì)漢字的移動(dòng)和顯示的處理
while(1)
{
for(j=0;j<10;j++)//循環(huán)顯示10次
{
//送入16個(gè)位數(shù)據(jù)
for(i=1;i<17;i++)
{
WriteS(0xff,0xff);//消影
Wei_154(i);
WriteS(HanZi[i*2-2+2*X],HanZi[i*2-1+2*X]);//顯示內(nèi)容
Wei_154(i);
delay(7);//顯示
G2=0;//關(guān)閉
}
}
X++;
if(X==17*16)
X=0;
}
}
在主函數(shù)中完成函數(shù)的調(diào)用及字體的移動(dòng)處理,所以使人們能看見可以移動(dòng)字體顯示。
點(diǎn)陣顯示驅(qū)動(dòng)程序:
主要實(shí)現(xiàn)對(duì)74ls595,已實(shí)現(xiàn)畫面的動(dòng)態(tài)刷新。
//74ls595初始化
void Init595()
{
SI=1;
SCK=0;
RCK=0;
}
//向595中寫一個(gè)字節(jié)
void Write_byte595(uchar temp)
{
uchar i,data_=temp;
G2=1;
for(i=0;i<8;i++)//傳值8位
{
if(data_&0x01==0x01)//低位為1
{
SI=1;
}
else //低位為0
{
SI=0;
}
//產(chǎn)生一個(gè)上升沿
SCK=0;
SCK=1;
SCK=0;
data_>>=1;
}
RCK=0;//顯示數(shù)據(jù)
RCK=1;
RCK=0;
}
//595寫入一行的字節(jié)
void WriteS(uchar data1,uchar data2)
{
Write_byte595(data2);
Write_byte595(data1);
}
4.2.1主程序設(shè)計(jì) 通過(guò)主程序?qū)?font face="Times New Roman">74ls595的初始化和對(duì)子程序的調(diào)用完成單片屏幕的動(dòng)態(tài)刷新以達(dá)到點(diǎn)陣的動(dòng)態(tài)顯示目的。
4.2.2子程序設(shè)計(jì) 將各個(gè)功能程序以子程序的形式寫好, 當(dāng)寫主程序的時(shí)候, 只需要調(diào)用子程序,然后在寄存器的分配上作一下調(diào)整,消除寄存器沖突和 I/O 沖突即可。程序應(yīng)該盡可能多的使用調(diào)用指令代替跳轉(zhuǎn)指令。因?yàn)樘D(zhuǎn)指令使得程序難以看懂各程序段之間的結(jié)構(gòu)關(guān)系。而調(diào)用指令則不同,調(diào)用指令使得程序結(jié)構(gòu)清晰,無(wú)論是修改還是維護(hù)都比較方便。將功能程序段寫成子程序的形式,除了方便調(diào)用之外,還有一個(gè)好處那就是以后寫程序的時(shí)候如果要用到,就可以直接調(diào)用這個(gè)單元功能模塊。下面對(duì)LED點(diǎn)陣顯示屏的顯示部分流程圖做介紹:
4.2.3延時(shí)函數(shù) 因?yàn)轱@示原理是視覺(jué)暫留原理需要有延時(shí)控制顯示。延時(shí)函數(shù)如下:
//等待函數(shù)
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=7;y>0;y--);
}
4.2.4行選控制 通過(guò)單片機(jī)IO口控制三極管,可以實(shí)現(xiàn)5線控制16線的過(guò)程,如程序所示:
//154位選驅(qū)動(dòng)
void Wei_154(uchar W)
{
G2=0;//使能
switch(W)
{
case 16:
{
A_=1;
B_=1;
C_=1;
D_=1;
break;
}
case 15:
{
A_=0;
B_=1;
C_=1;
D_=1;
break;
}
case 14:
{
A_=1;
B_=0;
C_=1;
D_=1;
break;
}
case 13:
{
A_=0;
B_=0;
C_=1;
D_=1;
break;
}
case 12:
{
A_=1;
B_=1;
C_=0;
D_=1;
break;
}
case 11:
{
A_=0;
B_=1;
C_=0;
D_=1;
break;
}
case 10:
{
A_=1;
B_=0;
C_=0;
D_=1;
break;
}
case 9:
{
A_=0;
B_=0;
C_=0;
D_=1;
break;
}
case 8:
{
A_=1;
B_=1;
C_=1;
D_=0;
break;
}
case 7:
{
A_=0;
B_=1;
C_=1;
D_=0;
break;
}
case 6:
{
A_=1;
B_=0;
C_=1;
D_=0;
break;
}
case 5:
{
A_=0;
B_=0;
C_=1;
D_=0;
break;
}
case 4:
{
A_=1;
B_=1;
C_=0;
D_=0;
break;
}
case 3:
{
A_=0;
B_=1;
C_=0;
D_=0;
break;
}
case 2:
{
A_=1;
B_=0;
C_=0;
D_=0;
break;
}
case 1:
{
A_=0;
B_=0;
C_=0;
D_=0;
break;
}
總 結(jié)經(jīng)過(guò)近兩個(gè)月的努力,終于順利完成了畢業(yè)設(shè)計(jì)。在此LED點(diǎn)陣顯示系統(tǒng)中,由于我采用了STC89C5單片機(jī),并且采用串行移位寄存器74HC595作列線驅(qū)動(dòng),使本設(shè)計(jì)的硬件成本大幅下降,而又提高了顯示單元的可擴(kuò)展性。因?yàn)槭褂昧烁咚賳纹瑱C(jī),使本系統(tǒng)的動(dòng)態(tài)刷新率,移動(dòng)速度等得到保障。本設(shè)計(jì)充分利用了單片機(jī)的E2PROM等片上資源,節(jié)約成本的同時(shí)使外圍電路簡(jiǎn)潔美觀,故障率降低。總體的性能指標(biāo)均達(dá)到或超過(guò)了題目的要求。
畢業(yè)設(shè)計(jì)是每個(gè)大學(xué)生必須面臨的一項(xiàng)綜合素質(zhì)的考驗(yàn),如果說(shuō)在過(guò)去四年里,我們的學(xué)習(xí)是一個(gè)知識(shí)的積累過(guò)程,那么現(xiàn)在的畢業(yè)設(shè)計(jì)就是對(duì)過(guò)去所學(xué)知識(shí)的綜合運(yùn)用,是對(duì)理論進(jìn)行深化和重新認(rèn)識(shí)的時(shí)間活動(dòng)。在這近兩個(gè)月的畢業(yè)設(shè)計(jì)中,我們有艱辛的付出,當(dāng)然更多的是豐收的喜悅。知識(shí)固然得到了鞏固和提高,但我相信在實(shí)踐中的切身體會(huì)將會(huì)使我在以后的工作和學(xué)習(xí)中終身受用。
首先,學(xué)習(xí)能力得到了提高。在畢業(yè)設(shè)計(jì)中,自始至終獨(dú)立完成硬件電路的設(shè)計(jì)、單片機(jī)軟件編寫等。在這些過(guò)程中,遇到許多困難,但通過(guò)書籍或網(wǎng)絡(luò)查閱了很多相關(guān)文章和向?qū)熣?qǐng)教后終于解決了。通過(guò)這次畢業(yè)設(shè)計(jì),我不僅對(duì)理論有了更深一步的認(rèn)識(shí),增強(qiáng)了和外界技術(shù)的溝通,還培養(yǎng)了自學(xué)能力和分析解決問(wèn)題的能力,更重要的是,培養(yǎng)了克服困難的勇氣和信心。
其次,培養(yǎng)了自己的市場(chǎng)觀念。一個(gè)商品是否能夠搶占市場(chǎng),除了必須的功能和質(zhì)量要求外,其價(jià)格是最大的競(jìng)爭(zhēng)優(yōu)勢(shì)。如何在保證質(zhì)量和完成同等功能的情況下,把產(chǎn)品的成本降到最低。是每個(gè)設(shè)計(jì)人員在作出方案時(shí)首要考慮的因素。
再次,則是人際交流能力得到鍛煉。人非生而知之者!人的學(xué)識(shí)總是不能面面俱到的,這就要求我們必須善于借鑒別人的成功經(jīng)驗(yàn)或失敗教訓(xùn),使自己少走彎路。
總之,畢業(yè)設(shè)計(jì)完成了,但又面臨著工作。我相信我會(huì)把自己的熱情和所學(xué)奉獻(xiàn)到自己的工作中,不斷努力,不斷進(jìn)取!
參考文獻(xiàn)[1] 譚浩強(qiáng). C程序設(shè)計(jì)(第二版)[M]. 北京:清華大學(xué)出版社,1999.12.
[2] 彭為.單片機(jī)典型系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社,2006.5.
[3] 李良榮.現(xiàn)代電子設(shè)計(jì)技術(shù)-基于Multisim7[M].北京:機(jī)械工業(yè)出版社,2005.4.
[4] 姜承昊. 最新LED驅(qū)動(dòng)電路設(shè)計(jì)、應(yīng)用與制造新技術(shù)新工藝實(shí)用手冊(cè)[M].北京:中國(guó)科學(xué)技術(shù)文獻(xiàn)出版社,2008.3.
[5] 魏洪興.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)實(shí)驗(yàn)教材I[M].北京:清華大學(xué)出版社,2005.9.
[6] 童詩(shī)白.模擬電子技術(shù)基礎(chǔ)(第三版)[M].北京:高等教育出版社,2001.1.
[7] 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,1998.11.
[8] 中國(guó)集成電路大全編委會(huì)編.《中國(guó)集成電路大全——CMOS集成電路》[M]. 北京:國(guó)防工業(yè)出版社,1985.
附錄1: 電路原理圖file:///C:/Users/阿坤/AppData/Local/Temp/ksohtml/wps491.tmp.jpg
附錄2: LED點(diǎn)陣顯示源程序#include <reg52.h> //調(diào)用單片機(jī)頭文件
#define uchar unsigned char //無(wú)符號(hào)字符型 宏定義 變量范圍0~255
#define uint unsigned int //無(wú)符號(hào)整型 宏定義 變量范圍0~65535
// // 1 2 3 4 5 6 7 8
uint code we[16]={0xfffb,0xffdf,0xff7f,0xffef,0xfffe,0xfffd,0xffbf,0xfff7,
0xdfff,0xfbff,0xfdff,0x7fff,0xf7ff,0xbfff,0xfeff,0xefff}; //左
/***********************1ms延時(shí)函數(shù)*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<50;j++);
}
uchar code table[][32] = {//
{0xFB,0x7F,0xFB,0xBF,0xFB,0xDF,0xFB,0xE7,0xFB,0xF9,0x03,0xFE,0xBB,0xFF,0xBB,0xFF,0xBB,0xBF,0xBB,0x7F,0xBB,0xBF,0x3B,0xC0,0xFB,0xFF,0xFB,0xFF,0xFB,0xFF,0xFF,0xFF},/* ,0*/
{0xF7,0xFF,0xF7,0x7F,0xF7,0xBF,0xF7,0xDF,0xF7,0xE7,0x07,0xF8,0x76,0xFF,0x71,0xFF,0x77,0xBF,0x77,0x7F,0x77,0xBF,0x77,0xC0,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF},/* ,1*/
{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},/*" ",9*/
};
uchar hanzi[32] ;
uchar i;
sbit SI=P3^6;
sbit SCK=P3^3; //上升沿有效
sbit RCK=P3^4; //上升沿有效
/**********發(fā)送一個(gè)數(shù)據(jù)************/
void send_byte(uchar a)
{
uchar i,nn;
nn=a;
for(i=0;i<8;i++)
{
SCK=0;
nn<<=1;
SI=CY;
SCK=1;
}
}
/**********595輸出************/
void out()
{
RCK=0;
RCK=1;
}
uint flag_value = 0;
uchar you = 0 ;
/**********主函數(shù)************/
void main()
{
static uchar value,value1,j;
for(i=0;i<32;i++ )
hanzi = 0xff;
flag_value = 0;
while(1)
{
value ++;
if(value >= 10) //延時(shí)進(jìn)來(lái)處理
{
value = 0;
value1 ++;
if(value1 <= 16)
{
value1 = 0;
for(j=0;j<15;j++)
{
hanzi[j*2+1] = hanzi[j*2+3] ;
hanzi[j*2] = hanzi[j * 2+2];
}
hanzi[30] = table[you][flag_value * 2];
hanzi[31] = table[you][flag_value * 2 + 1];
flag_value ++;
if(flag_value >= 16)
{
flag_value = 0;
you ++;
if(you >= geshu) //字全部顯示完了
you = 0;
}
}
}
for(i=0;i<16;i++)
{
out(); //595輸出
P2 = we / 256;
P0 = we % 256;
send_byte(hanzi[i*2]) ; //上
send_byte(hanzi[i*2+1]) ; //下
delay_1ms(1);
}
}
}
致 謝
此設(shè)計(jì)及論文是在*888*老師悉心指導(dǎo)和大力支持下完成的,*888*老師以其嚴(yán)謹(jǐn)求實(shí)的治學(xué)態(tài)度、高度的敬業(yè)精神、兢兢業(yè)業(yè)的工作作風(fēng)和大膽創(chuàng)新的進(jìn)取精神對(duì)我產(chǎn)生重要影響。在論文的寫作過(guò)程中,也得到了許多同學(xué)的寶貴建議,同時(shí)還有那些與我一起工作奮斗的兄弟姐妹,所以在此,我要一并致以誠(chéng)摯的謝意。感謝所有關(guān)心、支持、幫助過(guò)我的良師益友。
元件清單STC89C52 1片
40DIP座 1個(gè)
30P電容 2個(gè)
12MHZ晶振 1個(gè)
10K電阻 1個(gè)
10uf電容 1個(gè)
排座 3個(gè)
自鎖開關(guān) 1個(gè)
10CM*10CM電路板 1個(gè)
導(dǎo)線 若干
排針 1條
74HC595 2個(gè)
74HC154 1個(gè)
8550 16個(gè)
2K電阻 16個(gè)
470歐電阻 16個(gè)
28DIP座 1個(gè)
16DIP座 2個(gè)
電池盒 1個(gè)
8*8紅色點(diǎn)陣塊 4個(gè)
作者: 2536583774 時(shí)間: 2016-6-13 22:00
學(xué)長(zhǎng),您有詳細(xì)的16*16點(diǎn)陣資料嗎
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |