Professional Documents
Culture Documents
8.Hafta
Mikrodenetleyiciler 1
// Myvar isimli char tipi degisken olusturulur // degiskenin bit0 i AnotherBit olarak tanimlandi.
MikroC ile bit deiken tipi ile bir bitlik deikenler kullanlabilir. bit bf; bit *ptr; bit arr [5]; // bf bit tipi deiken atanr, hafizada belirli bir adresi yoktur. // bu nedenle pointer atamasida yapilamaz: // bit tipi dizi atmasi yapilamaz.
Mikrodenetleyiciler
Yukardaki pin atamalar ve ynlendirme kaydedicileri atamalarndan sonra LCD kullanma hazr hale gelmektedir. Dier derleyicilerden farkl olarak MikroC de ktphane programlar #include komutu kullanlmakszn pin tanmlamalar ile aktif hale gelir.
Mikrodenetleyiciler
Lcd_Out_Cp : Aktif kursrden itibaren metni yada char tipi deiken ierii yazlr. Kullanm : Lcd_Out_Cp("Merhaba"); // O anki kursrden itibaren Merhaba yazar Lcd_Out_Cp (msg1); // O anki kursrden itibaren msg1, char tipi degiskenin icerigini yazar : stenen satrn, istenilen kolona, bir karakter yazar. Kullanm : Lcd_Out(1, 3, i); // 1.satr 3. kolona i yazar.
Lcd_Chr
Lcd_Chr_Cp : Aktif kursre bir karakter yazar. Kullanm : Lcd_Out(1, 3, i); // O anki kursre i yazar.
Mikrodenetleyiciler 4
Mikrodenetleyiciler
for(i=0; i<4; i++) { // Metni 4 kez saga kaydir. Lcd_Cmd(_LCD_SHIFT_RIGHT); Move_Delay(); } while(1) { // Sonsuz dongu for(i=0; i<8; i++) { // 7 kez sola kaydir Lcd_Cmd(_LCD_SHIFT_LEFT); Move_Delay(); } for(i=0; i<8; i++) { // 7 kez saga kaydir Lcd_Cmd(_LCD_SHIFT_RIGHT); Move_Delay(); } }
// A portu dijital I/O // LCD baslat // Ekrani sil // Kursr kapat // lk satira txt3 yaz. // Yuzler basamagi // Onlar basamagi // Birler basamagi
Mikrodenetleyiciler
PIC 16F877de analog giri iin E Portunda 3 ve A Portunda 5 pin bulunmaktadr. Bu ulara balanacak olan scaklk, k, ses veya sensrler yardmyla analog veri alnabilir. Kendi i devre saatini iin ise RC osilatrn kullanr. AD evrim ilemleri iin 4 adet yazma kullanlr Bu yazmalardan ADRESH ve ADRESL, AD dnm sonucunun st ve alt bytelarn tutulduu ksmdr. Dier yazmalar ise kontrol yazmalardr. ADCON0, AD evirme ilemlerinin kontroln de, ADCON1 ise port pinlerinin konfigrasyonlarnda kullanlr.
ADCON0 Kaydedicisi
ADON: A/D eviriciyi yetkilendirme bitidir. ADON=1 ise A/D evirici aktr ve ilem yaplabilir durumdadr. ADON=0 ise A/D evirici kapaldr.
GO/DONE: Eer ADCON biti de 1 ise A/D evirici stat biti grevini stlenir. GO/DONE=1 ise A/D evirici ilem yapyor demektir. GO/DONE=0 ise A/D evirici zerinde herhangi bir ilem yaplmyordur.
ADCON0 Kaydedicisi
CHS0:CHS2: A/D evirici iin kanal seim bitlerini oluturur. Bu bitlere verilecek deerlerle A/D evirme iin hangi kanaln seilecei belirlenir. Daha nceden de belirtildii gibi PIC 16F877de A/D evirici iin 8 kanal mevcuttur.
000 = kanal 0, (RA0/AN0) 001 = kanal 1, (RA1/AN1) 010 = kanal 2, (RA2/AN2) 011 = kanal 3, (RA3/AN3) 100 = kanal 4, (RA5/AN4) 101 = kanal 5, (RE0/AN5) 110 = kanal 6, (RE1/AN6) 111 = kanal 7, (RE2/AN7)
ADCON1 Kaydedicisi
PCFG0:PCFG3: A/D evirici portunun biimini dzenlemeyi salayan bitlerdir. Yani A/D evirme ileminde kullanlacak pinlerin nasl davranacan belirlememize olanak salarlar. ADFM: A/D evirme ilemi esnasnda meydana gelen verinin biimini belirlemeye yarayan bittir. 1 : ADRESH kaydedicisinin MSB ksmndaki 6 biti 0 kabul edilir ve A/D evirme sonucunda elde edilen veri ADRESHn 2 bitlik LSB ksmna ve ADRESLye yazlr. 0 : ADRESLnin LSB ksmndaki 6 biti 0 kabul edilir ve A/D evirme sonucu elde edilen veri ADRESLnin son iki bitine ve ADRESHa yazlr.
ADCON1 Kaydedicisi
ADRESH:ADRESL
zaman, sonu A/D sonu kaydedicisinin iine yklenir. A/D modl ekilde grlmektedir.
A/D Modl biimlendirildikten sonra, dntrme ilemi balamadan nce kanal seilmi olmaldr. Analog giri kanallarnda ilgili TRIS bitleri giri iin seilmi olmaldr.
Aadaki admlar, A/D dnm yapmak iin takip edilmelidir. 1- A/D Modl Konfigrasyonu Analog pinler, referans voltajlar ve dijital I/O konfigrasyonu (ADCON1) A/D giri kanal seimi (ADCON0) A/D dnm saat sekimi (ADCON0) A/D Modln ama 2- A/D Kesme Konfigrasyonu (Kesme kullanlacak ise) ADIF bitinin temizlenmesi ADIE bitinin ayarlanmas GIE bitinin ayarlanmas 3- Gerekli zaman bekleme ilemi (100ns) 4- Dnmn balamas GO/DONE bitinin ayarlanmas 5- A/D dnmnn beklenmesi), ya Sfra dmesi yada kesme gelmesi beklenir. 6- A/D dnm sonucunu okuma ve kaydetme 7- Dier dnm iin 2. veya 4. admlar tekrarlama
do { ADCON0.GO_DONE= 1; // AN0 dan 10-bitlik ADC okuma icin Go/Done biti 1 yapilir while (ADCON0.GO_DONE = 1) {} // ADC isleminin tamamlandiginda bu bit modul tarafindan sifira cekilir. Bu komutla sifir olana kadar beklenir. low_b = ADRESL; high_b = ADRESH; PORTB = low_b; PORTC = high_b; } while(1); } // PORTB ye ADRESL yazilir // PORTC ye ADRESH yazilir
do { temp_res = ADC_Read(0); // AN0 dan 10-bitlik ADC okuma sonucu alinir PORTB = temp_res; // PORTB ye dusuk anlamli bitler yazilir PORTC = temp_res >> 8; // RC1, RC0 en yuksek anlamli bitler } while(1); // sonsuz dongu }
// sonsuz dongu
rnek: ADC den okunan degeri voltaj karlna dntren ve LCD ekranda gsteren program (Voltmetre)
sbit LCD_RS at RD2_bit; sbit LCD_EN at RD3_bit; sbit LCD_D4 at RD4_bit; sbit LCD_D5 at RD5_bit; sbit LCD_D6 at RD6_bit; sbit LCD_D7 at RD7_bit; sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; char txt1[] = "Volt: "; char txt2[] = "0000"; char txt3[] = "mV."; unsigned int deger; void main() { ADCON0 = 0x01; ADCON1 = 0x1e; Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1,txt1); // Initialize LCD // Clear display // Cursor off do { deger = ADC_Read(0); // ADC okuma deger *= 5; // mv dnm txt2[0]= (deger/1000) +48; // Binler basamagi txt2[1]= (deger%1000)/100 +48; // Yuzler basamagi txt2[2]= (deger%100)/10 +48; // Onlar basamagi txt2[3]= (deger%10)+48; // Birler basamagi Lcd_Out(1,7,txt2); Lcd_Out(1, 12, txt3); } while(1); } // deger degiskeni yazdirilir // birim yazilir
Mikrodenetleyiciler
20