Как я могу прокрутить буквы слева направо или справа налево с точечной матрицей? - PullRequest
0 голосов
/ 22 октября 2019

Я сделал код, который можно прокручивать вверх или вниз, но не могу найти, как прокрутить это вправо влево или слева направо

Я пытался что-то изменить с помощью modify, например vram [i] >> 1 до vram [i + 1] (на основе кода прокрутки вверх-вниз). но не знаю, как улучшить Practich11.h - это заголовочный файл для установки PIC16F877A и содержимого для него:

устройство АЦП = 10

использовать задержку (кристалл = 4194304)

здесьмой код:

#include <16F877A.h>
#include <practice11.h>
#byte porta=5
#byte trisa=0x85
#zero_ram
unsigned int16 din;  
unsigned int8 data1;  
unsigned int8 data2;  
unsigned int8 i;  
unsigned int8 j,k,n;  
unsigned int8 s[8],t;  
const char korea_font[6][8]={{0, 0, 0, 0, 0, 0, 0, 0},
{0x7f, 0x08, 0x14, 0x22, 0x41, 0, 0, 0},
{0x3e, 0x41, 0x41, 0x41, 0x3e, 0, 0, 0},
{0x7f, 0x09, 0x19, 0x29, 0x46, 0, 0, 0},
{0x7f, 0x49, 0x49, 0x49, 0x49, 0, 0, 0},
{0x7f, 0x11, 0x11, 0x11, 0x7e, 0, 0, 0}
};  
unsigned int8 vram[8];


void trans(){  
    din=data1;  
    din=din<<8;  
    din = din | data2;  
    bit_clear(porta,1);  
    for(j=0;j<16;j++){  
        if(bit_test(din,15)==1) bit_set(porta,0);  
        else bit_clear(porta,0);  
        delay_us(5);  
        bit_set(porta,2);  
        delay_us(5);  
        bit_clear(porta,2);  
        delay_us(5);  
        din=din<<1;  
    }  
    bit_set(porta,1);  
}  

void op(){  
    unsigned int8 m;  
    for(m=0;m<8;m++){  
        data1=(m+1);  
        data2=vram[m];  
        trans();  
    }  
}  

#INT_TIMER0
void timer0_isr(void){  
    t++;  
    if(t==6) t=0;  
    if(t==0){  
        op();  
    }
}

void main(){  
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4|RTCC_8_BIT);   
    enable_interrupts(INT_TIMER0);  
    enable_interrupts(GLOBAL);  
    trisa=0;  
    bit_set(porta,1);  
    delay_ms(5);  
    data1=0xc;  
    data2=1;  
    trans();  
    data1=0xf;  
    data2=0;  
    trans();  
    data1=9;  
    data2=0;  
    trans();  
    data1=0xb;  
    data2=7;  
    trans();  
    data1=0xa;  
    data2=3;  
    trans();  
    delay_ms(1);  

    for(i=0;i<8;i++) s[i] = korea_font[0][i];  

    while(TRUE){
        for(i=0;i<8;i++){
            vram[i] = vram[i]>>1;
            if(bit_test(s[i],7)==1) bit_set(vram[i],0);
            else bit_clear(vram[i],0);
            s[i] = s[i]>>1;
        }
        n++;
        if(n==8){
            n = 0;
            k++;
            if(k==6) k=0;
            for(i=0;i<8;i++) s[i] = korea_font[k][i];
        }

        delay_ms(100);
    }
}
...