has_artvin_li ( TA3TCM )
Usta Üye
- Katılım
- 18 Ocak 2008
- Mesajlar
- 1,088
- Puanları
- 156
- Yaş
- 40
Arkadaşlar selamun aleyküm bir proje yapıyorum devremde max232 entegresi birde 16F877A entegresi var bir tane de 4x20 karakter lcd ekran
Yapmak istediğim devrenin özünü şu şekilde tarif edeyim...
Visual basic ile bir arayüz programı yapıyorum programda birkaç buton,bir textbox var birde mscomm32.ocx dosyasını kullanıyorum.
Butonlardan örneğin A yazılı olana bastığımda bilgisayarın seri portundan A harfini 8N1 formatında ve 2400 baud ile yollayacak sonra pic bu A harfini yada karşılığı olan 65 sayısını aldığı zaman örneğin portd.6 bitini high yapacak ve pic bilgisayara A harfini aynı seri iletişim mantığı ve baud u ile tekrar geriye yollayacak yada ben pice istediğim bir sayıyı pcye gönderttireceğim yani bir şekilde iki yönlü veri alış verişi....
Şimdiye kadar ki çalışmalarımda bilgisayarda kurulu olan visual basic programı ile yaptığım uygulamalarda örneğin 3 buton koydum butonların caption değerlerini sırası ile A,B,C olarak değiştirdim sonra her butonun içine aşağıdaki komutları girdim...
Private Sub Command1_Click()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "A"
MSComm1.PortOpen = False
End Sub
Private Sub Command2_Click()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "B"
MSComm1.PortOpen = False
End Sub
Private Sub Command3_Click()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "C"
MSComm1.PortOpen = False
End Sub
Pic için ise aşağıdaki programı yazdım
Device 16F877A
Include "modedefs.bas"
ADCON1=7
Config HS_OSC , WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF , CP_OFF , DEBUG_OFF
Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 4
Print At 1,1,"MURAT"
DelayMS 2000
Print $FE,1
Dim degisken As Byte
degisken=0
Dim dongu As Byte
dongu=0
basla:
SerIn PORTC.7,T2400,[degisken]
Print At 1,1,degisken
Print At 2,1,#degisken
DelayMS 100
GoTo basla
Burada pic için SerIn PORTC.7,T2400,[degisken] satırında da görüldüğü gibi T2400 modunu kullandım N2400 ile haberleşmeyi sağlayamadım...
Sonuç olarak bilgisayarda visual basic ile yazdığım programdan pic e istediğim gibi karakter yada sayı gönderebiliyorum bir problem olmadı fakat sorun şurada
Picten Visual basic e bilgi gönderemedim burada çelişkiye düştüğüm bazı durumlar var örneğin T2400 mü kullanacağım N2400 mü yani verileri terslenmiş mi yollayacağım direk mi bu birinci çelişki.
İkinci çelişkili durum ise şu;bir değişkene picin yolladığı seri bilgileri almak için şu komut yeterli mi DEGISKEN=mscomm1.input yada ben bu veri alma komutunu/komutlarını nasıl ne şekilde ve nereye yazmam lazım bu işin mantığı nedir
Pic tarafından pc ye seri bilgi yollamak için kullanacağım komut ise
SEROUT PORTC.6,T2400,[DEGISKEN] yada SEROUT PORTC.6,T2400,["A"] şeklinde kalıplara sahip olacak fakat picten visual basicde yazacağım programın veri alması için T2400 mü N2400 mü yazmam lazım ve visual basicde bu verileri alması için nasıl bir döngü veya nasıl bir komut grubu oluşturmam lazım arkadaşlar bir el atarsanız çok memnun olurum saygı ve sevgilerimle....
Yapmak istediğim devrenin özünü şu şekilde tarif edeyim...
Visual basic ile bir arayüz programı yapıyorum programda birkaç buton,bir textbox var birde mscomm32.ocx dosyasını kullanıyorum.
Butonlardan örneğin A yazılı olana bastığımda bilgisayarın seri portundan A harfini 8N1 formatında ve 2400 baud ile yollayacak sonra pic bu A harfini yada karşılığı olan 65 sayısını aldığı zaman örneğin portd.6 bitini high yapacak ve pic bilgisayara A harfini aynı seri iletişim mantığı ve baud u ile tekrar geriye yollayacak yada ben pice istediğim bir sayıyı pcye gönderttireceğim yani bir şekilde iki yönlü veri alış verişi....
Şimdiye kadar ki çalışmalarımda bilgisayarda kurulu olan visual basic programı ile yaptığım uygulamalarda örneğin 3 buton koydum butonların caption değerlerini sırası ile A,B,C olarak değiştirdim sonra her butonun içine aşağıdaki komutları girdim...
Private Sub Command1_Click()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "A"
MSComm1.PortOpen = False
End Sub
Private Sub Command2_Click()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "B"
MSComm1.PortOpen = False
End Sub
Private Sub Command3_Click()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "C"
MSComm1.PortOpen = False
End Sub
Pic için ise aşağıdaki programı yazdım
Device 16F877A
Include "modedefs.bas"
ADCON1=7
Config HS_OSC , WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF , CP_OFF , DEBUG_OFF
Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 4
Print At 1,1,"MURAT"
DelayMS 2000
Print $FE,1
Dim degisken As Byte
degisken=0
Dim dongu As Byte
dongu=0
basla:
SerIn PORTC.7,T2400,[degisken]
Print At 1,1,degisken
Print At 2,1,#degisken
DelayMS 100
GoTo basla
Burada pic için SerIn PORTC.7,T2400,[degisken] satırında da görüldüğü gibi T2400 modunu kullandım N2400 ile haberleşmeyi sağlayamadım...
Sonuç olarak bilgisayarda visual basic ile yazdığım programdan pic e istediğim gibi karakter yada sayı gönderebiliyorum bir problem olmadı fakat sorun şurada
Picten Visual basic e bilgi gönderemedim burada çelişkiye düştüğüm bazı durumlar var örneğin T2400 mü kullanacağım N2400 mü yani verileri terslenmiş mi yollayacağım direk mi bu birinci çelişki.
İkinci çelişkili durum ise şu;bir değişkene picin yolladığı seri bilgileri almak için şu komut yeterli mi DEGISKEN=mscomm1.input yada ben bu veri alma komutunu/komutlarını nasıl ne şekilde ve nereye yazmam lazım bu işin mantığı nedir
Pic tarafından pc ye seri bilgi yollamak için kullanacağım komut ise
SEROUT PORTC.6,T2400,[DEGISKEN] yada SEROUT PORTC.6,T2400,["A"] şeklinde kalıplara sahip olacak fakat picten visual basicde yazacağım programın veri alması için T2400 mü N2400 mü yazmam lazım ve visual basicde bu verileri alması için nasıl bir döngü veya nasıl bir komut grubu oluşturmam lazım arkadaşlar bir el atarsanız çok memnun olurum saygı ve sevgilerimle....