資源描述:
《點(diǎn)陣屏滾動(dòng)顯示》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、LED點(diǎn)陣顯示與C語(yǔ)言編程(基礎(chǔ)篇)?(2010-04-0323:18:25)轉(zhuǎn)載▼標(biāo)簽:?雜談分類(lèi):?單片機(jī)??點(diǎn)陣的接法有共陰和共陽(yáng)兩種(共陽(yáng)指的是對(duì)每一行LED來(lái)講是共陽(yáng))。由于51單片機(jī)驅(qū)動(dòng)能力有限,亮度不夠,所以一般需要三極管驅(qū)動(dòng),下圖為一個(gè)8X8點(diǎn)陣原理圖,僅僅是仿真,如果需要接實(shí)物的話,加上三極管才足夠亮。顯示的方法有兩種:1、逐列掃描方式。如下圖所示,P1口輸出列碼決定哪一列能亮(相當(dāng)于位碼),P2口輸出行碼(列數(shù)據(jù))決定列上哪些LED亮(相當(dāng)于段碼),能亮的列從左向右掃描完8列(相當(dāng)于位碼循環(huán)移位8次)即顯示出一幀完整的
2、圖像。2、逐行掃描方式,與逐列掃描調(diào)換,即P2口輸出位碼,P1口輸出段碼,掃描完8行顯示出一幀圖像。??????????????????????????????????????圖1以逐行掃描為例,從圖2可以很明了的知道點(diǎn)陣的顯示原理了(紅色表示高電平,綠色表示低電平),當(dāng)把掃描速度加快,人的視覺(jué)停留,看見(jiàn)的就是一幅圖或一個(gè)字了,如圖3所示。????????????????????????????????????????????????圖2???????????????????????????????????????????????????
3、?????圖3一、行掃描靜態(tài)顯示,用51單片機(jī)實(shí)現(xiàn)圖3靜態(tài)顯示的程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3};uchari,t;delay(uchart){while(t--){;}}voidmain(void){while(1)???{????P2=0x01;????for(i=0;i<8;i++)????{?????P1=TAB[i]
4、;???delay(100);???P2=P2<<1
5、P2>>7;???}}}二、行掃描翻頁(yè)顯示字碼取模方式為逐行第一次從字碼數(shù)組中取出第1~8個(gè)數(shù)據(jù)置于列上,行掃描順序?yàn)?~8行,顯示一幀,第二次取第9~16個(gè)數(shù)據(jù),行掃描順序仍為1~8行,顯示第二幀,第三次取第17~24個(gè)數(shù)據(jù),……實(shí)現(xiàn)圖4顯示效果的程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0
6、xFF,????//空屏???????????????????????????????0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,?????//L??????????????????????????????0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,?????//O???????????????????????????????0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,?????//V????????????????????????
7、????????0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,?????//E???????????????????????????????0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,????//空屏??????????????????????????????};uchari,t;delay(uchart){while(t--){;}}voidmain(void){ucharN,T;while(1)???{for(N=0;N<6;N++)???????//循環(huán)掃描一遍6
8、幀????for(T=0;T<100;T++)????//速度??????{????P2=0x01;??????????for(i=0;i<8;i++)?????????{??????????P1=TAB[i+8*N];??????????delay(100);???????P2=P2<<1
9、P2>>7;?????????}????}}}??????????????????????????????????????????圖4????????????????????????????????????????????圖5????????????
10、????????????????????????????????????圖6三、行掃描上下移動(dòng)顯示。如果是逐行取字模時(shí),第一次從字碼數(shù)組中取出第1~8個(gè)數(shù)據(jù)置于列上,行掃描順序?yàn)?~8行,顯示