家里被水淹了,本来去参加年会的,结果只好窝在家里排水外加研究下摇摇棒。。。。我旁边的人家用荧光棒召唤来了武警叔叔送吃的。我各种羡慕,决定搞个摇摇棒,然后就从以前一个朋友剩下的摇摇棒空PCB板开始做。现在碰到取模的问题的,不知道大家能不能给我点提示。。。
是这样的。这个朋友的PCB是按照
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ,这个地址里面的修改而成。但是他给我的源程序和地址里面有一点小小的不同。造成我无法正确的给汉字取模。
下面我就贴上来,大家帮我分析下怎么取模。
/*****显示子程序1(汉字)*****/
void display1(void)
{
uchar i;
if(num>10){disp++;num=0;} //12个汉字分为3次显示完(每次显示4个),每中断10次切换
if(disp>2)disp=0;
DelayUs(5200); //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可
for(i=0;i<64;i++)
{
P0=~hanzi[disp*128+i*2];
P2=~hanzi[disp*128+i*2+1];
DelayUs(100);
}
}
这是原帖的。
/*****显示子程序1(汉字)*****/
void display1(void)
{
uchar i;
if(num>10){disp++;num=0;} //12个汉字分为3次显示完(每次显示4个),每中断10次切换
if(disp>2)disp=0;
DelayUs(5200); //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可
for(i=64;i>0;i--)
{
P2=~hanzi[disp*128+i*2];
P0=~hanzi[disp*128+i*2+1];
DelayUs(100);
}
}
这是我手边的源程序。
区别就在那条FOR语句,一个从0开始自增计数,一个从64开始自减计数。
按照我的理解,这两个的区别就是个取反的问题。
现在的情况是,我用自增的源程序也能显示,但是现实出来的内容左右镜像,并且顺序错误。
用自减的源程序不管是用PC TO LCD软件还是晓奇取模用相同的字都没法取出和他自减的程序里面一样的数值。
不巧暂时无法联系作者本人。。。不知道按照大家的理解是怎么样的或者如果我想的没错的话,取反怎么取才好?
目前,我分析出了ASCII码用这两个程序的区别,只要用自增的取模参数取模,然后每两串数据换位置就好,但是汉字我分析不出来了。
以下是自减程序里面的字模编码,大家或者看看是如何设置参数才能取得以上数值。正向逆向和上高位下高位的参数我都试了个遍,没法取成一样的。
0x20,0x08,0x24,0x10,0x22,0x60,0x21,0x80,
0x26,0x41,0x39,0x32,0x02,0x04,0x0C,0x18,
0xF0,0x60,0x13,0x80,0x10,0x60,0x10,0x18,
0x14,0x04,0x18,0x02,0x00,0x01,0x00,0x00,//*"欢",0*/
0x02,0x00,0x02,0x02,0x42,0x04,0x33,0xF8,
0x00,0x04,0x00,0x02,0x3F,0xF2,0x20,0x22,
0x40,0x42,0x00,0x02,0x3F,0xFE,0x20,0x42,
0x20,0x22,0x3F,0xC2,0x00,0x02,0x00,0x00,//*"迎",1*/
0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x00,
0x20,0x01,0x27,0x81,0x24,0xA2,0x24,0x94,
0x24,0x88,0xFF,0xF4,0x24,0x82,0x24,0x82,
0x24,0x81,0x27,0x81,0x20,0x01,0x00,0x00,//*"使",2*/
0x00,0x01,0x00,0x06,0x7F,0xF8,0x44,0x40,
0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xFE,
0x44,0x40,0x44,0x40,0x44,0x42,0x44,0x41,
0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,//*"用",3*/