11.1 項目分析
11.1.1 點陣簡介
LED點陣屏通過LED發光二極管組成,以燈珠亮滅來顯示文字、圖片、動畫、視頻等,是各部分組件都模塊化的顯示器件,通常由顯示模塊、控制系統和電源系統組成。 LED點陣屏制作簡單,安裝方便,被廣泛應用于各種公共場合,如汽車報站器、廣告屏以及公告牌等。
LED點陣的顯示原理很簡單,以8×8點陣為例,8×8點陣具有64個像素點,可以顯示數字和一些比較簡單的漢字,但是顯示漢字最好是用16×16以上的點陣,點陣的連接關系與矩陣鍵盤相似,將每一行的LED正極接在一起并引出接線端子,將每一列的LED負極接在一起并引出,這樣8×8的點陣就會有16個端口被引出, 將行端口和列端口分別接在單片機的兩個端口上,就可以控制點陣了。 點陣的顯示主要是利用掃描實現的,可以掃描行也可以掃描列,以行掃描為例,假設單片機在八行中任選一“行”產生高電平,其余的”行“設為低電平,那么此時對于“列“只需要在任意一列產生低電平就可以點亮這一行的任意一個或多個發光二極管,然后當“行”不停地掃描,超過人眼的反應范圍時,就會顯示出對應的畫面。 當一個點陣以三個發光二極管(R,G,B)組成一個像素,且發光二極管的體積足夠小那就形成了彩色點陣,這種點陣可以利用像素點的R,G,B三種顏色混合成任意的顏色,只要像素點足夠多,那么就可以顯示彩色圖像。
11.1.2 8×8單色點陣結構圖
**11.2 **項目過程
11.2.1 項目需求
利用51單片機控制8*8點陣實現0~9的顯示。
11.2.2 原理圖
11.2.3 源代碼
/*********************************************************************************************************
頭 文 件 引 用
*********************************************************************************************************/
#include <reg51.h> //導入51單片機頭文件
#include <intrins.h>
/*********************************************************************************************************
數 據 類 型 定 義
*********************************************************************************************************/
#define u8 unsigned char //定義無符號字符型數據(0~255)
#define u16 unsigned int //定義無符號整型數據(0~65535)
u8 code TAB_L[] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F } ; //掃描碼
u8 code TAB_H[] = {
0x00, 0x00, 0x3C, 0x42, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x44, 0x7E, 0x40, 0x00, 0x00,
0x00, 0x00, 0x64, 0x52, 0x52, 0x4A, 0x44, 0x00,
0x00, 0x00, 0x44, 0x92, 0x92, 0x6C, 0x00, 0x00,
0x00, 0x18, 0x14, 0x12, 0x7E, 0x10, 0x00, 0x00,
0x00, 0x00, 0x86, 0x8A, 0x8A, 0x72, 0x00, 0x00,
0x00, 0x00, 0x00, 0x78, 0x94, 0x92, 0x62, 0x00,
0x00, 0x00, 0x02, 0x02, 0xF2, 0x0A, 0x06, 0x00,
0x00, 0x00, 0x6C, 0x92, 0x92, 0x92, 0x6C, 0x00,
0x00, 0x00, 0x4C, 0x92, 0x92, 0x7C, 0x00, 0x00,
} ; //數字碼
u8 Picture_Num ;
u8 TIM0_Count ;
/********************************************************
Name :delay_ms
Function :毫秒級別延時函數
Paramater :
ms:延時的ms數
Return :None
********************************************************/
void delay_ms( u16 ms )
{
u8 i ;
while( ms-- )
for( i=0; i<110; i++ ) ;
}
/********************************************************
Name :Picture
Function :點陣掃描算法
Paramater :None
Return :None
********************************************************/
void Picture( u8 num )
{
u8 i ;
for( i=0 ; i<8 ; i++ )
{
P3 = TAB_L[ i ] ; //每一次掃描都會加入圖片的 1/8
P2 = TAB_H[ num*8+i ]; //取數字碼
delay_ms( 1 ) ;
}
}
/********************************************************
Name :TIM0_IRQHandler
Function :定時器中斷
Paramater :None
Return :None
********************************************************/
void TIM0_IRQHandler() interrupt 1
{
TH0 = ( 65535-50000 )/256 ;
TL0 = ( 65535-50000 )%256 ;
TIM0_Count ++ ;
if( TIM0_Count==20 )
{
Picture_Num ++ ;
if( Picture_Num==10 )
Picture_Num = 0 ; //圖像切換上限
TIM0_Count = 0 ;
}
}
/*********************************************************************************************************
主 函 數
*********************************************************************************************************/
void main()
{
IE = 0x82 ; //開啟中斷與定時器中斷
TMOD = 0x01 ; //設定為16位定時器模式
TH0 = ( 65535-50000 )/256 ; //寫入定時器初值
TL0 = ( 65535-50000 )%256 ;
TR0 = 1 ; //開啟定時器
TIM0_Count = 0 ;
Picture_Num = 0 ;
while( 1 )
{
Picture( Picture_Num ) ;
}
}
11.2.4 仿真截圖
-
led
+關注
關注
242文章
23293瀏覽量
661230 -
發光二極管
+關注
關注
13文章
1201瀏覽量
66349 -
51單片機
+關注
關注
274文章
5704瀏覽量
123696 -
點陣屏
+關注
關注
4文章
71瀏覽量
31953 -
單片機
+關注
關注
0文章
216瀏覽量
16658
發布評論請先 登錄
相關推薦
評論