標(biāo)題: 單片機(jī)控制點(diǎn)陣學(xué)習(xí)基礎(chǔ),適合新手 有Proteus仿真圖和程序 [打印本頁(yè)]
作者: 537224 時(shí)間: 2020-10-8 22:40
標(biāo)題: 單片機(jī)控制點(diǎn)陣學(xué)習(xí)基礎(chǔ),適合新手 有Proteus仿真圖和程序
經(jīng)過(guò)學(xué)習(xí),今天整理了8*8點(diǎn)陣學(xué)習(xí)的基礎(chǔ),有Proteus仿真圖和單片機(jī)程序、word說(shuō)明文檔、取模軟件,適合新手,應(yīng)能看懂入門(mén)。后續(xù)隨時(shí)間增加移動(dòng)、16*16等。我也在學(xué)習(xí),期待高手幫助,謝謝。
在Proteus中,有4種8*8點(diǎn)陣模型,分別為MATRIX-8*8-BLUE(藍(lán)色,上圖第1個(gè))、MATRIX-8*8-GREEN (綠色,上圖第2個(gè))、 MATRIX-8*8-ORANGE (橙色,上圖第3個(gè))、MATRIX-8*8-RED(紅色,上圖第4個(gè))。每個(gè)8*8點(diǎn)陣均由64個(gè)LED小燈組成,如左邊D1、D2所示:當(dāng)在D1加正向電壓時(shí),LED小燈點(diǎn)亮,當(dāng)在D2加反向電壓時(shí),LED不亮,這是點(diǎn)陣學(xué)習(xí)的基礎(chǔ)。
如上圖,在Proteus中,,不進(jìn)行任何旋轉(zhuǎn)操作,直接放置4種點(diǎn)陣,加上電源后,只有紅色點(diǎn)陣第1排亮2個(gè)燈,其他均不亮。由圖可知道,上排2根線,有2列有燈亮,即上排接通的列選,下排接通行選。當(dāng)高電平選中列、低電平選中行時(shí),相應(yīng)LED燈亮。
如上圖,當(dāng)我們把電源極性相反后,紅色點(diǎn)陣不亮,其他3種都為左邊第1、2排第1列亮2個(gè)LED燈。上排有2根線,而第1排、第2排有燈亮,即說(shuō)明上排接通行選,因?yàn)橛?根線所以有2行有燈亮,那下排就是接通列選。由圖可知,這3種也是高電平選中列、低電平選中行時(shí),相應(yīng)LED燈亮。
由此,我們得出3點(diǎn)結(jié)論:
1、仿真效果上看,綠色和紅色顯示較清楚,藍(lán)和橙色顯示不夠清楚,這就是我們下面選紅或綠做仿真的原因。
2、紅色的點(diǎn)陣是上列選下行選,其他3種是上行選下列選。如圖1,紅色上面接2根線,因?yàn)樯厦媸橇羞x,說(shuō)明選擇了2列,下面接了1根線,說(shuō)明選擇了1行,所以就是第一行左邊2個(gè)燈亮。圖2同理是點(diǎn)了2排的第1個(gè)。
3、以上4種點(diǎn)陣,無(wú)論上列選下行選還是上行選下列選,都是當(dāng)高電平選中列、低電平選中行時(shí),相應(yīng)LED燈亮。此為編程的基礎(chǔ)。
例如我要點(diǎn)亮紅色點(diǎn)陣的第一行,因?yàn)樗巧狭羞x,下行選,高電平選中列、低電平選中行時(shí)相應(yīng)LED燈亮,所以需在下面第1個(gè)端子加GND,上面8個(gè)端子加VCC,如下圖:
如果我要1、3、5、6行亮,則只需將行選信號(hào)(下端子)第1、3、5、6加GND即可,如下圖:
這樣,紅色點(diǎn)燈點(diǎn)亮方法我們就知道了。接下來(lái)我們看看其他點(diǎn)陣點(diǎn)亮的方法,以綠色為例。還是以點(diǎn)亮點(diǎn)陣的第一行為例。綠色點(diǎn)陣,上行選下列選,高電平選中列、低電平選中行時(shí)相應(yīng)LED燈亮。所以應(yīng)該為上面第1個(gè)端子為行選信號(hào),接一個(gè)GND,下面的端子為列信號(hào),全部給VCC即可,如下圖:
如果我要2、4、6行亮,該怎樣辦呢?很顯然,就是行信號(hào)相應(yīng)位置選中(給GND)即可,如圖: 
明白了這點(diǎn),我們可以開(kāi)始我們的編程了。上面示例為硬件測(cè)試,由讀者自行在Proteus中畫(huà)出即可。
第1節(jié):通過(guò)編程,控制綠色點(diǎn)陣點(diǎn)亮左上角第一個(gè)LED燈。
分析:綠色點(diǎn)陣為上行選,下列選,高電平給列,低電平給行時(shí)即亮。因此,編程將上端子第1個(gè)端子寫(xiě)0,下端子第1個(gè)端子寫(xiě)1即可。原理圖如下:
程序如下:
//本程序點(diǎn)亮綠色點(diǎn)陣第一個(gè)燈,P2.7接上排第1個(gè),行選,應(yīng)給低電平;P3.7接上排第1個(gè),列選,應(yīng)給高電平。
#include<reg52.h> //定義頭文件
void main() //主函數(shù)開(kāi)始
{
P2=0x7f;//0111 1111 第1位P2.7為0,即給行選一個(gè)低電平;
P3=0x80;//1000 0000 第1位P3.7為1,即給列選一個(gè)高電平;
while(1);//死循環(huán),能讓程序停在這里
}
第2節(jié):通過(guò)編程,控制綠色點(diǎn)陣點(diǎn)亮左上角第一排LED燈亮。
與上節(jié)相比,第1排仍需給低電平,再將列信號(hào)全部給高電平即可,仿真圖如下:
源程序如下:
#include<reg52.h> //定義頭文件
void main() //主函數(shù)開(kāi)始
{
P2=0x7f;//0111 1111 第1位P2.7為0,即給行選一個(gè)低電平;
P3=0xff;//給列選全部加一個(gè)高電平;
while(1);//死循環(huán),能讓程序停在這里
}
其他行、列等由讀者按自己想法完成,接下來(lái),介紹如果點(diǎn)亮我們需要的字符。
一般我們按行掃描方式,就是列信號(hào)給高電平,算出第一行的列信號(hào)哪個(gè)亮哪個(gè)不亮,待程序掃描完第一行,再到第二行,直到掃描完8行就完成一個(gè)字符的顯示了!巴粫r(shí)刻,有且只有一行在亮”,這是編程的基礎(chǔ),和數(shù)碼管動(dòng)態(tài)顯示一樣的。下面我們?cè)邳c(diǎn)陣上顯示“中國(guó)”的中字。首先我們把原理圖畫(huà)出來(lái),如下圖:
分析:綠色點(diǎn)陣,上行選下列選,高電平選中列、低電平選中行時(shí)相應(yīng)LED燈亮,這是編程的基礎(chǔ)。就上圖而言,我們按行掃描方式,第1行時(shí),即給P2.7低電平時(shí),P3口控制第一行哪一列亮就給高電平,否則給低電平。依次掃描完8行即可。我們可以把掃描第一行時(shí),列信號(hào)應(yīng)該給第一行送什么數(shù)先算出,其他一樣,這樣,先把列信號(hào)算出,可以用取模軟件。
1、新建圖像,選擇寬度是8,高度是8,即8*8點(diǎn)陣。
2、在取模方法選擇橫向取模,一般行掃描方式就選這個(gè)。字節(jié)倒序是滿足一些硬件需求,比如第一位應(yīng)該是接最高位,但硬件第1位接最低位,所以此處不選即可。
3、在模擬動(dòng)畫(huà)中,放大格點(diǎn),把“中”字點(diǎn)選出來(lái)。以后到16*16時(shí),可在文件輸入?yún)^(qū)輸入即可。在8*8時(shí),還是手工選擇即可。
4、在取模方式中,選C51格式,點(diǎn)陣生成區(qū)出現(xiàn)了8*8點(diǎn)陣,行掃描時(shí)的列信號(hào),將其復(fù)制到程序中即可。
完整程序如下:
#include<reg52.h> //包含頭文件
char code hang[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //行編碼,分別選中第一行至第8行
char code lie[]={0x00,0x08,0x7f,0x49,0x49,0x7f,0x08,0x08}; //行掃描時(shí),列信號(hào)編碼
void delay(int a) //延時(shí)函數(shù)
{
int x,y;
for(x=0;x<a;x++)
for(y=0;y<110;y++);
}
void main() //主函數(shù)
{
int num;
while(1)
{
for(num=0;num<8;num++)//行掃描8次,輪流選中第一行,第1個(gè)列編碼,直到第8行;
{
P2=hang[num]; //送行編碼,當(dāng)num=0時(shí)送第一行時(shí)的編碼,依次類(lèi)推送完1至8行;
P3=lie[num]; //送列編碼,每一行把相應(yīng)列該亮哪個(gè)燈送到端口。
delay(5); //送完行和列,適當(dāng)做一下延時(shí)。
}
}
}
效果圖如下:
程序不變,只需改變char code lie[]里的編碼,即可改變顯示不同的字符。如字符1。在取模軟件得出列信號(hào)為:0x08,0x18,0x08,0x08,0x08,0x08,0x08,0x1C,效果圖如下:
至此,點(diǎn)陣學(xué)習(xí)基礎(chǔ)就學(xué)完了。我們可以在8*8點(diǎn)陣上顯示固定的一些字符了。要顯示漢字,后續(xù)將8*8拼成16*16再進(jìn)行。8*8點(diǎn)陣,如何移動(dòng)等問(wèn)題還沒(méi)解決,而且8*8就用去了16個(gè)IO口,后續(xù)需減少I(mǎi)O口的使用,增加74LS138、74LS595等。我也在學(xué)習(xí)中,本文把學(xué)到的知識(shí)自己總結(jié)好發(fā)出來(lái),希望對(duì)初學(xué)點(diǎn)陣的朋友有幫助!
點(diǎn)陣學(xué)習(xí)基礎(chǔ).jpg (103.3 KB, 下載次數(shù): 56)
下載附件
點(diǎn)陣學(xué)習(xí)基礎(chǔ)
2020-10-8 22:30 上傳
全部資料51hei下載地址:
點(diǎn)陣學(xué)習(xí)基礎(chǔ).rar
(689.63 KB, 下載次數(shù): 44)
2020-10-8 22:37 上傳
點(diǎn)擊文件名下載附件
點(diǎn)陣學(xué)習(xí)基礎(chǔ),有Proteus仿真圖和程序、word說(shuō)明文檔、取模軟件。
下載積分: 黑幣 -5
作者: 569134534 時(shí)間: 2020-10-31 17:08
寫(xiě)的很詳細(xì),大贊一個(gè)
作者: 51hei團(tuán)團(tuán) 時(shí)間: 2021-8-7 15:47
好資料,51黑有你更精彩!!!
作者: qswan2 時(shí)間: 2022-10-11 13:38
寫(xiě)的很詳細(xì)全面,贊一個(gè),多謝樓主分享知識(shí)。
作者: yangbulasi 時(shí)間: 2022-12-1 10:47
講解非常詳細(xì),謝謝
作者: yangbulasi 時(shí)間: 2023-2-17 11:01
非常詳細(xì)。謝謝
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |