Elektronik Devreler Projeler Elektronik ve biraz daha fazlası İletişim - Araçlar - Dikkat - Topluluk
Elektronik / Mikrodenetleyici Projeleri/

8051 ile lcd ekranlı sıcaklık denetimi lm35 adc0831

Sponsorlu Bağlantılar

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.

Devre şeması
8051-adc0831-lm35-uygulama-devresi

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	

;--------------------------

  • ali

    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 ?

  • apo

    ali dediğin doğru bende gazideyim sen benden önce ordaydın galiba bitti mi okul elektronik nasıldı:) siteye tşk

  • Semih

    Alıntı – ali :
    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

    Etiketleri değiştirince hata vermiyor.
    DATA yerine VERI, İ’li yerlere de I yazdım ben, 0 hata,3 uyarı verdi.