Mạch Đo Nhiệt Độ Dùng 8051

ĐO NHIỆT ĐỘ DÙNG IC 8051, ADC0808, CẢM BIẾN NHIỆT LM35

Giới thiệu chung

IC ADC0808 là một vi mạch tích hợp gồm chức năng chuyển đổi tín hiệu tương tự như sang kỹ thuật số (Analog to Digital Converters), độ phân giải của bộ ADC là 8bit tức nó sẽ đổi khác tín hiệu điện giống như sang 256 mức điện áp đối với Vref cấp cho vào cỗ chuyển đổi. Các chúng ta cũng có thể xem datasheet của nó trong tệp đính thêm kèm.

Bạn đang xem: Mạch đo nhiệt độ dùng 8051

Sơ đồ gia dụng chân:
*

Sau đây bọn họ xem tính năng của từng chân ADC0808:

IN0-7 – ngõ vào biểu thị Analog InputSTART – chân điều khiển tín hiệu bước đầu quá trình đổi khác ADC.EOC – Chân phát biểu hiện báo chấm dứt quá trình chuyển đổi ADC.2-1 – 2-8 – Ngõ ra biểu hiện số- Data 8 bitOUT EN – Chân chất nhận được xuất.CLK – chân dấn nguồn xung ClockVcc/ GND – Chân nhận điện nguồn dươngVref+/ Vref- – Chân nhận(input) năng lượng điện áp tham chiếu.ALE – Address Latch Enable (Các em Google xem nó để gia công gì?)ADD A, B, C – Address input A, B, C (xác định ngõ vào)

Như vậy ADC0808 có toàn bộ 8 nguồn vào Analog, được khẳng định bởi A, B, C (từ 000 mang lại 111)! Và họ lưu ý tầm điện áp nguồn vào analog là: 0 cho 5v, tương ứng với nấc 0 với mức 255 sinh hoạt đầu ra. Tuy nhiên họ cũng hoàn toàn có thể chọn cực hiếm đầu vào nhỏ dại hơn cơ mà vẫn rất có thể chia cùng với độ 255 trải qua việc kiểm soát và điều chỉnh điện áp trên chân điện áp tham chiếu Vref, ví dụ 2,55 V.

b) cảm ứng nhiệt độ

LM35 là cảm biến nhiệt độ, áp sạc ra là biểu đạt điện áp biến hóa theo nhiệt độ độ, cứ 10mV tương ứng với cùng 1 độ C cùng giải đo của IC này là -55 độ mang lại 150 độ C, điện áp cung ứng từ 4-20VDC. Để đo được ánh sáng âm tức nhỏ dại hơn 0 ta bắt buộc cấp thêm mối cung cấp âm -Vs mang lại IC:

*

*

Lập trình tiếp xúc ADC0808

Tự động cập nhật giá trị ánh sáng của LM35 từ ADC0808 rồi hiển thị lên LCD 16×2, chế tác xung đồng hồ cho IC ADC0808 áp dụng ngắt timer.

Xem thêm: Lá Đinh Lăng Trị Bệnh Gì - Uống Lá Đinh Lăng Có Tác Dụng Gì Tốt Cho Cơ Thể

Xây dựng: Xây dựng những hàm giao tiếp LCD và tiếp xúc ADC0808:

* LCD16x2:

LCD_Init() Hàm khởi tạo nên LCDLCD_Clear() Hàm xóa màn hìnhLCD_Gotoxy(X,Y) Hàm trỏ tới địa điểm trên màn hình.LCD_PutChar(c) Hàm giữ hộ một ký kết tự ASCII lên LCD.LCD_Puts(“String”) Hàm gởi một chuỗi cam kết tự lên LCD (Nó giống như hàm nào vẫn biết vào bài thực hành thực tế trước?)

* ADC0808:

ADC0808_Read(channel) Hàm hiểu ADC theo kênh trường đoản cú 0-7

Với 8051 bọn họ sẽ cần sử dụng PORT2 làm cho port import dữ liệu của ADC808. Họ cần tất cả 3 chân dùng để làm điều khiển chân nguồn vào của bộc lộ vào ADC là P3.2, P3.3, P3.4.

Ngoài ra để rất có thể điều khiển được quá trình truy xuất/giao tiếp ADC thì bọn họ cũng nên thêm một số chân để kết nối với ADC0808 nữa, ví dụ là:

– Chân EOC của ADC0808 sẽ liên kết với chân P1.4 của 8051– Chân OE của ADC0808 sẽ kết nối với chân P1.5 của 8051– Chân LE của ADC0808 sẽ kết nối với chân P1.7 của 8051– Chân START của ADC0808 sẽ liên kết chung với chân LE– nguồn xung clock cung cấp cho ADC0808 đang được tạo thành bởi chính chân P1.6

* một trong những chân của vi điều khiển lại được đề xuất đến để rất có thể điều khiển LCD– Chân E của LCD vẫn được điều khiển và tinh chỉnh bởi chân P3.5 của 8051– Chân RS của LCD sẽ được tinh chỉnh bởi chân P3.6 của 8051– Chân RW của LCD đã được điều khiển bởi chân P3.7 của 8051

*

Đoạn code công tác như sau. để ý hiểu rõ các dấu ??????

/*Do nhiet vị dung LM35 va ADC0808 hoac ADC0809*/#include #define VREF 5//Khai bao chan giao tiep ADC0808#define ADC0808_DATA P3#define ADC0808_A P2_0#define ADC0808_B P2_1#define ADC0808_C P2_2#define ADC0808_ALE P2_3#define ADC0808_START P2_4#define ADC0808_EOC P2_5#define ADC0808_OE P2_6#define ADC0808_CLK P2_7//Khai bao chan giao tiep LCD16x2 4bit#define LCD_RS P0_0#define LCD_RW P0_1#define LCD_EN P0_2#define LCD_D4 P0_4 //Truyền tài liệu qua 4 chân#define LCD_D5 P0_5#define LCD_D6 P0_6#define LCD_D7 P0_7/*Hàm hiểu và điều khiển ADC0808*/unsigned char ADC0808_Read(unsigned char channel)unsigned char kq;ADC0808_A = channel và 0x01;ADC0808_B = channel & 0x02;ADC0808_C = channel & 0x04;ADC0808_ALE = 1;ADC0808_START = 1;ADC0808_ALE = 0;ADC0808_START = 0;while(ADC0808_EOC); //Tại sao lại có đoạn code này?while(!ADC0808_EOC);ADC0808_OE = 1;kq = ADC0808_DATA;ADC0808_OE = 0;return kq;/*Ham delay*/void delay_us(unsigned int t)unsigned int i;for(i=0;i>1)&1;LCD_D6=(Data>>2)&1;LCD_D7=(Data>>3)&1;void LCD_SendCommand(unsigned char command)LCD_Send4Bit(command >>4);LCD_Enable();LCD_Send4Bit(command);LCD_Enable();void LCD_Clear()LCD_SendCommand(0x01);delay_us(10);void LCD_Init()LCD_Send4Bit(0x00);delay_ms(20);LCD_RS=0;LCD_RW=0;LCD_Send4Bit(0x03);LCD_Enable();delay_ms(5);LCD_Enable();delay_us(100);LCD_Enable();LCD_Send4Bit(0x02);LCD_Enable();LCD_SendCommand( 0x28 );LCD_SendCommand( 0x0c);LCD_SendCommand( 0x06 );LCD_SendCommand(0x01);void LCD_Gotoxy(unsigned char x, unsigned char y)unsigned char address;if(!y) address=(0x80+x);else address=(0xc0+x);delay_us(1000);LCD_SendCommand(address);delay_us(50);void LCD_PutChar(unsigned char Data)LCD_RS=1;LCD_SendCommand(Data);LCD_RS=0 ;void LCD_Puts(char *s)while (*s)LCD_PutChar(*s);s++;/*Hiển thị ánh sáng trên LCD*/void TempShow(unsigned char z)LCD_Puts("Nhiet do: ");LCD_PutChar((z/100)+48);//LCD_PutChar((z%100/10)+48);LCD_PutChar((z%10)+48);LCD_Puts("*C");/*Chương trình ngắt timer 0*/void INT_Timer0()interrupt 1 //ctr phuc vu ngat tao xung clock mang lại ADC0808ADC0808_CLK=~ADC0808_CLK; //Dao bit/*Main Program*/unsigned char temp;void main()//Tao xung clock cho ADC0808 – đang học sauTMOD=0x02;TH0=TL0=236;TR0=1;ET0=1;//Ngat timer0EA=1;//Cho phep ngat cuc boLCD_Init();//Khoi tao LCDdelay_ms(200);LCD_Puts("Dang do nhiet do...");delay_ms(1000);LCD_Clear();LCD_Gotoxy(0,1);LCD_Puts("cho chut ");while(1)LCD_Gotoxy(0,0);temp=ADC0808_Read(0);TempShow(temp);delay_ms(500);

III. Mô bỏng trên Proteus:

Danh sách một trong những thiết bị như sau:

*

Tại sao temp=ADC0808_Read(0) = ADC0808_DATA.

Giải phù hợp như sau:

Với LM35, nhiệt độ tăng 1 thì điện thế cổng đầu ra tăng 0.01 V. Trong bài xích này bọn họ không đo được ánh sáng âm (tại sao???). Chúng ta chỉ đo ánh nắng mặt trời từ 0-150, thay vày -55 cho 150 độ C, có nghĩa là điện thế đầu ra output của LM35 từ bỏ 0-1,5 V, cũng đó là Vin của ADC.

Leave a Reply

Your email address will not be published. Required fields are marked *