Etiketler: 8051 sıcaklık devresi, 8051 uygulama, adc0831 analog dijital, lm35 sıcaklık sensörü

8051 ile lm 35 ısıs sensörü ve adc 0831 çevirici kullanımı için örnek detaylı bir proje. Hazırlayan :Özer Deniz Hazırlayan emeği geçen kişilere teşekkürler
Proje dosyaları (isis asm hex) 8051-sicaklik-isi-denetim-lm35-adc0831.rar
![]()
Amaç: LM 35 sıcaklık sensörü ele alınan analog bilginin ADC 0831 ile dijitale dönüştürülmesi, bu bilginin sıcaklık olarak ifadesi ve LCD de gösterilmesi.
Özet: Programımızda; ADC’den gelen 8 bitlik sıcaklık bilgileri devamlı olarak taranarak ASCII koduna çevrilmekte ve LCD’de gösterilmektedir. Ortamdaki herhangi bir sıcaklık denetimi LM35 sıcaklık sensörü çıkışındaki voltajı değiştirmekte ve bu da ADC çıkışındaki dijital bilgiyi değiştirmektedir.
Yöntem: ADC0831 seri çıkış veren bir Analog Dijital çevirici olduğundan 8 bitlik datayı alabilmek için 8 clock darbesi üretilip ADC’ye gönderildi. Her clock darbesinden sonra ADC’nin seri çıkışından alınan bilgi akümülatörün en düşük değerlikli bitine verilmiş ve akümülatör bir sola kaydırılmıştır.
Böylece 8 clock’luk bir döngü sonunda istenilen dijItal bilgi akümülatöre kaydedilmiş olur. Her 8 clock’luk döngüden sonra ADC kapatılıp açılmalı ve yeni bir 8 bitlik data almaya hazır olmalıdır. Bunun için de ADC’nin CS’ ucu döngünün
başında “low”, döngünün sonunda ise “high” yapılmıştır.
Alınan 8 bitlik data acc de saklanır. Bu alınan değerin her bir rakamı lcd de gösterilir bunun için acc 100 bölünür elde edilen bölüm 100 basamağı, kalan değer sonra 10 bölünür elde edilen değer 10 lar basamağı ,en son kalan değerde birler basamağıdır. Bu değerleri lcd de göstermek için yüzler basamağından başlayarak sıra ile lcd ye gönderilir. Bu gönderme esnasında herbir değerin ASCII değerini göndermek zorundayız.
Bunun için göndermeden önce her değer decimal 48 ile toplanarak gönderilir. 48 decimal değeri 0 a karşılık gelir örneğin 48 +5 = 53 gönderdiğimiz zaman lcd de 5 görürüz.
8051 Assembly yazılımı
;/*================================*/
;Uygulama Adı:Klima
;Yazan: Özer Deniz - 05057090 - ozrdnz1903@gmail.com
;Dosya Adı:KLM3.ASM
;Tarih:30 Mart Pazar
;Hedef İşlemci:8051 Ailesi
;Açıklama: LM35 sıcaklık sensörü ele alınan analog bilginin ADC0831 ile
;dijitale dönüştürülmesi, bu bilginin sıcaklık olarak ifadesi ve LCD de
;gösterilmesi.
;Çıkış:P2 portu üzerinden LCD'ye yapılıştır.
;/*================================*/
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP EX0ISR
MAIN:
MOV IE,#81H
;---------------LCD 8-BİT----------
;LCD'NİN MİKROİŞLEMCİ BAĞLANTILARI
E EQU P3.7 ; PIN 6 ENABLE
RW EQU P3.6 ;
RS EQU P3.5 ;/REGİSTER SELECT
DATA EQU P2 ; DATA LİNES
;----------------------------------------------------------
;ADC'NİN MİKROİŞLEMCİ BAĞLANTILARI
CS EQU P3.4
CLK EQU P3.3
DO EQU P3.1
;----------------------------------------------------------
;LED'LER KLİMANIN ÇALIŞMA DURMUNU GÖSTEREN LEDLER
LED_RED EQU P1.4
LED_BLUE EQU P3.0
SETB LED_RED
SETB LED_BLUE
;----------------------------------------------------------
GO:
GO2: LCALL ADC_AL
LCALL LCD_RESET
LCALL LCD_YAZ2
SJMP GO2
;---------------------LİMİTLERİ_AL--------------------------
;KULLANILANLAR=R0,R5,R2,P1
UPDOWNLIMIT: MOV R0,#50H
MOV R5,#00H
MOV P2,#00H
SCAN:
SATIR1:MOV P1,#11111110B
JNB P1.5, BIR
JNB P1.6, IKI
JNB P1.7, UC
SATIR2:MOV P1,#11111101B
JNB P1.5, DORT
JNB P1.6, BES
JNB P1.7, ALTI
SATIR3:MOV P1,#11111011B
JNB P1.5, YEDI
JNB P1.6, ARASEKIZ
JNB P1.7, ARADOKUZ
SATIR4:MOV P1,#11110111B
JNB P1.6,SIFIR
SJMP SCAN
ARADOKUZ:LJMP DOKUZ
ARASEKIZ:LJMP SEKIZ
SIFIR:
MOV P2,#03FH;----0----
MOV R2,#0
INC R5
CALL YAZ
CALL BİRSANİYE
LJMP GIRISKONTROL
BIR:
MOV P2,#006H
MOV R2,#1
INC R5
CALL YAZ
CALL BİRSANİYE
LJMP GIRISKONTROL
IKI:
MOV P2,#05BH
MOV R2,#2
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
UC:
MOV P2,#04FH
MOV R2,#3
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
DORT:
MOV P2,#066H
MOV R2,#4
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
BES:
MOV P2,#06DH
MOV R2,#5
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
ALTI:
MOV P2,#07DH
MOV R2,#6
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
YEDI:
MOV P2,#007H
MOV R2,#7
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
SEKIZ:
MOV P2,#07FH
MOV R2,#8
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
DOKUZ:
MOV P2,#06FH
MOV R2,#9
INC R5
CALL YAZ
CALL BİRSANİYE
SJMP GIRISKONTROL
GIRISKONTROL2:LJMP SCAN
GIRISKONTROL:
CJNE R5,#04H,GIRISKONTROL2
MOV R0,#50H
RET
;-------------ADC_AL------------------
;KULLANILANLAR=R3,CS,DO,CLK,62H,54H,55H,56H
ADC_AL: MOV A,#00H
MOV R3,#8
CLR CS
NOP
NOP
ADC_AL2:MOV C,DO
MOV ACC.0,C
RL A
SETB CLK
NOP
NOP
CLR CLK
NOP
NOP
DJNZ R3,ADC_AL2
SETB CS
MOV 62H,A;ADC DEN ALINAN SICAKLIK DEĞERİNİ TUTUYOR
MOV B,#100
DIV AB
MOV 54H,A
MOV A,B
MOV B,#10
DIV AB
MOV 55H,A
MOV 56H,B
RET
;--------KARSİLASTİR---------------
;KULLANILANLAR=60H,61H,62H,LED_RED,LED_BLUE
KARSİLASTİR:CLR C
MOV A,62H
SUBB A,60H
JC HAVASOGUK
MOV A,61H
SUBB A,62H
JC HAVASİCAK
JNC SICAKLIKNORMAL
RET
HAVASOGUK:CLR LED_BLUE
SETB LED_RED
RET
HAVASİCAK:CLR LED_RED
SETB LED_BLUE
RET
SICAKLIKNORMAL: SETB LED_RED
SETB LED_BLUE
RET
;----------LCD_YAZ--------------
;KULLANILANLAR=50H,51H,52H,53H,54H,55H,56H
LCD_YAZ1:
LCALL BİRİNCİSATİR
MOV A,#'M'
LCALL DATAGONDER
MOV A,#'I'
LCALL DATAGONDER
MOV A,#'N'
LCALL DATAGONDER
MOV A,#'='
LCALL DATAGONDER
MOV A,50H
ADD A,#48
LCALL DATAGONDER
MOV A,51H
ADD A,#48
LCALL DATAGONDER
MOV A,#' '
LCALL DATAGONDER
MOV A,#'M'
LCALL DATAGONDER
MOV A,#'A'
LCALL DATAGONDER
MOV A,#'X'
LCALL DATAGONDER
MOV A,#'='
LCALL DATAGONDER
MOV A,52H
ADD A,#48
LCALL DATAGONDER
MOV A,53H
ADD A,#48
LCALL DATAGONDER
LCD_YAZ2:
LCALL İKİNCİSATİR
MOV A,#'S'
LCALL DATAGONDER
MOV A,#'I'
LCALL DATAGONDER
MOV A,#'C'
LCALL DATAGONDER
MOV A,#'A'
LCALL DATAGONDER
MOV A,#'K'
LCALL DATAGONDER
MOV A,#'L'
LCALL DATAGONDER
MOV A,#'I'
LCALL DATAGONDER
MOV A,#'K'
LCALL DATAGONDER
MOV A,#'='
LCALL DATAGONDER
MOV A,54H
ADD A,#48
LCALL DATAGONDER
MOV A,55H
ADD A,#48
LCALL DATAGONDER
MOV A,56H
ADD A,#48
LCALL DATAGONDER
RET
;------------YAZ-----------------------
;KULLANILANLAR=50H,51H,52H,53H,60H,61H
YAZ: MOV A,R2
MOV @R0,A
INC R0
CJNE R0,#54H,YAZ1
MOV A,50H
MOV B,#10
MUL AB
ADD A,51H
MOV 60H,A
MOV A,52H
MOV B,#10
MUL AB
ADD A,53H
MOV 61H,A
YAZ1: RET
;-----------BİRSANİYE----------------
;KULLANILANLAR=R3,T0
BİRSANİYE:MOV TMOD,#01H
MOV R3,#100
LOOP:MOV TH0,#(-10000)
MOV TL0,#(-10000)
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
DJNZ R3,LOOP
RET
;-----------LCD FONKİSYONLARI-----------
;KULLANILANLAR=DATA(P2),RS,RW,E,R6,R4
LCD_RESET:
MOV DATA,#38H
CLR RS
LCALL CLOCK
LCALL DELAY
MOV DATA,#38H
CLR RS
LCALL CLOCK
LCALL DELAY
MOV DATA,#38H
CLR RS
LCALL CLOCK
LCALL DELAY
MOV DATA,#3CH ;LCD FONKSİYONU SEÇME
CLR RS
LCALL CLOCK
LCALL DELAY
MOV DATA,#0CH
CLR RS
LCALL CLOCK
LCALL DELAY
MOV DATA,#06H
CLR RS
LCALL DELAY
LCALL CLOCK
RET
LCD_RESET2:MOV DATA,#01H
CLR RS
LCALL CLOCK
LCALL DELAY
RET
DATAGONDER:MOV DATA,A
SETB RS
LCALL CLOCK
LCALL DELAY
RET
BİRİNCİSATİR:MOV DATA,#128
CLR RS
LCALL CLOCK
RET
İKİNCİSATİR:MOV DATA,#192
CLR RS
LCALL CLOCK
RET
CLOCK: CLR RW
CLR E
LCALL CLOCK2
SETB E
LCALL CLOCK2
CLR E
LCALL CLOCK2
RET
CLOCK2: MOV R6,#10
DON: NOP
NOP
NOP
NOP
NOP
DJNZ R6,DON
RET
DELAY: MOV R4,#5
MOV TMOD,#01H
DONG2: MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
DJNZ R4,DONG2
RET
EX0ISR:
ACALL LCD_RESET2
LCALL UPDOWNLIMIT
LCALL ADC_AL
LCALL KARSİLASTİR
LCALL LCD_RESET
LCALL LCD_YAZ1
RETI
;--------------------------

8051 ile ultrasonik mesafe ölçümü uygulaması ayrıca srf 04 hakkında Türkçe bilgiler bulunmakta farklı denetleyiciler ile uygulamalarınızda bu bilgiler işinize...

Microchip PIC Devre Proje Arşivi 500MB
Sinyal kuvvetine göre anten kontrolü jal dili pic16f84
Protel 99se Türkçe Kullanım Kılavuzu
320volt.com © | Altyapı: Worpdress | Tema: Sleepy Blue’ WordPress Theme Tasarım: Eyoung | Çeviri ve Düzenleme 320volt.com
17/05/2009 02:00
Herşey için çok teşekkürler ama bu asm dosyasında aseemy ettiğinde 50 tane hata çıkıyor nasıl yaparız onu
bi yardım etsen
20/05/2009 00:47
bunu 16f877 ile yazabilirmyiz ?
24/05/2009 02:50
ali dediğin doğru bende gazideyim sen benden önce ordaydın galiba bitti mi okul elektronik nasıldı:) siteye tşk