You are on page 1of 21

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

----- -----

BÀI TẬP LỚN KỸ THUẬT VI XỬ LÝ


ĐỀ TÀI: Đếm số người ra vào sử dụng cảm biến hồng ngoại.

Nhóm 1 : Phan Đức Anh


Nguyễn Ngọc Khoa
Khúc Chí Tá
Giảng viên: Nguyễn Quý Sỹ

....Hà Nội 2020...

1
Mục Lục
Lời mở đầu
I, Mục tiêu(Kết quả).
a, Lí do chọn đề tài
b, Mục tiêu của đề tài
c, Vần đề cần giải quyết
II, Các thiết bị sử dụng.
a, Vi điều khiển 8051
b, IC ADC0808
c, Cảm biến nhiệt LM35

III, Thiết kế hệ thống(phần cứng)


a, Cách thức hoạt động, chương trình chạy.
b, Mạch nguyên lý + PCB.
IV, Thuật toán điều khiển
a, Đánh giá khách quan thiết bị.
b, Hướng phát triển đề tài, áp dụng vào thực tế.
c, Tài liệu tham khảo.

2
Lời mở đầu

Ngày nay, sự phát triển mạnh mẽ của khoa học công nghệ, cuộc sống của con người đã
có những thay đổi càng tốt hơn, mang lai sự tối ưu hóa với những trang thiết bị hiện đại
phục vụ công nghiệp hóa, hiện đại hóa đất nước. Góp phần vào sự phát triển đó thì
nghành kĩ thuật góp phần không nhỏ vào sự phát triển đó. Trong đó sự tích hợp các mạch
điện- điện tử ngày càng trở nên thiết yếu khi mà công nghệ ngày càng phát triển tiến tới
thời đại của vi xử lý vi mạch cồng kềnh chiếm nhiều diện tích đã bị loại bỏ thay dần
bằng cách mạch gọn gàng hơn đang dần đc ưa chuộng. Những thành tựu đó đã biến
những cái không chừng trở thành nhưng cái có thể, góp phần nâng cao và cải thiện đời
sống con người. Trong đó nghành kĩ thuật số có vai trò quan trọng trọng trong và áp dụng
điều khiển số trong công nghệ hiện đại. Kĩ thuật số đã ra đời và làm nên cuộc cách mạng
trong mọi lĩnh vực của cuộc sống hiện đại như nồi cơm điện, máy giặt, máy điện thoại...,
đến truyền hình, viễn thông, máy tính.... Những ứng dụng của nó trong sản xuất của các
công tý lớn nhỏ là không kể hết. Xuất phát từ các nhà mà và tham quan các doanh nghiệp
to và nhỏ, chúng em đã thấy những khâu tự động hóa có vai trò quan trọng trong sản
xuất. Một trong những khâu đơn giản trong dây chuyền sản xuất tự động hóa là đếm sản
phẩm sản xuất ra được. Tuy nhiên một số công ty vừa và nhỏ thì việc áp dụng tự động
hóa còn chưa được áp dụng trong nhưng khâu đếm sản phẩm, đóng bao bì mà vẫn sử
dụng nhân công. Từ những điều đó và thấy khả năng của chúng em, chúng em muốn
làm gì đó để đóng góp phần giúp người lao động bớt mệt nhọc chân tay mà vẫn giúp
năng suất cải thiên gấp nhiều lần, vẫn đảm bảo độ chính xác cao. Đối với các nơi có
nhiều dịch vụ tiện ích cho con người như siêu thịm, cửa hàng.... cần có quản lý số người
ra vào để biết được tình hình kinh doanh của doanh nghiệp đó. Vậy nên chúng em quyết
định tao ra một mạch đếm người ra vào, vì nó rất thực tế và có ịch cho xã hội, nhận thấy
tiềm năng và tính ứng dụng của nó vào thực tế, chúng em hi vọng nó sẽ ứng dụng cho tất
cả các siêu thị và cửa hàng trên cả nước. Vì kiến thức của chúng em còn hạn hẹp, rất
mong được thầy và các bạn góp ý để hoàn thiện đề tài.

3
I, Mục tiêu(Kết quả)
- Ngày nay việc ứng dụng các vi điều khiển vào các ứng dụng thực về
vào cuộc sống ngày càng phổ biến, điển hình là vi điều khiển 8051.Trong
đó ta có thể kể đến các thiết bị cảm ứng và hiển thị thông số môi trường
nhằm tạo sự tiện lợi trong sinh hoạt hàng ngày. Chúng em đã quyết định
chọn đề tài đo nhiệt độ môi trường sử dụng cảm biến nhiệt LM35, IC
8051,IC ADC0808 hiển thị nhiệt độ trên LCD.

II. Các thiết bị sử dụng


A. Vi điều khiển 8051

4
a.1 Tổ chức bộ nhớ
            Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian
chương trình và dữ liệu, hình 1 và hình 2 sẽ mô tả điều này. Kiến trúc vi xử
lý 8 bit của 8051 này cho phép truy nhập và tính toán nhanh hơn đối với
không gian dữ liệu nhờ việc phân chia 2 không gian bộ nhớ chương trình và
5
dữ liệu như trên. Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit
địa chỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ. 
    Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng
tối đa 64Kbyte. Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích
hợp sẵn trong chip có kích thước nhỏ nhất là 4kByte. Với các vi điều khiển
không tích hợp sẵn bộ nhớ chương trình trên chip, buộc phải thiết kế bộ nhớ
chương trình bên ngoài. Ví dụ sử dụng EPROM: 2764 (64Kbyte), khi đó
chân PSEN phải ở mức tích cực (5V).

 Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình. Họ vi
điều khiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và
có thể mở rộng với bộ nhớ dữ liệu ngoài lên tới 64kByte. Với những vi điều
khiển không tích hợp ROM trên chip thì vẫn có RAM trên chip là 128byte.
Khi sử dụng RAM ngoài, CPU đọc và ghi dữ liệu nhờ tín hiệu trên các chân
RD và WR. Khi sử dụng cả bộ nhớ chương trình và bộ nhớ dữ liệu bên
ngoài thì buộc phải kết hợp chân RD và PSEN bởi cổng logic AND để phân
biệt tín hiệu truy xuất dữ liệu trên ROM hay RAM ngoài.

6
   Hình 2 mô tả cấu trúc bộ nhớ chương trình. Sau khi khởi động, CPU bắt
đầu thực hiện chương trình ở vị trí 0000H. Hình 3 mô tả địa chỉ ngắt mặc
định trên bộ nhớ chương trình. Mối khi xảy ra ngắt, con trỏ của CPU sẽ nhảy
đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại đó. Ví dụ ngắt
ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ chương
trình sẽ nhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó. Nếu
trong chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địa chỉ
0003H vẫn có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương
trình).

7
       8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong
các byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại
chứa trong các thanh ghi đặc biệt. Ngoài ra 8051 còn có các port xuất/nhập
có thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần
mềm với các thiết bị xuất/nhập đơn bit. 
            Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH,
bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng
tương tự. Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể
được truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc
gián tiếp. 
            Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được
truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc
gián tiếp. 
            Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng
đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH. Cần lưu
ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà
chỉ có 21 địa chỉ được định nghĩa. 

a.2 Các thanh ghi đặc biệt


            8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của
Ram nội từ địa chỉ 80H đến FFH. Cần lưu ý là không phải tất cả 128 địa chỉ
từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định
nghĩa. Hình 8 mô tả các thanh ghi đặc biệt trong vùng nhớ dữ liệu 80H đến
FFH và giá trị của chúng sau khi Reset.

8
Thanh ghi chính:
            Thanh ghi tính toán  chính của vi điều khiển 8051 ACC
(Accumulator). Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép
toán của CPU, thường kí hiệu là A. 
Thanh ghi phụ:
            Thanh ghi tính toán phụ của vi điều khiển 8051 là B. Thanh ghi B ở
địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân,
chia. Lệnh MUL  AB nhân 2 số 8 bit không dấu chứa trong A và B và chứa
kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp và thanh
ghi B cất byte cao).
            Lệnh chia DIV  AB chia A bởi B, thương số cất trong thanh chứa A
và dư số cất trong thanh ghi B. Thanh ghi B còn được xử lý như một thanh
ghi nháp. Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến
F7H. 
Thanh ghi trạng thái chương trình (PSW):
            Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi
mô tả toàn bộ trạng thái chương trình đang hoạt động của hệ
thống. Bảng 7 và Bảng 8 sẽ mô tả thanh ghi này.

9
Thanh ghi ngăn xếp (Stack Pointer):
            Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP
chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến
satck bao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack.
Việc cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra
khỏi stack sẽ giảm SP. Vùng stack của 8051 được giữ trong RAM nội  và
được giới hạn đến các địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp.
Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các
lệnh gọi chương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI)
cũng cất và phục hồi nội dung của bộ đếm chương trình PC (Program
counter)
Con trỏ dữ liệu DPTR:
            Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ
chương trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là một thanh ghi 16 bit
có địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao).
Thanh ghi các cổng P0-P3:
            Các port xuất/nhập của 8051 bao gồm  Port 0 tại địa chỉ 80H, Port 1
tại địa chỉ 90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H. Tất cả các
port đều được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp
mạnh.
Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer):
            Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ
liệu và bộ đệm nhận dữ liệu. Khi dữ liệu được chuyển vào thanh ghi SBUF,
dữ liệu sẽ được chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó
cho đến khi quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc. Khi
thực hiện việc chuyển dữ liệu từ SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ
đệm nhận dữ liệu của truyền thông nối tiếp.
hanh ghi của bộ định thời/bộ đếm:
            8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các
khoảng thời gian hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và
(TH1, TL1) là các thanh ghi của bộ đếm thời gian. Bộ định thời 0 có địa chỉ
8AH (TL0, byte thấp) và 8CH (TH0, byte cao). Bộ định thời 1 có địa chỉ
8BH (TL1, byte thấp) và 8DH (TH1, byte cao).  

10
            Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định
thời TMOD (Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON được định
địa chỉ từng bit.
Các thanh ghi điều khiển:
            Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON
và PCON là các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống
ngắt, bộ đếm/định thời, truyền thông nối tiếp. Chi tiết của các thanh ghi này
sẽ được mô tả sau

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

Sau đây chúng ta xem chức năng của từng chân ADC0808:
IN0-7 - ngõ vào tín hiệu Analog Input
START - chân điều khiển tín hiệu bắt đầu quá trình biến đổi ADC.
EOC - Chân phát tín hiệu báo kết thúc quá trình chuyển đổi ADC.
2-1 - 2-8 - Ngõ ra Tín hiệu số- Data 8 bit
OUT EN - Chân cho phép xuất.
11
CLK - chân nhận nguồn xung Clock 
Vcc/ GND - Chân nhận điện nguồn dương
Vref+/ Vref- - Chân nhận(input) điện áp tham chiếu.
ALE - Address Latch Enable (Các em Google xem nó để làm gì?)
ADD A, B, C - Address Input A, B, C (xác định ngõ vào)
Như vậy ADC0808 có tất cả 8 đầu vào Analog, được xác định bởi A, B, C (từ 000 đến
111)! Và chúng ta lưu ý tầm điện áp đầu vào analog là: 0 đến 5v, tương ứng với mức 0 và
mức 255 ở đầu ra. Tuy nhiên chúng ta cũng có thể chọn giá trị đầu vào nhỏ hơn mà vẫn
có thể chia với độ 255 thông qua việc điều chỉnh điện áp trên chân điện áp tham chiếu
Vref, ví dụ 2,55 V.

C, Cảm biến nhiệt độ LM35

LM35 là cảm biến nhiệt độ, đầu ra là tín hiệu điện áp biến đổi theo nhiệt độ, cứ 10mV
tương ứng với 1 độ C và giải đo của IC này là -55 độ đến 150 độ C, điện áp cung cấp từ
4-20VDC. Để đo được nhiệt độ âm tức nhỏ hơn 0 ta phải cấp thêm nguồn âm -Vs cho IC:

12
III, Thiết kế hệ thống(phần cứng )

Lập trình giao tiếp ADC0808

Tự động cập nhật giá trị nhiệt độ của LM35 từ ADC0808 rồi hiển thị lên LCD 16x2, tạo
xung đồng hồ cho IC ADC0808 sử dụng ngắt timer.
Xây dựng: Xây dựng các hàm giao tiếp LCD và giao tiếp ADC0808:
* LCD16x2:
 LCD_Init() Hàm khởi tạo LCD
 LCD_Clear() Hàm xóa màn hình
 LCD_Gotoxy(X,Y) Hàm trỏ tới vị trí trên màn hình.
 LCD_PutChar(c)  Hàm gửi một ký tự ASCII lên LCD.
 LCD_Puts(“String”) Hàm gửi một chuỗi ký tự lên LCD (Nó giống hàm nào đã
biết trong bài thực hành trước?)
* ADC0808:
 ADC0808_Read(channel) Hàm đọc ADC theo kênh từ 0-7
Và một số hàm khác như delay, tính nhiệt độ, chuyển đổi hiển thị các em xem thêm
trong đoạn code phía dưới! Tiếp theo chúng ta sẽ thiết kế mạch kết nối giữa vi điều khiển
8051 và ADC0808.
Với 8051 chúng ta sẽ dùng PORT2 làm port nhập data của ADC808. Chúng ta cần có 3
chân dùng để điều khiển chân đầu vào của tín hiệu vào ADC là P3.2, P3.3, P3.4.
Ngoài ra để có thể điều khiển được quá trình truy xuất/giao tiếp ADC thì chúng ta cũng
cần thêm một số chân để kết nối với ADC0808 nữa, cụ thể là:

13
- 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 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ẽ kết nối chung với chân LE
- Nguồn xung clock cấp cho ADC0808 sẽ được tạo ra bởi chính chân P1.6

* Một số chân của vi điều khiển lại được cần đến để có thể điều khiển LCD
- Chân E của LCD sẽ được điều khiển bởi chân P3.5 của 8051 
- Chân RS của LCD sẽ được điều khiển bởi chân P3.6 của 8051 
- Chân RW của LCD sẽ được điều khiển bởi chân P3.7 của 8051

IV , Thuật toán điều khiển


/*Do nhiet do dung LM35 va ADC0808 hoac ADC0809*/
#include <REGX52.H>
#define VREF 5
//Khai bao chan giao tiep ADC0808
#define ADC0808_DATA P3
14
#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 đọc và điều khiển ADC0808*/
unsigned char ADC0808_Read(unsigned char channel){
unsigned char kq;
ADC0808_A = channel & 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;

15
kq = ADC0808_DATA;
ADC0808_OE = 0;
return kq;
}

/*Ham delay*/
void delay_us(unsigned int t){
unsigned int i;
for(i=0;i<t;i++);
}
void delay_ms(unsigned int t){
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<123;j++);
}

/*Chương trình giao tiep LCD 16x2 4bit*/


void LCD_Enable(void){ // Hàm này dùng để làm gì?
LCD_EN =1;
delay_us(3);
LCD_EN=0;
delay_us(50);
}

void LCD_Send4Bit(unsigned char Data){ //Ý nghĩa từng dòng lệnh???


LCD_D4=Data & 0x01;
LCD_D5=(Data>>1)&1;
LCD_D6=(Data>>2)&1;
LCD_D7=(Data>>3)&1;

16
}
void LCD_SendCommand(unsigned char command){
LCD_Send4Bit(command >>4);/* Gui 4 bit cao hay thấp???? */
LCD_Enable();
LCD_Send4Bit(command);
LCD_Enable();
}
void LCD_Clear(){
LCD_SendCommand(0x01); //Lệnh 0x01 Dùng để làm gì?
delay_us(10);
}

void LCD_Init(){ //Các lệnh được gửi có ý nghĩa ntn?


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 ); // Các lệnh này có ý nghĩa gì???
LCD_SendCommand( 0x0c);
LCD_SendCommand( 0x06 );
LCD_SendCommand(0x01);

17
}
void LCD_Gotoxy(unsigned char x, unsigned char y){
unsigned char address;
if(!y) address=(0x80+x); //Ý nghĩa 2 dòng lệnh này?
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ị nhiệt độ trên LCD*/


void TempShow(unsigned char z){ //Hàm này làm gì? Tại sao là 48?
LCD_Puts("Nhiet do: ");
LCD_PutChar((z/100)+48);//
LCD_PutChar((z%100/10)+48);

18
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 cho ADC0808
ADC0808_CLK=~ADC0808_CLK; //Dao bit
}
/*Main Program*/
unsigned char temp;
void main(){
//Tao xung clock cho ADC0808 – sẽ 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 do nhiet do...");
delay_ms(1000);
LCD_Clear();
LCD_Gotoxy(0,1); //Ý nghĩa hàm này?
LCD_Puts("KT.VIXULY - PTIT");
while(1){
LCD_Gotoxy(0,0);
temp=ADC0808_Read(0); //Đọc tín hiệu từ chân nào?
TempShow(temp);

19
delay_ms(500); //Delay để làm gì?
}
}

A, Đánh giá thiết bị

+ Mạch hoạt động tốt, độ nhạy cao, độ chính xác cao, hoạt động ổn định

+ ÁP dụng vào thực tế sẽ mang lại hiệu quả tốt và có nhiều lợi ích cho xã
hội.

+ Tiềm năng rất lớn, sẽ giảm sức lao động cho con người và giúp hoạt động
kinh tế hiệu quả và chính xác hơn.

B, Hướng triển khai đề tài

+ Thiết kế bộ công cụ nhỏ và gọn áp dụng vào thực tế như các cửa hàng
siêu thị mini, cửa hảng tiện lợi, quán internet và các công ty lớn và nhỏ.

+ Thiết kế vị trí lắp đặt hiệu quả, thông minh , thuận lợi cho việc điều
khiển và hoạt động một cách ổn định nhất.

C, Tài liệu tham khảo.


Vi điều khiển 8051:

https://hocled.com/1112.html

Cảm biến hồng ngoại:

https://iotmaker.vn/cam-bien-vat-can-hong-ngoai.html

20
21

You might also like