Elektronik / Mikrodenetleyici Projeleri/

PIC18F452 picbasic yazıcı çıktısı veren sıramatik

Değişik bir proje devre pplb tip font kullanan termal yazıcıları destekliyor lcd ekran üzerinde kayıt bilgileri tarih saat görülebiliyor PIC18F452 DS1302 24C32A entegreleri kullanılmış yazılım picbasic ile hazırlanmış bir çok konuda iyi bir örnek Hazırlayan emeği geçen kişilere teşekkürler.

Bankalarda kullanılan sıra alma sistemidir. butona basıldığında yazıcıdan sıra verilir. 18F452 nin epromunda basılan son 20 fişle ilgili bilgi saklanır. Bilgisayarın seri portuna 9800 bt 8N1 ile bağlarsanız devreye 1 komutu yolladığınızda epromda sakladığı fiş bilgilerini (hangi numara hangi tarihte hangi saatte verildi) size verecek ve hafızayı silecektir.

Sistemin saat ve tarih kısmında ETE hocanın katkısı çoktur. kendisine tekrar teşekür ederim. sistem kendi tasarımımdır. yardımcı olması dileğiyle.

PORTA.1 pinine bağlı butona basılı tutarak (anahtarı kapalı konuma getirerek) devreye enerji verilirse eeprom resetlenir.

kod içinde bu durum aşağıdaki kod grubuyla yapılır.

if porta.1 = 1 then
print at 1,1,”eproom resetlendi”
kayit = 0
ewrite 1,[kayit]
kayitsayisi = 0
ewrite 10,[kayitsayisi]
adet = 0
ewrite 100,[adet]
Dn5:
if porta.1 =1 then dn5
endif

pic18f452-ds1302-24c32a-picbasic pic18f452-ds1302-24c32a-picbasic-lcd-yazici siramatik-devresi

dosyalar (isis,.bas,.hex) : PIC18F452 picbasic yazıcı çıktısı veren sıramatik

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

Yazılım

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 26.04.2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
device 18f452
ADCON1=7 
delayms 500
 
 
 XTAL = 20
 LCD_DTPIN = PORTd.4	
 LCD_RSPIN = PORTd.3
 LCD_ENPIN = PORTd.2
 LCD_INTERFACE = 4	' 4-bit Interface
 LCD_LINES = 4
 LCD_TYPE = 0

 HSERIAL_BAUD = 9600        ' Set baud rate to 9600
 HSERIAL_RCSTA = %10010000  ' Enable serial port and continuous receive
 HSERIAL_TXSTA = %00100000  ' Enable transmit and asynchronous mode 
 HSERIAL_CLEAR = ON   

symbol RtC_ClK = portb.5
symbol RtC_RsT = portb.7
symbol RtC_DtA = portb.6
low portb
print at 1,1,"HAZIR..."
high portd.0    'backlight açıldı
'******************Portlar deneniyor***************************

'******************DEĞİŞKENLER TANIMLANIYOR********************

dim MeM         as byte
Dim SaYi        as byte
dim SaNiYe      as byte
dim DakikA      as byte
dim SaaT        as byte
dim GunSirasi   as byte
dim Gun         as byte
dim Ay          as Byte
dim YiL         as byte
dim KonTroL     as byte
dim OnlaR       as byte
dim BiRleR      as byte
dim Eski_Sn     as byte
dim DeG[64]     as byte
dim AdeT        as word
dim Bas         as word
dim KayiT       as word
dim KayitSayisi as word
dim BilGi       as byte
dim O_K_sayisi  as byte
dim OkuNan      as byte

bilgi = 0

kayit    = eread 1
'if kayit = 255 then
'kayit    = 20
'ewrite 1,[kayit]
'endif

kayitsayisi = eread 10
if kayitsayisi = 255 then
kayitsayisi = 0
ewrite 10,[kayitsayisi]
endif

adet     = eread 100


if porta.1 = 1 then
  print at 1,1,"eproom resetlendi"
  kayit    = 20
  ewrite 1,[kayit]
  kayitsayisi = 0
  ewrite 10,[kayitsayisi]
  adet = 0
  ewrite 100,[adet]
  Dn5:
  if porta.1 =1 then dn5
endif  

if porta.0 = 0 then ayarsiz

'******Saat 13:20:54 2/6/2009 OLARARAK DEĞİŞKENLER ATANIYOR****

Mem=00  :Gosub Terscevir    :Saniye=SAYI
Mem=31  :Gosub Terscevir    :Dakika=SAYI
Mem=17  :Gosub Terscevir    :Saat=SAYI
MEM=7   :GOSUB terscevir    :gunsirasi=sayi
Mem=26  :GOsub Terscevir    :Gun=SAYI
Mem=4   :Gosub Terscevir    :Ay=SAYI
Mem=9   :GOSUB Terscevir    :YIL=SAYI


'***********DS1302 ye saat yazılacak****************************
high rtc_rst
output rtc_dta
shout rtc_dta, rtc_clk, 0,[$8E, 0]
low rtc_rst

    Delayus 50

High rtc_rst
output rtc_dta
shout rtc_dta, rtc_clk, 0, [$BE\8,saniye\8,dakika\8 ,saat\8 ,gun\8 ,ay\8 ,gunsirasi\8 ,yil\8 ,128\8]
low rtc_rst 


print at 2,1,"Saati Ayarladim.."
delayms 1000

'*************islem yönetimi**************************
Ayarsiz:
cls
bilgi = 0
BasLa:
gosub zaman_oku
if porta.0 =1 then printet
hserin 10,basla,[bilgi]
if bilgi = "1"  then aktar
goto basla
'***********************Saati oku**********************
Zaman_Oku:
    High RtC_RsT
    OUTPUT rtc_dta
    shout RtC_DtA ,RtC_ClK ,0 ,[$BF] 
    INPUT RTC_DTA
    shin  RtC_DtA ,RtC_ClK ,1 ,[saniye\8,dakika\8,saat\8,gun\8,ay\8,gunsirasi\8,yil\8,kontrol\8]
    
    Low RtC_RsT

         mem=saniye     :gosub cevir:saniye=sayi  
         mem=dakika     :gosub cevir:dakika=sayi
         mem=saat       :gosub cevir:saat=sayi
         mem=gun        :gosub cevir:gun=sayi
         mem=ay         :gosub cevir:ay=sayi
         mem=yil        :gosub cevir:yil=sayi
         mem=gunsirasi  :gosub cevir:gunsirasi=sayi


print at 1,1, "Sira No:",dec5 adet,"       "
print at 2,1, "Kayit  :",dec3 kayit
print at 4,1,dec2 saat,":",dec2 dakika,":",dec2 saniye
print at 4,11,dec2 gun,"/",dec2 ay,"/","20",dec2 yil,
delayms 10
return




END

'***********Hex Değer Binary dönüşüyor**************

TersCevir:
    onlar=mem dig 1
    onlar=onlar<<4
    birler=mem dig 0
    sayi=onlar + birler
return

'**********Binary Değer Hex Dönüşüyor***************
Cevir:
    onlar   =mem & %01110000
    onlar   =onlar>>4
    birler  =mem & %00001111
    sayi    =onlar * 10 + birler
RETURN
'**************** Printer **************************


PrintEt:
if porta.0 = 0 then basla
gosub yaz
Dng1:
if porta.0 =1 then dng1
goto basla

Yaz:

 adet = adet + 1
 ewrite 100, [adet]
 HSEROUT ["N",13,10,"ZB",13,10,"q495",13,10,"Q250,24",13,10,"D10",13,10,"S2",13,10,"OD,C1",13,10,"B83,189,0,3,2,4,39,N,",34,dec2 saniye,dec2 gun,dec2 saat, dec2 dakika,dec3 adet,34,13,10]
 hserout ["A160,57,0,5,1,1,N,",34,dec5 adet,34,13,10,"A156,22,0,3,1,1,N,",34,"SIRA NUMARASI",34,13,10]
 hserout ["A101,140,0,4,1,1,N,",34,dec2 gun,45,dec2 ay,45,50,48,dec2 yil,60,62,dec2 saat,58,dec2 dakika,58,dec2 saniye,34,13,10,"A457,205,3,1,1,1,N,",34,"www.obis.com.tr",34,13,10,"A46,55,1,1,1,1,N,",34,"www.obis.com.tr",34,13,10,"P1,1",13,10,13,10]
 
 print at 3,1,"Baski Yapiliyor..."
 print at 2,1,"Baski Sayisi: ",dec4 adet
 gosub kayitTut
 print at 1,1,"Kayit:",dec KayitSayisi," Kayit Bt:",dec kayit
 
 delayms 1000
 print at 3,1,"                  "
 return

'********************  KAYIT TUT  **************************

KayiTTuT:

ewrite kayit, [gun]
    kayit = kayit + 1
ewrite kayit, [ay]
    kayit = kayit + 1
ewrite kayit, [yil]
    kayit = kayit + 1
ewrite kayit, [saat]
    kayit = kayit + 1
ewrite kayit, [dakika]
    kayit = kayit + 1
ewrite kayit, [saniye]
    kayit = kayit + 1
ewrite kayit, [adet]
    kayit = kayit + 2
KayitSayisi = KayitSayisi + 1
ewrite 1,[kayit]
ewrite 10,[KayitSayisi]   
return

AkTar:
cls
bilgi = 0
print at 1,1,"  SENKRON BASLADI."
Bas = 20
okunan = 0
O_K_sayisi = eread 10
 
DnG2:
if okunan = o_k_sayisi then setbitti

gun     = eread bas
    bas = bas + 1
Ay      = eread bas 
    bas = bas + 1
yil     = eread bas
    bas = bas + 1
saat    = eread bas
    bas = bas + 1
dakika  = eread bas
    bas = bas + 1
saniye  = eread bas
    bas = bas + 1
adet    = eread bas
    bas = bas + 2
HSEROUT [dec2 gun,":",dec2 ay,":",dec2 yil," ",dec2 saat,":",dec2 dakika,":",dec2 saniye," ",dec5 adet,13,10]
okunan = okunan + 1
goto dng2

SeTbiTTi:
    kayit    = 20
    bas      = 20
  ewrite 1,[kayit]
  kayitsayisi = 0
  ewrite 10,[kayitsayisi]
'  adet = 0
'  ewrite 0,[adet]
print at 1,1," AKTARIM TAMAMLANDI "
delayms 1000
goto basla

end
  1. Aziz Kürşat AKBEN 2009/05/27
  2. konuyla ilgili özel ürün yapabilirmisiniz 2009/05/28
  3. 2a2b2b 2010/12/25
  4. blonje 2010/12/26
  5. medyaled 2010/12/27
  6. 2a2b2b 2010/12/27
  7. Oğuz 2012/10/28
  8. Eyüp 2012/10/31
  9. Aykut 2014/12/22
  10. Aykut 2014/12/22

Yorum

Soru: