『壹』 哪位高手能給我解釋解釋單片機點陣掃描原理不謝謝
談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行點陣的掃描演算法。
就說到這里吧,更多的知識請網路搜索吧。
『貳』 單片機點陣
16*16的點陣么?單片機控制點陣方法是根據硬體電路來設計的。一般來說,點陣會連一個解碼器(比如74HC138等),通過控制138解碼器,完成列掃描功能。還有一部分直接接到單片機上,由單片機負責輸出。完成行掃描功能。網上這種例子一搜一大堆的。
『叄』 51 單片機16*16點陣顯示
你把數字的那個碼字改為16*16的不就可以了嗎
這都不影響的
點陣的話相當於前面有8個8位全部為00H
全部為16*16後用一個左移指令就可以了
http://hi..com/lphaff/album/item/0ed09dfada8f5303a9d3116c.html
『肆』 基於單片機的16×64點陣字元控制系統的設計
我做過這樣的畢業設計,16*64點陣顯示屏,可以各種顯示,時間,溫度等功能。
給你一個參考:
可以去我的博客下載: http://www.shenzhenwangzhanyouhua.com/seo/ds1302-18b20-1664-display.html
LED 點陣漢字顯示屏
概 述
這次比賽製作由於時間緊,同時為了降低製作難度, 僅作了四個字的輪流顯示,實際使用時可根據這個原理自行擴充顯示的字數。
設計製作主要運用於學校的宣傳欄,如:本科評估的各種信息,學校學院重要通知,天氣預報等各種信息。
系統設計
一 硬體電路
(1)系統組成:
主要硬體電路:LED 點陣條屏是由 16 個 8*8 的 LED 點陣塊組成,形成 16*64 矩形點陣,以AT89S51為控制核心。顯示屏的其他主要硬體有:
① 帶鎖存輸出的 8位移位寄存器74HC595,作為LED的列線驅動輸入;
② 四六解碼器 74LS154,作為 LED行線的解碼選擇(實際製作中考慮成本問題改為兩個74HC138聯合);
③ 三極體 9012,連接四六解碼器的十六個輸出端,作為開關使用,驅動LED的行線。
圖二 AT89S51單片機最小系統
AT89S51相關器件連接的接腳如下:PA0-PA3連接4-16解碼器的輸入口A,B,C,D;PB0-PB3連接74HC595的輸入口 SI,SCK,RCK;PD6-PD7作串口通信使用連接RxD,TxD 兩個三八解碼器74LS138組成的16個輸出端連接 16 個 9012的三極體的基極 B,發射極E 連接5V電源,集電極C連接到三個漢字點陣的16 個行線控制端。 點陣的 48 列數據線驅動由 6 片 74HC595 級聯組成,前一片 74HC595 的 Q』H 引腳連接下一片的SI引腳,各片的SCK、RCK、SRCLR、G引腳分別並聯。
(2)LED點陣塊
圖三 LED點陣塊
8*8的LED點陣為單色行共陰模塊,單點的工作電壓為正向(Vf)=1.8 v ,正向電流(IF)= 8-10 mA 。靜態點亮器件時(64點全亮)總電流為 640mA,總電壓為 1.8 v,總功率為 1.15 W。動態時取決於掃描頻率(1/8或1/16秒),單點瞬間電流可達 80-160 mA。 16*16點陣靜態時16*16*10mA,動態時單點電流80-160mA。
實際測試:整機電流700 mA
(2) 移位寄存器74HC595
圖四 74HC595內部邏輯圖
74HC595是帶鎖存輸出的8位移位寄存器,其管腳見下圖,其中SI是串列數據的輸入端;VCC、GND分別為電源和地;RCK是存儲寄存器的輸入時鍾,SCK是移位寄存器的輸入時鍾,SCLR是移位寄存器的輸入清除,Q』H是串入數據的輸出,G是對輸入數據的輸出使能控制,QA~QH串入數據的並行輸出。從SI口輸入的數據在移位寄存器的SCK腳上升沿的作用下輸入到74HC595中,在RCK腳的上升沿作用下將輸入的數據鎖存在74HC595中,當G為低電平時時,數據並行輸出。SCLR為移位寄存器的輸入清除端。
(3) 74HC138以及驅動電路
圖五 74HC138以及驅動電路實物圖
4-16線解碼器(用兩塊74HC138組成),其管腳如圖所示,A,B,C,D為解碼的輸入端,值的區間從0000到1111,Y1~Y15是對應A,B,C,D四個輸入引腳的輸出腳,其中選中的線用輸出低電平,沒有選中的輸出高電平,G1、G2是使能端,只有輸入相應D低電平才能使解碼器正常工作。
驅動三極體為16個9012,用萬能板焊接。
二 軟體設計
單片機方的程序設計 單片機在LED點陣漢字顯示系統中主要負責數據的接收、存儲和掃描顯示 LED點陣屏三大主要功能。串列移動的子程序設計 這是一個通用子程序,在顯示子程序中都要被調用,功能是移位寄存器 74HC595接收單片機發出的點陣行數據,逐位移動到對應位置後再進行鎖存和輸出工作,同時對四六解碼器進行開關工作,控制屏幕的顯示。
部分程序:初始化程序:
#include <AT892051.H>
#define uchar unsigned char
#define uint unsigned int
#define SPEED 3
uchar col,disrow;
uint word;
uchar code HZ[];
uchar BUFF[6];
void loadoneline(void);
void sendoneline(void);
發送部分程序:
void sendoneline(void)
{
char s;uchar inc;
if(col<8)inc=0;else inc=1;
for(s=4+inc;s>=0+inc;s--)
{
SBUF=two_onebyte(BUFF[s],BUFF[s+1]);
while(!TI);TI=0;
}
}
三 調試
調試主要分為硬體調試和軟體調試:
硬體調試:在焊接電路板的時候,應該從最基本的最小系統開始,分模塊,逐個進行焊接測試。在對各個硬體模塊進行測試時,要保證軟體正確的情況下去測試硬體,要不然發生錯誤時,不知道到底是哪一方出錯了。當然,在設計的過程中也存在著失誤和不足。
軟體調試:軟體部分是先參考書上的例子,然後自己根據硬體電路寫程序,由於以前所學是C語言,所以這個系統在編寫程序過程中都採用C語言編寫。剛剛開始,編寫不會一次性通過,經過仔細分析修改最後編譯成功。但是,在實際寫如S51中,LED顯示屏出現各種各樣的亂碼,通過再次認真仔細分析多次修改程序後,程序能夠正常運行。
四 總結
在 LED點陣漢字顯示屏的設計過程中,學到了很多東西,基本了解了整個嵌入式開發的流程。例如,在進行整個設計之前,應該先根據需求分析,對單片機進行選型,然後對各個硬體模塊進行搭試。在畫PCB電路板的時候,要注意基本的布板原則。例如,在進行PCB布板的時候,濾波電容不夠靠近晶元的電源腳和地腳。在進行搭試點陣塊的時候,因為電壓過高,導致點陣塊損壞。這次第一屆電子設計製作,本人受益非淺,在以後的電子設計製作過程中一定吸取教訓。
參考文獻:
[1]何立民.單片機應用技術選編[M].北京:北京航空航天大學出版社.1998.
[2]杜春雷.如何使用Visual Basic 6.0 dP3~ [M].北京:機械工業出版社,1999.
[3]孫育才.新型AT89S51系列單片機及其應用[M].北京:清華大學出版社.2005.
經驗小結:
1,在頭文件增加「#pragma SRC(LED.ASM)」語句,可以生成匯編文件,對於理解
匯編語言程序是有很大的好處的。
2,在製作PCB板過程中,業余條件下很難做雙面板,不地不做的時候考慮如何布
線才能達到最優最好。
3,在「http://xie-gang.com/WNFZQ.htm」;Keil C51軟體的安裝,按照該軟體
的安裝,可以得到無限量的程序編譯。因為在寫程序的過程中發現,KEIL C51 只
能編譯2K的程序代碼,不夠用。用C編寫,感覺很容易理解。程序編寫過程中最好
是先參考別人的程序,再修改能不能實用自己的程序要求,之後才自己去編寫完
全屬於自己的程序。
4,單片機模擬軟體 PROTEUS 也是很不錯的。在上面可以模擬很多東西。
設想:
1,可以掛在學校的十字路口,提供日期,時間,溫度,濕度等天氣信息,服務廣大同學。
2,可以和電腦相連接,實現同步顯示。做一個完整的系統。
進一步學習下面的軟體或者語言(知識):
BV
protel 99 se
keil c51
proteus
c/c++
easy isp 51
Easy 51Pro.exe
2007-5-25
下面為靜止顯示「農林大學」四個字的程序:
#include <REG51.h>
#define uchar unsigned char
#define uint unsigned int
uchar disrow;
uchar code HZ[];
uchar BUFF[9];
void loadonelineandsend(void);
/********************************************/
/*******************************************************/
void main(void)
{
while(1)
{
for(disrow=0;disrow<16;disrow++)
{
loadonelineandsend();
P1=0x10+disrow;
P1=0x20+disrow;
}
}
}
/******************************************************/
void loadonelineandsend(void)
{
uchar s;
int q;
q=0;
for(s=0;s<4;s++)
{
BUFF[q]=HZ[32*s+disrow*2];
BUFF[q+1]=HZ[32*s+disrow*2+1];
SBUF=255-BUFF[q+1];
while(!TI);TI=0;
SBUF=255-BUFF[q];
while(!TI);TI=0;
}
}
/******************************************************/
/***********農林大學********************************************/
uchar code HZ[]=
{
0x01,0x00,0x01,0x00,0x7F,0xFE,0x41,0x02,0x81,0x04,0x02,0x00,0x02,0x08,0x05,0x18,
0x09,0x20,0x18,0xC0,0x28,0x80,0x48,0x40,0x88,0x30,0x0A,0x0E,0x0C,0x04,0x08,0x00,
0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x24,0xFE,0xFE,0x08,0x20,0x18,0x60,0x1C,0x70,
0x2A,0xA8,0x28,0xAE,0x49,0x24,0x8A,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x02,0x80,
0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08,0x10,0x10,0x0E,0x60,0x04,0x00,0x00,
0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
};
『伍』 單片機LED16×16點陣,主要參數有哪
摘要 您好。我幫您查詢了,點陣 LED 顯示屏作為一種現代電子媒體,具有靈活的顯示面積(可任意分割和拼裝)、高亮度、長壽命、數字化、實時性等特點,應用非常廣泛。
『陸』 單片機8*8點陣顯示漢字的程序
1. ORG 0HSTART:MOV DPTR,#DATA1 ;指向點陣代碼首址;
CLR CDISP?這個應該是CLR C(清除標志位,因為下面要判斷是否移完8位)吧
2. MOV R2,#80H ; 80H 使第7 列(最左一列)陰極為低電平(這個感覺也有問題)
3.DISP:MOV A,#0; 賦初值0,為了下面能從點陣代碼表中從零開始取代碼
MOVC A,@A+DPTR ; 取第一列點陣代碼
MOV P2,A ; 將第一列點陣代碼的值賦給P2口
MOV P1,R2 ;使一列陰極為低電平?
CALL DELAY ; 調用延時
INC DPTR ; 指向下一列點陣代碼
MOV A,R2 ; R2的值賦給A
RRC A ; 右移一位,為下一列陰極輸出低電平作準備
MOV R2,A ;右移一位後再把值存儲到R2,為了下一次右移
JNC DISP ; 8 列未完跳回到DISP繼續執行
4.AJMP START 跳轉到START
DELAY: MOV R1,#0 ;//這個有問題,R1不是賦零,不然怎麼延時啊
DELY0: DJNZ R1,DELY0 ;延時(直到R1的值變為0)
5.RET 返回(這個子程序執行完了)
6.DATA1: DB 24H,44H,DCH,54H,7FH,54H,54H,44H; 點陣代碼表
『柒』 51單片機點陣顯示一個漢字
8x8的點陣太小,很難正常顯示一個漢字,通常,會使用4個8x8的點陣即16x16的點陣來顯示一個漢字。
單片機在通過點陣顯示漢字的時候,需要用到如下技術手段:
1、漢字取模
漢字取模,即把漢字對應16x16點陣的圖形用16進制數來描述,形成可以用於驅動顯示的數據。
例如下圖,的漢字「中」
該字的16x16點陣圖形中,每行有16個像素,可以編碼為2個位元組,每8個像素,對應一個位元組的高低位,則該字編碼的前2個位元組為0x01,0x80……,如此,可用32個位元組描述漢字的點陣圖形。
關於漢字取模有很多開源的軟體,你可以搜索下載並使用,將你的程序中所需要使用的漢字,全部處理成字模,再定義到程序中即可。(也可以使用漢字字型檔晶元,這里就不討論了)
2、掃描顯示
通常,驅動點陣設備時,為了節約單片機的管腳資源,會使用鎖存器一類的期間,即鎖存器輸出端與點陣連接,而輸入段由單片機控制,採用行、場掃描或分塊行、場掃描的方式驅動,具體你可以搜尋相關資料。
『捌』 單片機的點陣顯示規律及原理
怎樣的掃描顯示,要說清楚還真要費些事,看看這么說你能否弄懂;假設一片8*8點陣的兩組引腳分別為H1、H2、H3、H4、H5、H6、H7、H8和L1、L2、L3、L4、L5、L6、L7、L8;而且H1-H8分別是8行LED的A極公共端,L1-L8分別為是8行LED的K極公共端(即8列公共端);此時如果H1接V+,L1接V-,那麼第一行的左起第一個LED被點亮,依此順序,如果我們在L1-L8這組引腳上送入數據0111 1111(0x7F),而將H1-H8全部連接V+,那麼會點亮整個8*8點陣的第一列LED,但這樣只能按列或全屏點亮,如果我們送一組列數據並點亮一行,如此逐行分別點亮,就能顯示完整的圖形了,只要所有行的每行在1秒內顯示超過24次,就能看到完整的畫面。
『玖』 基於單片機led點陣屏的設計需要用到哪些知識
ABSTRACT II
第1章 前言 1
1.1 LED電子顯示屏概述 1
1.3 LED顯示屏的應用示例 2
第2章 顯示原理及控制方式分析 3
2.1 LED點陣模塊結構 3
2.2 LED動態顯示原理 4
2.3 LED常見的控制方式 4
第3章 方案設計與分析 7
3.1 顯示單元 7
3.2 滾屏的實現 7
3.3 關於可擴展性 7
3.4 微控制器的考慮 7
3.5 關於點陣數據的存儲方式 8
3.6 關於顯示內容的更新 9
3.7 總體電路結構及工作原理 9
3.7.1 硬體電路框圖 9
3.7.2 工作原理 11
第4章 硬體電路設計 13
4.1 顯示單元電路設計 13
4.1.1 LED點陣模塊的選擇 13
4.1.2 列驅動電路設計 13
4.1.3 行驅動電路設計 14
4.2 單片機控制系統電路設計 15
4.2.1 單片機的選型 15
4.2.2 單片機系統電路設計 16
4.3 字型檔與單片機的介面設計 17
4.3.1 字型檔晶元選型 17
4.3.2 字型檔晶元的使用方法 17
4.3.3 字型檔晶元的電氣特性 18
4.3.4 字型檔晶元與單片機的介面設計 19
4.3.5 字型檔晶元3.3V電源設計 20
4.3.6 5V-3.3V的電平轉換電路設計 20
『拾』 單片機中,用點陣怎麼實現數字的輸出,其程序怎麼編寫
點陣不管是顯示漢字還是數字,一般都是將要顯示的漢字或數字用字模提取軟體轉換出一個數組的內容,然後將這個數組復制到單片機的程序中,以下給你一些C語言程序參考,這個是16*16的點陣,還有就是提醒一下你,你用字模提取軟體時要看清楚取碼是從哪個方向開始的,然後寫程序時也要對應:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i,k;
void delay(uint i)
{
while(i--);
}
//深
uchar code shen[]=
{0xFF,0xFF,0x9F,0x6F,0xAE,0x67,0xBB,0x6F,
0xB7,0x5F,0xAF,0x3F,0xB8,0x00,0xAF,0x3F,
0xB7,0x5F,0xBB,0x6F,0x9F,0x77,0xEE,0xF7,
0xCF,0x7F,0xD9,0x80,0xBB,0xDF,0xF7,0xDF};
//圳
uchar code zhen[]=
{0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0xFF,
0x80,0x0F,0xFB,0xF3,0xF3,0xDD,0xFB,0xDF,
0x00,0x0F,0xFB,0xEF,0xFB,0xE7,0xFB,0xEF};
//從左到右顯示
void display1(uchar *P)
{
uint time=1000;//750
for(k=32;k>0;k=k-2)
{
P2=P[k-2];
P1=P[k-1];
delay(time);
}
P2=0xff;P1=0xff;
}
//從右到左顯示
void display2(uchar *P)
{
uint time=1000;//750
for(k=0;k<32;k=k+2)
{
P2=P[k];
P1=P[k+1];
delay(time);
}
P2=0xff;P1=0xff;
}
void main()
{
while(1)
{
display1(shen); //深
delay(2000);
display1(zhen); //圳
delay(2000);
}
}
希望能幫助到你,那個字模提取軟體很多,好像只有幾百K,很容易下載的,如果下載不了,我發給你也可以。