1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler, Yazar Projeleri Makaleler Elektronik Genel »

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

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

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

pic16f876_led_dot_matrix_8x8

yazi_panosu_led_dot_matrix8x8

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

Yazar: Ete

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 23 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

Elektronik

 
  1. murat says:

    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.

  2. Hakan says:

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

  3. Hakan says:

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

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)

  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.