Autor Tema: usar la TV como una lcd  (Leído 5857 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado cxp

  • PIC10
  • *
  • Mensajes: 2
usar la TV como una lcd
« en: 03 de Mayo de 2004, 03:37:00 »
ola a todos soy nuevo en esto de los pics e la programacion e la verdad es que me a cativado ya que es interesante lo que se puede acer con esto

me gustaria saber si alguien a conseguido acer uso de una TV para usarla como si fuera una lcd , e visto unos proyectos que usan un pic 16f84 e un integrado STV5730A pero solo te venden el producto acabado los codigos e esquemas los tienen en el secreto de los dioses

si alguien fuera tan amavel de poder ayudarme se lo agradeceria ya que seria una buena opcion al uso de lcd ya que aqui en mi pais basicamente no se encuentran a la venta e las lcd que voy conseguindo las saco de aparactos muertos e muchas vezes no consigo info de estas


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: usar la TV como una lcd
« Respuesta #1 en: 03 de Mayo de 2004, 10:00:00 »
Hombre, no es exactamente un LCD, pero en esta página tienes una detallada explicación de cómo generar señales de vídeo con un 16f84 para un TV convencional.

Un saludo

http://www.rickard.gunee.com/projects/video/pic/howto.php

Desconectado cxp

  • PIC10
  • *
  • Mensajes: 2
RE: usar la TV como una lcd
« Respuesta #2 en: 03 de Mayo de 2004, 10:13:00 »
ola amigo nocturno66 yo me refiero a usar la tv como una lcd, e estado buacando mas informacion e e encontrado esto

http://break.org/gisle/Pic/

en esta web acen uso de un pic e el dito stv STV5730a para generar caracteres en una tv e por lo que e entendido seria possivel acer uso de este conjunto de chips para funcionar como si fuera una lcd pero tendre que buscar algo mas de informacion para no estar metiendo la pata , de momento voy a ver si consigo los datashet del   stv5730 para poder tener algo mas de informacion que por lo que e leido es un generador osd e de momento es todo lo que se


Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: usar la TV como una lcd
« Respuesta #3 en: 07 de Mayo de 2004, 09:06:00 »
seguro que esto te servira yo ya me e bajado los datashets del stv5730 e los esquemas e no es complicado de construir ademas es muy interesante pero por desgracia el stv5730 parece que ya esta fora de moda o sea ya no se fabrica mala suerte aver si conseguimos por lo menos un usado


//Sourcecode for BlackBox stv5730a development board
//G. Bjoerneseth, LA5EKA - NORWAY, email is gisle at break dot org
//Processor is PIC16F84, compiler HiTech Picc.exe
//Release is preliminary, and has a few bugs. Please replace
//my callsign with yours

#include <pic.h>

#define   TRUE         1
#define   FALSE         0   

#define   CLK  RA0
#define   DATA RA1
#define   CSN  RA2

#define BLACK      0
#define BLUE      1
#define GREEN      2
#define CYAN      3
#define RED      4
#define MAGENTA      5
#define YELLOW      6
#define WHITE      7

#define ON      1
#define OFF      0

#define BACKGROUND_ON   1
#define BACKGROUND_OFF   0

#define   BUF_SIZE   10
#define   SCRBKGCOL 0x0E00
#define   CHRBKGCOL 0x0007
#define   CHRBORCOL 0x0038

void printascii(unsigned char color, unsigned char background,char c);
void printch(unsigned char color, unsigned char background,char c);
void puts(unsigned char color, unsigned char background, unsigned char x, unsigned char y, const unsigned char *s);
void setPos(unsigned char x, unsigned char y);
void Reset(void);
void setDisplayedLine(unsigned char line, unsigned char Displayed);
void ClsScr(void);
void txch(unsigned int c);
void setControl(unsigned int control);
void setScrOffset(void);
//void setZoom(unsigned int z);

unsigned char scr_x=0, scr_y=0;
unsigned char scr_h=28, scr_v=24; //High text, video generator


#define LA5EKA
//#define LA1ATV
//#define LA7MHA

#ifdef LA1ATV
const unsigned char CONST_Line0[]=     "| LA1ATV ";
const unsigned char CONST_Line1[]=     "                            ";
const unsigned char CONST_Line2[]=     " Dette er Tonsberg gruppens ";
const unsigned char CONST_Line3[]=     " ATV repeater med midlerti  ";
const unsigned char CONST_Line4[]=     " dig sendetillatelse fra Po ";
const unsigned char CONST_Line5[]=     " st og Teletilsynet  231001 ";
const unsigned char CONST_Line6[]=     "                            ";
const unsigned char CONST_Line7[]=     " LA1T Repeater ansv. LA7MHA ";
const unsigned char CONST_Line8[]=     "____________________________";
const unsigned char CONST_Line9[]=     "LA1ATV      23cm      JO59FE";
const unsigned char CONST_Line10[]=    "1280TX  1246RX 6.0 MHz Audio";
#endif
#ifdef LA5EKA
const unsigned char CONST_Line0[]=     "| LA5EKA ";         //Line zoomed to 3x
const unsigned char CONST_Line1[]=     "      Amateur TV Station    ";
const unsigned char CONST_Line2[]=     "                            ";
const unsigned char CONST_Line3[]=     "   WWL Locator:   JO59FJ    ";
const unsigned char CONST_Line4[]=     "   QTH is Horten  36masl    ";
const unsigned char CONST_Line5[]=     "                            ";
const unsigned char CONST_Line6[]=     "    QRV - Talkback 70cm     ";
const unsigned char CONST_Line7[]=     "         433.500MHz         ";
const unsigned char CONST_Line8[]=     "____________________________";
const unsigned char CONST_Line9[]=     "LA5EKA      23cm      JO59FJ";
const unsigned char CONST_Line10[]=    "TX 15W Ant. Vertical HBL6111";
#endif

#ifdef LA7MHA
const unsigned char CONST_Line0[]=     "  LA7MHA ";
const unsigned char CONST_Line1[]=     "                            ";
const unsigned char CONST_Line2[]=     "                            ";
const unsigned char CONST_Line3[]=     "          23cm ATV          ";
const unsigned char CONST_Line4[]=     "          23cm ATV          ";
const unsigned char CONST_Line5[]=     "          23cm ATV          ";
const unsigned char CONST_Line6[]=     "                            ";
const unsigned char CONST_Line7[]=     "                            ";   
const unsigned char CONST_Line8[]=     "                            ";
const unsigned char CONST_Line9[]=     "                            ";
const unsigned char CONST_Line10[]=    "                            ";
#endif    

unsigned int stv_control=0b1101111010100;

#ifdef LA7MHA
unsigned int stv_zoom=   0b1000000000000;
#endif
#ifndef LA7MHA
unsigned int stv_zoom=   0b1000000001010;
#endif


unsigned int stv_color=  0b1000000000001;

unsigned char SyncDetected;

//Sourcecode for BlackBox stv5730a development board
//G. Bjoerneseth, LA5EKA - NORWAY, email is gisle at break dot org
//Processor is PIC16F84, compiler HiTech Picc.exe
//Release is preliminary, and has a few bugs. Please replace
//my callsign with yours

/*------------------------------------------------------------------------------------*/
void main()
{
//unsigned int yy, zz;
   unsigned char tt;
   
   SyncDetected=0;
   TRISA= 0b00000000;
   TRISB= 0b11111101;
   RBPU=0;      //Clear bit turns on pullup
   RA0=1;
   RA1=1;
   RA2=1;

   Reset();
   ClsScr();

   stv_control&=0xFFFE;   //Bit 0 indicates mixed mode
   setControl(stv_control);
   #ifdef LA7MHA
   for(tt=1;tt<8;tt++)
      setDisplayedLine(tt, OFF);
   #endif
   #ifndef LA7MHA
   for(tt=0;tt<8;tt++)
      setDisplayedLine(tt, OFF);
   #endif
   puts(WHITE,BACKGROUND_OFF,0,0,  CONST_Line0);
   puts(BLACK,BACKGROUND_ON,0,1,   CONST_Line1);
   puts(BLUE,BACKGROUND_ON,0,2,    CONST_Line2);
   puts(GREEN,BACKGROUND_ON,0,3,   CONST_Line3);
   puts(CYAN,BACKGROUND_ON,0,4,    CONST_Line4);
   puts(RED,BACKGROUND_ON,0,5,     CONST_Line5);
   puts(MAGENTA,BACKGROUND_ON,0,6, CONST_Line6);
   puts(YELLOW,BACKGROUND_ON,0,7,  CONST_Line7);

        puts(WHITE,BACKGROUND_OFF,0,8,  CONST_Line8);
   puts(YELLOW,BACKGROUND_OFF,0,9, CONST_Line9);
   puts(YELLOW,BACKGROUND_OFF,0,10,CONST_Line10);

   while(1)
   {

      if(SyncDetected!=RB0){         //the board is strapped so that the PIC can detect videosync
                     //see the datasheet.
         if(!SyncDetected)      //No video input signal detected
         {
            /*
            for(zz=0;zz<1000;zz++)
            {
            for(yy=0;yy<1000;yy++)
               asm("NOP";
            }
            */
            stv_control|=0x0001;   //Bit 0 indicates fullpage mode
            setControl(stv_control);
            for(tt=0;tt<8;tt++)
               setDisplayedLine(tt, ON);
            puts(YELLOW,BACKGROUND_ON,0,9, CONST_Line9);
            puts(YELLOW,BACKGROUND_ON,0,10,CONST_Line10);
            RB1=0;      //signal out no detected sync

         }
         else
         {
      
            stv_control&=0xFFFE;   //Bit 0 indicates mixed mode
            setControl(stv_control);
            #ifdef LA7MHA
            for(tt=1;tt<8;tt++)
               setDisplayedLine(tt, OFF);
            #endif
            #ifndef LA7MHA
            for(tt=0;tt<8;tt++)
               setDisplayedLine(tt, OFF);
            #endif
            puts(YELLOW,BACKGROUND_OFF,0,9, CONST_Line9);
            puts(YELLOW,BACKGROUND_OFF,0,10,CONST_Line10);
            RB1=1;      //signal out detected sync
         }
         SyncDetected=!SyncDetected;
         }

   }//end while

}   
/*------------------------------------------------------------------------------------*/
void setDisplayedLine(unsigned char line, unsigned char Displayed)
{
   //line is 0:10   
   txch(0b0000011000000+line);          //SELECT ROW ATTRIBUTES registers (stru=11)
   if(Displayed){
   txch(0b1000011000000);           //Set Row data, row enabled
   }
   else{
   txch(0b1000001000000);           //Set Row data, row disabled
   }
}

/*------------------------------------------------------------------------------------*/
void Reset(void)
{
   txch(0x00DB);                   //SEND RESET
   txch(0x1000);  
   txch(0x3000);                     
   txch(0x3000);   
   txch(0x00DB);
   txch(0x1000);  
   txch(0b0000011001100);  //SELECT ZOOM REGISTER (1ST CONTROL REG)      address 12
   txch(stv_zoom);    //SEND ZOOM DATA               address 12
   txch(stv_color);    //SEND COLOR DATA               address 13
   txch(stv_control);   //Send control data               address 14
   txch(0x1000 + (scr_v << 6) + scr_h); //SEND POSITION DATA         address 15
   txch(0b1000100100100);    //SEND MODE DATA               address 16
            //(M2 indicates mute high on missing sync, M3 is 32lines)
}
/*------------------------------------------------------------------------------------*/
void ClsScr(void)
{
unsigned int j;
   txch(0b0000000000000);         //Select PAGE ROW 0
   for(j=0;j<=307;j++)
       txch(0b0001011100001011);   //Write incremental data, character d11 (" ")

   txch(0b0000000000000);         //Select PAGE ROW 0

   txch(0b0000011000000);          //SELECT ROW ATTRIBUTES, Start at ROW 0
   for(j=0;j<=10;j++)         //SEND ROW ATTRIB DATA, Chars at current row displayed, and have border
      txch(0b1000011000000);     //ROW number increments, 0-10.
                  //Erase screen with space to prevent initial garbage
}
/*------------------------------------------------------------------------------------*/

void setControl(unsigned int control)
{
   txch(0b0000011001110);
   txch(control);
}


/*------------------------------------------------------------------------------------*/
void setPos(unsigned char x, unsigned char y)
{
   if(   (x<28) && (y<11))
   {
      scr_x=x; scr_y=y;
   }
}

/*------------------------------------------------------------------------------------*/
void puts(unsigned char color, unsigned char background, unsigned char x, unsigned char y, const unsigned char *s)
{
   setPos(x, y);
   while(*s)
      printascii(color,background,*s++);
}

/*------------------------------------------------------------------------------------*/
void printascii(unsigned char color, unsigned char background,char c)
{
  if(c==" ") {printch(color,background,0x0B);}
  else if(c=="/") {printch(color,background,0x28);}
  else if(c=="|") {printch(color,background,110);}   //sat dish
  else if(c==":") {printch(color,background,0x26);}
  else if(c=="-") {printch(color,background,0x0A);}//den andre er nr 0d100
  else if(c=="_") {printch(color,background,114);}
  else if(c==".") {printch(color,background,0x27);}
   else if((c>=65) && (c<95)) {printch(color,background,c-53);}  
   else if((c>=97) && (c<123)) {printch(color,background,c-55);}
   else if((c>=48) && (c<60)) {printch(color,background,c-48);}
}

/*------------------------------------------------------------------------------------*/
void printch(unsigned char color, unsigned char background,char c)
{
unsigned int OutData;
   //Write pointer is Buf[11, Stru[7,DontCare[5] Depl[4:0]
   txch((scr_y << 8) + scr_x);   //Set write pointer - row(y) + character number(x). Stru is 00 for page address
   scr_x++;
   if (scr_x >= 28)
   {
      scr_x=0;
     scr_y++;
      if(scr_y >= 11)
      { scr_x=27; scr_y=10;}
   }
   //[BE,11][R,10][G,9][B,8][BK,7][Charcode, 6:0]
   //txch(0b1 0 100 0 0000000+c);
   OutData=0b1000000000000;
   if(background){
   OutData|=0b0100000000000;   
   }
   OutData=OutData|(color<<8);
   txch(OutData+c);
}

/*------------------------------------------------------------------------------------*/
void setScrOffset(void)
{
   txch(0b0000011001111);
   txch(0x1000 + (scr_v << 6) + scr_h);
}

/*------------------------------------------------------------------------------------*/
/*
void setZoom(unsigned int zoom)
{
   txch(0b0000011001100); //SELECT ZOOM REGISTER (1ST CONTROL REG)   address 12
   txch(zoom);
}
*/

/*------------------------------------------------------------------------------------*/
//This is the function that writes to the stv device
void txch(unsigned int c)
{

   unsigned char   bitno;
   
   CLK = 1;
   DATA= 1;
   CSN = 1;

   CSN = 0;

   bitno = 16;
   do
   {
      CLK = 0;
      if(c & 0x8000)
      {   DATA = 1;}
      else
      {   DATA = 0;}
      CLK = 1;
      c = (c << 1);
   } while(--bitno);  

   CSN = 1;
}





Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: usar la TV como una lcd
« Respuesta #4 en: 07 de Mayo de 2004, 09:07:00 »
solo para decir que el codigo quedo con unas monadas que bien

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: usar la TV como una lcd
« Respuesta #5 en: 28 de Junio de 2005, 12:11:00 »
Para que no salgan caritas en código hay que quitarle la opción de CARETOS MIARROBA :)

Desconectado jccsantos

  • PIC10
  • *
  • Mensajes: 1
RE: usar la TV como una lcd
« Respuesta #6 en: 29 de Junio de 2005, 03:19:00 »
Já deves ter visto isto mas cá vai uma vez mais:

h**p://kudelsko.free.fr/meteo_osd/sommaire.htm

Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: usar la TV como una lcd
« Respuesta #7 en: 29 de Junio de 2005, 03:31:00 »
interesante este usa el SAA5244A que es un descodificador de teletexto creo que tengo por aqui alguno en algunos otros proyectos usan el stv 5730 pero este ci el fabricante que es thonsom a dejado de fabricarlo por esso nunca segui adelante com la lcd por tv


Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: usar la TV como una lcd
« Respuesta #8 en: 29 de Junio de 2005, 04:14:00 »
e estado buscando e e encontrado otra que usa el SAA5246 para generar caracteres en una tv usando un pic ademas qu usan dicho chip pra capturar datos en este caso 5 puertos analogicos e 8 digitales para luego representar sus valores en la tv

http://web.tiscali.it/ik8uif/

Desconectado shrek_sc

  • PIC10
  • *
  • Mensajes: 12
RE: usar la TV como una lcd
« Respuesta #9 en: 01 de Julio de 2005, 01:00:00 »
en pablin hay un proyecto en el cual saca un reloj en la tele,es simple y sencillo te va a servir de ejemplo .... Diego.Avergonzado

Desconectado Teotekaplan

  • PIC10
  • *
  • Mensajes: 1
RE: usar la TV como una lcd
« Respuesta #10 en: 31 de Agosto de 2005, 04:44:00 »
Hace tiempo comencé yo un proyecto similar, para emular un LCD de 2x20 en la TV . Puse el proyecto en www.hardcore-modding.com , lo podéis encontrar en el foro de electrónica.

Salu2 y a ver si sirve de algo y, sobre todo, a ver quien se anima a rematarlo Sonrisa

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: usar la TV como una lcd
« Respuesta #11 en: 31 de Agosto de 2005, 05:00:00 »
Juas ... tu por aquí tb Teo? Sonrisa GiganteSonrisa GiganteSonrisa GiganteSonrisa Gigante Bienvenido Rebotado
Si juegas contra el mejor, pierdes como los demás.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: usar la TV como una lcd
« Respuesta #12 en: 31 de Agosto de 2005, 05:06:00 »
jejejeje wellcome to da jungle teo Giño

espero q stes como n tu ksa n estos lares!

Saludos!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: usar la TV como una lcd
« Respuesta #13 en: 31 de Agosto de 2005, 05:11:00 »
Teo, he estado mirando en el foro que comentas, pero no encuentro ese proyecto. ¿Puedes poner el link?

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: usar la TV como una lcd
« Respuesta #14 en: 31 de Agosto de 2005, 05:20:00 »