Professional Documents
Culture Documents
PFullC6 GiaoTiepIO
PFullC6 GiaoTiepIO
Giảm Bđ Giảm Bđ
Vd: Viết đoạn chương trình xuất nội dung thanh ghi R17 ra chốt U2 và thanh ghi R18 ra chốt U3
LDI R16, $FF OUT PORTB, R17 ; xuất R17 ra Port B
OUT DDRB, R16 SBI PORTC, 0 ;mở chốt U2, xuất data ra U2
SBI DDRC, 0 CBI PORTC, 0 ;khóa chốt U2, chốt data vừa xuất
SBI DDRC, 1 OUT PORTB, R18 ;xuất R18 ra Port B
CBI PORTC, 0 ;khóa chốt U2 SBI PORTC, 1 ;mở chốt U3, xuất data ra U3
CBI PORTC, 1 ;khóa chốt U3 CBI PORTC, 1 ;khóa chốt U3, chốt data vừa xuất
* Chương 6: Giao tiếp ngoại vi - 12 - Nguyễn Trọng Luật *
❖ Giao tiếp IC đệm 3 trạng thái 74HC244
Inputs (i=1,2;n=0..3) Outputs
iAn iYn
H X Z
L L L
L H H
Vd: Viết đoạn chương trình cất data từ đệm U2 vào thanh ghi R17 và data từ đệm U3 vào thanh ghi R18
LDI R16, 0x00 CBI PORTC, 0 ;mở đệm U2, data đưa về Port B
OUT DDRB, R16 IN R17, PINB ;cất data vào R17
SBI DDRC, 0 SBI PORTC, 0 ;cấm đệm U2
SBI DDRC, 1 CBI PORTC, 1 ;mở đệm U3, data đưa về Port B
SBI PORTC, 0 ;cấm đệm U2 IN R18, PINB ;cất data vào R17
SBI PORTC, 1 ;cấm đệm U3 SBI PORTC, 1 ;cấm đệm U3
* Chương 6: Giao tiếp ngoại vi - 13 - Nguyễn Trọng Luật *
Vd 6.6: Viết chương trình liên tục nhập data từ
ngõ vào U4, chuyển 4 bit thấp và 4 bit cao sang
mã ASCII, lần lượt xuất ra U2 và U3 tương ứng.
.ORG 0
LDIR16, 0x07
OUT DDRC, R16 ;PC2:PC0 là output
SBI PORTC, 2 ;khóa ngõ vào U4
CBIPORTC, 0 ;khóa ngõ ra U2
CBIPORTC, 1 ;khóa ngõ ra U3
START: LDIR16, 0x00
OUT DDRB, R16 ;Port B là input CBIPORTC, 0 ;khóa U2
CBIPORTC, 2 ;mở U4 POP R17 ;phục hồi data
IN R17, PINB ;đọc data SWAP R17 ;hoán vị sang 4 bit thấp
SBI PORTC, 2 ;khóa U4 ANDI R17, 0x0F ;che 4 bit thấp data
PUSH R17 ;cất data RCALL HEX_ASC ;chuyển sang mã ASCII
LDIR16, 0xFF OUT PORTB, R18 ;xuất mã ASCII
OUT DDRB, R16 ;Port B là output SBI PORTC, 1 ;mở U3
ANDI R17, 0x0F ;che 4 bit thấp data CBIPORTC, 1 ;khóa U3
RCALL HEX_ASC ;chuyển sang mã ASCII RJMP START
OUT PORTB, R18 ;xuất mã ASCII HEX_ASC: … (vd 6.5)
SBI PORTC, 0 ;mở U2 RET
* Chương 6: Giao tiếp ngoại vi - 14 - Nguyễn Trọng Luật *
❖ Giao tiếp IC Thanh ghi dịch 74HC595
Ngõ vào điều khiển Ngõ vào Ngõ ra
Chức năng
SHCP STCP DS Q7S Qn
X X L L X L Q0 Reset thanh ghi và ngõ ra song song không đổi
X L L X L L Reset thanh ghi và ngõ ra song song
X X H L X L Z Reset thanh ghi và ngõ ra song song tổng trở cao
X L H DI Q6S Q0 Mode ghi dịch, DI dịch vào thanh ghi, ngõ ra song song không đổi
X L H X Q0 QnS Mode xuất data, ngõ ra các tầng ghi dịch được phép xuất ngõ ra song song
L H DI Q6S QnS Mode ghi dịch và xuất data ngõ ra bằng giá trị ghi dịch trước đó
• DIPSW4 gồm 4 SW: vị trí ON là đóng SW, vị trí còn lại hở SW.
• Port B lái trực tiếp các chân đoạn do dòng ngõ ra các chân port có thể đạt 20mA,
Đoạn dp g f e d c b a
Data D7 D6 D5 D4 D3 D2 D1 D0
Ký tự 0 1 2 3 4 5 6 7 8 9 A B C D E F
Mã 7 đoạn (H) C0 F9 A4 B0 99 92 82 F8 80 90 88 83 C6 A1 86 8E
* Chương 6: Giao tiếp ngoại vi - 17 - Nguyễn Trọng Luật *
Vd 6.10: Viết chương trình đọc data từ DIPSW4 và hiển thị mã Hex của data ra LED 7 đoạn AC.
- Để mang tính tổng quát, chương trình con BIN8_BCD chuyển từ số nhị phân 8 bit sang số
BCD 3 digit, kết quả là số BCD nén cất trong R21, R20.
- Trong chương trình con SCAN_4LA, để thuận tiện tạo vòng lặp 4 lần tương ứng quét 4
đèn, ta sử dụng chương trình con BCD_UNP tách số BCD nén thành không nén. Chương
trình con này có thể không cần thiết nếu từ chương trình con BIN8_BCD cho kết quả là số
BCD không nén.
- Có thể tùy chỉnh thời gian trễ trong ctc DELAY_1MS để điều chỉnh độ sáng đèn
DDRAM (Data Display RAM): có địa chỉ từ 80H÷FFH. Nếu ta ghi ký tự ASCII vào vùng RAM này, thì
nó sẽ hiển thị lên LCD. Trong LCD 16x2 thì chỉ các ô nhớ có địa chỉ như hình mới được hiển thị.
Con trỏ (Cursor): là thanh ghi khi trỏ vào vùng DDRAM, thì
ký tự ghi vào thanh ghi DR sẽ được chuyển vào ô nhớ đó.
* Chương 6: Giao tiếp ngoại vi - 25 - Nguyễn Trọng Luật *
❖ Cấu hình LCD:
▪ Lệnh 1 Function set: đặt cấu hình làm việc LCD kết
nối 8/4 bit (DL), số dòng (N), ma trận 5x8 hay 5x10 (F)
o DL: DL=1 giao tiếp data 8 bit D7-D0
DL=0 giao tiếp data 4 bit D7-D4
o N: N=1 đặt 2 dòng, N=0 đặt 1 dòng
o F: F=1 font 5x10 (N=0), F=0 font 5x8
Vd: Function set: giao tiếp 8 bit 2 dòng font 5x8
=> Mã lệnh=38H
▪ Lệnh 2 Clear display: xóa toàn bộ màn hình và con
trỏ tự động dời về đầu dòng 1. Mã lệnh 01H
▪Lệnh 3 Display on/off control: điều khiển màn hình và con trỏ
o D: D=1 màn hình on, D=0 màn hình off
o C: C=1 con trỏ on, C=0 con trỏ off Vd: Display on/off control:màn hình on,con trỏ off
o B: B=1 ký tự và con trỏ chớp, B=0 ký tự và con trỏ không chớp => Mã lệnh=0CH
▪ Lệnh 4 Entry mode set: chọn mode dịch con trỏ/màn hình.
o I/D=1/0: tăng/giảm địa chỉ DDRAM thêm/bớt 1 khi truy xuất DDRAM
o S: S=1 dịch màn hình sang phải (I/D=0) hay trái (I/D=1), S=0: không dịch màn hình
Vd: Entry mode set: con trỏ dịch phải, địa chỉ DDRAM tăng 1 khi ghi data, màn hình không dịch
=> Mã lệnh=06H
* Chương 6: Giao tiếp ngoại vi - 26 - Nguyễn Trọng Luật *
Một số mã lệnh thông dụng (điều khiển RS=0, RW=0)
Mã (HEX) Chức năng Thời gian thực thi
01 Xóa màn hình (Clear display) (tự về vị trí đầu dòng) 1.52ms
02 Trở về vị trí đầu dòng (Return home) 1.52ms
04 Dịch con trỏ sang trái (khi ghi/đọc data) 37μs
06 Dịch con trỏ sang phải (khi ghi/đọc data) 37μs
08 Tắt màn hình, tắt con trỏ 37μs
0C Hiện màn hình, tắt con trỏ 37μs
0F Hiện màn hình, chớp ký tự chỉ bởi con trỏ 37μs
10 Dịch con trỏ sang trái (không thay đổi nội dung DDRAM) 37μs
14 Dịch con trỏ sang phải (không thay đổi nội dung DDRAM) 37μs
18 Dịch màn hình sang trái (không thay đổi nội dung DDRAM) 37μs
1C Dịch màn hình sang phải (không thay đổi nội dung DDRAM) 37μs
28 Đặt chức năng giao tiếp 4 bit cao, 2 dòng, 5 x 8 dots 37μs
38 Đặt chức năng giao tiếp 8 bit, 2 dòng, 5 x 8 dots 37μs
80÷8F, C0÷CF Cho con trỏ về vị trí địa chỉ DDRAM cần hiển thị ký tự 37μs
Chờ > 15ms sau khi VDD Chờ > 15ms sau khi VDD
tăng đến 4.5V (*) tăng đến 4.5V (*)
Các lệnh reset cấp nguồn giao tiếp 8 bit Chờ > 100μs
Xin chao!
Mon Vi xu ly .INCLUDE <M324PDEF.INC>
.EQU OUTPORT=PORTB ;PORTB data
.EQU INPORT=PINB
.EQU IOSETB=DDRB
.EQU CONT=PORTC ;PORTC điều khiển
.EQU CONT_DR=DDRC
.EQU CONT_OUT=PORTC
.EQU CONT_IN=PINC
.EQU RS=0 ;bit RS
.EQU RW=1 ;bit RW
.EQU E=2 ;bit E
.EQU CR=$0D ;mã xuống dòng
.EQU NULL=$00 ;mã kết thúc
Chương trình con OUT_LCD ghi mà lệnh/data ra LCD. Trước khi gọi ctcon này; phải cho RW=0, và
RS=0 nếu ghi mã lệnh hoặc RS=1 nếu ghi ký tự hiển thị ra LCD.
Bảng TAB là chuỗi ký tự ASCII để hiển thị được cất trong bộ nhớ Flash: gồm có 2 dòng cách nhau ký tự
0DH, và kết thúc là ký tự null 00H
* Chương 6: Giao tiếp ngoại vi - 34 - Nguyễn Trọng Luật *
Vd 6.17: Cho sơ đồ giao tiếp giữa MCU324P với LCD 16x2 giao tiếp 4 bit như bên dưới. Viết một chương
trình điều khiển LCD 16x2 thực hiện các công việc giống ví dụ 6.16
.INCLUDE <M324PDEF.INC>
.EQU LCD=PORTC ;PORTC giao tiếp BUS
LCD16x2
.EQU LCD_DR=DDRC
.EQU LCD_IN=PINC
.EQU RS=0 ;bit RS
.EQU RW=1 ;bit RW
.EQU E=2 ;bit E
.EQU CR=$0D ;mã xuống dòng
.EQU NULL=$00 ;mã kết thúc