Professional Documents
Culture Documents
1.Arduino Uno R3
Thông số kỹ thuật:
• Điện áp hoạt động là 5V.
• Kích thước: 80 x 36 x 12.5mm
• Chữ trắng, nền xanh dương
• 16 chân.
II. Linh kiện, thiết bị sử dụng:
5 R/W Chọn thanh ghi đọc/viết dữ liệu R/W=0 thanh ghi viết
R/W=1 thanh ghi đọc
6 E Enable
7 DB0 Chân truyền dữ liệu 8 bit: DB0DB7
8 DB1
9 DB2
10 DB3
11 DB4
12 DB5
13 DB6
14 DB7
15 A Cực dương led nền 0V đến 5V
// Định nghĩa các chân kết nối với màn hình LCD
#define LCD_RS_PIN PD0
#define LCD_RW_PIN PD1
#define LCD_EN_PIN PD2
#define LCD_D4_PIN PD4
#define LCD_D5_PIN PD5
#define LCD_D6_PIN PD6
#define LCD_D7_PIN PD7
3. Hàm main:
int main(void) {
// Khởi tạo LCD
lcd_init();
init_ADC();
while (1) {
// Đọc từ cảm biến khí
uint16_t gasValue = 0;
gasValue = read_gas_sensor();
// Chuyển đổi giá trị khí thành chuỗi
char gasString[10];
sprintf(gasString, "%d", gasValue); // Hàm chuyển đổi giá trị từ số sang kí tự
// Kiểm tra mức khí và kích hoạt còi báo nếu cao
if (gasValue > 45) {
activate_buzzer();
}
// Hiển thị giá trị khí trên LCD
lcd_clear();
lcd_set_cursor(0, 0);
lcd_write_string("Gas Value:");
lcd_set_cursor(1, 0);
lcd_write_string(gasString);
_delay_ms(500); // Độ trễ giữa các đọc giá trị
}
return 0;
}
V. Kết quả đạt được
THANK YOU !
VI. Bộ chuyển đổi ADC
VI. Bộ chuyển đổi ADC
*Có 4 thanh trong bộ ADC trên AVR trong đó có 2 thanh ghi data chứa dữ liệu sau
khi chuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của ADC.
- ADMUX (ADC Multiplexer Selection Register): là 1 thanh ghi 8 bit điều
khiển việc chọn điện áp tham chiếu, kênh và chế độ hoạt động của ADC.
Bit 7:6- REFS1:0 (Reference Selection Bits): là các bit chọn điện áp tham chiếu cho ADC
Bit 5-ADLAR (ADC Left Adjust Result): là bit cho phép hiệu chỉnh trái kết quả chuyển đổi
Nếu ADLAR=0 kết quả sẽ được hiệu chỉnh về phía phải (thanh ghi ADCL chứa trọn 8 bit thấp và
thanh ghi ADCH chứa 2 bit cao trong 10 bit kết quả), và nếu ADLAR=1 thì kết quả được hiệu chỉnh
trái (thanh ghi ADCH chứa trọn 8 bit cao nhất, các bit từ 9 đến 2, và thanh ADCL chứa 2 bit thấp nhất
trong 10 bit kết quả.
VI. Bộ chuyển đổi ADC
Bits 4:0-MUX4:0 (Analog Channel and Gain Selection Bits): là 5 bit cho phép chọn kênh,
chế độ và cả hệ số khuyếch đại cho ADC
-ADCSRA (ADC Control and Status RegisterA): là thanh ghi chính điều khiển hoạt động
và chứa trạng thái của module ADC.
VI. Bộ chuyển đổi ADC
Từng bit của thanh ghi ADCSRA được mô tả như bên dưới:
•Bit 7 - ADEN(ADC Enable): viết giá trị 1 vào bit này tức bạn đã cho phép module ADC
được sử dụng.
•Bit 6 - ADSC(ADC Start Conversion): set bit này lên 1 là bắt đầu khởi động quá trình
chuyển đổi.
•Bit 2:0 – ADPS2:0(ADC Prescaler Select Bits): các bit chọn hệ số chia xung nhịp cho
ADC. ADC, cũng như tất cả các module khác trên AVR, cần được giữ nhịp bằng một
nguồn xung clock. Xung nhịp này được lấy từ nguồn xung chính của chip thông qua một
hệ số chia. Các bit ADPS cho phép người dùng chọn hệ số chia từ nguồn clock chính đến
ADC. Tham khảo bảng 4 để biết cách chọn hệ số chia.
VI. Bộ chuyển đổi ADC
- ADCL và ADCH (ADC Data Register): 2 thanh ghi chứa giá trị của quá trình chuyển
đổi. Do module ADC trên AVR có độ phân giải tối đa 10 bits nên cần 2 thanh ghi để chứa
giá trị chuyển đổi. Tuy nhiên tổng số bít của 2 thanh ghi 8 bit là 16, con số này nhiều hơn
10 bit của kết quả chuyển đổi, vì thế chúng ta được phép chọn cách ghi 10 bit kết quả vào
2 thanh ghi này. Bit ADLAR trong thanh ghi ADMUX quy định cách mà kết quả được ghi
vào.
ADLAR = 0
ADLAR =1
Thông thường, 2 thanh ghi data được sắp xếp theo định dạng ADLAR=0, ADCL chứa 8
bit thấp và 2 bit thấp của ADCH chứa 2 bit cao nhất của giá trị thu được. Chú ý thứ tự đọc
giá trị từ 2 thanh ghi này, để tránh đọc sai kết quả, bạn cần đọc thanh ghi ADCL trước và
ADCH sau, vì sau khi ADCH được đọc, các thanh ghi data có thể được cập nhật giá trị tiếp
theo.