Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Deney 8
Amaç:
Bu deneyin amacı, öğrencilere analog dijital çevrimini öğretmektir.
Deney 1 :
1. ISIS programını açın.
2. Şekil 1'deki tasarımı oluşturun.
Şekil 1. Deney tasarımı
3. Projeyi, masaüstünde oluşturmuş olduğunuz bir klasörün içine kaydedin.
4. Aynı klasörün içine “harici_kesme.c”, isim ve uzantısı ile, bir dosya oluşturun.
5. Source->Add/remove source files seçeneğini tıklayın ve Şekil 2'deki gibi c dosyanızı
projeye ekleyin.
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Şekil 2.
6. Source seçeneğinin altında, eklemiş olduğunuz dosyayı açın ve aşağıdaki programı yazın.
//program A0C804 analog sayısal çeviriciden
//potansiyometre üzerindeki voltajı okuyarak
//LCD ekranda gösterir
#include<REG52.h>
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;
unsigned char DIJIT03=0, DIJIT2=0, DIJIT1=0, adcdeger=0;
unsigned char basamak[3]={0,0,0};
sbit ADC_CS=P2^4;
sbit ADC_RD=P2^5;
sbit ADC_WR=P2^6;
sbit ADC_INTR=P2^7;
void sifirlama();
void satir1();
void ADCOKU();
void mesaj_gonder(unsigned char* m, unsigned char uzunluk);
void veri_gonder(unsigned char a);
void saat_darbesi();
void gecikme(unsigned char Time);
void basamaklara_ayir(unsigned char *bsm, unsigned int sayi);
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
void main()
{
sifirlama();
satir1();
while (1)
{
ADCOKU();
satir1();
basamaklara_ayir(basamak, adcdeger);
veri_gonder(48+basamak[0]);
veri_gonder(48+basamak[1]);
veri_gonder(48+basamak[2]);
}
}
void ADCOKU()
{
ADC_CS=0;
ADC_INTR=0;
ADC_WR=1;
ADC_RD=1;
ADC_WR=0;
ADC_WR=1;
ADC_RD=0;
P1=0xFF;
adcdeger=P1;
ADC_RD=1;
ADC_CS=1;
//DELAY(1);
//DELAY(50);
//DELAY(1);
}
void basamaklara_ayir(unsigned char *bsm, unsigned char sayi)
{
*bsm=(char)(sayi/100);
*(bsm+1)=(char)(sayi/10)%10;
*(bsm+2)=(char)(sayi%10);
}
void satir1()
{
P0=0x80;
LCD_RS=0;
saat_darbesi();
}
void sifirlama()
{
P0=0X30;
LCD_RS=0;
saat_darbesi();
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
P0=0x30;
//30h komutunu LCD ye gönder
LCD_RS=0;
saat_darbesi();
P0=0x30;
LCD_RS=0;
saat_darbesi();
P0=0x3C;
//Fonksiyon belirleme
LCD_RS=0;
saat_darbesi();
P0=0x0C;
//LCD aç
LCD_RS=0;
saat_darbesi();
P0=0x01;
//LCDsII
LCD_RS=0;
saat_darbesi();
P0=0x06;
//Giris modu
LCD_RS=0;
saat_darbesi();
}
void veri_gonder(unsigned char a)
{
P0=a;
LCD_RS=1;
saat_darbesi();
}
void mesaj_gonder(unsigned char* m, unsigned char uzunluk)
{
unsigned char i;
for (i=0;i<uzunluk;i++)
veri_gonder(*(m+i));
}
void saat_darbesi()
{
LCD_RW=0;
LCD_E=0;
gecikme(255);
LCD_E=1;
gecikme(255);
LCD_E=0;
gecikme(255);
}
void gecikme(unsigned char Time)
{
while(Time>1)
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Time--;
}
7.
Kodu derleyin.
8.
Mikrodenetleyicinin üzerine çift tıklayarak, Şekil 3'deki gibi hex dosyasını
mikrodenetleyiciye yükleyin.
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Şekil 3.
Download

Deney 8 - Alper BAYRAK - Abant İzzet Baysal Üniversitesi