You are on page 1of 35

VI ĐIỀU KHIỂN AVR

Giáo viên: ĐẶNG VĂN HIẾU


Bài 2:

Điều khiển I/O vào ra


với LED đơn, LED 7 thanh
và LCD
Các nội dung trong bài:

2.1 Điều khiển I/O với Led đơn


2.2 Giao tiếp với Led 7 thanh
2.3 LCD
2.1 Điều khiển I/O với LED đơn

YÊU CẦU

- Khởi tạo project bằng CodeVision.


- Vẽ mạch trên proteus.
- Mô phỏng.
2.1 Điều khiển I/O với LED đơn
Giới thiệu vi điều khiển ATMEGA 16L
Tính năng:
- Bộ nhớ 16K(flash) . - 512 byte (EEPROM). - 1 K (SRAM).
- Đóng vỏ 40 chân , trong đó có 32 chân vào ra dữ liệu chia
làm 4 PORT A,B,C,D. Các chân này đều có chế độ pull_up
resistors.
- Giao tiếp SPI. - Giao diện I2C. - Có 8 kênh ADC 10 bit.
- 1 bộ so sánh analog. - 4 kênh PWM.
- 2 bộ timer/counter 8 bit, 1 bộ timer/counter1 16 bit.
- 1 bộ định thời Watchdog.
- 1 bộ truyền nhận UART lập trình được
2.1 Điều khiển I/O với LED đơn

Hình 2.1
Cách nối chân Vref
2.1 Điều khiển I/O với LED đơn
Giới thiệu vi điều khiển ATMEGA 16L
Mô tả các chân:
- Vcc và GND 2 chân cấp nguồn cho vi điều khiển hoạt động.
- Reset đây là chân reset cứng khởi động lại mọi hoạt động của hệ
thống.
- 2 chân XTAL1, XTAL2 các chân tạo bộ dao động ngoài cho vi điều
khiển, các chân này được nối với thạch anh (hay sử dụng loại 4M),
tụ gốm (22p).
- Chân Vref thường nối lên 5v(Vcc), nhưng khi sử dụng bộ ADC thì
chân này được sử dụng làm điện thế so sánh, khi đó chân này phải
cấp cho nó điện áp cố định, có thể sử dụng diode zener.
- Chân Avcc thường được nối lên Vcc nhưng khi sử dụng bộ ADC thì
chân này được nối qua 1 cuộn cảm lên Vcc với mục đích ổn định
điện áp cho bộ biến đổi.
2.1 Điều khiển I/O với LED đơn
Thiết lập cổng vào ra:
LẬP TRÌNH

Khi xem xét đến các cổng I/O của AVR thì ta
phải xét tới 3
thanh ghi bit DDxn,PORTxn,PINxn:
- Các bit DDxn để truy cập cho địa chỉ xuất
nhập DDRx, để điều khiển hướng dữ liệu
của các chân của cổng.
- Các bit ORTxn để truy cập tại địa chỉ xuất
nhập PORTx.
- Các bit PINxn để truy cập tại địa chỉ xuất
nhập PINx (cổng chỉ để đọc,các cổng này
có thể đọc trạng thái logic của PORTx)
2.1 Điều khiển I/O với LED đơn
LẬP TRÌNH

Ví dụ :
Ta muốn ghi dữ liệu giá trị logic ’0’ ra
PORTA.0 để bật tắt một LED thì:
PORTA.0=1;
Ta muốn đọc dữ liệu là một bit từ chân 3 của
PORTA:
Bit x;
x=PINA.3;
2.2 Giao tiếp với LED 7 thanh

YÊU CẦU

Biết phương pháp quét led.


Đưa số bất kỳ ra hàng led.
2.2 Giao tiếp với LED 7 thanh

MÔ TẢ

- 4 LED 7 thanh anot chung


- 4 chân anot chung (chân dương) được nối với 4 transitor
để ta có thể quét LED sử dụng 4 chân của PORTD
- các chân điều khiển sáng các thanh còn lại được nối song
song nhau và đưa vào PORTB của AVR và có thứ tự như
sau:
Từ bít 0-6 ứng với từ A-G.
Bít thứ 7 là dấu chấm.
2.2 Giao tiếp với LED 7 thanh
THỰC HÀNH

void daydulieu(unsigned char x)// Ham dua du lieu ra PORT


{
switch(x) // Tuy thuoc vao bien dau vao ma dua du lieu ra tu 0...9
{ //logic 1 tat led, logic 0 bat led
case 0: { PORTB=0xC0; break; } // So 0
case 1: { PORTB=0xF9; break; } // So 1
case 2: { PORTB=0xA4; break; } // So 2
case 3: { PORTB=0xB0; break; } // So 3
case 4: { PORTB=0x99; break; } // So 4
case 5: { PORTB=0x92; break; } // So 5
case 6: { PORTB=0x82; break; } // So 6
case 7: { PORTB=0xF8; break; } // So 7
case 8: { PORTB=0x80; break; } // So 8
case 9: { PORTB=0x90; break; } // So 9
}}
2.2 Giao tiếp với LED 7 thanh
THỰC HÀNH

void hienthi(int n)
{
int a,b,c,d;
// Lay cac so cac hang
a= n/1000; // lay hang nghin
b=(n-a*1000)/100; // lay hang tram
c=(n-a*1000-b*100)/10; // lay hang chuc
d=(n-a*1000-b*100-c*10);// lay hang don vi
// Quet led
PORTD=0xFE;// led dau tien
daydulieu(d);// day ra hang don vi
delay_ms(10);// tre
PORTB=0xFF;// tat toan bo led
PORTD=0xFD;//led thu hai
2.2 Giao tiếp với LED 7 thanh
THỰC HÀNH

daydulieu(c);// dua ra hang chuc


delay_ms(10);// tre
PORTB=0xFF;// tat toan bo led
PORTD=0xFB;
daydulieu(b);
delay_ms(10);
PORTB=0xFF;
PORTD=0xF7;
daydulieu(a);
delay_ms(10);
PORTB=0xFF;
}
2.3 LCD
YÊU CẦU

Biết khởi tạo cho LCD với CodeWinzardAVR


với bất kỳ cổng nào.
Hiển thị ra LCD các ký tự bất kỳ.
2.3 LCD
MÔ TẢ

 Text LCD là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị
các dòng chữ hoặc số trong bảng mã ASCII.
Mỗi ô chỉ có thể hiển thị một ký tự ASCII, bao gồm các “chấm”
tinh thể lỏng, việc kết hợp “ẩn” và “hiện” các chấm này sẽ tạo
thành một ký tự cần hiển thị.
 Kích thước của Text LCD được định nghĩa bằng số ký tự có thể
hiển thị trên 1 dòng và tổng số dòng mà LCD có. Một số kích
thước Text LCD thông thường gồm 16x1, 16x2, 16x4, 20x2,
20x4…
 Text LCD có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và
song song.
2.3 LCD
MÔ TẢ

Hình 2.3
Text LCD 16x2

Ví dụ:
loại giao tiếp song song LCD 16x2 điều khiển bởi chip HD44780U
- là bộ điều khiển cho các Text LCD dạng ma trận điểm (dot-
matrix). HD44780U có 2 mode giao tiếp là 4 bit và 8 bit. Nó
chứa sẵn 208 ký tự mẫu kích thước font 5x8 và 32 ký tự mẫu
font 5x10
2.3 LCD
2.3 LCD
MÔ TẢ

Sơ đồ chân:
Các Text LCD
theo chuẩn
HD44780U
thường có 16
chân trong đó 14
chân kết nối với
bộ điều khiển và
2 chân nguồn cho
“đèn LED nền”
2.3 LCD

MÔ TẢ

Sơ đồ chân:

Các Text LCD


theo chuẩn
HD44780U
thường có 16
chân trong đó 14
chân kết nối với
bộ điều khiển và
2 chân nguồn cho
“đèn LED nền”
Kết nối Text LCD
2.3 LCD
MÔ TẢ

Thanh ghi và tổ chức bộ nhớ :

• HD44780U có 2 thanh ghi 8 bits là INSTRUCTION REGISTER


(IR) và DATA REGISTER (DR). Thanh ghi IR chứa mã lệnh điều
khiển LCD và là thanh ghi “chỉ ghi”. Thanh ghi DR chứa các các
loại dữ liệu như ký tự cần hiển thị hoặc dữ liệu đọc ra từ bộ nhớ
LCD…Cả 2 thanh ghi đều được nối với các đường dữ liệu D0:7

• HD44780U có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển


thị DDRAM (Didplay Data RAM), bộ nhớ chứa ROM chứa bộ
font tạo ra ký tự CGROM (Character Generator ROM) và bộ nhớ
RAM chứa bộ font tạo ra các symbol tùy chọn CGRAM
(Character Generator RAM)
2.3 LCD
MÔ TẢ

Thanh ghi và tổ chức bộ nhớ :

DDRAM: là bộ nhớ tạm chứa các ký tự cần hiển thị lên LCD, bộ
nhớ này gồm có 80 ô, mỗi ô có độ rộng 8 bit, mỗi ô nhớ tương
ứng với 1 ô trên màn hình LCD.
2.3 LCD
MÔ TẢ

Thanh ghi và tổ chức bộ nhớ :


CGROM : là vùng nhớ cố định chứa định nghĩa font cho các
ký tự. Địa chỉ font của mỗi ký tự  vùng nhớ CGROM chính là
mã ASCII của ký tự đó.
CGROM và DDRAM được tự động phối hợp trong quá trình
hiển thị của LCD.
2.3 LCD
MÔ TẢ

Thanh ghi và tổ chức bộ nhớ :


CGROM
2.3 LCD
MÔ TẢ

Thanh ghi và tổ chức bộ nhớ :

CGRAM: là vùng nhớ chứa các symbol do người dùng tự định


nghĩa, mỗi symbol được có kích thước 5x8 và được dành cho 8 ô
nhớ 8 bit. Các symbol thường được định nghĩa trước và được gọi
hiển thị khi cần thiết.
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :

• Các chân điều khiển LCD.


• Tập lệnh của LCD.
• Giao tiếp 8 bit và 4 bit.
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :


• Các chân điều khiển LCD.

Các chân điều khiển việc đọc và ghi


LCD bao gồm RS, R/W và EN.
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :


• Các chân điều khiển LCD.

Các chân điều khiển việc đọc và ghi


LCD bao gồm RS, R/W và EN.

RS (chân số 3): Chân lựa chọn thanh


ghi (Select Register), chân này cho
phép lựa chọn 1 trong 2 thanh ghi IR
hoặc DR để làm việc.
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :


• Các chân điều khiển LCD.
Các chân điều khiển việc đọc và ghi
LCD bao gồm RS, R/W và EN.

R/W (chân số 4): Chân lựa chọn giữa


việc đọc và ghi.
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :


• Các chân điều khiển LCD.

Các chân điều khiển việc đọc và ghi


LCD bao gồm RS, R/W và EN.

EN (chân số 5): Chân cho phép LCD


hoạt động (Enable), chân này cần
được kết nối với bộ điều khiển để cho
phép thao tác LCD.
2.3 LCD

MÔ TẢ

Điều khiển hiển thị Text LCD :


• Tập lệnh của LCD. (xem bảng lệnh)
CGRAM address
DDRAM address
1 BF DDRAM address
Write to
CGRAM or 1 0 D7
DDRAM

Read from
CGRAM or
DDRAM
Điều khiển hiển thị Text LCD :
Tập lệnh của LCD. (xem bảng lệnh)

Nhóm lệnh đỏ:


 Clear display – xóa LCD
 Cursor home – đưa con trỏ về vị trí đầu, dòng 1 của LCD
 Set DDRAM address – định vị trí con trỏ cho DDRAM
 Write to CGRAM or DDRAM – ghi dữ liệu vào CGRAM hoặc
DDRAM
Điều khiển hiển thị Text LCD :
• Tập lệnh của LCD. (xem bảng lệnh)

Nhóm lệnh màu xanh: nhóm lệnh này thường chỉ thực hiện 1
lần, thường được viết chung trong 1 chương trình con khởi
động LCD.
 Entry mode set – xác lập các hiện thị liên tiếp cho LCD
 Display on/off control – xác lập cách hiện thị cho LCD
 Function set – xác lập chức năng cho LCD
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :


• Giao tiếp 8 bit và 4 bit.

Mode 8 bit: Nếu bit DL trong lệnh function set bằng 1 thì
mode 8 bit được dùng.
Ưu điểm của phương pháp giao tiếp này là dữ liệu được ghi
và đọc rất nhanh và đơn giản vì chip điều khiển chỉ cần xuất
hoặc nhận dữ liệu trên 1 PORT.
Nhược điểm là tổng số chân dành cho giao tiếp LCD quá
nhiều, nếu tính luôn cả 3 chân điều khiển thì cần đến 11
đường cho giao tiếp LCD.
2.3 LCD
MÔ TẢ

Điều khiển hiển thị Text LCD :


• Giao tiếp 8 bit và 4 bit.

- Mode 4 bit: LCD cho phép giao tiếp với bộ điều khiển ngoài
theo chế độ 4 bit. Các instruction và data 8 bit sẽ được ghi và đọc
bằng cách chia thành 2 phần, gọi là các Nibbles, mỗi nibble gồm
4 bit và được giao tiếp thông qua 4 chân D7:4, nibble cao được
xử lí trước và nibble thấp sau.
Ưu điểm lớn nhất của phương pháp này tối thiểu số lines dùng
cho giao tiếp LCD.
Nhược điểm là đọc và ghi từng nibble tương đối khó khăn hơn
đọc và ghi dữ liệu 8 bit.

You might also like