LCD ekran örnek uygulamalar

Konular

zar atma uygulaması



zar atma uygulaması


Pic Basic Pro kodları:

TRISB=0 TRISD=%00001111 '------------------------------------------------- '@ DEVICE pic16F877 '@ DEVICE pic16F877, WDT_on '@ DEVICE pic16F877, PWRT_ON '@ DEVICE pic16F877, PROTECT_OFF '@ DEVICE pic16F877, XT_OSC '------------------------------------------------- '----------LCD DEFINE komutları----------- DEFINE LCD_DREG PORTB 'data bacakları hangi Porta bağlı? DEFINE LCD_DBIT 4 'data bacakları hangi bitten başlıyor? DEFINE LCD_EREG PORTB 'Enable Bacağı Hangi Porta bağlı? DEFINE LCD_EBIT 3 'Enable Bacağı Hangi bite bağlı? DEFINE LCD RWREG PORTB 'R/W Bacağı Hangi Porta bağlı? DEFINE LCD_RWBIT 2 'R/W Bacağı Hangi bite bağlı? DEFINE LCD_RSREG PORTB 'RS Bacağı Hangi Porta bağlı? DEFINE LCD_RSBIT 1 'RS bacağı Hangi Bite bağlı? DEFINE LCD_BITS 4 '4 bit mi yoksa 8 bit olarak bağlı? DEFINE LCD_LINES 2 'Kaç sıra yazabiliyor? LOW PORTB.2 'değişken tanımlamaları-------------------------------- rastgele VAR WORD L VAR BYTE K VAR BYTE tus VAR BYTE LCDOUT $FE,1 PAUSE 200 site_adi: 'site ismi LCDOUT $FE,1,"elektrikdersimiz" LCDOUT $FE,$C0,".org" PAUSE 500 BAS: 'hangi tuşa basılacağını belirtme LCDOUT $FE,1,"zar atmak icin" LCDOUT $FE,$C0,"# TUSUNA BAS" PAUSE 1 tara: '# tuşuna basılıp basılmadığını kontrol etme PORTD=%10000000 IF PORTD.2 THEN tus=13 IF tus<>13 THEN tekrar: 'rastgele sayı üreterek üretilen sayının 1. ve 2. 'rakamlarını K ve L değişkenlerine atama RANDOM rastgele K=rastgele DIG 1 L=rastgele DIG 2 IF K<1 OR L<1 THEN TEKRAR IF K>6 OR L>6 THEN TEKRAR PAUSE 1 IF tus=13 THEN devam GOTO tara ENDIF devam: 'sayıların yazı karşılıklarına yönlendirilmesi IF K=1 AND L=1 THEN HEP_YEK IF K=1 AND L=2 THEN DU_YEK IF K=1 AND L=3 THEN SE_YEK IF K=1 AND L=4 THEN CAR_YEK IF K=1 AND L=5 THEN PENC_YEK IF K=1 AND L=6 THEN SES_YEK IF K=2 AND L=1 THEN DU_YEK IF K=2 AND L=2 THEN DU_BARA IF K=2 AND L=3 THEN SE_DU IF K=2 AND L=4 THEN CAR_DU IF K=2 AND L=5 THEN PENC_DU IF K=2 AND L=6 THEN SES_DU IF K=3 AND L=1 THEN SE_YEK IF K=3 AND L=2 THEN SE_DU IF K=3 AND L=3 THEN SE_SE IF K=3 AND L=4 THEN CAR_SE IF K=3 AND L=5 THEN PENC_SE IF K=4 AND L=1 THEN CAR_YEK IF K=4 AND L=2 THEN CAR_DU IF K=4 AND L=3 THEN CAR_SE IF K=4 AND L=4 THEN DORTCAR IF K=4 AND L=5 THEN PENC_CAR IF K=4 AND L=6 THEN SES_CAR IF K=5 AND L=1 THEN PENC_YEK IF K=5 AND L=2 THEN PENC_DU IF K=5 AND L=3 THEN PENC_SE IF K=5 AND L=4 THEN PENC_CAR IF K=5 AND L=5 THEN DUBES IF K=5 AND L=6 THEN SES_BES IF K=6 AND L=1 THEN SES_YEK IF K=6 AND L=2 THEN SES_DU IF K=6 AND L=3 THEN SES_SE IF K=6 AND L=4 THEN SES_CAR IF K=6 AND L=5 THEN SES_BES IF K=6 AND L=6 THEN DUSES 'sayıların yazı karşılıklarının LCD de gösterilmesi HEP_YEK: LCDOUT $FE,1,"HEP YEK" GOTO donus DU_YEK: LCDOUT $FE,1,"DU YEK" GOTO donus SE_YEK: LCDOUT $FE,1,"SE YEK" GOTO donus CAR_YEK: LCDOUT $FE,1,"CAR YEK" GOTO donus PENC_YEK: LCDOUT $FE,1,"PENC YEK" GOTO donus SES_YEK: LCDOUT $FE,1,"SES YEK" GOTO donus DU_BARA: LCDOUT $FE,1,"DU BARA" GOTO donus SE_DU: LCDOUT $FE,1,"SE DU" GOTO donus CAR_DU: LCDOUT $FE,1,"CAR DU" GOTO donus PENC_DU: LCDOUT $FE,1,"PENC DU" GOTO donus SES_DU: LCDOUT $FE,1,"SES DU" GOTO donus SE_SE: LCDOUT $FE,1,"DUSSE " GOTO donus CAR_SE: LCDOUT $FE,1,"CAR SE" GOTO donus PENC_SE: LCDOUT $FE,1,"PENC SE" GOTO donus SES_SE: LCDOUT $FE,1,"SES SE" GOTO donus DORTCAR: LCDOUT $FE,1,"DORTCAR" GOTO donus PENC_CAR: LCDOUT $FE,1,"PENC CAR" GOTO donus SES_CAR: LCDOUT $FE,1,"SES CAR" GOTO donus DUBES: LCDOUT $FE,1,"DUBES" GOTO donus SES_BES: LCDOUT $FE,1,"SES BES" GOTO donus DUSES: LCDOUT $FE,1,"DUSES" GOTO donus donus: 'zar sayı değerlerinin LCD de gösterilmesi LCDOUT $FE,$C0,#L," - " LCDOUT $FE,$C4,#K PAUSE 30 tus=0 GOTO tara

Dosyaları indirmek için tıklayınız...

sayı bulmaca



sayı bulmaca uygulaması


Pic Basic Pro kodları:

'Dört basamağa kadar tutulan sayıyı 15 hakta bulma '------------------------------------------------- '@ DEVICE pic16F877 '@ DEVICE pic16F877, WDT_on '@ DEVICE pic16F877, PWRT_ON '@ DEVICE pic16F877, PROTECT_OFF '@ DEVICE pic16F877, XT_OSC '------------------------------------------------- '----------LCD DEFINE komutları----------- DEFINE LCD_DREG PORTB 'data bacakları hangi Porta bağlı? DEFINE LCD_DBIT 4 'data bacakları hangi bitten başlıyor? DEFINE LCD_EREG PORTB 'Enable Bacağı Hangi Porta bağlı? DEFINE LCD_EBIT 3 'Enable Bacağı Hangi bite bağlı? DEFINE LCD RWREG PORTB 'R/W Bacağı Hangi Porta bağlı? DEFINE LCD_RWBIT 2 'R/W Bacağı Hangi bite bağlı? DEFINE LCD_RSREG PORTB 'RS Bacağı Hangi Porta bağlı? DEFINE LCD_RSBIT 1 'RS bacağı Hangi Bite bağlı? DEFINE LCD_BITS 4 '4 bit mi yoksa 8 bit olarak bağlı? DEFINE LCD_LINES 2 'Kaç sıra yazabiliyor? LOW PORTB.2 'değişken tanımlamaları-------------------------------- i VAR BYTE 'Tanınan hak s VAR BYTE 'basamak değişkeni tahmin VAR WORD 'tahmin edilen sayı tus VAR BYTE 'tuşlara atanan sayı rastgele VAR WORD 'tutulan sayı k VAR BYTE 'herhangi bir tuşa basıldığında 'sayı üretmenin durdurulması için TRISB=0 PORTB=%00000000 TRISD=%00001111 PAUSE 200 tahmin=0 i=15 GOSUB baslangic 'başlangıç ekranına gönderme sifirla: s=0 '--------ANA PROGRAM-------- dongu: tus=20 CALL tara SELECT CASE tus 'tuspad menü kontrolü CASE 10 'tus=10 ise CALL tutulan_sayi 'call etiket çağırma CASE 13 CALL giris CASE 11 CALL sil CASE 12 i=15 LCDOUT $FE,1 GOSUB baslangic PAUSE 90 k=0 GOTO sifirla CASE ELSE CALL islem END SELECT GOTO dongu '------ALT PROGRAMLAR------ tara: WHILE tus=20 'tus=20 olduğu sürece '(hiçbir tuşa basılmadığında) 'WHILE-WEND arasını işlemeye devam eder. PORTD=%00010000 IF PORTD.0 THEN tus=1 IF PORTD.1 THEN tus=2 IF PORTD.2 THEN tus=3 IF PORTD.3 THEN tus=10 PORTD=%00100000 IF PORTD.0 THEN tus=4 IF PORTD.1 THEN tus=5 IF PORTD.2 THEN tus=6 IF PORTD.3 THEN tus=11 PORTD=%01000000 IF PORTD.0 THEN tus=7 IF PORTD.1 THEN tus=8 IF PORTD.2 THEN tus=9 IF PORTD.3 THEN tus=12 PORTD=%10000000 'if PORTD.0 THEN tus=15 IF PORTD.1 THEN tus=0 'if PORTD.2 THEN tus=14 IF PORTD.3 THEN tus=13 IF k=0 THEN sayi_uret: RANDOM rastgele IF rastgele>9999 THEN sayi_uret ENDIF WEND'WHILE komutuna geri gönderir RETURN islem: k=1 IF s<4 THEN IF s=0 THEN tahmin=0 s=s+1'sayaç oluşturuldu tahmin=tahmin*10+tus'basamakları oluşturur ENDIF LCDOUT $FE,1 LCDOUT $FE,$C0,#tahmin PAUSE 100 RETURN sil:'Son rakam silinerek basamak küçültme IF s=0 THEN tahmin=0 IF s>0 THEN s=s-1 'sayaç oluşturuldu tahmin=(tahmin-tahmin DIG 0)/10 ENDIF LCDOUT $FE,1 LCDOUT $FE,$C0,#tahmin PAUSE 150 RETURN tutulan_sayi: LCDOUT $FE,1 LCDOUT $FE,$82,"TUTULAN SAYI" LCDOUT $FE,$C6,#rastgele PAUSE 100 k=1 RETURN giris: i=i-1 IF tahmin>rastgele THEN LCDOUT $FE,1 LCDOUT $FE,$C6,"AZALT" ENDIF IF tahminTHEN LCDOUT $FE,1 LCDOUT $FE,$C6,"ARTIR" ENDIF IF tahmin=rastgele THEN LCDOUT $FE,1 LCDOUT $FE,$83,"TEBRIKLER" LCDOUT $FE,$C0,#(15-i),".HAKTA BILDIN" PAUSE 800 k=0 i=15 tahmin=0 LCDOUT $FE,1 GOSUB baslangic GOTO sifirla ENDIF IF i>1 THEN LCDOUT $FE,$80," ",#i," HAKKIN KALDI" PAUSE 100 GOTO sifirla ENDIF IF i=1 THEN LCDOUT $FE,$83,"SON HAKKIN" PAUSE 100 GOTO sifirla ENDIF IF i=0 THEN LCDOUT $FE,1 LCDOUT $FE,$82,"HAKKIN DOLDU" LCDOUT $FE,$C3,"CEVAP=",#rastgele PAUSE 800 k=0 i=15 tahmin=0 LCDOUT $FE,1 GOSUB baslangic GOTO sifirla ENDIF RETURN baslangic: 'başlangıç yönlndirme ekranı LCDOUT $FE,$83,"TAHMIN YAZ" LCDOUT $FE,$C3,"GIRISE BAS" PAUSE 10 RETURN

Dosyaları indirmek için tıklayınız...

şifreli kapı kilidi



sayı bulmaca uygulaması


Pic Basic Pro kodları:

'ŞİFRELİ KAPI KİLİDİ 'ilk kapı şifresi 0000 'şifre değiştirmek için * tuşuna 'bastıktan sonra yönetici şifresini girin 'ISIS te hafızadaki şifreyi sıfırlamak isterseniz 'DEBUG-RESET PERSİSTENT MODEL DATA tıklayın TRISB=%00000000 TRISD=%00001111 TRISC=%00000000 PORTC=0 '------------------------------------------------- '@ DEVICE pic16F877A '@ DEVICE pic16F877A, WDT_on '@ DEVICE pic16F877A, PWRT_ON '@ DEVICE pic16F877A, PROTECT_OFF '@ DEVICE pic16F877A, XT_OSC '------------------------------------------------- '----------LCD DEFINE komutları----------- DEFINE LCD_DREG PORTB 'data bacakları hangi Porta bağlı? DEFINE LCD_DBIT 4 'data bacakları hangi bitten başlıyor? DEFINE LCD_EREG PORTB 'Enable Bacağı Hangi Porta bağlı? DEFINE LCD_EBIT 3 'Enable Bacağı Hangi bite bağlı? DEFINE LCD RWREG PORTB 'R/W Bacağı Hangi Porta bağlı? DEFINE LCD_RWBIT 2 'R/W Bacağı Hangi bite bağlı? DEFINE LCD_RSREG PORTB 'RS Bacağı Hangi Porta bağlı? DEFINE LCD_RSBIT 1 'RS bacağı Hangi Bite bağlı? DEFINE LCD_BITS 4 '4 bit mi yoksa 8 bit olarak bağlı? DEFINE LCD_LINES 2 'Kaç sıra yazabiliyor?> LOW PORTB.2 i VAR BYTE 'buzer alarm tekrarı s VAR BYTE 'basamak değişkeni yon_sifre VAR WORD 'yönetici şifresi yildiz VAR BYTE 'şifre değiştirmek için sifre VAR WORD 'şifre değişkeni yaz VAR WORD 'şifreyi Eeprom'a yazma tus VAR BYTE 'tuş değişkeni tahmin VAR WORD 'tuşpad ten girilen sayı yon_sifre=1923 'yönetici şifresi '--Eepromdan şifreyi okuma -- GOSUB eepromdan_oku '--Eeproma şifreyi yazma -- IF sifre>9999 THEN sifre=0 GOSUB eeproma_yaz ENDIF GOSUB baslangic '------ANA PROGRAM------ dongu: tus=20 CALL tara SELECT CASE tus 'tuşpad menü kontrolü CASE 10 'yıldız tuşuna basıldıysa yildiz=1 s=0 sifre=yon_sifre LCDOUT $FE,1 LCDOUT $FE,$C0,"SIFRE=" PAUSE 10 CALL tara CASE ELSE 'diğer tuşlara basıldıysa CALL islem END SELECT GOTO dongu '------ALT PROGRAMLAR------ tara: WHILE tus=20 'tus=20 olduğu sürece '(hiçbir tuşa basılmadığında) 'WHILE-WEND arasını işlemeye devam eder. PORTD=%00010000 IF PORTD.1 THEN tus=1 IF PORTD.2 THEN tus=2 IF PORTD.3 THEN tus=3 PORTD=%00100000 IF PORTD.1 THEN tus=4 IF PORTD.2 THEN tus=5 IF PORTD.3 THEN tus=6 PORTD=%01000000 IF PORTD.1 THEN tus=7 IF PORTD.2 THEN tus=8 IF PORTD.3 THEN tus=9 PORTD=%10000000 IF PORTD.1 THEN tus=10'* tuşu IF PORTD.2 THEN tus=0 'if PORTD.3 THEN tus=11 '# tuşu WEND'WHILE komutuna geri gönderir RETURN islem: IF s<4 THEN 'sayı dört basamaktan küçükse IF s=0 THEN tahmin=0 s=s+1'sayaç oluşturuldu tahmin=tahmin*10+tus'basamakları oluşturur LCDOUT $FE,$C0,"SIFRE=" LCDOUT $FE,$C0+(s+6),"*" PORTC.4=1'tuş basma sesi PAUSE 40 PORTC.4=0 PAUSE 60 ENDIF IF s=4 THEN 'sayı dört basamaklı oldğunda IF yaz=0 THEN 'şifre kontrol edilecek ise CALL kontrol ELSE 'şifre eeproma yazılacak ise sifre=tahmin GOSUB eeproma_yaz GOSUB eepromdan_oku LCDOUT $FE,1,"SIFRE KAYDEDILDI" PAUSE 500 GOSUB baslangic yaz=0 yildiz=0 s=0 tahmin=0 ENDIF ENDIF RETURN kontrol: IF tahmin<>sifre THEN IF yildiz=0 THEN LCDOUT $FE,1,"GECERSIZ SIFRE" ELSE LCDOUT $FE,1,"YONETICI " LCDOUT $FE,$C0,"DEGILSINIZ" ENDIF FOR i=0 TO 3 PORTC=%00011000 PAUSE 60 PORTC=%00000000 PAUSE 30 NEXT i PAUSE 100 IF yildiz=1 THEN LCDOUT $FE,1,"KAPI SIFRESI " LCDOUT $FE,$C0,"GIRINIZ" PAUSE 500 ENDIF PORTC.3=0 LCDOUT $FE,1 GOSUB baslangic ENDIF IF tahmin=sifre THEN IF yildiz=0 THEN LCDOUT $FE,1 LCDOUT $FE,$80,"DOGRU SIFRE" LCDOUT $FE,$C0,"KAPI ACILDI" PORTC.5=1 PAUSE 500 PORTC.5=0 LCDOUT $FE,1 GOSUB baslangic ELSE LCDOUT $FE,1 LCDOUT $FE,$80,"DOGRU SIFRE" PORTC.5=1 PAUSE 500 PORTC.5=0 yaz=1 LCDOUT $FE,1,"YENI SIFRE GIR" LCDOUT $FE,$C0,"SIFRE=" PAUSE 10 ENDIF ENDIF yildiz=0 s=0 tahmin=0 GOSUB eepromdan_oku RETURN baslangic: 'başlangıç yönlendirme ekranı LCDOUT $FE,1,"SIFRENIZI GIRIN" LCDOUT $FE,$C0,"SIFRE=" PAUSE 10 RETURN eepromdan_oku: READ 1002,sifre.HIGHBYTE READ 1003,sifre.LOWBYTE RETURN eeproma_yaz: WRITE 1002,sifre.HIGHBYTE WRITE 1003,sifre.LOWBYTE RETURN

Dosyaları indirmek için tıklayınız...

© 2018 elektrikdersimiz.org