串口通信之點(diǎn)陣左移
(*注:圖中各595的pin10腳相連接后與+Vcc相連。)
驅(qū)動(dòng)程序可根據(jù)本人的16*16點(diǎn)陣程序改編,另外還有一個(gè)本人對程序中顯示數(shù)據(jù)生成函數(shù)的解釋資料一并錄于此處,也歡迎切磋。
語句temp=(h1<>(8-tempcol));的設(shè)計(jì)原理:
下面我們以程序進(jìn)行左移3位的運(yùn)算為例解釋一下語句temp=(h1<>(8-tempcol));的設(shè)計(jì)原理;我們知道,在8位二進(jìn)制數(shù)據(jù)進(jìn)行運(yùn)算時(shí),若要將一個(gè)3位的二進(jìn)制數(shù)據(jù)置入另一個(gè)8位二進(jìn)制數(shù)據(jù)后3位的空位中,(注:這里所說的數(shù)據(jù)置入,是指當(dāng)一個(gè)顯示數(shù)據(jù)顯示后,這個(gè)數(shù)據(jù)經(jīng)左移以后變成了下一個(gè)要顯示的新數(shù)據(jù),而這個(gè)新的數(shù)據(jù)實(shí)際上就是由已顯示數(shù)據(jù)的前7位與后一個(gè)數(shù)據(jù)的前1位數(shù)據(jù)組合形成的,也就相當(dāng)與將后面的數(shù)據(jù)置入了前一個(gè)數(shù)據(jù)。)可以采用的方法不外乎有兩個(gè),一個(gè)是加入YYYYY000+00000XXX=YYYYYXXX。另一個(gè)方法是按位或,而后一個(gè)方法更加直觀方便。本語句就是采用了按位或的方法,詳解如下:設(shè)寄存器D中有數(shù)據(jù)D=0X33=00110011其左移3位后D中的數(shù)據(jù)改變?yōu)?0011000后置入DY(數(shù)據(jù)移出后寄存器相應(yīng)位自動(dòng)清零); 設(shè)寄存器C中有數(shù)據(jù)C=0XA6=10100110其右移8-3=5位后C中的數(shù)據(jù)改變?yōu)?0000101后置入CY。 DY|CY運(yùn)算后,結(jié)果為10011101其結(jié)果不難看出,相當(dāng)于將C(0XA6)中的前3位數(shù)據(jù)左移進(jìn)入了DY的后3位中。這一算式的設(shè)計(jì),是為了適應(yīng)我們的硬件系統(tǒng),解決了一個(gè)8位顯示數(shù)據(jù)由當(dāng)前的8位鎖存輸出芯片(595)進(jìn)入下一片(595)時(shí)能夠保持連貫;因?yàn)槲覀兊挠布到y(tǒng)的組成為8位單片機(jī)通過級(jí)聯(lián)的8位數(shù)字電路驅(qū)動(dòng)點(diǎn)陣屏,假如我們的硬件無所不有,那么,我們可以使用16位的系統(tǒng)驅(qū)動(dòng)16列的屏,32位驅(qū)動(dòng)32列,64位驅(qū)動(dòng)64列,128位……。那么我們只要用一句簡單的移位語句,即可達(dá)到目的,就不必如此費(fèi)周折了。
驅(qū)動(dòng)程序可根據(jù)本人的16*16點(diǎn)陣程序改編,另外還有一個(gè)本人對程序中顯示數(shù)據(jù)生成函數(shù)的解釋資料一并錄于此處,也歡迎切磋。
語句temp=(h1<
下面我們以程序進(jìn)行左移3位的運(yùn)算為例解釋一下語句temp=(h1<
評(píng)論