問題是這樣的: 字體取模后,導入程序中去。顯示時是反的:比如:專業制作 變成:作制業專。取模軟件里也水平翻轉了也不行。每次要用【文字倒寫軟件】:變成:作制業專 輸入到取模軟件里,再水平翻轉,然后生產字模數據。再導入程序中,真是N麻煩啊!有哪位高手幫我指點一下,本人是學生。謝謝了! 付程序: #include " reg51.h" #define BLKN 8 #define TOTAL 4//注明顯示字個數// #define CONIO P0//定義輸出端口// sbit G = CONIO^7;//G1=P1.7=8腳// sbit CLK = CONIO^6;//RCLK=P1.6=7腳// sbit SCLR = CONIO^5;//SRCLK=P1.5=6腳// unsigned char idata dispram[(BLKN/2)*32]={0};//顯示區緩存,4字共*32單元// unsigned char code Bmp[][32]={ 0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xFD,0xFF,0xFD,0xFF,0x00,0x01,0xFB,0xFF,0xF7,0xDF, 0xF0,0x0F,0xFF,0xDF,0xFF,0xBF,0xFD,0x7F,0xFE,0xFF,0xFF,0x7F,0xFF,0xBF,0xFF,0xFF,/*"專",0*/ 0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0xBB,0xB9,0xDB,0xB3,0xDB,0xB7,0xEB,0xAF, 0xE3,0xAF,0xEB,0x9F,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x00,0x01,0xFF,0xFF,0xFF,0xFF,/*"業",1*/ 0xDB,0xFB,0xCB,0xFB,0xDB,0xDB,0xC0,0x5B,0xBB,0xDB,0xFB,0xDB,0x80,0x5B,0xFB,0xDB, 0xC0,0x5B,0xDB,0x5B,0xDB,0x5B,0xDB,0x5B,0xDB,0x7B,0xD8,0x7B,0xFA,0xEB,0xFB,0xF7,/*"制",2*/ 0xF7,0x7F,0xF3,0x7F,0xF6,0xFF,0xEC,0x01,0xED,0x7F,0xCB,0x77,0xAF,0x03,0x6F,0x7F, 0xEF,0x7F,0xEF,0x7B,0xEF,0x01,0xEF,0x7F,0xEF,0x7F,0xEF,0x7F,0xEF,0x7F,0xEF,0x7F,/*"作",3*/ }; /****延時函數(約1MS)**********/ void delay(unsigned int dt) { register unsigned char bt; for(;dt;dt--) for(bt=0;bt<255;bt++); } /******主函數********/ void main (void) { register unsigned char q,w ,i,j,k; //i,j,k,l,q,w; //初始化 SCON = 0x00; TMOD = 0x01; TR0 = 1; CONIO = 0x3f; IE = 0x82; while(1) { delay(2000);//2S 問題就是在下面程序不知怎么更改:才能把字體顯示順序正常!請求幫忙! // 卷簾顯示文字,每次字數為BLKN/2,共顯示TOTAL*2/BLKN次 for(w=0;w< TOTAL*2/BLKN;w++) { for(i=0;i<32;i++) { for(q=0;q<BLKN/2;q++){dispram[i+q*32]=Bmp[q+w*BLKN/2];} if(i%2) delay(100);//移動時間 } delay(2000);//停止時間 } //第二種顯示效果,向上滾屏,每次BLKN/2個字 for(i=0;i<TOTAL*2/BLKN;i++) { for(j=0;j<16;j++) { for(k=0;k<15;k++) { for(q=0;q<BLKN/2;q++) {dispram[k*2+q*32] = dispram[(k+1)*2+q*32]; dispram[k*2+1+q*32] = dispram[(k+1)*2+1+q*32];} } for(q=0;q<BLKN/2;q++) {dispram[30+q*32] = Bmp[q+i*BLKN/2][j*2]; dispram[31+q*32] = Bmp[q+i*BLKN/2][j*2+1];} delay(100); }
delay(1000); //滾動暫停
以下是左移方式時,字又正常!
} for(i=0;i<TOTAL;i++) { for(j=2;j>0;j--) for(k=0;k<8;k++) { for(l=0;l<16;l++) { for(q=0;q<BLKN/2;q++) { dispram[l*2+1+q*32]= dispram[l*2+1+q*32]>>1| dispram[l*2+q*32]<<7; if(q==0) dispram[l*2+q*32]= dispram[l*2+q*32]>>1|Bmp[l*2+j-1]<<(7-k); else dispram[l*2+q*32]= dispram[l*2+q*32]>>1| dispram[l*2+1+(q-1)*32]<<7; } } delay(100);//移動時間 |