第一篇:8x8點(diǎn)陣顯示26個英文字母
#include
#define uchar unsigned char
#define uint unsigned int
sbit diola=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int count,m=50,i=0;
uchar code table[26][8]={{0xff,0xe7,0xe7,0xdb,0x81,0xbd,0x7e,0xff},//A{0xff,0xc1,0xbd,0xc1,0xbd,0x7d,0x81,0xff},//B{0xff,0xc3,0xbd,0xfd,0xfd,0x79,0x83,0xff},//C{0xff,0xc1,0x9d,0xbd,0xbd,0x9d,0xc1,0xff}, //D{0xff,0x81,0xfd,0x81,0xfd,0xfd,0x81,0xff},//E{0xff,0x81,0xfd,0x81,0xfd,0xfd,0xfd,0xff},//F{0xff,0xc3,0xb9,0xfd,0x8d,0xb9,0x83,0xff},//G{0xff,0xbd,0xbd,0x81,0xbd,0xbd,0xbd,0xff},//H{0xff,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xff},//I{0xff,0xbf,0xbf,0xbf,0xbf,0xbd,0xc3,0xff},//J{0xff,0x9d,0xed,0xf5,0xe9,0xdd,0xbd,0xff},//k{0xff,0xfd,0xfd,0xfd,0xfd,0xfd,0x81,0xff},//L{0xff,0x99,0x99,0x99,0xa5,0xa5,0xa5,0xff},//M{0xff,0xb9,0xb9,0xb5,0xad,0x9d,0x9d,0xff},//N{0xff,0xc3,0x99,0xbd,0xbd,0x99,0xc3,0xff},//O{0xff,0xc1,0xbd,0xbd,0xc1,0xfd,0xfd,0xff},//P{0xff,0xc3,0x99,0xbd,0xbd,0xa9,0xc3,0xbf},//Q{0xff,0xc1,0xbd,0x81,0xbd,0xbd,0xbd,0xff},//R{0xff,0xc3,0xbd,0xc3,0x3f,0x7d,0x83,0xff},//S{0xff,0x80,0xf7,0xf7,0xf7,0xf7,0xf7,0xff},//T{0xff,0xbd,0xbd,0xbd,0xbd,0xbd,0xc3,0xff},//U{0xff,0x7e,0xbd,0xdd,0xdb,0xe3,0xf7,0xff},//V{0xff,0xff,0xff,0x66,0xa6,0x99,0x99,0xff},//W{0xff,0xdd,0xeb,0xf7,0xe3,0xd9,0xbc,0xff},//X{0xff,0xbc,0xd9,0xe3,0xf7,0xf7,0xf7,0xff},//Y{0xff,0x80,0xdf,0xe7,0xfb,0xfd,0x80,0xff}//Z};
void delay(unsigned int a)
{
while(a--);
}
void delay_1()
{
int i,j;
for(i=1000;i>0;i--)
for(j=159;j>0;j--);
}
void init()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{unsigned char i=0;
init();
wela=1;
P0=0xff;
wela=0;
delay(50);
while(1)
{
m=50;
if(count==20)
{
count=0;
while(m--)
{
diola=1;
dula=1;
P0=0x00;
diola=0;
dula=0;
delay(50);
dula=1;
P0=table[i][0];
dula=0;
delay(50);
diola=1;
P0=0x01;
diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(50);dula=1;
P0=table[i][1];dula=0;
delay(50);diola=1;
P0=0x02;diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(50);dula=1;
P0=table[i][2];dula=0;
delay(50);diola=1;
P0=0x04;diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(50);dula=1;
P0=table[i][3];dula=0;
delay(50);diola=1;
P0=0x08;diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(50);dula=1;
P0=table[i][4];dula=0;
delay(50);diola=1;
P0=0x10;diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(5);
dula=1;
P0=table[i][5];dula=0;
delay(50);diola=1;
P0=0x20;diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(50);dula=1;
P0=table[i][6];dula=0;
delay(50);diola=1;
P0=0x40;
diola=0;
delay(50);
diola=1;
dula=1;
P0=0x00;diola=0;
dula=0;
delay(50);dula=1;
P0=table[i][7];dula=0;
delay(50);diola=1;
P0=0x80;diola=0;
delay(50);}
i++;
i=i%26;
}
}
}
void time0()interrupt 1 {
TH0=(65535-50000)/256;TL0=(65535-50000)%256;count++;
}
第二篇:LED8x8點(diǎn)陣顯示設(shè)計(jì)說明報(bào)告
班級:電子1649
姓名:王立學(xué)號:***44
LED8x8點(diǎn)陣顯示設(shè)計(jì)說明報(bào)告
一、設(shè)計(jì)任務(wù)
1.設(shè)計(jì)要求
利用一塊點(diǎn)陣數(shù)碼板,按編程者要求實(shí)現(xiàn)任意符號的顯示。2.此次設(shè)計(jì)研究的主要內(nèi)容及應(yīng)解決的問題
此次設(shè)計(jì)研究的主要內(nèi)容是設(shè)計(jì)一個符號顯示牌:通過程序控制符號顯示牌,使符號顯示牌,在無按鍵按下時,顯示數(shù)字“0-9”,當(dāng)?shù)谝淮伟聪掳存I時,顯示字母“μ”,當(dāng)?shù)诙伟聪掳存I時顯示漢字“公”。應(yīng)解決的問題:單片機(jī)P1口的輸出電流不足以驅(qū)動二極管,需要加驅(qū)動,本次研究中以S8050作為驅(qū)動,同時在S8050NPN晶體管基極加4.7K的電阻。實(shí)驗(yàn)前要弄清晶體管三個引腳代表的極性,以免符號顯示牌不亮導(dǎo)致而設(shè)計(jì)失敗。
二、總體設(shè)計(jì)方案
2.1 硬件電路組成
本產(chǎn)品采用以89C51單片機(jī)為核心芯片的電路來實(shí)現(xiàn),主要由89C51芯片、晶振電路、三極管驅(qū)動電路、按鍵控制電路、8×8 LED點(diǎn)陣5部分組成,電路框圖如圖1所示。其中,89C51是一種帶4kB閃爍可編程可擦除只讀存儲器(Falsh Programmable and Erasable Read OnlyMemory,F(xiàn)PEROM)的低電壓、高性能CMOS型8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,工業(yè)標(biāo)準(zhǔn)的MCS一51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,能夠進(jìn)行1 000次寫/擦循環(huán),數(shù)據(jù)保留時間為10年。他是一種高效微控制器,為很多嵌人式控制系統(tǒng)提供了一種靈活性高且價廉的方案。因此,在智能化電子設(shè)計(jì)與制作過程中經(jīng)常用到89C51芯片。時鐘電路由89C51的18,19腳的時鐘端(XTAI 1及XTAL2)以及12 MHz晶振X、電容C2、C3組成,采用片內(nèi)振蕩方式。復(fù)位電路采用簡易的上電復(fù)位電路,主要由電阻R,R2,電容C,開關(guān)K 組成,分別接至89C51的RST復(fù)位輸人端。LED點(diǎn)陣顯示屏采用8x8共64個象素的點(diǎn)陣,可通過萬用表檢測發(fā)光二極管的方法測試判斷出該點(diǎn)陣的引腳分布。我們把行列總線接在單片機(jī)的I/O口,然后把上面分析到的掃描代碼送入總線,就可以得到顯示的字符了。我們在實(shí)際應(yīng)用中是將LED點(diǎn)陣的8條列線通過驅(qū)動電路接在P1口,8條行線通過限流電阻接在P0口。單片機(jī)89C51按照設(shè)定的程序在P1和P0接口輸出與內(nèi)部字符對應(yīng)的代碼電平送至LED點(diǎn)陣的行列線(高電平驅(qū)動),從而選中相應(yīng)的象素LED發(fā)光,并利用人眼的視覺暫留特性合成整個字符的顯示。再改變?nèi)”淼刂穼?shí)現(xiàn)字符的滾動顯示。硬件電路組成框圖如圖2-1所示。
圖2-1 硬件電路組成框圖
2.2 系統(tǒng)各單元電路設(shè)計(jì) 2.2.1 89C51單片機(jī)最小系統(tǒng)
最小系統(tǒng)包括晶體振蕩電路、復(fù)位開關(guān)和電源部分。圖2-2為89C51單片機(jī)的最小系統(tǒng)。圖2-2 單片機(jī)最小系統(tǒng)
2.2.2 按鍵控制電路
單片機(jī)開始工作時,P2.0是高電平。當(dāng)按鍵按下時,檢測到一個低電平信號,改變P0口輸出信號,控制8×8 LED點(diǎn)陣顯示屏顯示不同字符。
圖2-3 按鍵控制電路
2.2.3 三極管驅(qū)動電路
掃描驅(qū)動電路的功能主要是有P1口輸出高電平使三極管發(fā)射結(jié)導(dǎo)通,發(fā)射結(jié)輸出足夠大的電流使二極管導(dǎo)通。
圖2-4 三極管驅(qū)動電路 2.2.4 8×8 LED點(diǎn)陣介紹 圖(4)為8×8點(diǎn)陣LED外觀及引腳圖,只要其對應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點(diǎn)亮,則電子模塊中的0口為1,A口為0即可。應(yīng)用時限流電阻可以放在橫軸或列軸。
圖2-5 8×8點(diǎn)陣LED外觀及引腳
(1)把“單片機(jī)系統(tǒng)”區(qū)域中的P0端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“A~H”端口上;
(2)把“單片機(jī)系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“0~7”端口上;
為了方便于單片機(jī)連接,我們在焊接的過程中特意將0~7接口排列出來作為列,將A~H接口作為行,這樣我們就可以直接將AT89C51單片機(jī)的P0口與0~7接口一次連接,將AT89C51單片機(jī)的P1口與A~H接口一次連接。要使LED發(fā)亮即使給予數(shù)字端高電平,字母端給予低電平,就能使二極管發(fā)亮。
2.3 字符的點(diǎn)陣顯示原理及字庫代碼獲取方法
我們以UCDOS中文宋體字庫為例,每一個字由8行8列的點(diǎn)陣組成顯示。我們可以把每一個點(diǎn)理解為一個象素,而把每一個字的字形理解為一幅圖像。事實(shí)上這個漢字屏不僅可以顯示漢字,也可以顯示在64象素范圍內(nèi)的任何圖形。如查用8位的AT89C51單片機(jī)控制,如圖所示
圖2-6 8×8點(diǎn)陣等效電路
為了弄清楚漢字的點(diǎn)陣組成規(guī)律,首先通過列掃描方法獲取漢字的代碼。首先將8行分成4位的上、下兩部分,把發(fā)光的象素位編為0不發(fā)光的象素位為1的十六進(jìn)制代碼。這樣就把要顯示的“公”字編為如下代碼:
0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf
由這個原理可以看出,無論顯示何種字體或圖像,都可以用這個方法來分析出他的掃描代碼從而顯示在屏幕上。上述方法雖然能夠讓我們弄清楚字符點(diǎn)陣代碼的獲取過程。字符點(diǎn)陣顯示一般有點(diǎn)掃描、行掃描和列掃描3種。為了符合視覺暫留要求,點(diǎn)掃描方法的掃描頻率必須大于16×64—1024 Hz,周期小于1 ms即可。行掃描和列掃描方法的掃描頻率必須大于16×8—128 Hz,周期小于7.8 ms即可。
三、程序設(shè)計(jì)
3.1程序流程圖
開始初始化依次顯示0~9是否按鍵NoYes依次顯示0~9顯示字符μ是否按鍵NoYes顯示字符μ顯示漢字公是否按鍵NoYes顯示漢字公
圖3-1 主程序流程圖
3.2程序設(shè)計(jì)
根據(jù)上述所說的程序流程圖,設(shè)計(jì)程序如附錄1。
四、調(diào)試及性能分析
4.1系統(tǒng)調(diào)試 4.1.1軟件調(diào)試
首先根據(jù)各單元電路模塊,利用Proteus軟件將總的硬件原理圖繪制好,設(shè)計(jì)好各模塊要使用的I/O口,如:8×8點(diǎn)陣LED顯示屏?xí)r候插反,先檢測下,無硬件錯誤后,再進(jìn)行程序編程。
利用C語言的編程方式,將系統(tǒng)要求的基本功能,以及創(chuàng)新功能根據(jù)程序流程圖編寫出來,用Keil軟件調(diào)試無誤后,生成Hex文件。
雙擊Proteus中的AT89C51芯片,將Keil生成的Hex加載到芯片內(nèi),進(jìn)行仿真,經(jīng)調(diào)試后所編寫的程序能夠完美實(shí)現(xiàn)系統(tǒng)所需的各種功能。
4.1.2硬件調(diào)試
硬件調(diào)試主要是檢測硬件電路是否有短路、斷路、虛焊等。具體步驟及測試結(jié)果如下:(1)檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導(dǎo)線是否完全連接,對未連接的進(jìn)行修復(fù)。
(2)參照原理圖,檢查各個器件之間的連接是否連接正確,是否存在虛焊,經(jīng)測試,各連接不存在問題。
(3)以上兩項(xiàng)檢查并修復(fù)完后,給該硬件電路上電,電源指示燈點(diǎn)亮。
(4)將燒錄好程序的最小單片機(jī)系統(tǒng)接入各模塊后,各模塊能過正常工作,如:數(shù)碼管正常發(fā)光。
4.2設(shè)計(jì)分析
將燒錄好程序的最小單片機(jī)系統(tǒng)與各模塊連接好后,8×8點(diǎn)陣LED顯示屏顯示初始值。按鍵一次之后,顯示屏顯示滾動字符μ,再按鍵一次,顯示屏顯示漢字“公”。
經(jīng)軟件調(diào)試和硬件調(diào)試后,所設(shè)計(jì)的系統(tǒng)完美實(shí)現(xiàn)了所需的控制要求和創(chuàng)新要求。
附錄1:程序清單
#include
for(y=110;y>0;y--);} void main(){ key=1;num=0;while(1){
if(num==0)
{
for(j=0;j<10;j++)
{
if(key==0)
{
delay(10);
if(key==0)
{
num=1;
公 // //1 //2 //3 //4 //5 //6 //7 //8
while(!key);
}
}
if(num!=0)
break;
for(k=0;k<30;k++)
{
scan=0x01;
for(i=0;i<8;i++)
{
P0=table[j][i];
P1=scan;
delay(2);
scan<<=1;
}
} } } if(num==1){
for(j=0;j<8;j++)
//8組數(shù)據(jù)
{
if(key==0)
{
delay(10);
if(key==0)
{
num=2;
while(!key);
}
}
if(num!=1)
break;
for(k=0;k<10;k++)
{
scan=0x01;
//初始掃描信號
for(i=8;i>0;i--)
//掃描周期
{
if(i>j)P0=table1[8+(j-i)];
else P0=table1[j-i];
P1=scan;
delay(2);
scan<<=1;
}
}
}
}
if(num==2)
{
if(key==0)
{
delay(10);
if(key==0)
{
num=0;
while(!key);
}
}
scan=0x01;
for(i=0;i<8;i++)
{
P0=table2[count++];
if(count==8)count=0;
P1=scan;
delay(2);
scan<<=1;
}
}
} }
附錄2:點(diǎn)陣的放置與接線方法:
附錄3:硬件原理圖
第三篇:單片機(jī)16點(diǎn)陣漢字顯示課程設(shè)計(jì)
一、前言
1.1設(shè)計(jì)制作產(chǎn)品的背景、目的及設(shè)計(jì)要求
本項(xiàng)目為16x16點(diǎn)陣漢字顯示“新年快樂”的設(shè)計(jì),首先將本次實(shí)訓(xùn)的電路圖在仿真軟件上繪制完成,將點(diǎn)陣文件存入ROM,形成漢字編碼,再進(jìn)行相關(guān)轉(zhuǎn)換,以新編碼提取相應(yīng)的點(diǎn)陣漢字顯示。將相應(yīng)編碼代入運(yùn)行程序,進(jìn)行調(diào)試和準(zhǔn)備。
1.2分工情況、工作計(jì)劃及本人所承擔(dān)工作
1.周一 1~4 進(jìn)行分組,選題 和軟件的安裝 2.周二 1~4 進(jìn)行電路的設(shè)計(jì)及程序編寫 3.周三 1~4 進(jìn)行電路的設(shè)計(jì)及程序編寫 4.周四 1~4 進(jìn)行說明書的填寫 5.周五 1~4 答辯
本人在本次課程設(shè)計(jì)中承擔(dān)電路圖的繪制及相關(guān)程序的編寫與調(diào)試。
1.3本課題的設(shè)計(jì)重點(diǎn)及難點(diǎn)
本次課程設(shè)計(jì)重點(diǎn)在于單片機(jī)控制系統(tǒng)程序采用單片機(jī)匯編語言進(jìn)行編輯,通過編程控制各顯示點(diǎn)對應(yīng)LED陽極和陰極端的電平,就可以有效的控制各顯示點(diǎn)的亮滅。而其中的難點(diǎn)就在于運(yùn)行程序的編寫及相關(guān)漢字的點(diǎn)陣數(shù)據(jù),這種顯示字符的點(diǎn)陣數(shù)據(jù)可以自行編寫,也可以標(biāo)準(zhǔn)字庫中提取。
在進(jìn)行課題設(shè)計(jì)時需要熟練掌握相關(guān)電路軟件及編程軟件的使用,編寫程序時需掌握一定的C語言邏輯關(guān)系的運(yùn)用。在電路圖的繪制時需要清楚的了解各個電路設(shè)備的功能及用途。
二、實(shí)訓(xùn)內(nèi)容
2.1實(shí)訓(xùn)原理
本設(shè)計(jì)應(yīng)用的掃描方法為水平方向(X方向)掃描。
每一個字由16行16列的點(diǎn)陣形成顯示,即每個字均由256個點(diǎn)陣來表示,我們可以把每一個點(diǎn)理解為一個像素。一般我們使用的16×16的點(diǎn)陣宋體字庫,即所謂的16×16,是每一個漢字在縱橫各16點(diǎn)的區(qū)域內(nèi)顯示的。漢字庫從該位置起的32字節(jié)信息記錄了該字的字模信息。事實(shí)上這個漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。
上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由上往下的掃描方式,即從A8向A15方向掃描,按照這個方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個8位,可以得出漢字。
2.2硬件設(shè)計(jì) 2.3軟件設(shè)計(jì)
#include for(j=q;j<32+q;j++) { P1=sm[t]; P0=seg[j]; j++; P2=seg[j]; delay(50);t--; if(t==0) t=16;} q=q+32; if(q==128) q=0;} } 三.結(jié)論 3.1 實(shí)訓(xùn)過程中遇到的問題及解決措施 在本次實(shí)驗(yàn)中,我組在制作的16x16點(diǎn)陣顯示漢字“新年快樂”的課程設(shè)計(jì)中,首先在使用單片機(jī)仿真軟件找尋相關(guān)設(shè)備時沒有找到16x16的點(diǎn)陣設(shè)備,繼而用四個8x8的點(diǎn)陣排列組合予以替代。 依據(jù)相關(guān)教材及指導(dǎo)教師的參考和建議,我組對于本次設(shè)計(jì)的電路圖采用了通用模板設(shè)計(jì)。 此次課程設(shè)計(jì)的運(yùn)行程序是我組在設(shè)計(jì)中的最大難點(diǎn),后經(jīng)多方查資料及參考詢問,我組找到了相應(yīng)漢字在點(diǎn)陣中的排序規(guī)律,順利編寫出代碼。 3.2 今后的學(xué)習(xí)展望 經(jīng)過這次的單片機(jī)課程設(shè)計(jì),從產(chǎn)生設(shè)計(jì)想法到實(shí)際操作,到最終的設(shè)計(jì)完成,中間遇到的困難及困難的解決,讓我更進(jìn)一步了解了單片機(jī),讓我不再僅僅局限于書本上。 本次的設(shè)計(jì)經(jīng)驗(yàn)對于我們?nèi)蘸蟮膶W(xué)習(xí)工作有非常重要的作用,在遇到困難時可以不僅僅從書本上找解決方案,還可以自己親自動手實(shí)踐來驗(yàn)證相關(guān)問題及找到解決方法。 這次難得的課程設(shè)計(jì)過程中我鍛煉了自己的思考能力和動手能力。通過題目選擇和設(shè)計(jì)電路的過程中,加強(qiáng)了我思考問題的完整性和實(shí)際生活聯(lián)系的可行性。在方案設(shè)計(jì)選擇和芯片的選擇上,培養(yǎng)了我們綜合應(yīng)用單片機(jī)的能力,對單片機(jī)的各個管腳的功能也有了進(jìn)一步的認(rèn)識。還鍛煉我們個人的查閱技術(shù)資料的能力,動手能力,發(fā)現(xiàn)問題,解決問題的能力。并且我們熟練掌握了有關(guān)器件的性能及測試方法。 四、心得體會 本次的設(shè)計(jì)經(jīng)驗(yàn)對于我們?nèi)蘸蟮膶W(xué)習(xí)工作有非常重要的作用,在遇到困難時可以不僅僅從書本上找解決方案,還可以自己親自動手實(shí)踐來驗(yàn)證相關(guān)問題及找到解決方法。 單片機(jī)這門課是一科非常重視動手實(shí)踐的科目,不能總是看書,但是也不能完全不看書。單片機(jī)并不象傳統(tǒng)的數(shù)字電路或模擬電路那樣比較直觀,原因是除了“硬件”之外還存在一個“軟件”的因素。正是這個“軟件”的原因使得許多初學(xué)者怎么也弄不懂單片機(jī)的工作過程,怎么也不明白為什么將幾個數(shù)送來送去就能讓數(shù)碼管顯示一串字符或控制一個電機(jī)的變速。對初學(xué)單片機(jī)的人來說,需要從書中大概了解一下單片機(jī)的各個功能寄存器,如果看的多了反而容易搞亂,現(xiàn)在市場上大多數(shù)講單片機(jī)的書一開始就講解較復(fù)雜的內(nèi)存、地址、存儲器什么的,更讓初學(xué)者感到不知所云、難以入門。如果按教科書式的學(xué)法,上來就是一大堆指令、名詞,學(xué)了半天還搞不清這些指令起什么作用,能夠產(chǎn)生什么實(shí)際效果,那么也許用不了幾天就會覺得枯燥乏味而半途而廢。簡單的說,使用單片機(jī)實(shí)際上就是用我們自己編寫的軟件去控制單片機(jī)的各個功能寄存器。再簡單些,就是控制單片機(jī)哪些引腳的電平什么時候輸出高電平,什么時候輸出低電平。由這些高低變化的電平來控制外圍電路,實(shí)現(xiàn)我們需要的各個功能。 經(jīng)過這次的單片機(jī)課程設(shè)計(jì),從產(chǎn)生設(shè)計(jì)想法到實(shí)際操作,到最終的設(shè)計(jì)完成,中間遇到的困難及困難的解決,讓我更進(jìn)一步了解了單片機(jī),讓我不再僅僅局限于書本上。 16X16點(diǎn)陣顯示廣告牌 電路說明: J1 為5V電源輸入 S2 電源開關(guān) D1 電源指示燈 R1 指示燈限流電阻 U3 單片機(jī)AT89S52 U1 U2 驅(qū)動列掃描74HC595 串入并出。C1 R10 單片機(jī)上電復(fù)位,S1 手動復(fù)位。 Y1 C2 C3 為單片機(jī)提供時鐘 R2……R9 R27…….R34 為點(diǎn)陣的限流電阻(為了更亮些 本設(shè)計(jì)使用2K電阻)。 R11…..R26 三極管基極電阻 Q1------Q16 S8550點(diǎn)陣驅(qū)動三極管 A1…..A4 8*8點(diǎn)陣 組成16*16點(diǎn)陣屏。 注:PROTEUS仿真圖為了仿真方便沒加驅(qū)動三極管及電阻(不影響仿真效果) 芯片資料: AT89S52腳位: AT89C51腳位: 74HC595腳位: 8*8點(diǎn)陣腳位: USB母頭: 答辯常見問題: 單片機(jī)正常工作的三個條件: 1.5V供電 2.復(fù)位電路 3.時鐘脈沖(即晶振) 單片機(jī)的29 30腳為何空著: 29腳PSEN是連接 外部ROM時選通信號。 30腳 當(dāng)訪問外部存儲器時,ALE作為鎖存擴(kuò)展地址的低8位字節(jié)的控制信號。當(dāng)訪問外部數(shù)據(jù)存儲器時,ALE以十二分之一振蕩頻率輸出正脈沖,同時這個引腳也是EPROM編程時的編程脈沖輸入端。故此用不上。 單片機(jī)31腳為何要接高電平: 31腳為內(nèi)部程序存儲器和外部程序存儲器選擇端。當(dāng)31腳(EA /Vpp)為高電平時,訪問內(nèi)部程序存儲器,當(dāng) 31腳(EA/Vpp)為低電平時,則訪問外部程序存儲器。 此點(diǎn)陣為何要用兩片74HC595,一片可以嗎: 不可以,74HC595是串入8并出,一片只能驅(qū)動八列。 可以用其它的芯片代換74HC595嗎: 可以的,74HC138可以,它是三----八譯碼器。74HC154也可以,它是四-----十六譯碼器。 如何使點(diǎn)陣更亮些: 1.修改限流電阻(阻值越小點(diǎn)陣越亮)。2.在每列加三極管驅(qū)動。 此點(diǎn)陣為什么有拖影: 是的,一般拖影有三種可能,一是:CPU處理速度太慢,即時鐘頻率低。二是:字移動的速度太快(人眼的視覺暫留引起)。三是:與點(diǎn)陣屏有關(guān)(本點(diǎn)陣屏采用的是可見發(fā)光芯,由于是可見發(fā)光芯,當(dāng)他熄滅瞬間我們可以見到發(fā)光芯慢慢熄滅,此種屏的好處就是比不可見發(fā)光芯的點(diǎn)陣屏要亮些)。 此點(diǎn)陣在不修改硬件的情況下可往上或下移動嗎: 不可以,要其向上或向下移動,需要加其他鎖存信號的芯片。 此電路具有斷電記憶嗎? 沒有,需要加24CXX存儲器。24CXX是一種EEPROM,即一種存儲器,(24C01、24C02、24C04、24C08、24C16等)這種存儲器的特性是掉電保存,并且可以重復(fù)擦寫。 此16*16點(diǎn)陣可擴(kuò)展更大的點(diǎn)陣嗎: 可以的,可擴(kuò)展16*24 16*32等等,列驅(qū)動可用74HC595來完成,因?yàn)榇诵酒加脝纹瑱C(jī)的I/O更少些。也可擴(kuò)展24*24 24*32等等。行 列同樣可以用74HC595來驅(qū)動實(shí)現(xiàn)。 單片機(jī)AT89C51與 AT89C52區(qū)別: 他們是互相兼容的,引腳排列一樣可以相互替換,存儲空間不一樣AT89C51是4KB的,AT89C52是8KB的 程序可以大點(diǎn) 還有就是52多個定時器T 2 單片機(jī)AT89S52與 AT89C52兼容嗎? 完全兼容,AT89S52多了在線下載功能,更方便(最大的區(qū)別就是C52需要把芯片從線路板上摳下來放到編程器上燒寫程序,之后再放回去,極不方便。S52就不用,可以在線路板上下載程序即支持ISP下載,非常方便。AT89C52已經(jīng)停產(chǎn)了,市面上不多見了。) 單片機(jī)AT89S52與 AT89C52對比: AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計(jì)數(shù)器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash存儲器可有效地降低開發(fā)成本。 AT89S52是一個低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn) MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。 AT89S52具有如下特點(diǎn):40個引腳,8k Bytes Flash片內(nèi)程序存儲器,256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計(jì)數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。 親,答辯之前首先要對電路熟悉。以上是幫助親,熟悉電路。親,還可以多找些相關(guān)資料,以便順利通過答辯。 如 親,還有疑問,請咨詢我們。QQ:905653785 24. 8X8 LED點(diǎn)陣顯示技術(shù) 1. 實(shí)驗(yàn)任務(wù) 在8X8 LED點(diǎn)陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環(huán)下去。2. 電路原理圖 圖4.24.1 3. 硬件電路連線 (1). 把“單片機(jī)系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DR1-DR8”端口上;(2). 把“單片機(jī)系統(tǒng)”區(qū)域中的P3端口用8芯排芯連接到“點(diǎn)陣模塊”區(qū)域中的“DC1-DC8”端口上; 4. 程序設(shè)計(jì)內(nèi)容(1). 8X8 點(diǎn)陣LED工作原理說明 8X8點(diǎn)陣LED結(jié)構(gòu)如下圖所示 圖4.24.2 從圖4.24.2中可以看出,8X8點(diǎn)陣共需要64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;因此要實(shí)現(xiàn)一根柱形的亮法,如圖49所示,對應(yīng)的一列為一根豎柱,或者對應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述: 一根豎柱:對應(yīng)的列置1,而行則采用掃描的方法來實(shí)現(xiàn)。一根橫柱:對應(yīng)的行置0,而列則采用掃描的方法來實(shí)現(xiàn)。 6. C語言源程序 #include 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++){ for(i=0;i<8;i++){ P3=0x00;P1=tabb[i];delay1();} } } } //from bottom to top 3 time第四篇:16X16點(diǎn)陣顯示廣告牌設(shè)計(jì) 說明
第五篇:24. 8X8 LED點(diǎn)陣顯示技術(shù)(精選)