導航:首頁 > 操作系統 > 單片機88點陣原理

單片機88點陣原理

發布時間:2022-09-25 02:28:27

❶ 51單片機8*8點陣介面電路的原理圖

見下圖

❷ 51單片機的8x8LED點陣控制,主要研究什麼

LED點陣,與51單片機沒有必然的關系。一般的單片機都能控制它。主要的問題在於,點陣的控制方式:是用專門的控制晶元,還是由單片機的IO口進行控制。
要處理的問題主要是LED的驅動電壓及控制方式,比如共陽還是共陰,是靜態,還是動態等。一般單片機應用的書都會講到它。

❸ 單片機 8*8點陣C51程序

一.基於51的點陣屏顯示:(1)點亮第一個8*8點陣:
1.首先在Proteus下選擇我們需要的元件,AT89C51、74LS138、MATRIX-8*8-GREEN(在這里使用綠色的點陣)。在Proteus
6.9中8*8的點陣總共有四種顏色,分別為MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE
,MATRIX-8*8-RED。
在這里請牢記:紅色的為上列選下行選;其它顏色的為上行選下列選!而所有的點陣都是高電平選中列,低電平選中行!也就是說如果某一個點所處的行信號為低,列信號為高,則該點被點亮!此結論是我們編程的基礎。
2.在選擇完以上三個元件後,我們開始布線,具體如下圖:
這里P2是列選,P3連接38解碼器後作為行選。
選擇38解碼器的原因:38解碼器每次可輸出相應一個I/O口的低電平,正好與點陣屏的低電平選中行相對,並且節省了I/O口,大大方便了我們的編程和以後的擴展。
3.下面讓我們把它點亮,先看一個簡單的程序:
(將奇數行偶數列的點點亮,效果如下圖)
下面是源代碼:
/************8*8LED點陣屏顯示*****************/
#include<reg51.h>
void
delay(int
z)
//延時函數
{
int
x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void
main()
{
while(1)
{
P3=0;
//行選,選擇第一行
P2=0x55;
//列選,即該行顯示的數據
delay(5);
//延時
/*****下同*****/
P3=2;
//第三行
P2=0x55;
delay(5);
P3=4;
//第五行
P2=0x55;
delay(5);
P3=6;
//第七行
P2=0x55;
delay(5);
}
}
上面的程序實現了將此8*8點陣的奇數行偶數列的點點亮的功能。重點讓我們看while循環內,首先是行選P3=0,此時38解碼器的輸入端為000,則輸出端為01111111,即B0端為低電平,此時選中了點陣屏的第一行,接著列選我們給P2口賦0x55,即01010101,此時又選中了偶數列,緊接著延時。然後分別對第三、五、七行進行相同的列選。這樣就點亮了此點陣屏奇數行偶數列交叉的點。
完成這個程序,我們會發現其實點陣屏的原理是如此簡單,和數碼管的動態顯示非常相似,只不過換了一種方式而已。
對不起啦,我傳了三次圖片都沒傳上,郁悶哪!希望你能理解哈!
不過我有傳一份WORD文檔在我的空間裡面

❹ 單片機 8×8點陣LED 驅動電路

我看了你寫的,感到秋收的關鍵問題是不理解8×8點陣LED驅動電路是如何工作的。

這個8×8點陣LED驅動電路是「行」和「列」的掃描方式工作的,這64個發光管,在每個瞬間只有一個亮。我畫了一個簡圖,圖中,紅色的僅在1高,A低時工作,同樣綠色的僅在2高,D低時工作,黃色的僅在6高,E低時工作,不是同時都亮。

只要64個發光管在1/25秒內掃描一次(或是說整個64隻管子,每秒掃描35次以上)視覺上是看不出是掃描的。

行和列的掃描頻率是1比8,這樣就能有序的工作了。

你的R1,R2電阻也好確定了,你只要按一個發光管的工作來考慮。這里也用不上什麼3態,你將OE接0電平就行了。

好好想想吧,搞不清可以HI我,我一般晚上都在。

❺ 怎麼控制單片機8*8點陣每個點亮或不亮,每個點對應的十六進制是多少

用單片機控制8×8點陣的每個LED的亮滅,要採用掃描方式實現。如下圖的8×8點陣,用8系列線和8線條行線控制。在8條列線加高電平,逐條行線加低電平,就會逐行點亮。

❻ 哪位高手能給我解釋解釋單片機點陣掃描原理不謝謝

談LED點陣的掃描原理,只要一看LED點陣的原理圖就一目瞭然了,如下圖:

圖中,A--H可以看做行,1--7看做列;假如我們給點陣送人一個列數據0x80(1000 0000),並且同時送人一個行數據0x7f(0111 1111),此時我們就點亮了這個點陣左上角的那顆LED發光管,如果我們不停的行數據:0111 1111;1011 1111;1101 1111;1110 1111;1111 0111;1111 1011;1111 1101;1111 1110,這8個數據周而復始的送人點陣就是行掃描的過程,這個過程一般採用74HC138等解碼器來完成,而在對應的行數據送人的同時也送人1--7的列數據,例如:

行=0111 1111,列=1000 0000

行=1011 1111,列=0100 0000

行=1101 1111,列=1010 0000

行=1110 1111,列=1001 0000

行=1111 0111,列=1000 1000

行=1111 1011,列=1000 0100

行=1111 1101,列=1000 0010

行=1111 1110,列=1000 0001

此時程序循環執行的結果會在點陣屏上顯示左上至右下的對角斜線。

仔細想想應該不難理解。

在代碼編寫上,實現上述功能有很多方法,最長用的就是for循環,如果你網路資料會發現,大凡點陣顯示代碼中都會在顯示函數中引用for循環,而且根據點陣數的不同會有:

for(i=0;i<8;i++)或for(i=0;i<16;i++)或for(i=0;i<32;i++)這就是對於8行、16行、32行點陣的掃描演算法

就說到這里吧,更多的知識請網路搜索吧。

❼ 用51單片機驅動8*8點陣 的代碼

8X8點陣LED工作原理說明 :8X8點陣共需要64個發光二極體組成,且每個發光二極體是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極體就亮。
不知道你要實現什麼樣的顯示,不過基本方法是一樣的。我這有一個現成的8*8的程序,你可以根據這個去修改:
在8X8點陣LED上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最後從下到上平滑移動三次,如此循環下去。(要實現一根柱形的亮法:一根豎柱,對應的列置1,而行則採用掃描的方法來實現。 一根橫柱,對應的行置0,而列則採用掃描的方法來實現。)

匯編源程序:
ORG 00H
START: NOP
MOV R3,#3
LOP2: MOV R4,#8
MOV R2,#0
LOP1: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
MOVC A,@A+DPTR
MOV P3,AINC R2
LCALL DELAY
DJNZ R4,LOP1
DJNZ R3,LOP2
MOV R3,#3
LOP4: MOV R4,#8
MOV R2,#7
LOP3: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
MOVC A,@A+DPTR
MOV P3,A
DEC R2
LCALL DELAY
DJNZ R4,LOP3
DJNZ R3,LOP4
MOV R3,#3
LOP6: MOV R4,#8
MOV R2,#0
LOP5: MOV P3,#00H
MOV DPTR,#TABB
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
INC R2
LCALL DELAY
DJNZ R4,LOP5
DJNZ R3,LOP6
MOV R3,#3
LOP8: MOV R4,#8
MOV R2,#7
LOP7: MOV P3,#00H
MOV DPTR,#TABB
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
DEC R2
LCALL DELAY
DJNZ R4,LOP7
DJNZ R3,LOP8
LJMP START
DELAY: MOV R5,#10
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
TABB: DB 01H,02H,04H,08H,10H,20H,40H,80H
END

C51語言源程序
#include <AT89X52.H>
unsigned CHAR code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned CHAR code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void DELAY(void) { unsigned CHAR i,j; for(i=10;i>0;i--) for(j=248;j>0;j--); }
void DELAY1(void) { unsigned CHAR i,j,k; for(k=10;k>0;k--) for(i=20;i>0;i--) for(j=248;j>0;j--); }
void main(void)
{ unsigned CHAR i,j;
while(1)
{ for(j=0;j<3;j++) //FROM left to right 3 time
{ for(i=0;i<8;i++){ P3=taba[i]; P1=0xff; DELAY1();} }
for(j=0;j<3;j++) //FROM right to left 3 time
{ for(i=0;i<8;i++) { P3=taba[7-i]; P1=0xff; DELAY1();}}
for(j=0;j<3;j++) //FROM top to bottom 3 time
{ for(i=0;i<8;i++) { P3=0x00; P1=tabb[7-i]; DELAY1();}}
for(j=0;j<3;j++) //FROM bottom to top 3 time
{ for(i=0;i<8;i++) { P3=0x00; P1=tabb[i]; DELAY1();}}
}
}

❽ 51單片機 匯編語言 88點陣顯示英文字母 逐個顯示

LED點陣的核心原理跟4位LED數碼管一樣,都是需要行列掃描的。仔細查一下點陣的管腳,不是順序排列,把字體做成數組,直接把數組一個一個位元組的發送到埠上(你沒有說明P0和P2那個是行,那個是列,其中一個直接發,一個是按位發)。不斷的發送會導致點陣刷新,速度夠快的話,效果就出來了

❾ 課程設計:單片機的8乘8LED點陣顯示屏的設計

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Table_of_Digits[]=
{
0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00, //0
0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00, //1
0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00, //2
0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00, //3
0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00, //4
0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00, //5
0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00, //6
0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00, //7
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //8
0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00, //9
0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff
};
uchar code xdat[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code ydat[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar i=0,j=0,t=0,Num_Index,key,xi,yi;
//主程序
void main()
{
P1=0x80;
Num_Index=0; //從0 開始顯示
TMOD=0x01; //T0 方式0
TH0=(65536-2000)/256; //2ms 定時
TL0=(65536-2000)%256;
IE=0x82;
key=0;
xi=0;
yi=0;
EX0=1;
IT0=1;
TR0=1; //啟動T0
while(1);
}
//T0 中斷函數
void ext_int0() interrupt 0
{
key++;
key&=0x03;
}
void LED_Screen_Display() interrupt 1
{
TH0=(65536-2000)/256; //2ms 定時
TL0=(65536-2000)%256;
switch(key)
{
case 0:
P0=0xff; //輸出位碼和段碼
P0=~Table_of_Digits[Num_Index*8+i];
P1=_crol_(P1,1);
if(++i==8) i=0; //每屏一個數字由8 個位元組構成
if(++t==250) //每個數字刷新顯示一段時間
{
t=0;
if(++Num_Index==10) Num_Index=0; //顯示下一個數字
}
break;
case 1:
P0=~xdat[xi];
P1=0xff;
P1=ydat[yi];
if(++t==250) //每個數字刷新顯示一段時間
{
t=0;
yi++;
if(yi>7){yi=0;xi++;}
if(xi>7)xi=0;
}
break;
case 2:
P0=0xff; //輸出位碼和段碼
P0=~Table_of_Digits[80+j];
if(j==0)P1=0x80;
P1=_crol_(P1,1);
if(++j==8) j=0; //每屏一個數字由8 個位元組構成
break;
default:
key=0;
i=0;
j=0;
t=0;
xi=0;
yi=0;
Num_Index=0;
P0=0xff;
P1=0x80;
break;
}
}

閱讀全文

與單片機88點陣原理相關的資料

熱點內容
華為筆記本電腦怎麼安裝抖音app 瀏覽:410
阿里雲國際版試用的伺服器怎麼搞 瀏覽:895
java正則表達式工具 瀏覽:158
oa伺服器怎麼設置ftp 瀏覽:8
安卓如何安裝obb 瀏覽:440
QQ聊天記錄journal文件夾 瀏覽:118
蘋果公司雲伺服器地址 瀏覽:85
加密記事本手機 瀏覽:437
汽車壓縮機變頻閥 瀏覽:95
域外伺服器是什麼意思 瀏覽:639
大眾點評伺服器怎麼老卡頓 瀏覽:556
javavector與list的區別 瀏覽:316
java初始化類數組 瀏覽:303
java字元串轉換成json對象 瀏覽:648
android非阻塞socket 瀏覽:358
編譯系統概念 瀏覽:452
天眼通app能做什麼 瀏覽:557
魅族手機怎麼加密圖庫 瀏覽:8
rpa編譯器 瀏覽:572
車載雲伺服器記錄 瀏覽:740