1. 程式人生 > 其它 >哭了,這個點陣程式調了一下午

哭了,這個點陣程式調了一下午

技術標籤:微控制器

C51平臺用16X16點陣顯示漢字,
我寫了三個字:毛毛雨。
一屏顯示一個字,不滾動螢幕,是比較簡單的寫法。

void Display(uchar zimo[],uchar row[]){			  
	int k = 80,ms = 0;
	uchar i = 0;
	uchar newZimo[4];
	for(ms=k;ms > 0;ms--){
		for(;i<16;i++){
			 newZimo[0] = ~zimo[(2*i+1)];			   
			 newZimo[1] = ~zimo[(2*i)];			   
			 newZimo[2]
= row[(2*i)]; newZimo[3] = row[(2*i+1)]; inputFun(newZimo); } } inputFun(cls); }

一開始沒寫外層for迴圈,字跳得飛快。差不多是這麼個意思:

啊我的眼睛

啊我的眼睛

給加了外層for迴圈之後,要麼是沒有改變還是閃爍很快,要麼就是直接不出現字。總之就是不對,中間各種折騰各種查資料,各種重寫程式碼,甚至還換了個晶振…

//救救孩子吧都要瘋了

最後無意中把程式碼改成了這樣:

void Display(uchar zimo[],uchar row[]){			 
	int k = 80,ms = 0;
	uchar i =
0; uchar newZimo[4]; for(ms=k;ms > 0;ms--){ for(i=0;i<16;i++){ newZimo[0] = ~zimo[(2*i+1)]; newZimo[1] = ~zimo[(2*i)]; newZimo[2] = row[(2*i)]; newZimo[3] = row[(2*i+1)]; inputFun(newZimo); } } inputFun(cls); }

他就好了…好了…
僅僅是差了內層for迴圈的起始條件,之前寫過類似的寫法,也聽人說過可以省略。
百思不得解,又查了一些資料,依然無果。

大約這就是玄學吧?
我會繼續關注這種顯現,尋找答案。