Ir ao conteúdo
  • Cadastre-se

Projeto propeller clock.


Posts recomendados

Jorge, eu uso o compilador MikroC que não lê algumas instruções do seu código como o set_timer1. Acho que ele tem alguma forma específica de escrever essa função(que eu também não sei direito o que faz).

E outra coisa. Dezena, unidade e dígito correspondem a horas minutos segundos? Não entendi como o código escreve números compostos(por exemplo 12 horas) porque 1 dígito eu até entendo mas não saquei como você fez pra fazer 12 virar 1 e 2...

Se der pra me dar uma ajuda, agradeço muito.

Link para o comentário
Compartilhar em outros sites

Ola amigo, vou explicar como é feito:


void caracter(digito) {

dezena = (digito/10);
unidade = (digito-(dezena*10));

for (n=0;n<5;n++) {
output_b(table[dezena][n]);
delay_ms(1);
}
delay_ms(1);
output_b(0xff);
delay_ms(1);

for (n=0;n<5;n++) {
output_b(table[unidade][n]);
delay_ms(1);
}
delay_ms(1);
output_b(0xff);
delay_ms(1);
}

observe q apos a conta para se extrair a unidade e a dezena ,a funçao se repete duas vezes amigo,dezena e unidade,temos os dois digitos então....beleza,Qto ao microc nao mexo com ele.

Link para o comentário
Compartilhar em outros sites

Valeu jorge! Muito bom o seu projeto por sinal. Tentei escrever meu código tentando entender o teu. ainda vou tentar, mas se nada der certo uso teu código(todos os teus direitos reservados, relaxa ^^)

Mas, me explica...

#int_TIMER1 //Interrupção do Timer1

essa instruçãa serve, na prática, pra quê? por quê ela é necessária?

set_timer1 (3036); //Preload do Timer1

3036 o quê? ms?

void main() {

setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); //Configuração do Timer1 para clock interno = 1E6 dividido por 8

set_timer1 (3036);

enable_interrupts(INT_TIMER1); //Habilita interrupção timer1

enable_interrupts(global); //habilita interrupcão global

E essas instruções do Main que não entendi...

Se você desmistificar isso, tenho chance de escrever meu código \o/

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois...

Bom dia,

Segue um vídeo que fiz ontem do meu propeller.

Arquivo propeller.h (somente cabeçalho)

#include <16F628A.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
//#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=4000000)

Arquivo graphics.c (adaptado do próprio ccs)

/////////////////////////////////////////////////////////////////////////
//// Defines a 5x7 font
/////////////////////////////////////////////////////////////////////////
const int8 FONT[51][5] ={0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
0x00, 0x00, 0x5F, 0x00, 0x00, // !
0x00, 0x03, 0x00, 0x03, 0x00, // "
0x14, 0x3E, 0x14, 0x3E, 0x14, // #
0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
0x43, 0x33, 0x08, 0x66, 0x61, // %
0x36, 0x49, 0x55, 0x22, 0x50, // &
0x00, 0x05, 0x03, 0x00, 0x00, // '
0x00, 0x1C, 0x22, 0x41, 0x00, // (
0x00, 0x41, 0x22, 0x1C, 0x00, // )
0x14, 0x08, 0x3E, 0x08, 0x14, // *
0x08, 0x08, 0x3E, 0x08, 0x08, // +
0x00, 0x50, 0x30, 0x00, 0x00, // ,
0x08, 0x08, 0x08, 0x08, 0x08, // -
0x00, 0x60, 0x60, 0x00, 0x00, // .
0x20, 0x10, 0x08, 0x04, 0x02, // /
0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
0x00, 0x04, 0x02, 0x7F, 0x00, // 1
0x42, 0x61, 0x51, 0x49, 0x46, // 2
0x22, 0x41, 0x49, 0x49, 0x36, // 3
0x18, 0x14, 0x12, 0x7F, 0x10, // 4
0x27, 0x45, 0x45, 0x45, 0x39, // 5
0x3E, 0x49, 0x49, 0x49, 0x32, // 6
0x01, 0x01, 0x71, 0x09, 0x07, // 7
0x36, 0x49, 0x49, 0x49, 0x36, // 8
0x26, 0x49, 0x49, 0x49, 0x3E, // 9
0x00, 0x36, 0x36, 0x00, 0x00, // :
0x00, 0x56, 0x36, 0x00, 0x00, // ;
0x08, 0x14, 0x22, 0x41, 0x00, // <
0x14, 0x14, 0x14, 0x14, 0x14, // =
0x00, 0x41, 0x22, 0x14, 0x08, // >
0x02, 0x01, 0x51, 0x09, 0x06, // ?
0x3E, 0x41, 0x59, 0x55, 0x5E, // @
0x7E, 0x09, 0x09, 0x09, 0x7E, // A
0x7F, 0x49, 0x49, 0x49, 0x36, // B
0x3E, 0x41, 0x41, 0x41, 0x22, // C
0x7F, 0x41, 0x41, 0x41, 0x3E, // D
0x7F, 0x49, 0x49, 0x49, 0x41, // E
0x7F, 0x09, 0x09, 0x09, 0x01, // F
0x3E, 0x41, 0x41, 0x49, 0x3A, // G
0x7F, 0x08, 0x08, 0x08, 0x7F, // H
0x00, 0x41, 0x7F, 0x41, 0x00, // I
0x30, 0x40, 0x40, 0x40, 0x3F, // J
0x7F, 0x08, 0x14, 0x22, 0x41, // K
0x7F, 0x40, 0x40, 0x40, 0x40, // L
0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
0x7F, 0x02, 0x04, 0x08, 0x7F, // N
0x3E, 0x41, 0x41, 0x41, 0x3E, // O
0x7F, 0x09, 0x09, 0x09, 0x06, // P
0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
0x7F, 0x09, 0x09, 0x09, 0x76};// R

const int8 FONT2[44][5]={0x26, 0x49, 0x49, 0x49, 0x32, // S
0x01, 0x01, 0x7F, 0x01, 0x01, // T
0x3F, 0x40, 0x40, 0x40, 0x3F, // U
0x1F, 0x20, 0x40, 0x20, 0x1F, // V
0x7F, 0x20, 0x10, 0x20, 0x7F, // W
0x41, 0x22, 0x1C, 0x22, 0x41, // X
0x07, 0x08, 0x70, 0x08, 0x07, // Y
0x61, 0x51, 0x49, 0x45, 0x43, // Z
0x00, 0x7F, 0x41, 0x00, 0x00, // [
0x02, 0x04, 0x08, 0x10, 0x20, // \
0x00, 0x00, 0x41, 0x7F, 0x00, // ]
0x04, 0x02, 0x01, 0x02, 0x04, // ^
0x40, 0x40, 0x40, 0x40, 0x40, // _
0x00, 0x01, 0x02, 0x04, 0x00, // `
0x20, 0x54, 0x54, 0x54, 0x78, // a
0x7F, 0x44, 0x44, 0x44, 0x38, // b
0x38, 0x44, 0x44, 0x44, 0x44, // c
0x38, 0x44, 0x44, 0x44, 0x7F, // d
0x38, 0x54, 0x54, 0x54, 0x18, // e
0x04, 0x04, 0x7E, 0x05, 0x05, // f
0x08, 0x54, 0x54, 0x54, 0x3C, // g
0x7F, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x44, 0x7D, 0x40, 0x00, // i
0x20, 0x40, 0x44, 0x3D, 0x00, // j
0x7F, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x41, 0x7F, 0x40, 0x00, // l
0x7C, 0x04, 0x78, 0x04, 0x78, // m
0x7C, 0x08, 0x04, 0x04, 0x78, // n
0x38, 0x44, 0x44, 0x44, 0x38, // o
0x7C, 0x14, 0x14, 0x14, 0x08, // p
0x08, 0x14, 0x14, 0x14, 0x7C, // q
0x00, 0x7C, 0x08, 0x04, 0x04, // r
0x48, 0x54, 0x54, 0x54, 0x20, // s
0x04, 0x04, 0x3F, 0x44, 0x44, // t
0x3C, 0x40, 0x40, 0x20, 0x7C, // u
0x1C, 0x20, 0x40, 0x20, 0x1C, // v
0x3C, 0x40, 0x30, 0x40, 0x3C, // w
0x44, 0x28, 0x10, 0x28, 0x44, // x
0x0C, 0x50, 0x50, 0x50, 0x3C, // y
0x44, 0x64, 0x54, 0x4C, 0x44, // z
0x00, 0x08, 0x36, 0x41, 0x41, // {
0x00, 0x00, 0x7F, 0x00, 0x00, // |
0x41, 0x41, 0x36, 0x08, 0x00, // }
0x02, 0x01, 0x02, 0x04, 0x02};// ~
/////////////////////////////////////////////////////////////////////////

Arquivo propeller.c (programa principal)

#include "propeller.h"
#include "graphics.c"

int8 letra[5];

void texto57(char* textptr, int posicao){
int8 h;
h = 0;

textptr += posicao;

if(*textptr < 'S')
memcpy(letra, FONT[*textptr - ' '], 5);
else if(*textptr <= '~')
memcpy(letra, FONT2[*textptr - 'S'], 5);
else
memcpy(letra, FONT[0], 5);

}

//****************** Rotina principal ******************//
void main(){
int8 n, m, inicio, fim, atual, tamanho, comeco;

char texto[] = " Feliz 2012 a todos do Forum Clube do Hardware!! ";

*cmcon = 0x07;
atual = 0;
m=0;
tamanho = sizeof(texto)-2;

output_b(255);
output_bit(pin_a6, 1);
output_bit(pin_a7, 1);

delay_ms(3000); //Acende todos os leds por 3 segundos, para teste

while(1){
if(!input(PIN_A0)){
delay_ms(5);

for(inicio = 0; inicio < 17; inicio++){

if(fim+inicio < tamanho){
texto57(texto, fim+inicio);
}else{
fim = 0;
}

for(n = 0; n < 5; n++){

output_bit(pin_a6, bit_test(letra[n], 4));
output_bit(pin_a7, bit_test(letra[n], 6));

output_b(letra[n]);
delay_us(180);

output_low(pin_a6);
output_low(pin_a7);

output_b(0);
delay_us(230);
}
delay_us(320);
}
m++;
if(m == 2){
atual++;
fim++;
m = 0;
}
}
}

//*********** FIM LOOP PRINCIPAL *************
}

O programa foi desenvolvido por mim, peguei a tabela de caracteres pronta do ccs (um dos motivos que prefiro o ccs ao mikroc :D). Acredito que da pra melhorar esse código, minha intenção era implementar um controle IR para editar a frase mas não tive mais tempo.

Se alguém tiver alguma dúvida é só perguntar.

Att,

Fervolt

post-254226-13884961536386_thumb.jpg

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois...
  • 1 ano depois...
  • 5 meses depois...
  • 1 ano depois...
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!