Suche
Grautier Suche
Datenblatt Suche
Index
Links
Creative Commons
Counter
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.
Die SPI Sende Rotine:
Zeichen senden:
Eagle Board:Hier
Eagle Schaltung:Hier
Testprogramm für den PIC16F876:Hier
Das Board
Einmal ein Bild ohne Fremdsignal Einspeisung
Und mit Fremdsignaleinspeisung (hier des der Gamecube)
Hier einige Rotinen für die Nutzung.
max7456_define ; Defines für den max7456 Zeichensatz #define m_sp 0x00 ; Space #define m_1 0x01 #define m_2 0x02 #define m_3 0x03 #define m_4 0x04 #define m_5 0x05 #define m_6 0x06 #define m_7 0x07 #define m_8 0x08 #define m_9 0x09 #define m_0 0x0A #define m_A 0x0B #define m_B 0x0C #define m_C 0x0D #define m_D 0x0E #define m_E 0x0F #define m_F 0x10 #define m_G 0x11 #define m_H 0x12 #define m_I 0x13 #define m_J 0x14 #define m_K 0x15 #define m_L 0x16 #define m_M 0x17 #define m_N 0x18 #define m_O 0x19 #define m_P 0x1A #define m_Q 0x1B #define m_R 0x1C #define m_S 0x1D #define m_T 0x1E #define m_U 0x1F #define m_V 0x20 #define m_W 0x21 #define m_X 0x22 #define m_Y 0x23 #define m_Z 0x24 #define m_a 0x25 #define m_b 0x26 #define m_c 0x27 #define m_d 0x28 #define m_e 0x29 #define m_f 0x2A #define m_g 0x2B #define m_h 0x2C #define m_i 0x2D #define m_j 0x2E #define m_k 0x2F #define m_l 0x30 #define m_m 0x31 #define m_n 0x32 #define m_o 0x33 #define m_p 0x34 #define m_q 0x35 #define m_r 0x36 #define m_s 0x37 #define m_t 0x38 #define m_u 0x39 #define m_v 0x3A #define m_w 0x3B #define m_x 0x3C #define m_y 0x3D #define m_z 0x3E #define m_KLa 0x3F ; ( #define m_KLz 0x40 ; ) #define m_. 0x41 #define m_? 0x42 #define m_sem 0x43 ; ; #define m_: 0x44 #define m_ko 0x45 ; , #define m_ag 0x46 ; Agostroff #define m_bs 0x47 ; Backslasch #define m_as 0x48 ; Anfürungsstriche #define m_minus 0x49 ; Minus #define m_ka 0x4A ; < #define m_ga 0x4B ; > #define m_at 0x4C ; @ oder at #define m_wait 0xfb ; Wartezeichen #define m_ls 0xf9 ; Lautsprecher #define m_lso 0xfa ; Tonsignal #define m_ff 0xff ; Ausgefültes feld return max7456_conf ; Max7456 Config movlw 0x00 ; VM0 Video Mode Register 0 (Write) movwf SPI_DATA_WRITE call SPI_Send movlw B'01001000' ; 0 , 1=PAL, 00=Auto Sync, 1=Enable OSD, 0=Enable OSD immer, 0=SW RST, 0=Enable Video Buffer movwf SPI_DATA_WRITE call SPI_Send movlw 0x01 ; VM1 Video Mode Register 1 movwf SPI_DATA_WRITE call SPI_Send movlw B'00000100' ; 0 = NA, 000=Background MODE Brightness 100%, 11=Blinking Time 160ms, 00=Blinking Duty Cycle BT:BT movwf SPI_DATA_WRITE call SPI_Send movlw 0x02 ; HOS Horizontal Offset Register movwf SPI_DATA_WRITE call SPI_Send movlw B'00111111' ;00 = NA, 000000 = Horitzontal Offset (Blanking) movwf SPI_DATA_WRITE call SPI_Send movlw 0x03 ; HOS Vertical Offset Register movwf SPI_DATA_WRITE call SPI_Send movlw B'00111111' ;00 = NA, 000000 = Vertical Offset (Blanking) movwf SPI_DATA_WRITE call SPI_Send return max7456_cls ; max7456 ausgabe Löschen movlw 0x00 ; VM0 Video Mode Register 0 (Write) movwf SPI_DATA_WRITE call SPI_Send movlw B'01001010' ; 0 , 1=PAL, 00=Auto Sync, 1=Enable OSD, 0=Enable OSD immer, 1=SW RST, 0=Enable Video Buffer movwf SPI_DATA_WRITE call SPI_Send call max7456_conf return max7456_add_high ; High adressbereich movlw 0x05 ; Ersten 256 zeichen Low = 0x00, Letzten 256 Zeichen High=0xff movwf SPI_DATA_WRITE call SPI_Send movlw 0xFF movwf SPI_DATA_WRITE call SPI_Send return max7456_add_low ; Low Adressbereich movlw 0x05 ; Ersten 256 zeichen Low = 000, Letzten 256 Zeichen High=225 movwf SPI_DATA_WRITE call SPI_Send movlw 0x00 movwf SPI_DATA_WRITE call SPI_Send return max7456_send_char movlw 0x06 ; Zeichen Position links nach rechts erste reihe 0-29, 30-...... movwf SPI_DATA_WRITE call SPI_Send movf m_pos, W ; Zeichen Position movwf SPI_DATA_WRITE call SPI_Send movlw 0x07 ; Zeichen Sonderzeichen sihe Define in max7456.inc movwf SPI_DATA_WRITE call SPI_Send movf m_char, W ; Zu sendendes Zeichen movwf SPI_DATA_WRITE call SPI_Send return
Die SPI Sende Rotine:
SPI_Send banksel PORTC bcf SPI_CS ; Chip Select an (Low) nop nop nop banksel SSPBUF movf SPI_DATA_WRITE, W movwf SSPBUF banksel SSPSTAT SPI_Wait btfss SSPSTAT, BF ; Ist das Senden Komplet ? goto SPI_Wait ; Wen nicht gehe zu SPIWait nop nop nop banksel PORTC bsf SPI_CS ; Chip Select aus (High) return
Zeichen senden:
call max7456_add_low ; Low Adressbereich movlw D'4' ; Position des Zeichens movwf m_pos movlw m_O ; Zeichen movwf m_char call max7456_send_char; Schreiben
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
Trackbacks
Trackback-URL für diesen Eintrag
Keine Trackbacks




