Sở chuyển đổi tương tự sang trọng số – ADC (Analog lớn Digital Converter) đem nấc năng lượng điện vắt vào tựa như sau đó một thời gian sẽ hình thành mã cổng đầu ra dạng số biểu diễn đầu vào tương tự. Tiến trình biến hóa A/D thường tinh vi và mất không ít thời gian rộng các bước chuyển đổi D/A. Do đó có khá nhiều cách thức khác nhau nhằm biến đổi từ bỏ tương tự như thanh lịch số. Hình vẽ 5.16 là sơ vật kân hận của một lớp ADC đơn giản.

Bạn đang xem: Huong dan dung proteus

*

Hoạt hộp động cơ phiên bản của lớp ADC nằm trong nhiều loại này hệt như sau:

Xung lệnh START khởi đôïng sự buổi giao lưu của hêï thống.

Xung Cloông chồng quyết định cỗ điều khiển thường xuyên sửa đổi số nhị phân giữ vào tkhô giòn ghi.

Số nhị phân vào tkhô nóng ghi được DAC đổi khác thành mức điện nỗ lực tựa như VAX.

Bộ so sánh so sánh VAX với đầu vào trương trường đoản cú VA. Nếu VAX A Áp sạc ra của bộ so sánh lên tới mức cao. Nếu VAX > VA ít nhất bằng một khoảng chừng VT (điện chũm ngưỡng), đầu dra của bộ so sánh đang xuống tới mức tốt với xong xuôi tiến trình thay đổi số nhị phân ngơi nghỉ thanh hao ghi. Tại thời đặc điểm đó VAX dao động VA. giá chỉ dtrị nhị phân nghỉ ngơi thanh ghi là đại lượng số tương đương VAX với cũng chính là đại lượng số tương tự VA, trong giới hạn độ phân giải với độ đúng chuẩn của khối hệ thống.

Logic tinh chỉnh kích hoạt bộc lộ ECO khi chu kỳ luân hồi biến đổi dứt.

Tiến trình này có thể có không ít cố dổi đối với một vài một số loại ADC khác, hầu hết là sự việc khác nhau ngơi nghỉ cách thức bộ tinh chỉnh sửa thay đổi số nhị phân vào tkhô nóng ghi.

Xem thêm: Ca Sĩ Ngô Quang Vinh Sinh Năm Bao Nhiêu Người Khen Em Vô Duyên Rồi Em Gì Ơi?"

IC ADC0808 là 1 vi mạch tích đúng theo có tính năng biến hóa bộc lộ giống như sang kỹ thuật số (Analog lớn Digital Converters), độ phân giải của cục ADC là 8bit tức nó vẫn chuyển đổi biểu lộ năng lượng điện tương tự như thanh lịch 256 nấc năng lượng điện áp đối với Vref cấp vào cỗ biến hóa. Các bạn cũng có thể xem datasheet của chính nó vào tệp đi cùng.

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

Sau phía trên bọn họ xem tác dụng của từng chân ADC0808:

IN0-7 – ngõ vào biểu thị Analog InputSTART – chân tinh chỉnh và điều khiển biểu đạt bắt đầu quá trình biến đổi ADC.EOC – Chân phát biểu thị báo kết thúc quy trình chuyển đổi ADC.2-1 – 2-8 – Ngõ ra Tín hiệu số- Data 8 bitOUT EN – Chân có thể chấp nhận được xuất.CLK – chân dìm nguồn xung ClockVcc/ GND – Chân dấn năng lượng điện mối cung cấp dươngVref+/ Vref- – Chân nhận(input) điện áp tsay mê chiếu.ALE – Address Latch Enable

Địa chỉ cửa hàng A, B, C – Address Input A, B, C (xác định ngõ vào)

vì vậy ADC0808 bao gồm tất cả 8 đầu vào Analog, được khẳng định vì A, B, C (từ 000 cho 111)! Và chúng ta chú ý tầm năng lượng điện áp nguồn vào analog là: 0 cho 5v, tương xứng với khoảng 0 và nấc 255 sống áp ra output. Tuy nhiên họ cũng có thể chọn quý giá nguồn vào nhỏ hơn nhưng vẫn hoàn toàn có thể chia với độ 255 thông qua việc kiểm soát và điều chỉnh điện áp trên chân năng lượng điện áp tsi mê chiếu Vref, ví dụ 2,55 V.

b) Cảm biến chuyển nhiệt độ độ

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

*

*

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

Tự hễ cập nhật quý hiếm ánh sáng của LM35 tự ADC0808 rồi hiển thị lên LCD 16×2, sinh sản xung đồng hồ mang đến IC ADC0808 sử dụng ngắt timer.

Xây dựng: Xây dựng những hàm tiếp xúc LCD cùng 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 chỉ trên màn hình hiển thị.LCD_PutChar(c) Hàm gửi một ký kết trường đoản cú ASCII lên LCD.LCD_Puts(“String”) Hàm gửi một chuỗi ký kết từ bỏ lên LCD* ADC0808:ADC0808_Read(channel) Hàm đọc ADC theo kênh từ bỏ 0-7

Với 8051 chúng ta đã sử dụng PORT2 làm cho port nhập data của ADC808. Chúng ta cần phải có 3 chân dùng làm tinh chỉnh chân nguồn vào của biểu lộ vào ADC là P3.2, P3.3, P3.4.

Bên cạnh đó để rất có thể điều khiển được quy trình truy nã xuất/tiếp xúc ADC thì họ cũng cần phải thêm một trong những chân để kết nối với ADC0808 nữa, rõ ràng là:

– Chân EOC của ADC0808 sẽ kết nối với chân P1.4 của 8051– Chân OE của ADC0808 đã liên kết cùng với chân P1.5 của 8051– Chân LE của ADC0808 sẽ kết nối cùng với chân P1.7 của 8051– Chân START của ADC0808 đang kết nối thông thường cùng với chân LE– Nguồn xung cloông chồng cấp cho cho ADC0808 sẽ được tạo nên vì thiết yếu chân P1.6

* Một số chân của vi điều khiển và tinh chỉnh lại được đề xuất cho nhằm hoàn toàn có thể điều khiển LCD– Chân E của LCD sẽ tiến hành tinh chỉnh bởi chân P3.5 của 8051– Chân RS của LCD sẽ được điều khiển và tinh chỉnh bởi vì chân P3.6 của 8051– Chân RW của LCD sẽ được tinh chỉnh và điều khiển vì chân P3.7 của 8051

*

/*Do nhiet vày dung LM35 va ADC0808 hoac ADC0809*/

#include

#define VREF 5

//Knhị 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 dữ liệu qua 4 chân

#define LCD_D5 P0_5

#define LCD_D6 P0_6

#define LCD_D7 P0_7

/*Hàm gọi với tinh chỉnh và điều khiển ADC0808*/

unsigned char ADC0808_Read(unsigned char channel)

unsigned char kq;

ADC0808_A = channel và 0x01;

ADC0808_B = channel và 0x02;

ADC0808_C = channel và 0x04;

ADC0808_ALE = 1;

ADC0808_START = 1;

ADC0808_ALE = 0;

ADC0808_START = 0;

while(ADC0808_EOC);

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(comm& >>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 bên 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 thơm trình ngắt timer 0*/

void INT_Timer0()interrupt 1

//ctr phuc vu ngat tao xung clock cho ADC0808

ADC0808_CLK=~ADC0808_CLK; //Dao bit

/*Main Program*/

unsigned char temp;

void main()

//Tao xung clochồng mang đến ADC0808 – đang học tập sau

TMOD=0x02;

TH0=TL0=236;

TR0=1;

ET0=1;//Ngat timer0

EA=1;//Cho phep ngat cuc bo

LCD_Init();//Khoi tao LCD

delay_ms(200);

LCD_Puts(“Dang vị nhiet do…”);

delay_ms(1000);

LCD_Clear();

LCD_Gotoxy(0,1);

LCD_Puts(“KT.VIXULY – PTIT”);

while(1)

LCD_Gotoxy(0,0);

temp=ADC0808_Read(0);

TempShow(temp);

delay_ms(500);

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

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

*

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

Xem thêm: Đan Trường Sinh Năm Bao Nhiêu Tuổi Và Các Thông Tin Cá Nhân Khác Về Anh Bo

Giải phù hợp nhỏng sau:

Với LM35, ánh nắng mặt trời tăng 1 thì điện vắt đầu ra tăng 0.01 V. Trong bài này chúng ta không đo được nhiệt độ âm. Chúng ta chỉ đo ánh nắng mặt trời trường đoản cú 0-150, gắng vì chưng -55 cho 150 độ C, tức là năng lượng điện cố gắng đầu ra output của LM35 trường đoản cú 0-1,5 V, cũng chính là Vin của ADC.