1. Trang chủ
  2. » Giáo án - Bài giảng

chương 4: giao tiếp hiển thị

36 354 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giao tiếp hiển thị
Trường học University of Science and Technology of Hanoi
Chuyên ngành Electrical Engineering
Thể loại Giáo trình
Năm xuất bản N/A
Thành phố Hà Nội
Định dạng
Số trang 36
Dung lượng 526,85 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LED 7 đoạn phương pháp chốt Trong ô nhớ địachỉ 31H củaRAM chứasố hàng ngàn và hàng trăm, còn ô nhớ 30H chứasố hàng chụcvàhàng đơnvị. •Lập trình cho VXL 89c51 hiểnthị lên LED 7 đoạn! phương pháp quét giao tiếp với LCD

Trang 1

Chương 4: Giao tiếp hiển thị

Trang 2

4.1 LED 7 đoạn

Trang 4

4.2 Phương pháp chốt

Trang 5

29 30 31

1 2 4 5 7 8

21 22 24 25 27 28 10 11 13 14 16 17

39 38 36 35 33 32

RST XTAL2

PSEN ALE/PROG EA/VPP

P1.0 P1.2 P1.4 P1.5 P1.7

P2.0/A8 P2.2/A10 P2.4/A12 P2.5/A13 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.2/AD2 P0.4/AD4 P0.5/AD5 P0.7/AD7

D6

5V

U7B 74LS02

5 6

4

RN5 330x8

U7C 74LS02

8 9

15 13 11 10 9

6 4

A C Y0 Y2 Y3 Y5 Y6

G1 G2A G2B

Y1 R1 100

U7A 74LS02

2 3

1

RN3 330x8

C2 30

D[0:7]

U7D 74LS02

11 12

LED2

7 6 4 2 1 9 10 5

3 8

Trang 6

Ví dụ 01

• Lập trình cho VXL 89c51 hiển thị lên LED

7 đoạn một số có 4 chữ số:

1486 2357 3769 1087 2789

Trang 7

#include "regx51.h“ #include "absacc.h"

unsigned char x; unsigned char y;

void main(void)

{x=0x82;

XBYTE[0XE000]=x; // xuat LED 4 ra gia tri 6x=0x80;

XBYTE[0XC000]=x; // xuat LED 3 ra gia tri 8x=0x99;

XBYTE[0XA000]=x; // xuat LED 2 ra gia tri 4x=0xF9;

XBYTE[0X8000]=x; // xuat LED 1 ra gia tri 1}}

Trang 8

#include "regx51.h“ #include "absacc.h"

unsigned char x; unsigned char y;

unsigned char z[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };

void main(void)

{x=6;

Trang 9

Ví dụ 02

• Trong ô nhớ địa chỉ 31H của RAM chứa số hàng ngàn và hàng trăm, còn ô nhớ 30H chứa số hàng chục và hàng đơn vị.

• Lập trình cho VXL 89c51 hiển thị lên LED

7 đoạn!

Trang 10

#include "regx51.h“ #include "absacc.h" unsigned char x,y;

unsigned char z[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,

Trang 12

4.3 Phương pháp quét

Trang 13

5V

D4 L3

4 5 3

13 12 11 10 9 15 14

D0 D1 D2 D3 BI/RBO RBI LT

A B C D E F G

10k

1k LED3

7 6 4 2 1 9 10 5

3 8

a b c d e f g p

AN0 AN1

LED4

7 6 4 2 1 9 10 5

3 8

a b c d e f g p

AN0 AN1

a b c d e f g p

AN0 AN1

R2 10k

Q7 A1015

L0

10k

D[0:7]

Q6 A1015

C3 10u

LED1

7 6 4 2 1 9 10 5

3 8

29 30

31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST

XTAL2 XTAL1

PSEN ALE/PROG EA/VPP

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

Trang 14

Mã nhị phân trên port P1

4 bit BCD hàng ngàn

1 1

1 0

4 bit BCD hàng trăm

1 1

0 1

4 bit BCD hàng đơn chục

1 0

1 1

4 bit BCD hàng đơn vị

0 1

1 1

P1.0P1.1

P1.2P1.3

P1.4LED4

P1.5LED3

P1.6LED2P1.7

LED1

Trang 15

A0 A1 A2 A3 A4 A5 A6

A0 A1 A2 A3 A4 A5 A6

A0 A1 A2 A3 A4 A5 A6

A0 A1 A2 A3 A4 A5 A6

A0 A1 A2 A3 A4 A5 A6

A0 A1 A2 A3 A4 A5 A6

A0 A2 A4 A6

XTAL2 18 XTAL1 19

ALE 30 EA 31 PSEN 29

RST 9

P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32

P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8

P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28

P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27U1

330 330 330

330 330 330

330 330 330

330 330 330

330 330 330

330 330 330

330 330 330

Trang 16

Ví dụ 03

• Xuất ra LED 7 đoạn hiển thị số 12345678 Chú ý: 8051 sử dụng thạch anh 12 MHz.

Trang 17

#include "regx51.h“ unsigned char x;

unsigned char z[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };

unsigned char y[8] = {254, 253, 251, 247, 239, 223, 191, 131};void Delay();

{TMOD &= 0xF0; TMOD |= 0x00; ET0 = 0;

while (TF0 == 0) {} TR0 = 0; /* Stop Timer 0 */ }

Trang 18

4.4 Giao tiếp với LCD

• LCD viết tắt của từ Liquid Crystal Display (Màn hình tinh thể lỏng).

• LCD có nhiều loại 1x16, 2x16, 4x16, 2x40, 4x40…

LCD1

LCD

1 2 3 4 5 6 7

DB1 DB2 DB3 DB4 DB5 DB6 DB7

HD44780U 2x16

Trang 19

Sơ đồ chân và chức năng của LCD HD44780

Đường dẫn dữ liệu 7 DB7

14

Đường dẫn dữ liệu 6 DB6

13

Đường dẫn dữ liệu 5 DB5

12

Đường dẫn dữ liệu 4 DB4

11

Đường dẫn dữ liệu 3 DB3

10

Đường dẫn dữ liệu 2 DB2

9

Đường dẫn dữ liệu 1 DB1

8

Đường dẫn dữ liệu 0 DB0

7

Cho phép EN

6

Đọc/ghi RW

3

Nguồn nuôi +5V Vcc

Trang 20

• RS (Register Select): Dùng để điều khiển quá trình gửi một byte lệnh hay 1 byte vào LCD RS ở mức thấp (0) thì byte gửi tới là lệnh, RS ở mức cao (1) thì byte gửi tới là dữ liệu và được hiển thị trên LCD.

• RW (Read/Write): dùng để khẳng định quá trình ghi vào hay đọc ra Khi RW ở mức thấp (0) thì thông tin trên bus dữ liệu sẽ ghi vào LCD, RW ở mức cao là đọc trạng thái của LCD.

• EN (Enable): Đây là chân điều khiển, dùng để cho LCD biết rằng LCD đang được nhận dữ liệu vào Khi

EN ở mức thấp (0) thì LCD cho phép nhận dữ liệu, khi EN ở mức cao thì LCD sẽ cho phép truyền thông tin trạng thái.

• Bus dữ liệu 4 bit D4-D7 hay 8 bit D0-D7 phụ thuộc vào chọn chế độ hoạt động của LCD.

Trang 21

mã ký

tự của LCD

Trang 22

Lệnh của LCD

0Eh Bật mở con trỏ dạng gạch chân ký tự

14h Đưa con trỏ sang phải 1 ký tự

10h Đưa con trỏ sang trái 1 ký tự

2h Đưa con trỏ về vị trí top/left

Trang 23

Lệnh Chức năng

Trang 24

Ví dụ kết nối 8051 và LCD5V

5V

C3 10u

R5 5k

C2 30

Y1

5V

R2 10k

29 30 31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28

10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST

XTAL2 XTAL1

PSEN ALE/PROG EA/VPP

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

Trang 25

D7 D6 D5 D4 D3 D2 D1 D0

XTAL1 19

ALE 30

EA 31 PSEN 29

RST 9

P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32

P1.0 1

P1.1 2

P1.2 3

P1.3 4

P1.4 5

P1.5 6

P1.6 7

P1.7 8

P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28

P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27

Trang 26

29 30 31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28

10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST

XTAL2 XTAL1

PSEN ALE/PROG EA/VPP

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

SW1 Reset

R1 100 R2

10k

C3 10u

LCD

LCD1

LCD

1 2 3 4 5 6

5V 5V

5V 5V

C1 30

Trang 27

Định nghĩa các dòng lệnh cho LCD

typedef unsigned char bit8; // dữ liệu 8 bit

/* các dòng lệnh cho LCD */

const bit8 Curser_Right = 0x06; // di dời con trỏ sang phải

const bit8 Curser_HOME = 0x02; // di dời con trỏ về vị trí đầu

Trang 28

/* Định nghĩa chân tín hiệu */

sbit RS = P2^0; // Chân reset

sbit RW = P2^1; //Chân đọc viết Read/write sbit E = P2^2; // Chân enable/disable sbit busyCheck = P3^7; //Chân kiểm tra bận

Trang 29

/* Chương trình con kiểm tra trạng thái bận của LCD */

Trang 30

/* chương trình con xuất mã lệnh cho LCD */

void writeCmd(bit8 cmd)

{

getReady(); /* kiểm tra trạng thái bận ?*/

E = 0; /* Cho phép LCD hoạt động*/ P3 = cmd; /* mã lệnh gửi tới Port3 */

Trang 31

/* chương trình con cài đặt ban đầu cho LCD */

Trang 32

vị trí con trỏ LCD

Lệnh xác định vị trí con trỏ LCD: 80h + địa chỉ con trỏ

/*Chương trình con di dời vị trí con trỏ*/void

LcdMoveCursor(unsigned char row, unsigned char col)

{ writeCmd((0x80) + (row << 6) + col);

}

Trang 33

/* Chương trình con hiển thị một đoạn chữ lên LCD*/ /* Khai báo con trỏ 8 bit ban đầu*/

bit8 code *text;

Trang 34

/* Chương trình con hiển thị một ký tự (char) lên LCD */

void writeChar( unsigned char x)

Trang 36

8 9 10 11 12 13 14 15

0 1 2 3 4 5 6

2 3

D3 D3

D1 D2 D3 D4 D5 D6 D7 D8

D6 D7

29 30

31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST

XTAL2 XTAL1

PSEN ALE/PROG EA/VPP

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

A13

D7

A15 D4

D6

R2 10k

SW1 Reset

5 6

Ngày đăng: 11/03/2014, 13:06

HÌNH ẢNH LIÊN QUAN

Sơ đồ chân và chức năng của LCD HD44780 - chương 4: giao tiếp hiển thị
Sơ đồ ch ân và chức năng của LCD HD44780 (Trang 19)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w