Hola estimados por mis estudios debo hacer una matriz de led 8x40 con registros 74hc164 donde el texto debe desplazarse de izq a derecha, con una memoria donde debo guardar el texto e desplegar y la verdad que no se por donde empezar, agradecer de su buena voluntad para ayudarme y orientarme como lo puedp hacer
adjunto proteus de lo que se debe hacer
Juan Carlos
Adjunto lo que he hecho pero no me fimciona, me pueden ayudar
Como primera etapa se debe hacer solo las letras J. I y M, se deben desplazarse de derecha a izq. en forma indefinida
#include <16f628.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT
#USE DELAY(clock=4MHZ)
#define data PIN_A3
#define clock PIN_A2
#byte port_b=0X06
void escribir(int *letra,int time);//variable
void cargar_dato(int dato);//variable
void muestra_fila(int fila);//variable
void desplazar_(int *letra,int velocidad);//Variable
void desplazar_izq (int *m_actual,int *m_siguiente,int refresh); //variables globales
int *m_actual,*m_anterior,desplazamiento,matriz_mostra r[8];
int *p,*p2,col,fila;
int M[8]={ 0b11000011, //letras a utilizar
0b11100111,
0b11111111,
0b11011011,
0b11000011,
0b11000011,
0b11000011,
0b11000011};
int J[8]={ 0b11111111,
0b11111111,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b11111000,
0b11110000};
int I[8]={ 0b00111100,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00111100};
void main(){
SET_TRIS_B(0x00);
output_low(data);
output_low(clock);
port_b=0x00;
while (true){
p2=J;
desplazar_izq(p,p2,10);
p=p2;
p2=I;
desplazar_izq(p,p2,10);
p=p2;
p2=M;
desplazar_izq(p,p2,10);
}
}
void escribir(int *letra,int time){
while (time>0){
for (fila=0;fila<8;fila++){
cargar_dato(letra[fila]);
muestra_fila(fila);
}
time--;
}
}
void muestra_fila(int fila){
bit_set(port_b,fila);
delay_us(400);
bit_clear(port_b,fila);
}
void cargar_dato(int dato){
for(col=0;col<8;col++){
output_bit(data,(dato & 0x1));
dato=dato<<1;
output_low(clock);
output_high(clock);
}
}
void desplazar_izq (int *m_actual,int *m_siguiente,int refresh){
escribir(m_actual,20);
for (fila=0;fila<8;fila++){ //escribo en la matriz lo que necesito escribir
matriz_mostrar[fila]=m_actual[fila]; //asi solo modifico la matriz a desplazar.
}
desplazamiento=8;
while (desplazamiento!=0){
for (fila=0;fila<8;fila++){ //modifico la matriz a mostrar
matriz_mostrar[fila]=(matriz_mostrar[fila]<<1)+(bit_test(m_siguiente,desplazamiento)); //
}
escribir(p,refresh);
desplazamiento--;
}
}
Si consideran que esta muy malo, agradecere modificar
JuKa