1. Trang chủ
  2. » Công Nghệ Thông Tin

Điều khiển led đơn led 7 đoạn

14 438 0

Đ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

Định dạng
Số trang 14
Dung lượng 195,7 KB

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Trang 1

BÀI 3:

LẬP TRÌNH ðIỀU KHIỂN LED ðƠN – LED 7 ðOẠN

  

I Mục ñích bài thí nghiệm

Bài thực hành nhằm giúp học viên:

trúc vòng lặp, các lệnh hợp ngữ ñể truy xuất dữ liệu qua một PORT bất kỳ của

vi ñiều khiển (vñk) Từ ñó viết chương trình ñể ñiều khiển các led ñơn hoặc Led7ñoạn (led7doan) một cách có hiệu quả

II Cơ sở lý thuyết

LED (Light Emitting Diode) có nghĩa là diode phát quang, là các

diode có khả năng phát ra ánh sáng hay tia hồng ngoại Như vậy, LED là

một linh kiện ñiện tử dùng ñể giao tiếp ñơn giản với con người thông

qua 2 trạng thái: sáng hoặc tối

LED có 2 cực: Anode và Kathode

1 LED ñơn

a Phân cực thuận (Forward Bias) - LED sáng

Phân cực thuận là tác dụng một hiệu ñiện thế giữa 2 cực của

LED, sao cho ñiện thế cực Anode lớn hơn ñiện thế cực Kathode

một trị số là V (Hình 4.2a)

Trị số V nầy khoảng từ 1V ñến 2.5V, thay ñổi theo từng loại LED

Dòng ñiện I qua LED tốt nhất khoảng từ 10-20mA Ngoài khoảng nầy, hoặc là LED sẽ sáng mờ, hoặc là LED dễ bị hỏng

ðể ñạt ñược các giá trị mong muốn về dòng ñiện, ñiện thế trên LED, ta tiến

hành tính toán như sau: (mạch ñiện hình 4.)

10

3 10

2 5 12

K mA

V mA

V V I

U V

Trang 2

b Phân cực nghịch (Reverse Bias) - LED tắt

Phân cực nghịch là tác dụng một hiệu ñiện thế giữa 2 cực của LED, sao cho

ñiện thế cực Kathode lớn hơn ñiện thế cực Anode

c LED trong các mạch Logic

 ðối với mạch ñiện như hình 4.3a

Nếu chân P1.0 có mức logic 1 (ñiện thế

khoảng 5V) thì ngõ vào cổng ñảo (NOR gate)

ở mức logic 1 Ngõ ra cổng ñảo ở mức logic

0 (ñiện thế khoảng 0V) LED ñược phân cực thuận ñủ lớn nên LED sáng

Nếu chân P1.0 ở mức logic 0 thì LED tắt

 ðối với mạch ñiện hình 4.3b

Nếu chân P1.0 có mức logic 0 (ñiện thế

khoảng 0V) thì ngõ vào cổng ñảo ở mức

logic 0 Ngõ ra cổng ñảo ở mức logic 1 (ñiện

thế khoảng 5V), LED ñược phân cực thuận

ñủ lớn nên LED sáng

Nếu chân P1.0 có mức logic 1 thì LED tắt

2 LED 7 ñoạn

LED 7 ñoạn (led7doan) là một Led

ñặc biệt Trong ñó 7 led ñược sắp xếp theo

một trật tự nhất ñịnh ñể hiển thị thông tin

về các chữ số 0-9, và một led ñể hiển thị

thông tin về dấu chấm (.)

Có 2 loại led 7 ñoạn: Loại Anode

b a

e

g

c f

d

LED 12V

B ATTER Y

R

+

-

I

BATTERY

330

L ED 5V

B ATTER Y

+5V

P1.0

LED

7404

330

LED

330

P1.0

7404

Trang 3

Bảng mã cho Led Anode chung Bảng mã cho Led Anode chung

Số a b c d e f g dp Mã hex

Số a b c d e f g dp Mã hex

3 Các phương pháp hiển thị của LED 7 ñoạn

a Dùng phương pháp quét

Số dp g f e d c b a Mã hex

Số dp g f e d c b a Mã hex

c f

b a

g

GND d

330 x 8

e dot

c

330 x 8

e f

b

Vcc

a

g dot

d

Trang 4

Khi kết nối chung các ñường dữ liệu của Led 7 ñoạn (hình vẽ), ta không thể cho các Led này sáng ñồng thời (do ảnh hưởng lẫn nhau giữa các Led) mà phải thực hiện phương pháp quét, nghĩa là tại mỗi thời ñiểm chỉ sáng một Led và tắt các Led còn lại

Do hiện tượng lưu ảnh của mắt, ta sẽ thấy các Led sáng ñồng thời

b Dùng phương pháp chốt

Khi thực hiện tách riêng các ñường dữ liệu của Led, ta có thể cho phép các Led sáng

ñồng thời mà sẽ không có hiện tượng ảnh hưởng giữa các Led ICchốt cho phép lưu

trữ dữ liệu cho các Led có thể sử dụng là 74LS373, 74LS374

Trang 5

III Nội dung thực hành

1 Thiết bị thực hành

Board thực hành ET-LAB3A PC, module SCAN-7SEGMENT&LED

2 Mô tả phần cứng

a Mạch nguyên lý của module SCAN-7SEGMENT&LED

HI

7-SEGMENT

PORT ROW

1

3

5

7

9

11

13

2 4 6 8 10 12 14

PORT COLM

1 3 5 7 9 11 13

2 4 6 8 10 12 14 74LS145

1 2 3 4 5 6 7 9 10 11

15

14

13

12

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9

A

B

C

D

100 x 8

HI

7-SEGMENT

+5V

HI

HI

HI

GND

HI

HI

HI

7-SEGMENT

GND

7-SEGMENT

a b c d e f g dp

74HC245

2

3

4

5

6

7

8

9

19

1

18 17 16 15 14 13 12 11

A0

A1

A2

A3

A4

A5

A6

A7

OE

DIR

B0 B1 B2 B3 B4 B5 B6 B7

b Giải thích

 IC 74HC245: IC ñệm dữ liệu 2 hướng Trong ñó,

o DIR là chân ñiều khiển hướng dữ liệu Nếu ñiện thế ở chân DIR ở mức cao, 8 bít dữ liệu sẽ theo hướng từ A0-A7 -> B0-B7 Nếu ñiện thế ở chân DIR ở mức thấp, 8 bít dữ liệu sẽ theo hướng từ A0-A7 -> B0-B7

 IC 74LS145: IC giải mã 4 sang 10 Trong ñó, A-D là 4 ngõ vào, nhận từ

ñiều khiển (control word) từ vi ñiều khiển Q0 −Q9 là 10 ngã ra, trong ñó chỉ sử dụng 5 ngã, tương ứng với việc chọn 4 led7doan và một dãy 8led

0 0 0 0 0 1 1 1 1

0 0 0 1 1 0 1 1 1

0 0 1 0 1 1 0 1 1

0 0 1 1 1 1 1 0 1

0 1 0 0 1 1 1 1 0

Trang 6

3 Nội dung thực hành 1

Viết chương trình hợp ngữ ñể ñiều khiển led7doan thứ 4 hiển thị chữ số 9

a Mục ñích, yêu cầu cần ñạt ñược

 Hiểu ñược cách kết nối các bus từ vi ñiều khiển (vñk) sang module

 Nắm vững cách viết một lệnh hợp ngữ ñể xuất dữ liêu ra một PORT của vñk

b Lưu ñồ chương trình

c Chương trình mẫu gợi ý

END

d Yêu cầu

Bắt ñầu

Kết thúc

Khởi ñộng Stack

32 Byte

Dữ liệu chữ số 9

P0 ← 67H

Chọn led7doan 4

P1 ← 03H

Trang 7

 Sửa lại chương trình sao cho có thể hiển thị các số khác trong bảng mã HEX như số 0 hoặc 1 hoặc 2….tại LED 7 ñoạn có vị trí thứ 1 hoặc thứ 2 hoặc 3 trong dãy 4 LED 7 ñoạn

4 Nội dung thực hành 2

Viết chương trình hiển thị ra LED thứ 1 của dãy 4 LED 7 ñoạn các số từ 0 ñến 9 Thời gian hiển thị các số là 1 giây

a Mục ñích, yêu cầu cần ñạt ñược

sẵn

b Giải pháp

tuỳ chọn trong dãy 4 Led 7 ñoạn

một vùng nhớ dành riêng (TABLE) ñể chứa các bảng mã HEX của LED 7

ñoạn loại Cathode chung với cạnh a là MSB Sử dụng thanh ghi con trỏ dữ

liệu DPTR ñể quản lý vùng nhớ nầy

c Chương trình mẫu gợi ý

ORG 0000H ; XUAT GIA TRI NHI PHAN TU 0->9 RA PORT 0

JMP MAIN

MOV DPTR, #LED7S ; NAP DIA CHI CUA BANG MA HEX MOV A, #0

LAP: PUSH ACC ; cất nội dung trong A vào stack -> số thứ tự hay ñộ dời

CALL DELAY_1S

CJNE A, #10, LAP ; Nếu A chưa =10 thì quay lại ñể thực hiện

Trang 8

DELAY_1S:

MOV R1, #20

DJNZ R2, L2 DJNZ R1, L1 RET

LED7S: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 67H

END

d Yêu cầu

có nó thì chương trình như thế nào ? Giải thích ?

 Sửa lại chương trình theo cách khác ñể thực hiện công việc trên (không dùng lệnh PUSH và POP nữa)

 Sửa lại chương trình sao cho có thể hiển thị các số hex từ 0 ñến F

5 Nội dung thực hành 3

Viết chương trình hợp ngữ ñể ñiều khiển 4 led7doan hiển thị một số gồm 4 chữ

số, ví dụ: hiển thị chữ số “0123”

a Mục ñích, yêu cầu cần ñạt ñược

sẵn

 Hiểu rõ kỹ thuật ñiều khiển hiển thị các chữ số theo phương pháp quét hình

b Giải thuật

 Chữ số hàng nghìn sẽ ñược hiển thị trên led7doan thứ nhất, chữ số hàng trăm trên led7doan thứ hai, chữ số hàng chục trên Led7doan thứ ba, và chữ

số hàng ñơn vị sẽ ñược hiển thị trên led7doan thứ tư

Trang 9

 Lặp lại quá trình này nhiều lần trong một giây (khoảng 18 – 30 lần) ñể kích thích võng mạc mắt lưu hình ảnh về các chữ số

c Giải pháp

một vùng nhớ dành riêng (TABLE) Sử dụng thanh ghi con trỏ dữ liệu DPTR ñể quản lý vùng nhớ nầy

d Lưu ñồ chương trình Bắt ñầu

Y

N

DPTR

ð/chỉ chữ số ñầu tiên

Khởi ñộng Stack

32 Bytes

Thiết lập thanh ghi

R2 ← 5 R1 ← 0

Xuất PORT

P0 ← 00H P1 ← R1

DELAY

A ← 0

Lấy dữ liệu

A Error! Not a valid link.

Xuất PORT

P0 ← A P1 ← R1

DELAY

DPTR ← DPTR+1 R1 ← R1 + 1

R2 = R2 – 1 = 0 ?

Trang 10

e Chương trình

Cách 1: Chương trình gợi ý

JMP MAIN

MAIN:

MOV SP, #256-32 ; khoi dong Stack 32 byte

MOV P0,#4FH ; xuất mã của số 3

MOV P1, #03H ; xuất ra led 7 ñoạn thứ 4

CALL DELAY_XS

MOV P0,#5BH ; xuất mã của số 2

MOV P1, #02H ; xuất ra led 7 ñoạn thứ 3

CALL DELAY_XS

MOV P0,#06H ; xuất mã của số 1

MOV P1, #01H ; xuất ra led 7 ñoạn thứ 2

CALL DELAY_XS

MOV P0,#3FH ; xuất ra mã của số 0

MOV P1, #00H ; xuất ra led 7 ñoạn thứ 1

CALL DELAY_XS

JMP BEGIN

DELAY_XS:

MOV R1, #10 MOV R3, #255

DJNZ R1, L3 RET

END

 Thực thi chương trình và quan sát kết quả

 Hãy thay ñổi thời gian quét ñể sao cho quan sát ñược kết quả tốt nhất Từ ñó

có rút ra kết luận gì ? Thực thi chương trình ñể kiểm tra sự thay ñổi này

Cách 2: Chương trình gợi ý

Trang 11

CLR EA ; cấm tất cả ngắt

RET

;*********************************************

END

 Thực thi chương trình và quan sát kết quả

 Hãy thay ñổi thời gian quét sao cho nhìn thấy kết quả tốt nhất Từ ñó có rút

ra kết luận gì ?

Chương trình sao cho có thể hiển thị các số ñếm từ 00 ñến 99 Hãy cho chạy

ñoạn chương trình bên dưới Sinh viên hãy thay ñổi chương trình Delay ñể quét led

sao cho dễ nhìn thấy nhất

MOV 40H,#0 ; Ô nhớ 40h chứa giá trị xuất ra Led, bây giờ là 00H LAP: MOV A,40H

Trang 12

MOV B,#10 ; A chứa số hàng chục, B, chứa số

DIV AB ; hàng ñơn vị

MOV DPTR,#LED7S

MOV P0,A

MOV P1,#01H ; xuất ra hàng chục

CALL DELAY

MOV A,B

MOVC A,@A+DPTR

MOV P0,A

MOV P1, #00H ; Xuất số hàng ñơn vị

CALL DELAY

INC 40H ; Tăng ô nhớ 40h

MOV A,40H

DELAY:

PUSH 07

PUSH 06

MOV R6,#255

Delay1:

MOV R7,#255

DJNZ R7,$

DJNZ R6,DELAY1 POP 06

POP 07 RET LED7S: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 67H

END

 Sửa ñổi chương trình sao cho có thể hiển thị các số ñếm từ 99 ñến 00

 Sửa ñổi chương trình sao cho có thể hiển thị các số ñếm từ 00 ñến 59

 Sửa ñổi chương trình sao cho có thể hiển thị các số ñếm từ 00 ñến 23

 Sửa ñổi chương trình sao cho có thể hiển thị các số ñếm từ 0000 ñến 9999

6 Nội dung thực hành 4

Viết chương trình ñếm số lần tác ñộng của ngõ vào sau ñó hiển thị số ñếm ñược LED 7 ñoạn có 3 chữ số

a Mục ñích, yêu cầu cần ñạt ñược

 Dùng Px.2 (hoặc Px.3) làm Button ñể tạo ra xung tín hiệu ngã vào

tác ñộng sẽ có cạnh xuống hay nói cách khác là khi ấn button thì tín hiệu

Trang 13

b Giải pháp

tuỳ chọn trong dãy 4 Led 7 ñoạn

một vùng nhớ dành riêng (TABLE) ñể chứa các bảng mã HEX của LED 7

ñoạn loại Cathode chung với cạnh a là MSB Sử dụng thanh ghi con trỏ dữ

liệu DPTR ñể quản lý vùng nhớ nầy

c Chương trình mẫu gợi ý

; P3.2 -> BUTTON

; ô nhớ 40H chứa hàng ñơn vị

; ô nhớ 41H chứa hàng chục

; ô nhớ 42H chứa hàng ñơn trăm

JMP MAIN

MAIN:

MOV A, #00H

CALL BIN2BCD

; tra bảng, ñổi BCD -> Led 7 ñoạn

MOV A, 40H ; hàng ñơn vi

MOV A, @A+DPTR

MOV 40H, A ; cất nội dung của A vào 40h

MOV A, 41H ; hàng chục

MOV A, @A+DPTR

MOV 41H, A ; cất nội dung của A vào 41h

MOV A, 42H ; hàng trăm

MOV A, @A+DPTR

MOV 42H, A ; cất nội dung của A vào 42h

CALL DISPLAY

Trang 14

JMP BEGIN

DISPLAY:

MOV P1, 40H; xuất hàng ñơn vị ra

MOV P0, #00H

MOV P1, 41H; xuất hàng chục ra

MOV P0, #01H

MOV P1, 41H; xuất hàng trăm ra MOV P0, #02H

RET BIN2BCD:

MOV B, #10

MOV 40H, B

MOV B, #10

MOV 42, A RET

JMP BEGIN

DELAY_XS:

PUSH 07H

PUSH 06H

MOV R1, #10

MOV R3, #255

DJNZ R1, L3 POP 06H POP 07H RET

END

d Yêu cầu

 Chạy chương trình và quan sát kết quả

 Giải thích giải thuật các chương trình con DISPLAY, BIN2BCD Có nhận xét gì về cách sử dụng này ?

 Hãy giải thích ñoạn lệnh bên dưới có trong chương trình

JMP LAP

aand SW2 thì giảm xuống 1 ñơn vị Sử dụng SW2 có ñịa chỉ bít là P3.3

Ngày đăng: 23/10/2014, 12:37

HÌNH ẢNH LIÊN QUAN

Bảng mã cho Led Anode chung  Bảng mã cho Led Anode chung  (a là MSB, dp là LSB)  (a là LSB, dp là MSB) - Điều khiển led đơn  led 7 đoạn
Bảng m ã cho Led Anode chung Bảng mã cho Led Anode chung (a là MSB, dp là LSB) (a là LSB, dp là MSB) (Trang 3)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w