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. 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 - [email protected] ;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 ;--------------------------
Şifre-Pass: 320volt.com
Yayım tarihi: 2009/05/13 Etiketler: 8051 sıcaklık devresi, 8051 uygulama, adc0831 analog dijital, atmel avr projeleri, lm35 sıcaklık sensörü
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
bunu 16f877 ile yazabilirmyiz ?
ali dediğin doğru bende gazideyim sen benden önce ordaydın galiba bitti mi okul elektronik nasıldı:) siteye tşk
Etiketleri değiştirince hata vermiyor.
DATA yerine VERI, İ’li yerlere de I yazdım ben, 0 hata,3 uyarı verdi.