µC2OSD V1.0

Meine kleine Projektseite

Suche

Grautier Suche
Datenblatt Suche

Netzwerke

Creative Commons

Creative Commons License
Dieser Inhalt ist unter einer CC-Lizenz lizenziert.

Counter

Besucher:
Aufrufe:
Durchschnit:
Heute:
Online:

Sponsor

led24.de

Verwaltung des Blogs

µC2OSD V1.0

Freitag, 28. März 2008



Hallo hier wieder ein teil eines Projektes an den ich gerade Arbeite, eine Ausgabeeinheit auf TV (CVBS) mit MAX7456 dieser wird über SPI angesprochen zum betrieb müssen nur zwei Register geschrieben werden danach kann man die Zeichen frei positionieren die man ausgeben möchte, zudem kann man vorher noch bestimmen ob diese Transparent sind oder ob sie Blinken ... . Ein Beispiel Programm habe ich auch fertig es zeigt den kompletten Zeichensatz an zudem kann man noch eignende zeichnen in den max7456 schreiben.

Update:
- Add Grund Parameter für den Betrieb (2008-04-28 00:55)
- Add Mehr Code SPI Senderotine + Rotine zum Zeichen schreiben (2008-06-19 16:20)
Die Schaltung


Das Board


Einmal ein Bild ohne Fremdsignal Einspeisung


Und mit Fremdsignaleinspeisung (hier des der Gamecube)


Hier einige Rotinen für die Nutzung.


  1.  
  2. max7456_define                          ; Defines für den max7456 Zeichensatz
  3.         #define m_sp    0x00            ; Space
  4.         #define m_1             0x01
  5.         #define m_2             0x02
  6.         #define m_3             0x03
  7.         #define m_4             0x04
  8.         #define m_5             0x05
  9.         #define m_6             0x06
  10.         #define m_7             0x07
  11.         #define m_8             0x08
  12.         #define m_9             0x09
  13.         #define m_0             0x0A
  14.         #define m_A             0x0B
  15.         #define m_B             0x0C
  16.         #define m_C             0x0D
  17.         #define m_D             0x0E
  18.         #define m_E             0x0F
  19.         #define m_F             0x10
  20.         #define m_G             0x11
  21.         #define m_H             0x12
  22.         #define m_I             0x13
  23.         #define m_J             0x14
  24.         #define m_K             0x15
  25.         #define m_L             0x16
  26.         #define m_M     0x17
  27.         #define m_N             0x18
  28.         #define m_O             0x19
  29.         #define m_P             0x1A
  30.         #define m_Q             0x1B
  31.         #define m_R             0x1C
  32.         #define m_S             0x1D
  33.         #define m_T             0x1E
  34.         #define m_U             0x1F
  35.         #define m_V             0x20
  36.         #define m_W     0x21
  37.         #define m_X             0x22
  38.         #define m_Y             0x23
  39.         #define m_Z             0x24
  40.         #define m_a             0x25
  41.         #define m_b             0x26
  42.         #define m_c             0x27
  43.         #define m_d             0x28
  44.         #define m_e             0x29
  45.         #define m_f             0x2A
  46.         #define m_g             0x2B
  47.         #define m_h             0x2C
  48.         #define m_i             0x2D
  49.         #define m_j             0x2E
  50.         #define m_k             0x2F
  51.         #define m_l             0x30
  52.         #define m_m             0x31
  53.         #define m_n             0x32
  54.         #define m_o             0x33
  55.         #define m_p             0x34
  56.         #define m_q             0x35
  57.         #define m_r             0x36
  58.         #define m_s             0x37
  59.         #define m_t             0x38
  60.         #define m_u             0x39
  61.         #define m_v             0x3A
  62.         #define m_w             0x3B
  63.         #define m_x             0x3C
  64.         #define m_y             0x3D
  65.         #define m_z             0x3E
  66.         #define m_KLa   0x3F    ; (
  67.         #define m_KLz   0x40            ; )
  68.         #define m_.             0x41
  69.         #define m_?             0x42
  70.         #define m_sem   0x43            ; ;
  71.         #define m_:             0x44
  72.         #define m_ko    0x45            ; ,
  73.         #define m_ag    0x46            ; Agostroff
  74.         #define m_bs    0x47            ; Backslasch
  75.         #define m_as    0x48            ; Anfürungsstriche
  76.         #define m_minus  0x49           ; Minus
  77.         #define m_ka    0x4A            ; <
  78.         #define m_ga    0x4B    ; >
  79.         #define m_at    0x4C    ; @ oder at
  80.         #define m_wait  0xfb            ; Wartezeichen
  81.         #define m_ls            0xf9            ; Lautsprecher
  82.         #define m_lso   0xfa            ; Tonsignal
  83.         #define m_ff            0xff            ; Ausgefültes feld
  84.         return
  85.  
  86. max7456_conf                                    ; Max7456 Config
  87.         movlw   0x00                            ; VM0 Video Mode Register 0 (Write)
  88.         movwf   SPI_DATA_WRITE 
  89.         call            SPI_Send
  90.         movlw   B'01001000'             ; 0 , 1=PAL, 00=Auto Sync, 1=Enable OSD, 0=Enable OSD immer, 0=SW RST, 0=Enable Video Buffer
  91.         movwf   SPI_DATA_WRITE 
  92.         call            SPI_Send       
  93.         movlw   0x01                            ; VM1 Video Mode Register 1
  94.         movwf   SPI_DATA_WRITE 
  95.         call            SPI_Send
  96.         movlw   B'00000100'             ; 0 = NA, 000=Background MODE Brightness 100%, 11=Blinking Time 160ms, 00=Blinking Duty Cycle BT:BT
  97.         movwf   SPI_DATA_WRITE
  98.         call            SPI_Send       
  99.         movlw   0x02                            ; HOS Horizontal Offset Register
  100.         movwf   SPI_DATA_WRITE 
  101.         call            SPI_Send
  102.         movlw   B'00111111'             ;00 = NA, 000000 = Horitzontal Offset (Blanking)
  103.         movwf   SPI_DATA_WRITE
  104.         call            SPI_Send       
  105.         movlw   0x03                            ; HOS Vertical Offset Register
  106.         movwf   SPI_DATA_WRITE 
  107.         call            SPI_Send
  108.         movlw   B'00111111'             ;00 = NA, 000000 = Vertical Offset (Blanking)
  109.         movwf   SPI_DATA_WRITE
  110.         call            SPI_Send       
  111.         return
  112.  
  113. max7456_cls                                     ; max7456 ausgabe Löschen
  114.         movlw   0x00                            ; VM0 Video Mode Register 0 (Write)
  115.         movwf   SPI_DATA_WRITE 
  116.         call            SPI_Send
  117.         movlw   B'01001010'                ; 0 , 1=PAL, 00=Auto Sync, 1=Enable OSD, 0=Enable OSD immer, 1=SW RST, 0=Enable Video Buffer
  118.         movwf   SPI_DATA_WRITE 
  119.         call            SPI_Send       
  120.         call            max7456_conf
  121.         return
  122.  
  123. max7456_add_high                                ; High adressbereich
  124.         movlw   0x05                            ; Ersten 256 zeichen Low = 0x00, Letzten 256 Zeichen High=0xff
  125.         movwf   SPI_DATA_WRITE 
  126.         call            SPI_Send
  127.         movlw   0xFF
  128.         movwf   SPI_DATA_WRITE 
  129.         call            SPI_Send       
  130.         return
  131.  
  132. max7456_add_low                         ; Low Adressbereich
  133.         movlw   0x05                            ; Ersten 256 zeichen Low = 000, Letzten 256 Zeichen High=225
  134.         movwf   SPI_DATA_WRITE 
  135.         call            SPI_Send
  136.         movlw   0x00
  137.         movwf   SPI_DATA_WRITE 
  138.         call            SPI_Send       
  139.         return
  140.  
  141. max7456_send_char
  142.         movlw   0x06                            ; Zeichen Position links nach rechts erste reihe 0-29, 30-......
  143.         movwf   SPI_DATA_WRITE 
  144.         call            SPI_Send
  145.         movf            m_pos, W                ; Zeichen Position
  146.         movwf   SPI_DATA_WRITE 
  147.         call            SPI_Send       
  148.         movlw   0x07                            ; Zeichen Sonderzeichen sihe Define in max7456.inc
  149.         movwf   SPI_DATA_WRITE 
  150.         call            SPI_Send
  151.         movf            m_char, W               ; Zu sendendes Zeichen
  152.         movwf   SPI_DATA_WRITE 
  153.         call            SPI_Send       
  154.         return
  155.  



Die SPI Sende Rotine:


  1.  
  2. SPI_Send
  3.         banksel PORTC
  4.         bcf             SPI_CS                  ; Chip Select an (Low)
  5.         nop
  6.         nop
  7.         nop
  8.         banksel SSPBUF
  9.         movf    SPI_DATA_WRITE, W
  10.         movwf   SSPBUF
  11.         banksel SSPSTAT
  12. SPI_Wait
  13.         btfss   SSPSTAT, BF             ; Ist das Senden Komplet ?
  14.         goto    SPI_Wait                        ; Wen nicht gehe zu SPIWait
  15.         nop
  16.         nop
  17.         nop
  18.         banksel PORTC
  19.         bsf             SPI_CS                  ; Chip Select aus (High)
  20.         return
  21.  



Zeichen senden:


  1.  
  2.         call           max7456_add_low ; Low Adressbereich
  3.         movlw   D'4'                            ; Position des Zeichens
  4.         movwf   m_pos
  5.         movlw   m_O                             ; Zeichen
  6.         movwf   m_char
  7.         call            max7456_send_char; Schreiben   
  8.  



Eagle Board:Hier
Eagle Schaltung:Hier
Testprogramm für den PIC16F876:Hier
Geschrieben von K.J in Elektronik um 20:33 | Kommentare (0) | Trackbacks (0)
Zuletzt bearbeitet am 14.07.2009 09:10
11490 Klicks

Trackbacks

Keine Trackbacks

Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Noch keine Kommentare


Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden