串口通信之點(diǎn)陣左移

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