標題: 單片機+74HC138+74HC595的16×16LED點陣滾動顯示屏課程設(shè)計報告 [打印本頁]
作者: izhineng 時間: 2018-1-21 22:09
標題: 單片機+74HC138+74HC595的16×16LED點陣滾動顯示屏課程設(shè)計報告
目錄
1 選題背景1
2 方案論證1
2.1 課程設(shè)計的內(nèi)容和要求1
2.2 設(shè)計方案2
3 設(shè)計過程3
3.1 系統(tǒng)框圖3
3.2 控制單元設(shè)計3
3.3 行驅(qū)動單元設(shè)計3
3.4 列驅(qū)動單元設(shè)計4
3.5 元器件清單5
3.6系統(tǒng)軟件設(shè)計5
3.6.1程序框圖簡介5
3.6.2 程序分析5
4 結(jié)果分析13
4.1程序調(diào)試與仿真13
4.2仿真結(jié)果13
5 設(shè)計總結(jié)14
參考文獻15
4 結(jié)果分析
4.1 程序調(diào)試與仿真
軟件程序編寫后,將KEIL軟件中輸出文件載入PROTEUS軟件進行仿真。按照顯示的結(jié)果進行程序調(diào)試。多次調(diào)試后,不再出現(xiàn)錯誤顯示,并且顯示穩(wěn)定清晰。說明此方案可行。
4.2 仿真結(jié)果
運行程序,在16×16點陣顯示屏上依次顯示0-9十個字符,并且循環(huán)顯示。運行結(jié)果如圖4-1、圖4-2所示。

圖4-1 仿真圖1 圖4-2 仿真圖2
5 設(shè)計總結(jié)
經(jīng)過一段時間的工作,終于完成了基于51單片機的LED顯示系統(tǒng)的設(shè)計,項目所要求的功能全部達到。通過這次設(shè)計收獲頗多,不僅是所作題目涉及到的軟硬件知識還有更為重要的實際經(jīng)驗和過程中所發(fā)現(xiàn)的問題。
接手題目之后從互聯(lián)網(wǎng)上對LED進行了詳細的資料收集,從技術(shù)和產(chǎn)業(yè)的兩方面對LED進行了了解。通過了解我認識到LED是一門當今應用非常廣泛的技術(shù),整個產(chǎn)業(yè)每年都會有巨大的產(chǎn)值而且技術(shù)還在不斷發(fā)展和創(chuàng)新。
從設(shè)計之初就確定了參照大屏幕顯示屏的實現(xiàn)方法和實際情況設(shè)計一款小屏幕的LED點陣顯示屏。在查閱了大量的大屏幕顯示屏資料后確定了題目的設(shè)計方案。整個設(shè)計采用AT89C51做核心控制器,74HC138和74HC595組成譯碼電路。在實現(xiàn)這一設(shè)計的過程中所遇到的問題和困難給我留下了寶貴的經(jīng)驗和深刻教訓。
隨著課程設(shè)計的進行,對LED的了解也越來越深入。認為LED技術(shù)也會進一步發(fā)展,LED應用將會更加廣泛。
設(shè)計結(jié)束了,但學習還在繼續(xù)。我相信通過此次設(shè)計所得到的知識、心得、經(jīng)驗乃至感受都會讓我在以后的日子里受益匪淺。
1選題背景
LED顯示屏是一種通過控制半導體發(fā)光二極管的顯示方式, 用來顯示文字、 圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機進行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動畫、錄像、電視、 VCD節(jié)目以及現(xiàn)場實況。
LED顯示屏顯示畫面色彩鮮艷,立體感強,靜如油畫,動如電影,廣泛應用于車站、碼頭、機場、商場、醫(yī)院、賓館、銀行、證券市場、建筑市場、拍賣行、工業(yè)企業(yè)管理和其它公共場所。在實際應用中的顯示屏由于成本和可靠性的因素常采用一種稱為動態(tài)掃描的顯示方法[1]。
2 方案論證
2.1 課題要求
了解點陣LED顯示器結(jié)構(gòu)及字符字模(字符代碼),熟悉點陣LED顯示器驅(qū)動的基本原理。設(shè)計16×16點陣LED顯示器的驅(qū)動電路,并編寫程序?qū)崿F(xiàn)在16×16點陣LED顯示器上的字符滾動顯示。16×16點陣LED顯示器可由4塊8×8點陣LED顯示器構(gòu)成。
電路方面主要包括以下3部分。設(shè)計單片機的最小系統(tǒng)(包括復位電路和外接的晶振電路),并確定相關(guān)元器件參數(shù)。采用動態(tài)驅(qū)動的方式,設(shè)計單片機并行端口、移位寄存器、譯碼器或鎖存器等與16×16點陣LED顯示器的驅(qū)動電路,主要包括控制點陣LED行和列的連線。采用移位寄存器、譯碼器或鎖存器驅(qū)動點陣LED顯示器時,設(shè)計單片機與移位寄存器、譯碼器或鎖存器間的控制連線。
編寫16×16點陣LED顯示器字符(串)滾動顯示程序,實現(xiàn)數(shù)字(0—9)或英文字符的滾動顯示。
2.2 設(shè)計方案
2.2.1硬件設(shè)計方案
以PC機作為上位機存儲和處理顯示內(nèi)容用串行通信的方式將顯示內(nèi)容和控制指令傳輸?shù)絾纹瑱C系統(tǒng),單片機根據(jù)上位機傳輸來的內(nèi)容和指令通過端口譯碼擴展后驅(qū)動4塊8×8LED點陣模塊構(gòu)成的16×16的LED點陣顯示屏。題目將以此方案為指導思想展開具體的硬件電路設(shè)計。

圖2-1 硬件設(shè)計方案2.2.1軟件設(shè)計方案
(1)單片機編程語言選擇現(xiàn)在主要運用的單片機編程語言為匯編語言和C語言。
兩種語言相比較各有優(yōu)點。匯編語言是面向機器的程序設(shè)計語言,是一種功能很強的程序設(shè)計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。其具有執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點,但在編寫復雜程序時具有明顯的局限性,匯編語言依賴于具體的機型,不能通用,也不能在不同機型之間移植。
C語言是一種源于編寫UNIX操作系統(tǒng)的語言,它是一種結(jié)構(gòu)化語言,可產(chǎn)生壓縮代碼。C語言結(jié)構(gòu)是以括號{ }而不是子和特殊符號的語言。C可以進行許多機器級函數(shù)控制而不用匯編語言。與匯編相比,有如下優(yōu)點:對單片機的指令系統(tǒng)不要求了解,僅要求對51的存儲器結(jié)構(gòu)有初步了解;寄存器分配、不同存儲器的尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理;程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù)。這種方式可使程序結(jié)構(gòu)化;將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;編程及程序調(diào)試時間顯著縮短,從而提高效率;提供的庫包含許多標準子程序,具有較強的數(shù)據(jù)處理能力;寄存器分配、不同存儲器的尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理;已編好程序可容易的植入新程序,因為它具有方便的模塊化編程技術(shù)。C語言作為一種非常方便的語言而得到廣泛的支持,C語言程序本身并不依賴于機器硬件系統(tǒng),基本上不做修改就可根據(jù)單片機的不同較快地移植過來。
基于以上理由決定采用C語言為該顯示系統(tǒng)的編程語言。
(2)系統(tǒng)軟件編譯工具選擇C語言編寫的程序并不能被單片機直接執(zhí)行還需要編譯為單片機可執(zhí)行的機器語言。因此在系統(tǒng)軟件設(shè)計中,編譯器必不可少。支持MCS-51用C語言編程的編譯器主要有兩種:Franklin C51編譯器和KEILC51編譯器。目前在單片機開發(fā)中普遍都是使用KEIL C51來進行編譯。
因此軟件設(shè)計最終方案為采用C語言為程序語言,KELC為編譯工具按照控制、通信、顯示等幾個功能模塊來編寫程序。
3 設(shè)計過程
3.1 系統(tǒng)框圖
圖3-1 硬件原理圖
3.2 控制單元設(shè)計控制電路設(shè)計中采用的是單片機系統(tǒng),該系統(tǒng)必須要是工作在一個最小系統(tǒng)(指單片機的可以的最小配置系統(tǒng))。根據(jù)功能選擇一定的單片機端口添加外圍的器件。在該系統(tǒng)中,P1各口主要用作LED顯示數(shù)據(jù)的列控制輸出。具體接法為:P1.0,P1.1,P1.2,P1.3分別接74HC138的A端,B端,C端,D端。C端向74HC138送入串行數(shù)據(jù)經(jīng)過其轉(zhuǎn)換后并行輸出;P2各口主要用作LED顯示數(shù)據(jù)的行控制輸出,P2.1,P2.2接595的SH_CP端,ST_CP端,P2.0接DS端控件系統(tǒng)的行輸入。

圖3-2 控制部分電路圖
3.3 行驅(qū)動單元設(shè)計行驅(qū)動電路由74HC595構(gòu)成,它可以實現(xiàn)在顯示本列各行數(shù)據(jù)的同時,傳送下一列的行數(shù)據(jù)。數(shù)據(jù)在SH_CP的上升沿輸入,在ST_CP的上升沿進入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(DS),和一個串行輸出(Q7),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態(tài)的總線輸出,當使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。

圖3-3 行驅(qū)動部分電路圖3.4. 列驅(qū)動單元設(shè)計
譯碼電路的功能是為了解決單片機I/O端口不足。列譯碼所用器件為串并轉(zhuǎn)換器74HC138。如果不采用譯碼電路完全依靠單片機的端口輸出來控制16×16的LED點陣屏顯示,需要32個端口。而采用了譯碼電路后僅僅需要7~9個端口便可實現(xiàn)控制顯示。大大減少了I/O口的占用數(shù)目,為單片機擴展其他功能預留下來了空間。兩個74HC138聯(lián)成4線-16線譯碼器,三級管接顯示屏可以解決顯示屏供電不足的問題。鎖存器74HC595接74HC138的使能端,實現(xiàn)對74HC138的使能控制,達到鎖存功能,A,B,C為138譯碼器的三個地址輸入。

圖3-4 列驅(qū)動部分電路圖 3.5 元器件清單電路設(shè)計需要的元器件包括電阻、電容、單片機、8×8點陣LED、74HC138、74HC595等,具體元器件數(shù)量及規(guī)格如下表所示。
表3-1 元器件清單
| | |
電阻 電容 電容 單片機 8×8點陣LED 74HC138 74HC595 | | |
3.6 系統(tǒng)軟件設(shè)計
3.6.1 程序框圖簡介
程序主要由頭文件、端口定義、字模定義、函數(shù)等組成。根據(jù)程序的設(shè)計原理,主函數(shù)流程如圖3-5所示。
圖3-5 流程圖(見附件)
3.6.2 程序分析
程序主要由頭文件、端口定義、字模定義、函數(shù)、循環(huán)等組成,實現(xiàn)數(shù)字0到9的左移循環(huán)顯示。
單片機源程序如下:
- #include <reg51.h> //頭文件//
- #define u8 unsigned char //定義無符號字符型變量//
- #define u16 unsigned int //定義無符號整數(shù)型變量//
- #define SPEED 10
- //端口定義//
- sbit DS=P2^0;
- sbit SH=P2^1;
- sbit ST=P2^2;
-
- u8 code table1[]={ //定義高八位數(shù)組//
-
- //字模定義//
- /*-- 文字: --*/
- /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
- …………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
-
- /*-- 文字: --*/
- /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
-
- void senddata(u8,u8); //定義函數(shù)//
- void delay(u8);
-
- void main()
- {
- u8 i,j,k,m,n=0; //定義無符號字符型變量//
- while(1)
- {
- for(i=0;i<168;i++) //i確定16列的起點,一共2323*8-16=168//
- {
- for(j=0;j<SPEED;j++) //控制顯示速度,每一幅循環(huán)顯示幾次,達到穩(wěn)定作用//
- {
- for(k=0;k<16;k++) //K確定列,控制每個屏幕//
- {
- m=i+k;
- P1=k; //控制ABCD端口//
- senddata(table1[m],table2[m]); //發(fā)送數(shù)據(jù),第一行高8 位,低8位全部移入595//
- delay(70);
- senddata(0,0); //清屏//
- }
- }
- }
- }
- }
-
- //* 將每行數(shù)據(jù)送至74HC595
- * m為高8位,n為低8位
- * SH為移位時鐘,ST為鎖存時鐘 *//
- void senddata(u8 m,u8 n)
- {
- u8 i;
- ST=0;
- for(i=0;i<16;i++) // i=0到15,循環(huán)16次,16位數(shù)據(jù)全部移入芯片//
- {
- SH=0;
- if(i<8)
- {
- DS=0X80&(m<<i); //16進制10000000進行位與運算//
- }
- else
- DS=0X80&(n<<(i-8)); //16進制10000000進行位與運算//
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
http://www.raoushi.com/bbs/dpj-105745-1.html
作者: qlxxhrp 時間: 2018-4-8 21:18
謝謝分享!
作者: 啦啦啦一博 時間: 2020-5-25 21:41
你是用的什么字模軟件啊
作者: 少坤 時間: 2021-7-5 22:08
請問用這個電路怎么達到顯示字不滾動的效果
作者: 159753sxd 時間: 2021-7-9 10:57
同問,希望得到解答
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |