You are on page 1of 21

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

KHOA: ĐIỆN – ĐIỆN TỬ




BÁO CÁO BÀI TẬP LỚN


KỸ THUẬT VI XỬ LÍ
Đề tài: Hệ thống tự động bật tắt đèn theo ánh sáng
Lớp : KTĐK&TĐH 1 K63
Học kỳ :4
Giảng viên hướng dẫn : Ngô Thanh Bình
Nhóm thực hiện : Nhóm 10
Thành viên nhóm MSV Nhiệm vụ

Vũ Xuân Thuần 221632795 Thiết kế tính toán khối tạo giao


Nguyễn Duy Thương 221632796 động, mắc nối linh kiện

Nguyễn Xuân Thưởng 221632797 Thiết kế LCD và làm sơ đồ khối,


Triệu Quang Trung 221632799 Phụ lục chương trình con

Lê Công Tú 221632800 Tạo khối reset tìm kiếm linh kiện,


Phạm Đình Văn 221632806 phụ lục chương trình con

Tổng hợp báo cáo, xây dựng sơ


Nguyễn Hữu Tuân(C) 221632802
đồ, nguyên lý hoạt đông
Nguyễn Thanh Tùng 221632805 Tìm kiếm thông tin LDR mắc nối
Lê Văn Vinh 221632807 linh kiện, Vinh( Code )

1
Báo cáo tiểu luận cuối kì Bài 1.a&b

Lời cảm ơn

Em xin chân thành cảm ơn thầy Ngô Thanh Bình


đã tận tình giảng dạy và hướng dẫn nhóm em trong quá
trình thực hiện “Báo cáo Bài tập lớn”. Mặc dù trong lúc
làm việc còn nhiều sai sót, nhưng thầy đã đưa ra hướng
đi và rút kinh nghiệm cho chúng em về sự chuyên môn
cũng như kiến thức mà môn Kỹ thuật Vi xử lí mà thầy
trực tiếp giảng dạy trên lớp.

Xin cảm ơn thầy một lần nữa vì đã giúp cá nhân em


nói riêng và các thành viên nhóm 10 nói chung hiểu rõ
hơn về môn học và thực hiện được chỉn chu hơn trong
phần Báo cáo Bài tập lớn này.
Báo cáo tiểu luận cuối kì Bài 1.a&b

MỤC LỤC
Catalog
Đề Bài...................................................................................................................3
I. Xây dựng sơ đồ khối..........................................................................................4
1. Khối vi xử lý:....................................................................................................4
2. Khối Thạch anh:................................................................................................4
3. Khối tín hiệu vào:..............................................................................................4
4. Khối hiển thị:....................................................................................................4
5. Khối Reset:........................................................................................................5
6. Khối chấp hành tín hiệu ra:...............................................................................5
II. Thiết kế mạch hệ thống và cách ghép nối mạch...............................................5
1. Khối thạch anh:.................................................................................................5
2. Khối tín hiệu vào...............................................................................................7
3. Khối reset..........................................................................................................8
4. Khối hiển thị......................................................................................................9
5. Khối chấp hành tín hiệu ra..............................................................................11
6. Khối vi xử lý...................................................................................................11
III. Sơ đồ nguyên lý............................................................................................12
IV. Lập trình cho vi xử lý....................................................................................13
V.Phụ lục chương trình con................................................................................15
VI.Chạy mô phỏng trên proteus..........................................................................20
1. Khi nguồn sáng ở xa:......................................................................................20
2. Khi nguồn sáng lại gần:..................................................................................20

Đề Bài
Báo cáo tiểu luận cuối kì Bài 1.a&b

Bài tập lớn 10: Cảm biến LDR Xây dựng sơ đồ phần cứng và viết chương trình
phần mềm sử dụng cảm biến LDR và PIC16F877A để tự động bật đèn ở một
mức sáng nhất định. Khi nguồn sáng yếu (đèn pin ở xa cảm biến LDR), hệ
thống tự động bật đèn led, và khi nguồn sáng mạnh (đèn pin ở xa cảm biến
LDR), hệ thống tự động tắt đèn led. Hiển thị các trạng thái bật đèn trên LCD.
I. Xây dựng sơ đồ khối
Được hình thành từ 6 khối: Khối vi xử lý, Khối thạch anh, khối đọc tín hiệu vào,
khối hiển thị, khối Reset và khối chấp hành tín hiệu ra.

1. Khối vi xử lý:
Vi xử lý dùng để tiếp nhận thông tin từ các tín hiệu vào để lưu trữ tính toán
theo chương trình để điều kiển các thiết bị chấp hành đầu ra.
2. Khối Thạch anh:
Thạch anh dùng để tạo dao động ngoài cho vi xử lý để cho hệ thống được đồng
bộ hóa, chính xác giúp tối ưu hóa hiệu suất và tiêu thụ năng lượng của vi điều
khiển, tần số xác định.
3. Khối tín hiệu vào:
Báo cáo tiểu luận cuối kì Bài 1.a&b

Khối tín hiệu vào gồm các linh kiện phù hợp vs yêu cầu, cho phép linh kiện tiếp
nhận thông tin từ thực tế để gửi vào vi xử lý qua các cổng giao tiếp, để vi xử lý
tính toán.
4. Khối hiển thị:
Khối hiển thị là khối thực hiện chức năng hiển thị đầu ra cho các thông số yêu
cầu do vi xử lý hiển thị ra, giúp chúng ra nắm bắt thông tin bên trong vi xử lý
đang thực hiện.
5. Khối Reset:
Khối reset rất cần thiết cho mọi bài toán thiết kế, nó giúp giảm rủi ro cho hệ
thống nếu quá tải, có tác dụng ngắt hết các thành phần của hệ thống bằng nút
bấm khi xảy ra sự cố hoặc muốn khởi động lại.
6. Khối chấp hành tín hiệu ra:
Khối chấp hành tín hiệu ra là một bộ phần không thể thiếu trong hệ thống, khi
vi xử lý nhận tín, lưu trữ, xử lý tính toán thì sẽ truyền tín hiệu ra khối chấp hành
để thực hiệc mục đích của hệ thống.
II. Thiết kế mạch hệ thống và cách ghép nối mạch.

Hệ thống trên được hình thành từ sơ đồ khối trên phần I:


Báo cáo tiểu luận cuối kì Bài 1.a&b

1. Khối thạch anh:

Trong vi điều khiển PIC16F877A, chân SC1 và SC2 được sử dụng để kết
nối với một thạch anh và hai tụ để tạo ra một nguồn clock chính xác cho
vi xử lý. Dưới đây là các lý do cụ thể tại sao phải nối thạch anh và hai tụ
vào các chân SC1 và SC2:
-Đồng bộ hóa hệ thống: Một nguồn clock ổn định và chính xác là cần
thiết để đồng bộ hóa các hoạt động của vi điều khiển và các thành phần
khác trong hệ thống. Thạch anh và tụ được sử dụng để tạo ra tín hiệu
clock này.
-Tính ổn định và chính xác: Thạch anh là một thành phần có độ chính xác
cao trong việc tạo ra tín hiệu clock. Còn tụ có tính ổn định tốt, chúng kết
hợp với nhau tạo ra một nguồn clock ổn định và chính xác với tần số xác
định.
-Thực hiện các chức năng thời gian: Trong các ứng dụng vi điều khiển,
việc có một nguồn clock chính xác là cần thiết để thực hiện các chức
năng thời gian như đo thời gian, ghi nhớ thời gian, hoặc đồng bộ các sự
kiện dựa trên thời gian.
-Tương thích với các chế độ hoạt động: PIC16F877A hỗ trợ nhiều chế độ
hoạt động như chế độ Sleep, chế độ Low Power, và chế độ Power-saving.
Một nguồn clock ổn định là quan trọng để đảm bảo hoạt động đúng đắn
trong các chế độ này.
-Hiệu suất và tiêu thụ năng lượng: Sử dụng thạch anh và tụ để tạo ra
nguồn clock chính xác giúp tối ưu hóa hiệu suất và tiêu thụ năng lượng
của vi điều khiển.
Báo cáo tiểu luận cuối kì Bài 1.a&b

 Thông số của các thành phần:


- Tụ: 22pF số lượng: 2
- Thạch anh: 20MHz số lượng: 1
 Mắc nối:
- Tụ C1 được mắc nối giữa chân 13 (OSC1/CLKIN) của thạch anh
và chân GND (đất) của PIC 16F877A.
- Tụ C2 được mắc nối giữa chân 14 (OSC2/CLKOUT) của tinh thể
thạch anh và chân GND (đất) của PIC 16F877A.
2. Khối tín hiệu vào
Khối tín hiệu vào sử dụng TORCH_LDR

Torch sử dụng điện trở quang, cảm biến ánh sáng quang trở hoạt động
theo nguyên lý: điện trở thay đổi khi có ánh sáng chiếu vào quang trở có
điện trở đến vài MΩ, khi có ánh sáng chiếu vào điện trở giảm xuống mức
một vài trăm Ω.
Tín hiệu tiếp nhận của LDR là tín hiệu liên tục (analog) cảm biến LDR
thay đổi điển của nó tùy thuộc vào mức độ ánh sáng trong môi trường
sung quanh bằng cách thay đổi điển trở của nó .
Tín hiều ra của LDR là tín hiệu số (digital), khi nhận được tín hiệu liên
tục từ đầu vào LDR chuyển tín hiệu đó thành tín hiệu số và gửi đến vi xử
lý tính toán.
Các linh kiện sử dụng: + Nguồn điện 5V số lượng:1
+ Điện trở 10K số lượng: 1
Báo cáo tiểu luận cuối kì Bài 1.a&b

+TORCH_LDR số lượng: 1
+ Mát số lượng: 1
Mục đích ở đây dùng điện trở cố định 10K là để xác định được tỉ lệ chia
điện áp Vout một các chính xác nhất.
3. Khối reset

Chân MCLR( Master Clear ) là chân Reset.. Nó sẽ khởi động lại vi điều
khiển và được kích hoạt bởi mức logic thấp, có nghĩa là chân này phải
được cấp liên tục một điện áp 5V và nếu cấp điện áp 0V thì PIC16F877A
sẽ bị đặt lại.
Một nút nhấn và một điện trở được kết nối đến chân này. Chân MCLR
này luôn được cấp điện áp 5V. Khi muốn khởi động lại mạch. Bạn chỉ
cần nhấn vào nút nhấn thì chân MCLR sẽ được đưa về 0 và mạch được
đặt lại.
Tác dụng :Khi nối nguồn và button vào chân MCLR vào VXL mục đích
chính: để đảm bảo rằng vi điều khiển sẽ được reset mỗi khi nguồn được
kích hoạt
=>Dùng để reset vi xử lý khi cần thiết.
Button: dùng để kích hoạt reset :Khi button được nhấn, nối chân MCLR
vào nguồn sẽ đặt lại vi xử lý về trạng thái ban đầu, giúp khởi động lại hệ
thống hoặc xử lý các vấn đề liên quan đến nguồn cung cấp.
Báo cáo tiểu luận cuối kì Bài 1.a&b

Điện trở (phải bé hơn 40K) được dùng để: kiểm soát dòng và điện áp, bảo
vệ các linh kiện trong mạch khỏi quá tải. Đảm bảo điện áp cung cấp cho
vi điều khiển hoạt động.
 Các linh kiện cần dùng: + Nguồn 5V số lượng: 1
+ Điện trở 10K số lượng:1
+ Button số lượng: 1
+ Mát số lượng: 1
 Cách ghép nối:
Nguồn 1 chiều 5V nối tiếp với điện trở và button sau đó nối xuống mát.
Chân MCLR nối vào giữa mạch nối của điện trở và button.
4. Khối hiển thị
Khối hiển thị sử dụng màn hình LCD16x2 được sử dụng để hiển thị trạng
thái hoặc các thông số.
Báo cáo tiểu luận cuối kì Bài 1.a&b

-LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều
khiển (RS, RW, EN).

-5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.

-Các chân điều khiển giúp ta dễ dàng cấu h́nh LCD ở chế độ lệnh hoặc
chế độ dữ liệu.

-Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

-LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng.

Trong chế độ 8 bit, tất cả 8 chân dữ liệu DB0 đến DB7 được kết nối từ vi
điều khiển đến mô-đun LCD. Các chân điều khiển bao gồm RS (Register
Select), RW (Read/Write) và E (Enable). Chân RS được sử dụng để chọn
giữa việc gửi lệnh (RS=0) hoặc dữ liệu (RS=1) tới LCD. Chân E là chân
kích hoạt, được sử dụng để bắt đầu quá tŕnh truyền dữ liệu hoặc lệnh tới
LCD.

Cấp nguồn VDD vào biến trở để có thể điều chỉnh điện áp hoặc dùng điện
qua biến trở. Điều này cho phép biến trở hoạt động như một phần của
mạch điện tử, giúp kiểm soát các tín hiệu điện tử hoặc làm việc như một
phần của mạch điều khiển.

 Các linh kiện cần dùng: + Nguồn điện 5v số lượng:1


+ Mát số lượng: 1
+ Biến Trở số lượng: 1
+ LM016L số lượng: 1
 Cách đầu nối: + 8 chân dữ liệu từ D0 đến D7 được đấu nối với PORTB
lần lượt từ RB0 đến RB7. 2 chân điều khiển RS và E được nối lần lượt
với RC0 và RC2, chân điều khiển RW nối mát. Nguồn được nối vs chân
VDD và 1 chân của biến trở.Chân VEE được nối với chân xoay của biến
trở và 1 chân còn lại nối đất.
Báo cáo tiểu luận cuối kì Bài 1.a&b

5. Khối chấp hành tín hiệu ra

Khối chấp hành tín hiệu ra là đèn LED được nối với 1 chân của
Pic16F877A được cầu hình sẵn khi lập trình, có nhiệm vụ thực hiện điều
khiển của vi xử lý khi nhận được tín hiệu bật của vi xử lý chân RD0 được
nốt vào LED sẽ ở mức sao đèn sẽ sáng, khi nhận đc tín hiệu của vi xử lý
chân RD0 ở mức thấp thì đèn sẽ tắt.

- Các linh kiện: + đèn LED số lượng: 1


+ mát số lượng: 1
- Cách ghép nối: Từ chân RD0 nối với chân anot của LED và chân katot
của LED sẽ nối với chân mát.

6. Khối vi xử lý

Vi xử lý sử dụng Pic16F877A:

- Vi xử lý với hai chân OSC1 và OSC2 được nối với mạch tạo giao động
ngoài là thạch anh để mạch được hoạt động 1 cách đồng bộ và chính xác.
Báo cáo tiểu luận cuối kì Bài 1.a&b

- Vi xử lý được đặt chân RA0 là chân đọc tín hiệu của LDR, khi nhận
được thông tin từ LDR thông qua chân RA0 vi xử lý sẽ tính toán và đưa
đến khối chấp hành thực hiện

- Vi xử lý được đặt cổng PORTB là chân dữ liệu cho LCD và 2 chân SC0
và SC2 là chân điều khiển, khi nhận tín hiệu từ LDR vi xử lý sẽ hiển thị
trang thái qua LCD thông qua lập trình.

- Vi xử lý có 1 chân MCLR khi được cấp nguồn thì Pic16F877A hoạt


động bình thường, khi ở mức thấp vi xử lý sẽ ở tráng thái reset, đây là
chân mắc định reset của Pic16F877A.

- Vi xử lý được đặt chân RD0 là chân chấp hành tín hiệu đầu ra, khi tiếp
nhận xử lý tính toán thì vi xử lý sẽ quyết định thông tin cho chân RD0 để
LED được sáng hay tắt.

III. Sơ đồ nguyên lý
Báo cáo tiểu luận cuối kì Bài 1.a&b

- Khi bắt đầu hệ thống thì TORCH_LDR lấy tín hiệu ánh sáng chuyển về cho vi
xử lý tính toán.

- Vi xử lý tính toán xem ánh sáng ở mức thấp hay cao để đưa ra màn hình à bật
tắt đèn. Nếu ánh sáng ở mức thấp vi xử lý sẽ bật đèn và hiển thị trên màn hình là
ánh sáng thấp. Nếu ánh sáng ở mức cao vi xử lý sẽ tắt đèn vè hiển thị trên màn
hình là ánh sáng cao.

- Việc này xảy ra liên tục nếu ấn nút reset thì vi xử lý sẽ ngừng hoạt động và say
khi ngừng bấm nút reset sẽ bắt đầu lại.

IV. Lập trình cho vi xử lý.

Lập trình MPLAB x IDE với trình biên dịch CX8

#include <xc.h>

#pragma config FOSC = HS


#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config BOREN = ON
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CP = OFF

#include <stdio.h>
#include <stdlib.h>

#define delay for(i=0;i<=1000;i++)


#define rs RC0
#define rw RC1
#define e RC2
#define LED RD0
unsigned int adc();
void lcd_int();
void cmd(unsigned char a);
void dat(unsigned char b);
void show(unsigned char *s);
int i;
Báo cáo tiểu luận cuối kì Bài 1.a&b

void main()
{
unsigned int val;
TRISB=TRISC0=TRISC1=TRISC2=0;
TRISD0 = 0;
TRISA0=1;
lcd_int();
while(1) {
cmd(0x80);
val = adc();
show("LIGHT INT : ");
if(val>150) {
show("LOW ");
LED = 1;
}
else {
show("HIGH");
LED = 0;
}
}
}

void lcd_int()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80); }
void cmd(unsigned char a)
{
PORTB=a;
rs=0;
rw=0;
e=1;
delay;
e=0;
}

void dat(unsigned char b)


{
PORTB=b;
rs=1;
Báo cáo tiểu luận cuối kì Bài 1.a&b

rw=0;
e=1;
delay;
e=0;
}

void show(unsigned char *s)


{
while(*s) {
dat(*s++);
}
}

unsigned int adc() {


unsigned int adcval;

ADCON1=0xc0;
ADCON0=0x85;
while(GO_nDONE);
adcval=((ADRESH<<8)|(ADRESL));
adcval=(adcval/3)-1;

return adcval;
}

V.Phụ lục chương trình con

#include <xc.h>:
-Đây là thư viện chuẩn cho vi xử lý PIC. Nó chứa các định nghĩa và khai
báo cần thiết để làm việc với vi xử lý PIC.
------------------------------------------------------------------------------------------------
#pragma config FOSC = HS
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config BOREN = ON
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
Báo cáo tiểu luận cuối kì Bài 1.a&b

#pragma config CP = OFF


----------------------------------------------------------------------------------------------
-Những dòng này cấu hình các cài đặt phần cứng cho vi xử lý, như chế độ
hoạt động của đồng hồ hệ thống (FOSC), chế độ xem xét (BOREN), và
nhiều cài đặt khác.
- #define delay for(i=0;i<=1000;i++): đặt tên cho hàm là delay để tạo độ chễ.
------------------------------------------------------------------------------------------------
void lcd_int()
{
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x80);
------------------------------------------------------------------------------------------------
-Hàm lcd_int() được sử dụng để khởi tạo LCD.
cmd(0x38): khoi tao chế độ hoạt động trên LCD với 8bit.
cmd(0x0c): khoi tạo màn hình con trỏ.
cmd(0x06): xác định chế độ nhập dữ liệu.
cmd(0x80): đặt địa chỉ trong vùng ram.
------------------------------------------------------------------------------------------------
void cmd(unsigned char a)
{
PORTB=a;
rs=0;
rw=0;
e=1;
delay;
e=0;
}
Báo cáo tiểu luận cuối kì Bài 1.a&b

------------------------------------------------------------------------------------------------

- Hàm void cmd(unsigned char a); được sử dụng để gửi các lệnh đến màn
hình LCD. Đây là cách nó hoạt động:
PORTB=a; Dòng này gán giá trị của biến a (đại diện cho lệnh cần gửi)
vào PORTB, đây là cổng mà màn hình LCD được kết nối.
rs=0; Dòng này đặt chân RS (Register Select) của LCD thành 0. Điều
này cho LCD biết rằng dữ liệu đang được gửi là một lệnh, không phải dữ
liệu để hiển thị.
rw=0; Dòng này đặt chân R/W (Read/Write) của LCD thành 0. Điều này
cho LCD biết rằng chúng ta đang gửi dữ liệu đến LCD, không phải đọc
dữ liệu từ nó.
e=1;: Dòng này đặt chân E (Enable) của LCD thành 1. Điều này bắt đầu
quá trình ghi dữ liệu vào LCD.
delay; Dòng này tạo ra một độ trễ ngắn để đảm bảo LCD có đủ thời gian
để xử lý lệnh.
e=0; Dòng này đặt chân E (Enable) của LCD thành 0. Điều này kết thúc
quá trình ghi dữ liệu vào LCD.
Vì vậy, hàm cmd được sử dụng để gửi các lệnh đến LCD, như đặt vị trí
con trỏ, xóa màn hình, v.v. Giá trị của lệnh được truyền vào hàm qua
tham số a.
------------------------------------------------------------------------------------------------
void dat(unsigned char b)
{
PORTB=b;
rs=1;
rw=0;
e=1;
delay;
Báo cáo tiểu luận cuối kì Bài 1.a&b

e=0;
}
------------------------------------------------------------------------------------------------
PORTB=b; Gán giá trị của byte 'b' vào cổng B. Điều này có nghĩa là bạn
đang gửi dữ liệu 'b' đến các thiết bị ngoại vi được kết nối với cổng B.
rs=1; Đặt giá trị của chân Register Select (RS) thành 1. Điều này cho
biết bạn đang chọn thanh ghi dữ liệu (thay vì thanh ghi địa chỉ) trên LCD
để ghi hoặc đọc dữ liệu.
rw=0; Đặt giá trị của chân Read/Write (R/W) thành 0. Điều này cho
biết bạn đang đặt LCD vào chế độ ghi (thay vì chế độ đọc).
e=1; Đặt giá trị của chân Enable (E) thành 1. Điều này kích hoạt
LCD và cho phép nó nhận dữ liệu từ cổng dữ liệu.
delay; Gọi hàm delay để tạo ra một khoảng thời gian chờ, cho phép
LCD có đủ thời gian để xử lý dữ liệu đã nhận.
e=0; Đặt giá trị của chân Enable (E) thành 0. Điều này vô hiệu hóa
LCD và ngăn nó nhận thêm dữ liệu từ cổng dữ liệu.
-----------------------------------------------------------------------------------------
unsigned int adc() {
unsigned int adcval;
ADCON1=0xc0;
ADCON0=0x85;
while(GO_nDONE);
adcval=((ADRESH<<8)|(ADRESL));
adcval=(adcval/3)-1;
return adcval;
}
------------------------------------------------------------------------------------------------
Báo cáo tiểu luận cuối kì Bài 1.a&b

-Hàm unsigned int adc() được sử dụng để đọc giá trị từ bộ chuyển đổi
Analog sang Digital (ADC) của vi xử lý. Dưới đây là cách nó hoạt động:
-ADCON1=0xc0; Đặt cấu hình cho ADC. Giá trị 0xc0 đặt tất cả các chân
là digital, ngoại trừ AN0 là analog.
-ADCON0=0x85; Bắt đầu quá trình chuyển đổi ADC. Giá trị 0x85 chọn
kênh AN0 và bắt đầu quá trình chuyển đổi.
-while(GO_nDONE); Chờ cho đến khi quá trình chuyển đổi ADC hoàn
tất. GO_nDONE là bit thể hiện trạng thái của quá trình chuyển đổi ADC.
-adcval=((ADRESH<<8)|(ADRESL));: Đọc giá trị
ADC. ADRESH và ADRESL là hai thanh ghi chứa giá trị ADC. Giá trị
ADC là một số nguyên 10 bit, nên cần dịch bit và thực hiện phép OR để
kết hợp hai giá trị này thành một số nguyên 10 bit.
-adcval=(adcval/3)-1; Chia giá trị ADC cho 3 và trừ đi 1. Đây có thể là
một phép biến đổi để điều chỉnh giá trị ADC cho một ứng dụng cụ thể.
return adcval;: Trả về giá trị ADC đã được biến đổi.

Vì vậy, hàm adc được sử dụng để đọc giá trị từ ADC và thực hiện một số
biến đổi trên giá trị đó trước khi trả về. Giá trị trả về sau cùng có thể được
sử dụng trong chương trình để thực hiện các hành động dựa trên giá trị
đọc được từ ADC.
Báo cáo tiểu luận cuối kì Bài 1.a&b

VI.Chạy mô phỏng trên proteus

1. Khi nguồn sáng ở xa:

+Khi ánh sáng ở xa không đủ độ sáng, LDR đọc số liệu gửi đến cho vi xử lý.

+ Vi xử lý nhận được tín hiệu thì hiển thị trên LCD và bật đèn LED sáng.

2. Khi nguồn sáng lại gần:

+Khi ánh sáng lại gần đủ độ sáng, LDR đọc số liệu gửi đến cho vi xử lý.

+ Vi xử lý nhận được tín hiệu thì hiển thị trên LCD và tắt đèn LED.
Báo cáo tiểu luận cuối kì Bài 1.a&b

You might also like