Elektronik / Mikrodenetleyici Projeleri/

PIC16F876 ile Türkçe Karakter Destekli Yazı Panosu

Sponsorlu Bağlantılar

Yazı panosu 96 Sütun 8×8 LED Dot Matrix kullanılmış sürücü entegreler ise 74HC595 kontrol entegresi pic 16f876 yazı hex dosyasından okunuyor kaynak .bas .asm isis simülasyon dosyaları vardır ayrıca kaynak kod üzerinde açıklamalarda bulunuyor farklı kayan yazı projelerine buradan ulaşabilirsiniz

yazi_panosu_led_dot_matrix8x8

dosyalar: PIC16F876 ile Türkçe Karakter Destekli Yazı Panosu

Dosya indirme LINK listesi (TXT formatında) link-3163.zip şifre-pass: 320volt.com

Kaynak Pic basic Kod

'****************************************************************
'*  Name    : KAYAN YAZI DEVRESI                                      *
'*  Author  : [set under view...options]                        *
'*  Notice  : Copyright (c) 2006 [set under view...options]     *
'*          : All Rights Reserved                               *
'*  Date    : 16.07.2006                                        *
'*  Version : 1.0                                               *
'*  Notes   : REKLAM PANOSU UYGULAMASI                                                  *
'*          :                                                   *
'****************************************************************
ADCON1=7
;___________________________PROGRAMDA KULLANILAN DEĞİŞKEN TANIMLAMALARI________________
                                                                                       ;
SUTUN        VAR BYTE[95]                                                               ;
VERI         VAR BYTE                                                                   ;
KARAKTER     VAR BYTE                                                                   ;
'SAYICI       VAR BYTE                                                                   ;
SIRA_NO      VAR BYTE                                                                   ;
SUTUN_SAYISI VAR BYTE                                                                   ;
SUTUN_SAYAC   VAR BYTE                                                                 ;
OFSET        VAR BYTE                                                                   ;
LINE         VAR BYTE                                                                   ;
J            var byte                                                                   ;
I            var byte
s1           var byte
s2           var byte
s3           var byte

                                                                   ;
DAT          VAR PORTA.0                                                                ;
CLK          VAR PORTA.1                                                                ;
RESET        VAR PORTA.2
A VAR BYTE                                                   ;
       '"*****************************************************************************************************************************"
;DATA @0,"ETE PICMAN KAYAN YAZI PROGRAMI DENEME YAZISIDIR. TOPLAM KAREKTER ADEDI 127 ADET OLABILIR. MATRIKS SAYISI ARTIRILABILMEKTEDIR",5

DATA @0," TÜRKÇE HARFLER EKLENDİ İİŞŞĞĞÜÜÇÇÖÖ",5
;______________________________________________________________________________________;

;______________TIMER INTERRUPT IÇİN OPTION VE INTCON REGISTERLERI KURULUYOR____________
                                                                                       ;
'           OPTION_REG = $15 ;Option registeri kur                                                          ;
'           INTCON = $a0     ;TMR0 interrupt aktif                                                          ;
'           ON INTERRUPT GOTO TMR_INT                                                  ;
;______________________________________________________________________________________;

;_________________________PORT AYAR VE DEĞİŞKEN İLK DEĞER ATAMALARI____________________                      
  TRISA=0              ;porta çıkış olarak ayarlanıyor
  TRISB=0              ;portb çıkış olarak ayarlanıyor
  PORTB=0              ;portb yi sıfırla
  PORTA=0              ;porta yı sıfırla
  J=0                  ;j değişkenini sıfırla
  I=0                  ;ı değişkenini sıfırla
  SUTUN_SAYISI=0       ; sutun sayısı değişkenini sıfırla        
  SUTUN_SAYAC=0        ;sutun sayac değişkenini sıfırla

MAIN:                    ;program başlangıcı
    GOSUB SUTUN_TEMIZLE  ;sutun değişkenlerini temizleme alt programına git
BASLA:                   ;ana döngü etiketi             
    GOSUB TARA           ;sutun tarama alt programına git
    gosub VERI_GOSTER
    
 GOTO BASLA              ;tarama işleminin sürekliliği için başla etiketine git

;_______________________SUTUN TEMİZLEME ALT NPROGRAMI___________________________ 
SUTUN_TEMIZLE:
  FOR I = 0 TO 95        ;30 sutun için döngü
    SUTUN[I]=0           ;her döngüde i degisken degerine göre bir sutun temizlenir
  NEXT I                 ; döngü başına git
  RETURN                 ;sutun temizleme alt programından çık
;_______________________________________________________________________________

;_________________________SUTUN TARAMA ALT PROGRAMI_____________________________
TARA:  
  LOW CLK                 ;data ucu 1
  HIGH DAT
  high CLK              
  LOW DAT                ;data 0
  FOR I = 0 TO 95        ;sutun taraması için döngü
  low clk
   low reset
   high reset
   PORTB=SUTUN[I]
   PAUSEUS 1000
   HIGH CLK    
   NEXT I                 ;döngü başına git
   PORTB=0                ;PORTB yi sıfırla
   I=0                    ;i degişkenini sıfırla
RETURN         

;_______________________________________________________________________________

;_______________________________TMR0 INTERRUPT ALT PROGRAMI_____________________
'DISABLE                 ;bütün kesmeleri geçersiz yap
' TMR_INT:
'  SAYICI=SAYICI+1       ;sayıcı değişkenini bir artır
'  IF SAYICI <= 11 THEN  INT_CIK  ;sayıcı 30 mu? değilse ınt_cık etiketine git
'  SAYICI=0              ; evet sayıcıyı sıfırla
'  GOSUB VERI_GOSTER     ;veri göster alt programına git
'  INT_CIK:              ; sayıcı 30 a eşit değilse program buraya yönlenir
'  INTCON.2=0            ;
'  RESUME                ;timer interrupt alt programından çık
'ENABLE
'return
;_______________________________________________________________________________
    
VERI_GOSTER:;___________________________________________________________________
  GOSUB KARAKTER_AL                           ;TABLODAN KARAKTER AL                                                                         ;
  GOSUB SENTEZ                                ;SENTEZ ALT PROGRAMINA GIT                      ;
  IF ( SUTUN_SAYAC = SUTUN_SAYISI ) THEN      ;sutun sayac , sutun sayısı na eşitmi
      GOSUB KAYDIR                            ; evet , kaydır alt programına git                           ;
      SUTUN[0]=0                              ;sutun0 ı sıfırla                                                  ;                                                                              ;
      SUTUN_SAYAC=0                           ;sutun sayac değişkenini sıfırla                                                 ;
      LINE=0                                                                                     ;
      J=J+1                                                                                      ;
   ENDIF 
'  pause 200                                                                                      ;
 RETURN;______________________________________________________________________________________;      
  
KARAKTER_AL:;_______________J DEGİSKEN DEGERİNE GÖRE KARAKTER ALINIYOR________________________
    READ J,KARAKTER                                                        ;
 RETURN;______________________________________________________________________________________;  
 
SENTEZ:;_________________________________ALINAN KARAKTER BİLGİSİ KARŞILAŞTIRILIYOR____________
  IF KARAKTER=5 THEN SON_KARAKTER
  
  SELECT CASE KARAKTER
    CASE 65: SIRA_NO=4     ;A
    CASE 66: SIRA_NO=9     ;B
    CASE 67: SIRA_NO=14    ;C
    CASE 68: SIRA_NO=19    ;D
    CASE 69: SIRA_NO=24    ;E
    CASE 70: SIRA_NO=29    ;F
    CASE 71: SIRA_NO=34    ;G
    CASE 72: SIRA_NO=39    ;H
    CASE 73: SIRA_NO=42    ;I
    CASE 74: SIRA_NO=47    ;J
    CASE 75: SIRA_NO=52    ;K
    CASE 76: SIRA_NO=57    ;L
    CASE 77: SIRA_NO=62    ;M
    CASE 78: SIRA_NO=67    ;N
    CASE 79: SIRA_NO=72    ;O 
    CASE 80: SIRA_NO=77    ;P 
    CASE 81: SIRA_NO=82    ;Q 
    CASE 82: SIRA_NO=87    ;R 
    CASE 83: SIRA_NO=92    ;S  
    CASE 84: SIRA_NO=97    ;T  
    CASE 85: SIRA_NO=102   ;U  
    CASE 86: SIRA_NO=107   ;V 
    CASE 87: SIRA_NO=112   ;W 
    CASE 88: SIRA_NO=117   ;X 
    CASE 89: SIRA_NO=122   ;Y
    CASE 90: SIRA_NO=127   ;Z
    CASE 32: SIRA_NO=132 ;BOSLUK   
    CASE 48: SIRA_NO=137 ;0  
    CASE 49: SIRA_NO=140 ;1 
    CASE 50: SIRA_NO=145 ;2
    CASE 51: SIRA_NO=150 ;3
    CASE 52: SIRA_NO=155 ;4
    CASE 53: SIRA_NO=160 ;5
    CASE 54: SIRA_NO=165 ;6  
    CASE 55: SIRA_NO=170 ;7
    CASE 56: SIRA_NO=175 ;8  
    CASE 57: SIRA_NO=180 ;9
    CASE 46: SIRA_NO=185 ;.
    CASE 199:SIRA_NO=190 ;Ç
    case 208:sira_no=195 ;Ğ
    case 221:sira_no=198 ;İ
    case 214:sira_no=203 ;Ö
    case 220:sira_no=208 ;Ü
    case 222:sira_no=213 ;Ş

  end select   
  IF ((KARAKTER=49) OR (KARAKTER=73)) THEN 
    SUTUN_SAYISI=3
   ELSE 
    SUTUN_SAYISI=5
  ENDIF 
  if karakter=221 then
  SUTUN_SAYISI=3
  endif 
   
  SUTUN_SAYAC=SUTUN_SAYAC+1      
  GOSUB ORT_ISLM
RETURN
 SON_KARAKTER:
     VERI=0 : SUTUN_SAYISI=0 :  LINE=0 : SUTUN_SAYAC=0 : KARAKTER=0 : SUTUN_SAYISI=0 : J=0
RETURN
     ;__________________________________SENTEZ ALT PROGRAM SONU_______________________  
  
 ORT_ISLM:
  OFSET= SIRA_NO-LINE
  GOSUB TABLO
  GOSUB KAYDIR
  LINE=LINE+1
  
RETURN

KAYDIR:
    s1=95 
    s2=94   
         for s3= 0 to 94 
          sutun[s1] = sutun[s2]
          s1=s1-1 : s2=s2-1
         next  
     sutun [s1]=veri 
 RETURN

 TABLO:
   LOOKUP OFSET,[_
   $3F,$48,$48,$48,$3F,_      ;A   0-4
   $36,$49,$49,$49,$7F,_      ;B   4-9
   $22,$41,$41,$41,$3E,_      ;C   9-14
   $3E,$41,$41,$41,$7F,_      ;D   14-19
   $41,$49,$49,$49,$7F,_      ;E   19-24
   $40,$48,$48,$48,$7F,_      ;F   24-29
   $2E,$49,$49,$41,$3E,_      ;G   29-34
   $7F,$08,$08,$08,$7F,_      ;H   34-39
   $41,$7F,$41,_              ;I   39-42
   $40,$7E,$41,$01,$02,_      ;J   42-47
   $41,$22,$14,$08,$7F,_      ;K   47-52
   $01,$01,$01,$01,$7F,_      ;L   52-57
   $7F,$20,$10,$20,$7F,_      ;M   57-62
   $7F,$04,$08,$10,$7F,_      ;N   62-67
   $3E,$41,$41,$41,$3E,_      ;O    67-72
   $30,$48,$48,$48,$7F,_      ;P   72-77
   $3D,$42,$45,$41,$3E,_      ;Q   77-82
   $31,$4A,$4C,$48,$7F,_      ;R   82-87
   $26,$49,$49,$49,$32,_      ;S   87-92
   $40,$40,$7F,$40,$40,_      ;T   92-97
   $7E,$01,$01,$01,$7E,_      ;U   97-102
   $7C,$02,$01,$02,$7C,_      ;V   102-107
   $7E,$01,$0E,$01,$7E,_      ;W   107-112
   $63,$14,$08,$14,$63,_      ;X   112-117
   $70,$08,$07,$08,$70,_      ;Y   117-122
   $61,$51,$49,$45,$43,_      ;Z   122-127
   $00,$00,$00,$00,$00,_      ;bosluk   127-132
   $3E,$51,$49,$45,$3E,_      ;0   132-137
   $01,$7F,$21,_              ;1   137-140
   $31,$49,$45,$43,$21,_      ;2   140-145    
   $46,$69,$51,$41,$42,_      ;3   145-150
   $04,$7F,$24,$14,$0C,_      ;4   150-155
   $4E,$51,$51,$51,$72,_      ;5   155-160
   $06,$49,$49,$29,$1E,_      ;6   160-165
   $60,$50,$48,$47,$40,_      ;7   165-170
   $36,$49,$49,$49,$36,_      ;8   170-175
   $3C,$4A,$49,$49,$30,_      ;9   175-180
   $00,$00,$00,$00,$01,_      ;.   
   $24,$42,$43,$42,$3c,_      ;Ç   185-190
   $16,$65,$61,$61,$1e,_      ;Ğ   190-195
   $21,$7f,$21,_              ;İ   195-198
   $1e,$61,$21,$61,$1e,_      ;Ö   198-203
   $1e,$41,$01,$41,$1e,_      ;Ü   203-208
   $26,$49,$4b,$49,$32],VERI  ;Ş   208-213

 RETURN
   
END
  • murat

    Ete hocadan Allah razı olsun onun dersleri sayyesinde picbasici çok daha kolayca öğrendim halada çalışıyorum ona sonsuz teşekkürlerimi sunuyorum.
    bu arada Bayramınız kutlu olsun.

  • Hakan

    Sayın Ete hocam, büyük adamsınız vesselam. Sayenizde pbp öğrendik. Kitapla falan olacak iş değildi. Teşekkürler.

  • Hakan

    Keşke bu sistemi satır tarama yapsaydınız..