FORj:=1 TO 100 DO (*j作为横坐标*)
IFxFact>0 THEN (*因为xFact要作为除数,所以要大于0*)x:=INT_TO_REAL(j+iMove)/xFact; (*iMove是时间的移动,让曲线动起来*)ELSEx:=INT_TO_REAL(j+iMove); (**)END_IF
arrY_real[j]:=(SIN(x)+1)*4; (*因为正弦曲线是从-1到1,因此要向上偏移,因为一个模块的高度是8个LED,所以从-1~1对应的是0~8*)
CASEREAL_TO_BYTE(arrY_real[j]) OF (*因为16个LED的顺序是从上方开始排,所以要进行顺序的调换*)0:arrByte[j]:=0;1:arrByte[j]:=128; (*1=>10000000,1表示亮,128表示最高位亮,第8盏灯在模块最底下*)2:arrByte[j]:=64;3:arrByte[j]:=32;4:arrByte[j]:=16;5:arrByte[j]:=8;6:arrByte[j]:=4;7:arrByte[j]:=2;8:arrByte[j]:=1;END_CASE
END_FOR
FORi:=1 TO 16 DO
arr2809:=arrByte[i*2-1]+arrByte[2*i]*256;(*将字节组合成一个字,输出给模块*)
END_FOR