Chat
Danh mục
Đo và hiển thị nhiệt độ trên LCD bằng vi điều khiển ATMEGA 16 và cảm biến nhiệt độ LM35

Đo và hiển thị nhiệt độ trên LCD bằng vi điều khiển ATMEGA 16 và cảm biến nhiệt độ LM35

Số lượng:
Thêm vào giỏ
Đo và hiển thị nhiệt độ trên LCD bằng vi điều khiển ATMEGA 16 và cảm biến nhiệt độ LM35 đã được thêm vào giỏ hàng



Cảm variant Nhiệt degrees LM35 giao tiếp with the vi handle ATmega 16 qua ADC, when Nhiệt speed changes, the power pressure ra Cửa Cấm variant are change the following.
Chân Aref, footer of this cấp Electric pressure stable for use as a power pressure reference for ADC.

Mã số:
 / ************************************************* ****
Chương trình này được sản xuất bởi các
CodeWizardAVR V1.24.8d chuyên nghiệp
Chương trình tự động phát điện
© Bản quyền 1998-2006 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.com

Dự án:
Phiên bản:
Ngày: 2014/03/24
Tác giả: Duy Luân                        
Công ty: UNT                          
Bình luận:


Loại chip: ATmega16
Loại chương trình: Ứng dụng
Tần số đồng hồ: 16.000000 MHz
Mô hình bộ nhớ: nhỏ
Kích thước SRAM bên ngoài: 0
Kích thước dữ liệu Stack: 256
************************************************** *** /

# Bao gồm <mega16.h>
# Bao gồm <delay.h>
# Include

/ / Chữ và số chức năng LCD Module
# Asm
   . Equ __ LCD_PORT = 0x15; PORTC
# Endasm
# Bao gồm <lcd.h>

# Xác định FIRST_ADC_INPUT 0
# Xác định LAST_ADC_INPUT 0
unsigned char adc_data [LAST_ADC_INPUT-FIRST_ADC_INPUT 1];
# Xác định ADC_VREF_TYPE 0xE0

/ / ADC ngắt dịch vụ thường xuyên
/ / Với chức năng quét tự động đầu vào
gián đoạn [ADC_INT] trống adc_isr (void)
{
đăng ký tĩnh unsigned char input_index = 0;
/ / Đọc 8 bit quan trọng nhất
/ / Của kết quả chuyển đổi AD
adc_data [input_index] = ADCH;
/ / Chọn ADC đầu vào tiếp theo
if (+ + input_index> (LAST_ADC_INPUT-FIRST_ADC_INPUT))
   input_index = 0;
ADMUX = (FIRST_ADC_INPUT | ADC_VREF_TYPE) + input_index;
/ / Bắt đầu chuyển đổi AD
ADCSRA | = 0x40;
}

khoảng trống lcd_puten (unsigned ngắn như vậy, unsigned char x, unsigned char y)
{
  A0 unsigned ngắn, a, b, c;
  a0 = so/1000; / / lay phan Nghìn
  a = (cái 1000 * A0) / 100 ;/ / lay phan tram
  b = (cái 1000 * A0-100 * a) / 10 ;/ / lay phan chuc
  c = (cái 1000 * 100 * A0-một-10 * b) ;/ / lay treo don vi
  lcd_gotoxy (x, y) ;/ / dua con tro ve dong cot y x
  lcd_putchar (A0 48) ;/ / ngày ra treo Nghìn ma ascii
  lcd_putchar (một +48) ;/ / ngày ra treo xe điện ma ascii
  lcd_putchar (b +48) ;/ / ngày ra treo chuc ma ascii
  lcd_putchar (c 48) ;/ / ngày ra treo don vi ma ascii
}

khoảng trống lcd_putnum (unsigned char như vậy, unsigned char x, unsigned char y)
{
  unsigned char a, b, c;
  a = so/100 ;/ / lay phan tram
  b = (cái 100 * a) / 10 ;/ / lay phan chuc
  c = (cái 100 * a-10 * b) ;/ / lay treo don vi
  lcd_gotoxy (x, y) ;/ / dua con tro ve dong cot y x
  lcd_putchar (một +48) ;/ / ngày ra treo xe điện ma ascii
  lcd_putchar (b +48) ;/ / ngày ra treo chuc ma ascii
  lcd_putchar (c 48) ;/ / ngày ra treo don vi ma ascii
}

/ / Khai báo biến toàn cầu của bạn ở đây

void main (void)
{
/ / Khai báo các biến cục bộ của bạn ở đây

Cổng / / Input / Output khởi
/ / Port A khởi tạo
/ / Func7 = Trong Func6 = Trong Func5 = Trong Func4 = Trong Func3 = Trong Func2 = Trong Func1 = Trong Func0 = Trong
/ / State7 = T = T State6 State5 = T = T State4 State3 = T = T State2 State1 = T = T State0
PORTA = 0x00;
DDRA = 0x00;

/ / Port B khởi tạo
/ / Func7 = Trong Func6 = Trong Func5 = Trong Func4 = Trong Func3 = Trong Func2 = Trong Func1 = Trong Func0 = Trong
/ / State7 = T = T State6 State5 = T = T State4 State3 = T = T State2 State1 = T = T State0
PORTB = 0x00;
DDRB = 0x00;

/ / Port C khởi tạo
/ / Func7 = Trong Func6 = Trong Func5 = Trong Func4 = Trong Func3 = Trong Func2 = Trong Func1 = Trong Func0 = Trong
/ / State7 = T = T State6 State5 = T = T State4 State3 = T = T State2 State1 = T = T State0
PORTC = 0x00;
DDRC = 0x00;

/ / Khởi tạo Port D
/ / Func7 = Trong Func6 = Trong Func5 = Trong Func4 = Trong Func3 = Trong Func2 = Trong Func1 = Trong Func0 = Trong
/ / State7 = T = T State6 State5 = T = T State4 State3 = T = T State2 State1 = T = T State0
PORTD = 0x00;
DDRD = 0x00;

/ / Timer / Counter 0 khởi
/ / Đồng hồ nguồn: Hệ thống đồng hồ
/ / Giá trị Clock: Timer 0 Ngưng
/ / Chế độ: Bình thường = FFh đầu
Đầu ra / / OC0: Ngắt kết nối
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;

/ / Timer / Counter 1 khởi tạo
/ / Đồng hồ nguồn: Hệ thống đồng hồ
/ / Giá trị Clock: Timer 1 Ngưng
/ / Chế độ: Bình thường = FFFFh đầu
Đầu ra / / OC1A: discon.
Đầu ra / / OC1B: discon.
/ / Tiếng ồn Canceler: Tắt
/ / Input Capture trên rơi xuống cạnh
/ / Timer 1 ngắt tràn: Tắt
/ / Input Capture Interrupt: Tắt
/ / So sánh Một ngắt trận đấu: Tắt
/ / So sánh B Trận đấu gián đoạn: Tắt
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH ​​= 0x00;
OCR1AL = 0x00;
OCR1BH = 0x00;
OCR1BL = 0x00;

/ / Timer / Counter 2 khởi tạo
/ / Đồng hồ nguồn: Hệ thống đồng hồ
/ / Giá trị Clock: Timer 2 Ngưng
/ / Chế độ: Bình thường = FFh đầu
Đầu ra / / OC2: Ngắt kết nối
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / Ngắt ngoài (s) khởi tạo
/ / INT0: Tắt
/ / INT1: Tắt
/ / INT2: Tắt
MCUCR = 0x00;
MCUCSR = 0x00;

/ / Timer (s) / Counter (s) Interrupt (s) khởi tạo
TIMSK = 0x00;

/ / Analog Comparator khởi
/ / Analog Comparator: Tắt
/ / Analog Comparator Input Capture bởi Timer / Counter 1: Tắt
ACSR = 0x80;
SFIOR = 0x00;

/ / ADC khởi
/ / ADC tần số: 125.000 kHz
/ / ADC điện áp tham khảo:. Int, mũ. trên Aref
/ / ADC tự động kích hoạt Nguồn: Không
/ / Chỉ có 8 bit quan trọng nhất của
/ / Kết quả chuyển đổi AD được sử dụng
ADMUX = FIRST_ADC_INPUT | ADC_VREF_TYPE;
ADCSRA = 0xCF;

/ / LCD module khởi tạo
lcd_init (16);

/ / Cho phép ngắt toàn cầu
# Asm ("sei")

trong khi (1)
      {
      / / Đặt mã của bạn ở đây
     / / Lcd_clear ();
     lcd_gotoxy (3,0);
     lcd_putsf ("nhiệt độ");
     
      delay_us (100);
      lcd_putnum (adc_data [0], 6,1);
      delay_us (100);

      };
}



CTV - Duy Luân - echipkool.com - Support code: Duyluandt3@gmail.com