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