㈠ 51單片機控制16*16點陣顯示屏
板子上所配器件清單:
74HC5952個
74HC1642個
三極體855016個
電阻1K16個
電阻200歐姆16個
點陣底座圓排母2根
彎排針1根
點陣PCB空板1個
㈡ 單片機 led點陣屏
這個很簡單,但說起來有點麻煩,LED點陣它是行列共用的,有兩種方式掃描顯示,分別是行掃和列掃,假如是行掃,那麼列上輸出的就是數據要採用橫向取模,反之則縱向取模。也就是當行掃的時候在同一時間只有一行是亮的,此時數據輸出的是這一行的信息,等下一行亮時列中輸出的是下一行的數據,所以要橫向取模
不知道這么說夠不夠明白
㈢ 關於stc89c52點陣屏程序設計的問題
利用8X8點陣顯示數字0到9的數字。
2.電路原理圖
圖4.25.1
3.硬體系統連線
(1).把「單片機系統」區域中的P3埠用8芯排芯連接到「點陣模塊」區域中的「DR1-DR8」埠上;
(2).把「單片機系統」區域中的P1埠用8芯排芯連接到「點陣模塊」區域中的「DC1-DC8」埠上;
4.程序設計內容
(1).數字0-9點陣顯示代碼的形成
如下圖所示,假設顯示數字「0」
12345678
● ● ●
● ●
● ●
● ●
● ●
● ●
● ● ●
00003E4141413E00
因此,形成的列代碼為00H,00H,3EH,41H,41H,3EH,00H,00H;只要把這些代碼分別送到相應的列線上面,即可實現「0」的數字顯示。
送顯示代碼過程如下所示
送第一列線代碼到P3埠,同時置第一行線為「0」,其它行線為「1」,延時2ms左右,送第二列線代碼到P3埠,同時置第二行線為「0」,其它行線為「1」,延時2ms左右,如此下去,直到送完最後一列代碼,又從頭開始送。
數字「1」代碼建立如下圖所示12345678
●
● ●
●
●
●
●
● ● ●
其顯示代碼為00H,00H,00H,00H,21H,7FH,01H,00H由上到下7~0,21H=00100001B
數字「2」代碼建立如下圖所示
12345678
● ● ●
● ●
●
●
● ● ● ●
●
● ● ● ● ●
00H,00H,27H,45H,45H,45H,39H,00H
數字「3」代碼建立如下圖所示
12345678
● ● ●
● ●
●
● ● ●
●
● ●
● ● ●
00H,00H,22H,49H,49H,49H,36H,00H
數字「4」代碼建立如下圖所示
12345678
●
● ●
● ●
● ●
● ● ● ● ●
●
●
00H,00H,0CH,14H,24H,7FH,04H,00H
數字「5」代碼建立如下圖所示
12345678
● ● ● ● ●
●
● ● ● ●
●
●
● ●
● ● ●
00H,00H,72H,51H,51H,51H,4EH,00H
數字「6」代碼建立如下圖所示
12345678
● ● ●
● ●
●
● ● ● ●
● ●
● ●
● ● ●
00H,00H,3EH,49H,49H,49H,26H,00H
數字「7」代碼建立如下圖所示
12345678
● ● ● ● ●
●
●
●
●
●
●
00H,00H,40H,40H,40H,4FH,70H,00H
數字「8」代碼建立如下圖所示
12345678
● ● ●
● ●
● ●
● ● ●
● ●
● ●
● ● ●
00H,00H,36H,49H,49H,49H,36H,00H
數字「9」代碼建立如下圖所示
12345678
● ● ●
● ●
● ●
● ● ● ●
●
● ●
● ● ●
00H,00H,32H,49H,49H,49H,3EH,00H
5.匯編源程序
TIM EQU30H
CNTA EQU31H
CNTB EQU32H
ORG00H
LJMPSTART
ORG0BH
LJMPT0X
ORG30H
START: MOVTIM,#00H
MOVCNTA,#00H
MOVCNTB,#00H
MOVTMOD,#01H
MOVTH0,#(65536-1000)/256//原文設定的3000太「閃」了
MOVTL0,#(65536-1000)MOD256
SETBTR0
SETBET0
SETBEA
SJMP$
T0X:
MOVTH0,#(65536-1000)/256
MOVTL0,#(65536-1000)MOD256
MOVDPTR,#TAB
MOVA,CNTA
MOVCA,@A+DPTR
MOVP3,A
MOVDPTR,#DIGIT
MOVA,CNTB
MOVB,#8
MULAB
ADDA,CNTA
MOVCA,@A+DPTR
MOVP1,A
INCCNTA
MOVA,CNTA
CJNEA,#8,NEXT
MOVCNTA,#00H
NEXT: INCTIM
MOVA,TIM
CJNEA,#250,NEX
MOVTIM,#00H
INCCNTB
MOVA,CNTB
CJNEA,#10,NEX
MOVCNTB,#00H
NEX: RETI
TAB: DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DIGIT: DB00H,00H,3EH,41H,41H,41H,3EH,00H
DB00H,00H,00H,00H,21H,7FH,01H,00H
DB00H,00H,27H,45H,45H,45H,39H,00H
DB00H,00H,22H,49H,49H,49H,36H,00H
DB00H,00H,0CH,14H,24H,7FH,04H,00H
DB00H,00H,72H,51H,51H,51H,4EH,00H
DB00H,00H,3EH,49H,49H,49H,26H,00H
DB00H,00H,40H,40H,40H,4FH,70H,00H
DB00H,00H,36H,49H,49H,49H,36H,00H
DB00H,00H,32H,49H,49H,49H,3EH,00H
END
6.C語言源程序
#include<AT89X52.H>
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedigittab[10][8]={ {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
};
unsignedinttimecount;
unsignedcharcnta;
unsignedcharcntb;
voidmain(void)
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
voidt0(void)interrupt1using0
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
P3=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==333)
{
timecount=0;
cntb++;
if(cntb==10)
{
cntb=0;
}
}
}
㈣ 我想用 51單片機控制點陣屏,可是不知道程序怎麼寫,也不知道如何知道8*8點陣屏的引腳~~求指點
點陣的引腳圖。看懂了引腳圖估計會寫了吧?!
㈤ 已經購買了2塊32*64的點陣屏幕,放在一起可以級聯成32*128的,單片機是STC12C5A60S2
買了液晶屏,向廠家要測試程序,或向商家要,都會給的。就是C語言的。根據測試程序,改一下引腳定義就行了,編譯一下測試程序,看能不能顯示。如果能顯示了,就可以自己根據測試程序一點點修改。
如果找不到廠家,就只好在網上找了,但不容易與你的晶屏相符。
實在不會,讀一下測試程序,顯示漢字的方法都是:用漢字取模軟體,先取漢字點陣數據,用這些數據代替測試程序的點陣數據,看是不是能顯示自己的取模的漢字了。
因液晶屏顯示漢字,取模方式有多種,如果顯示亂碼,說明取模方式不對,再換一種,直到顯示出漢字為止。這樣就可以,對測試程序進行修改成自己看得懂,又實用的程序了。
㈥ 51單片機做點陣屏的問題
寫完顯示後,延時一下,給它一段時間表現自己,利用一下人眼的暫留效應。
這個不在於掃描的快慢,要知道你這么干,每次點亮的時間不足以夠成「視覺」。
你真是太有才了,竟然能發現降低晶振頻率來解決這個問題!花了不少工夫吧。
還不明白的話,給我留言。
㈦ 單片機怎樣才能驅動8個8*8點陣屏
由於人眼視覺暫留效應以及LED亮度與占空比的關系決定,顯示刷新一般為8線,對於8*8*8點陣,需要8條線驅動和8*8條位驅動,即72個IO口,8位機達不到,一般採用IO擴展形式,以51為例,可使用8塊273或164擴展出64個IO,線驅動可使用2003。
㈧ 51單片機如何儲存LED點陣屏顯示的圖案並且可以實現調用出來,求程序
首先你要確定點陣的大小,黑白(單色)點陣一個 點佔一位二進制數據,128*128點佔16*128個位元組,即2K。用專門的軟體將圖形轉化成十六進制數據,存儲於表格中,顯示時再一個一個讀出,進行顯示。
點陣顯示屏有的是一個點一個點寫入,有的是一行一行(或半行)寫入,程序當然是不一樣的。
㈨ 單片機 怎麼控制點陣屏和LCD屏
LED點陣屏和LCD屏的顯示原理是不同的,LCD屏是自帶的驅動晶元的,可以和單片機直接連接的。
而LED屏需要加驅動電路的,而且顯示時也要採用動態掃描的方式的。
LCD屏顯示漢字時,有的屏是自帶字型檔的,不帶字型檔的屏,就要用漢字取模軟體取出顯示的數據,即取出漢字的字模。
LED屏顯示漢字,就必須用取模軟體來取模了,不是自己像畫畫那樣,那可畫不起。取模軟體在網上可以下載的。
最後一個問題:LCD的集成電路去了當成點陣屏用嗎?這是不可能的,一則LCD的集成電路是封裝在PCB板上的,即軟封裝的,自己是用不了的,是不可能自己接線的。二則,假如能接線,可是,LCD和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文檔在我的空間裡面