Huong dan dung proteus

Bộ biến hóa tựa như lịch sự số – ADC (Analog to Digital Converter) lấy mức điện cầm cố vào tựa như sau đó một thời hạn đã hiện ra mã áp ra output dạng số trình diễn đầu vào tựa như. Tiến trình biến đổi A/D thường xuyên tinh vi cùng mất nhiều thời hạn hơn quy trình đổi khác D/A. Do kia có rất nhiều cách thức khác nhau để biến hóa tự tương tự sang số. Hình vẽ 5.16 là sơ đồ dùng kân hận của một tờ ADC đơn giản và dễ dàng.

Bạn đang xem: Huong dan dung proteus

*

Hoạt bộ động cơ phiên bản của lớp ADC ở trong loại nàgiống như sau:

Xung lệnh START khởi đôïng sự hoạt động của hêï thống.

Xung Clock quyết định bộ điều khiển và tinh chỉnh liên tục chỉnh sửa số nhị phân lưu trong tkhô nóng ghi.

Số nhị phân vào tkhô hanh ghi được DAC chuyển đổi thành mức điện cố tương tự VAX.

Bộ so sánh đối chiếu VAX với đầu vào trương từ bỏ VA. Nếu VAX A Áp sạc ra của cục so sánh lên tới mức cao. Nếu VAX > VA tối thiểu bằng một khoảng chừng VT (điện nạm ngưỡng), đầu dra của cục so sánh vẫn xuống đến mức phải chăng và hoàn thành quá trình chuyển đổi số nhị phân sống thanh ghi. Tại thời điểm này VAX dao động VA. giá dtrị nhị phân ngơi nghỉ tkhô cứng ghi là đại lượng số tương đương VAX và cũng chính là đại lượng số tương tự VA, trong số lượng giới hạn độ phân giải với độ chính xác của khối hệ thống.

Logic tinh chỉnh kích hoạt biểu hiện ECO lúc chu kỳ luân hồi biến hóa dứt.

Tiến trình này hoàn toàn có thể có không ít cầm cố dổi so với một vài loại ADC không giống, chủ yếu là sự việc khác biệt sống phương thức cỗ tinh chỉnh và điều khiển sửa thay đổi số nhị phân trong tkhô cứng ghi.

Xem thêm: Tiểu Sử Nam Ca Sĩ Kelvin Khánh

IC ADC0808 là một vi mạch tích thích hợp có công dụng biến đổi biểu lộ tương tự như sang hiện đại số (Analog lớn Digital Converters), độ phân giải của cục ADC là 8bit tức nó vẫn biến đổi biểu đạt năng lượng điện tương tự như sang trọng 256 mức năng lượng điện áp so với Vref cấp cho vào cỗ đổi khác. Các bạn cũng có thể xem datasheet của chính nó vào tệp đi kèm.

Sơ đồ vật chân:
*

Sau trên đây bọn họ coi công dụng của từng chân ADC0808:

IN0-7 – ngõ vào dấu hiệu Analog InputSTART – chân điều khiển và tinh chỉnh bộc lộ bước đầu quy trình biến đổi ADC.EOC – Chân vạc biểu thị báo xong xuôi quy trình biến đổi ADC.2-1 – 2-8 – Ngõ ra Tín hiệu số- Data 8 bitOUT EN – Chân cho phép xuất.CLK – chân thừa nhận nguồn xung ClockVcc/ GND – Chân nhấn điện mối cung cấp dươngVref+/ Vref- – Chân nhận(input) năng lượng điện áp tmê mẩn 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)

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

b) Cảm trở nên sức nóng độ

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

*

*

Lập trình giao tiếp ADC0808

Tự cồn update quý hiếm nhiệt độ của LM35 từ bỏ ADC0808 rồi hiển thị lên LCD 16×2, chế tạo ra xung đồng hồ đeo tay đến IC ADC0808 áp dụng ngắt timer.

Xây dựng: Xây dựng các hàm tiếp xúc LCD với tiếp xúc ADC0808:

* LCD16x2:

LCD_Init() Hàm khởi sinh sả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 gửi một cam kết tự ASCII lên LCD.LCD_Puts(“String”) Hàm gửi một chuỗi cam kết từ bỏ lên LCD* ADC0808:ADC0808_Read(channel) Hàm phát âm ADC theo kênh tự 0-7

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

Trong khi nhằm rất có thể tinh chỉnh được quá trình truy vấn xuất/tiếp xúc ADC thì bọn họ cũng cần thêm một trong những chân nhằm kết nối cùng với ADC0808 nữa, cụ thể là:

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

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

*

/*Do nhiet bởi 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 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ề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 & 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(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 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 cloông xã mang đến ADC0808

ADC0808_CLK=~ADC0808_CLK; //Dao bit

/*Main Program*/

unsigned char temp;

void main()

//Tao xung cloông xã cho ADC0808 – đã học 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 bởi 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ô phỏng trên Proteus:

Danh sách một vài máy nlỗi sau:

*

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

Xem thêm: Thử Chơi Sniper Fury: Game Bắn Súng Fps Đỉnh Cao Dành Cho Game Thủ

Giải đam mê như sau:

Với LM35, ánh sáng tăng 1 thì điện rứa đầ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. Chúng ta chỉ đo ánh sáng từ bỏ 0-150, chũm vì -55 cho 150 độ C, Có nghĩa là điện ráng đầu ra của LM35 trường đoản cú 0-1,5 V, cũng đó là Vin của ADC.


Chuyên mục: CUỘC SỐNG