




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、項目11 點陣LED顯示(xinsh)設計 知識目標:1. 掌握88矩陣式LED的工作原理和字符的顯示方法;2. 掌握 1616矩陣式LED的工作原理和字符的顯示方法;3. 學會電子元器件74LS164、74HC573的原理和使用方法。 能力目標:1. 能根據設計任務要求正確(zhngqu)選用元器件,并繪制電路原理圖;2. 能夠編寫驅動矩陣式LED的字符和漢字顯示程序;3. 會用keil C51軟件對源程序進行編譯調試及與protues軟件聯調,實現電路仿真。 共四十八頁任務1 單個字符(z f)顯示設計 單個LED或者是數碼管作為(zuwi)顯示器件,只能顯示簡單的幾個有限的簡單字符,對于
2、復雜的字符(比如漢字)以及圖形等則無法顯示。矩陣式LED將諸多個LED按矩陣的方式組合一起,通過控制每個LED的工作,可完成各種字符和圖形的顯示。有關點矩陣顯示器的商品,市面上有很多,例如活動字幕機廣告、汽車站與火車站的車次顯示板、活動布告板、股票顯示板等。本任務利用AT89S51單片機來實現單個字符這一功能。 共四十八頁任務1 單個字符(z f)顯示設計 1.提出(t ch)任務 用AT89S51作為控制核心,外接88矩陣式LED,編寫程序,使88矩陣式LED循環點亮09這十個數字,時間間隔為1s。共四十八頁2.分析(fnx)任務 任務1 單個字符顯示(xinsh)設計 (1)硬件電路設計電
3、路組成。這里選擇具有內部程序存儲器的AT89S51單片機作為控制電路,其P0接88矩陣式LED的陽極,由于P0口沒有上拉能力,所以采用接8個限流電阻后上接電源提供上拉電流,P2接矩陣式LED的陰極,硬件電路原理圖如圖11-1所示。 共四十八頁任務1 單個字符顯示(xinsh)設計 共四十八頁任務(rn wu)1 單個字符顯示設計 (2)軟件設計思路為了能LED正常的顯示0-9等數字,首先要了解0-9這十個數字的具體顯示代碼。具體代碼可以(ky)通過軟件轉換得到,也可以(ky)采用繪制方法得到,然后寫出相應的代碼。因此0-9等十個數字的代碼可以(ky)由由如下方法取得。共四十八頁任務1 單個字符
4、(z f)顯示設計 假設顯示數字“0”,如下圖所示:因此,形成的列代碼為00H,00H,3EH,41H,41H,3EH,00H,00H;只要把這些代碼分別送到相應(xingyng)的列線上面,即可實現“0”的數字顯示。共四十八頁數字“1”代碼(di m)建立如下圖所示: 其顯示代碼為00H,00H,00H,00H,21H,7FH,01H,00H任務(rn wu)1 單個字符顯示設計 共四十八頁任務1 單個字符(z f)顯示設計 數字“2”代碼(di m)建立如下圖所示:其顯示代碼為 00H,00H,27H,45H,45H,45H,39H,00H共四十八頁數字“3”代碼建立如下(rxi)圖所示:
5、其顯示代碼為 00H,00H,22H,49H,49H,49H,36H,00H任務1 單個字符(z f)顯示設計 共四十八頁任務(rn wu)1 單個字符顯示設計 數字“4”代碼(di m)建立如下圖所示:其顯示代碼為 00H,00H,0CH,14H,24H,7FH,04H,00H共四十八頁數字“5”代碼建立(jinl)如下圖所示:其顯示代碼為 00H,00H,72H,51H,51H,51H,4EH,00H任務(rn wu)1 單個字符顯示設計 共四十八頁數字“6”代碼建立如下(rxi)圖所示:其顯示代碼為 00H,00H,3EH,49H,49H,49H,26H,00H任務1 單個字符(z f)
6、顯示設計 共四十八頁數字“7”代碼建立(jinl)如下圖所示:其顯示代碼為 00H,00H,40H,40H,40H,4FH,70H,00H任務(rn wu)1 單個字符顯示設計 共四十八頁數字“8”代碼建立如下(rxi)所示:其顯示代碼為 00H,00H,36H,49H,49H,49H,36H,00H任務(rn wu)1 單個字符顯示設計 共四十八頁數字“9”代碼建立如下(rxi)所示:其顯示代碼為 00H,00H,32H,49H,49H,49H,3EH,00H任務1 單個字符顯示(xinsh)設計 共四十八頁要想在88的LED點陣上顯示一個數字,因為點陣的公共端是連接在一起(yq)的,就像我
7、們在前面講過的數碼管的動態顯示類似,是不能同時將這些LED進行點亮的。只能采用按行或者是按列進行控制。那么,怎么樣去控制LED顯示一個字符的呢?送顯示代碼過程簡單如下:送第一列線代碼到P0端口,同時置第一行線為“0”,其它行線為“1”,延時2ms左右,送第二列線代碼到P0端口,同時置第二行線為“0”,其它行線為“1”,延時2ms左右,如此下去,直到送完最后一列代碼,又從頭開始送。以顯示字符“0”為例:任務(rn wu)1 單個字符顯示設計 共四十八頁首先在P0送首個行碼00H,在P2口首個列碼FEH;接著在P0送第二個行碼00H,在P2口第二個列碼FDH;再在在P0送第三個行碼3EH,在P2口
8、第三個列碼FBH;再在在P0送第四個行碼3EH,在P2口第四個列碼F7H;依次把所在的行碼送完,這樣就可以顯示一個(y )“0”字了,接著再重復上述過程,把所有的數字都顯示完就可以達到效果了。任務(rn wu)1 單個字符顯示設計 共四十八頁思考: 如果(rgu)要顯示AF等字符,該怎樣修改程序呢?任務1 單個字符(z f)顯示設計 共四十八頁3. 源程序編寫(binxi)根據程序流程圖編寫的源程序如下:/文件名dz11-1.c #include “reg51.h”#define uchar unsigned charunsigned char code tab=0 xfe,0 xfd,0 x
9、fb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;unsigned char code dispcode108= 0 x00,0 x00,0 x3e,0 x41,0 x41,0 x41,0 x3e,0 x00,/定義0的代碼 0 x00,0 x00,0 x00,0 x00,0 x21,0 x7f,0 x01,0 x00,/定義1的代碼 0 x00,0 x00,0 x27,0 x45,0 x45,0 x45,0 x39,0 x00,/定義2的代碼 0 x00,0 x00,0 x22,0 x49,0 x49,0 x49,0 x36,0 x00,/定義3的代碼 0 x00,0 x00
10、,0 x0c,0 x14,0 x24,0 x7f,0 x04,0 x00,/定義4的代碼 0 x00,0 x00,0 x72,0 x51,0 x51,0 x51,0 x4e,0 x00,/定義5的代碼 0 x00,0 x00,0 x3e,0 x49,0 x49,0 x49,0 x26,0 x00,/定義6的代碼 0 x00,0 x00,0 x40,0 x40,0 x40,0 x4f,0 x70,0 x00,/定義7的代碼 0 x00,0 x00,0 x36,0 x49,0 x49,0 x49,0 x36,0 x00,/定義8的代碼 0 x00,0 x00,0 x32,0 x49,0 x49,0
11、 x49,0 x3e,0 x00/定義9的代碼 ;unsigned int count; / 定義計數變量uchar ta, tb; 任務(rn wu)1 單個字符顯示設計 共四十八頁void main(void) TMOD=0 x01; / 設定定時器0工作方式1, 處于定時狀態 TH0=(65536-2000)/256; / 延時20ms TL0=(65536-2000)%256; TR0=1; / 啟動定時器0 ET0=1; / 開放定時器0 中斷 EA=1; / 允許全局(qunj)中斷 while(1) ; void t0(void) interrupt 1 using 0 TH0=
12、(65536-3000)/256; TL0=(65536-3000)%256; P2=tabta; / 送列碼 P1=dispcodetbta; / 顯示字符內容 ta+; if(ta=8)任務1 單個字符(z f)顯示設計 ta=0; count+; if(count=500) / 判斷是否到1s count=0; / 計時到,將計數變量清0,以便重新計數 tb+; if(tb=10) tb=0; 共四十八頁4.程序調試與電路仿真運行C語言編輯軟件,在編輯區中輸入上面的源程序,并以“dz11-1.c”為文件名存盤。運行Keil C51,然后建立一個“dz11-1.uv2”的工程項目。把源程序
13、文件(wnjin)“dz11-1.c”添加到工程項目中,進行編譯,得到目標代碼文件(wnjin)“dz11-1.hex”。運行Proteus,在編輯窗口中繪制如圖11-1所示的電路圖并存盤。然后選中單片機AT89s51,左鍵點擊AT89s51,出現如圖11-2所示的對話框,在Program File后面的 “ ”按鈕,找到剛才編譯好的“dz11-1.hex”文件,然后點擊“OK”就可以進行仿真了。點擊模擬調試按鈕的運行按鈕“ ”,進入調試狀態。此時可看到從0開始顯示一直到9,重復循環。任務1 單個字符顯示(xinsh)設計 共四十八頁任務1 單個字符顯示(xinsh)設計 共四十八頁 知識鏈接
14、(lin ji) 1. 點矩陣的結構與種類LED點陣顯示器件是將要顯示的字符(包括漢字),主要適用于漢字顯示。點矩陣顯示器的種類,按大小分,可分為57,58,68,88等4種;按LED發光變化顏色分,可分為單色、雙色、三色;按LED 的極性排列方式又可分為共陽極與共陰極。 任務1 單個字符顯示(xinsh)設計 共四十八頁下面簡單介紹幾種常見的類型。單色57的外觀,即共陽極(yngj)LED結構如圖11-3所示。單色57的內部結構,即共陰與共陽LED陣列圖如圖11-4所示。 任務1 單個字符(z f)顯示設計 共四十八頁任務1 單個字符顯示(xinsh)設計 共四十八頁單色57點陣(din z
15、hn)引腳圖如圖11-5所示。任務1 單個字符(z f)顯示設計 共四十八頁單色88點陣(din zhn)引腳圖如圖11-6所示。任務(rn wu)1 單個字符顯示設計 共四十八頁雙色88點陣(din zhn)引腳圖如圖11-7所示。任務1 單個字符顯示(xinsh)設計 共四十八頁2. 點矩陣(j zhn)的工作原理由于點矩陣的種類很多,不能一一說明其工作原理,不過所有的點矩陣的工作原理都差不多相同。下面就以8X8點陣LED工作原理作說明。其它類型的點矩陣工作原理,讀書可以觸類旁通。圖11-8是88點矩陣的內部結構圖。任務(rn wu)1 單個字符顯示設計 共四十八頁任務1 單個字符顯示(x
16、insh)設計 共四十八頁從圖中可以看出,8X8點陣共需要64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一行置1 電平,某一列(y li)置0電平,則相應的二極管就亮。若要使某一行亮,則對應的行置1,而列則采用掃描依次輸出0來實現。若要使某一列(y li)亮,則對應的列置0,而列則采用掃描依次輸出1來實現。任務1 單個字符顯示(xinsh)設計 共四十八頁任務(rn wu)小結LED點陣的應用很廣,對于不同的應用環境和應用要求,可以有各種各樣的應用方式。通過本任務的學習,了解88矩陣式LED的工作原理和字符的顯示方法,掌握了88矩陣式LED與單片機接口技術、掌握
17、了單片機是如何控制矩陣式LED的字符的顯示程序。任務1 單個字符顯示(xinsh)設計 共四十八頁思考與練習 修改程序dz10-2.c,使之循環點亮0F。編寫程序實現88點陣(din zhn)中的一列或一行依次點亮。編寫程序實現在88點陣顯示“”圖案。任務1 單個字符顯示(xinsh)設計 共四十八頁57、88點矩陣由于太小,不能良好地顯示漢字。在實際的應用中,要能良好地顯示一個漢字,則至少(zhsho)需要1616點陣,所以顯示一個漢字則采用4塊88點陣來組成,顯示漢字的原理與88點陣顯示字符一樣。以“歡迎”二字為例,字符的點陣圖如圖11-9和圖11-10所示。 任務(rn wu)2 移動漢
18、字顯示設計共四十八頁任務2 移動漢字(Hnz)顯示設計共四十八頁用AT89S51作為控制核心(hxn),在1616點陣式LED上編寫程序實現移動漢字的顯示,顯示的漢字為“柳州歡迎您!”。任務(rn wu)2 移動漢字顯示設計1.提出任務 共四十八頁(1)硬件(yn jin)電路設計電路組成。電路包括單片機、電源電路、時鐘電路、復位電路、驅動電路和LED點陣電路等。由于在Proteus軟件目前版本中還沒有1616點陣模塊,因此采用現有的88點陣模塊組合成一個1616點陣模塊。本設計中需要四片74HC138譯碼器,循環掃描各列,顯示一個完整的漢字需要掃描32次。硬件電路原理圖如圖11-11所示。2
19、.任務分析 任務(rn wu)2 移動漢字顯示設計共四十八頁任務2 移動(ydng)漢字顯示設計共四十八頁(2)軟件設計思路由于單片機總線為8位,一個字需要拆分為2個部分首先通過列掃描方法獲取漢字代碼。漢字可拆分為上部和下部,上部由816點陣組成,下部也由816點陣組成,也可以分為左部分和右部分,左部分是168點陣組成,右部分也由168點陣組成,因此一個漢字要用16232個字節來表示。漢字點陣顯示一般有點掃描、行掃描和列掃描3種。為了符合視覺暫留要求(yoqi),點掃描方法掃描頻率必須大于1664=1024 Hz,周期小于1 ms即可。行掃描和列掃描方法掃描頻率必須大于168=128 Hz,周
20、期小于7.8 ms即可,但是一次驅動一列或一行(8顆LED)時需外加驅動電路提高電流,否則LED亮度會不足。由以上掃描方法原理,逐個掃描然后求出相應的代碼。任務2 移動(ydng)漢字顯示設計共四十八頁3. 源程序編寫根據程序(chngx)流程圖編寫的源程序(chngx)如下:/ 文件名dz11-2.c#include #define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag, n;void delay(void);int16 offset;int8 code table32
21、=0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, /* */0 x00,0 x20,0 x04,0 x40,0 x40,0 x80,0 x05,0 x00,0 x7f,0 xf8,0 x09,0 x00,0 x00,0 x08,0 x1f,0 x90,0 x11
22、,0 x20,0 x27,0 xc0,0 x08,0 x00,0 x0f,0 xfe,0 x10,0 x80,0 x10,0 x40,0 x1f,0 x80,0 x00,0 x00, /* 柳 */0 x00,0 x00,0 x00,0 x84,0 x07,0 x08,0 x00,0 x30,0 x3f,0 xc0,0 x00,0 x00,0 x07,0 x00,0 x00,0 x00,0 x3f,0 xf0,0 x40,0 x00,0 x03,0 x00,0 x00,0 x00,0 x7f,0 xfd,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, /* 州 */0
23、 x28,0 x04,0 x24,0 x08,0 x22,0 x32,0 x21,0 xC2,0 x26,0 xC2,0 x38,0 x34,0 x04,0 x04,0 x18,0 x08,0 xF0, 任務(rn wu)2 移動漢字顯示設計共四十八頁0 x30,0 x17,0 xC0,0 x10,0 x60,0 x10,0 x18,0 x14,0 x0C,0 x18,0 x06,0 x10,0 x04,0 x00,0 x00, /* 歡 */0 x02,0 x02,0 x82,0 x04,0 x73,0 xF8,0 x20,0 x04,0 x00,0 x02,0 x3F,0 xE2,0 x2
24、0,0 x42,0 x40,0 x82,0 x40,0 x02,0 x3F,0 xFA,0 x20,0 x02,0 x20,0 x42,0 x20,0 x22,0 x3F,0 xC2,0 x00,0 x02,0 x00,0 x00, /* 迎 */0 x01,0 x00,0 x02,0 x04,0 x0C,0 x1C,0 x3F,0 xC0,0 xC0,0 x1C,0 x09,0 x02,0 x16,0 x02,0 x60,0 x92,0 x20,0 x4A,0 x2F,0 x82,0 x20,0 x02,0 x24,0 x0E,0 x22,0 x00,0 x31,0 x90,0 x20,0
25、x0C,0 x00,0 x00,/* 您 */0 x00,0 x00,0 x00,0 x08,0 x1F,0 xDC,0 x3F,0 x08,0 x3C,0 x00,0 x30,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, /* ! */0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00
26、,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00 /* */;void main(void) int8 i; int8 *p; flag=0 x10; n=0; TMOD=0 x01; TH0=0 xb1; TL0=0 xe0;任務2 移動漢字(Hnz)顯示設計共四十八頁ET0=1; EA=1; TR0=1; p=&table00; while (1) for (i=0;i8;i+) /顯示左半邊(bnbin)屏幕
27、P3=*(p+offset+2*i); P2=i|0 x90; /P2.4=1,P2.3=0 選中U3, 輸出掃描碼給U7 delay(); P3=*(p+offset+2*i+1); P2=i|0 x08; /P2.4=0,P2.3=1 選中U2, 輸出掃描碼給U6 delay(); for (i=8;i16;i+) /顯示右半邊屏幕 P3=*(p+offset+2*i); P2=(i-8)|0 xC0; /P2.6=1 P2.5=0, P2.4=0 選中U5,輸出掃描碼U9delay(); P3=*(p+offset+2*i+1);P2=(i-8)|0 x20; /P2.5=1 P2.4=0, P2.3=0 選中U4,輸出掃描碼U8 delay(); void delay(void) int16 i; for (i=0;i50;i+) ;void timer0() interrupt 1 using 3 TF0=0; TH0=0 xb1; TL0=0 xe0; if (n210) offset=0; n=0; 任務2 移動漢字顯示(xinsh)設計共四十八頁4.程序調試與電路仿真運行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論