1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn ASM

19 1,1K 4
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

Định dạng
Số trang 19
Dung lượng 196,49 KB

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

Nội dung

Bài tập lớn môn lập trình hợp ngữ ASM. Đề tài: Mô phỏng máy tính điện tử cơ bản sử dụng bàn phím 4x4 và màn hình LCD 2x16 trên Proteus

Trang 2

MỤC LỤC

Trang

Lời nói đầu……….0

PHẦN I: Sơ đồ mạch và các linh kiện sử dụng……… 1

1.Sơ đồ mạch……… 1

2.Linh kiện……….2

a.Bàn phím 4x4……… 2

b.LCD 16x2……… 3

c.Vi điều khiển 8051……… 4

d.Linh kiện khác………5

PHẦN II: Chương trình và giải thích lệnh……….7

Trang 3

LỜI NÓI ĐẦU

Hiện nay có rất nhiều các loại vi điều khiển của các hãng khác

nhau.Ví dụ như họ 89c51, AVR của hãng Atmel,PIC của hãng Microchip,…vv

Trong các loại vi điều khiển thì phổ biến nhất ở Việt Nam hiện nay là chip vi điều khiển thuộc họ 8051 Do Intel sản xuất là một trong những chip vi điều khiển xuất hiện sớm nhất nên nó là nền tảng cho sự phát triển của các họ vi điều khiển thế hệ sau.Vì thế nên nếu hiểu về 8051 thì sẽ dễ dàng hơn cho việc tìm hiểu các chip

vi điều khiển khác thuộc thế hệ sau Hơn nữa nó được sử dụng trong hầu hết các loại đồ điện tử dân dụng ở nước ta hiện nay cho nên lập trình cho vi điều khiển đã được đưa vào chương trình học cho sinh viên

Qua quá trình học tập trên lớp và tìm hiểu tài liệu về 8051 Nhóm chúng em đã thực hiện mô phỏng chiếc máy tính điện tử cơ bản sử dụng bàn phím 4x4 và màn hình LCD 2x16 trên Proteus

Cơ sở lập trình sử dụng ngôn ngữ Assembler Là một chiếc máy tính đơn giản có thể thực hiện được những phép tính như cộng, trừ, nhân, chia Chi tiết được trình bày ở phần sau bài báo cáo của nhóm

Do điều kiện có hạn nên nhóm em chưa thể làm được mạch thực tế Nhóm sử dụng phần mềm Proteus để mô phỏng hữu hiệu

về bài thiết kế Trong quá trình làm báo cáo còn nhiều hạn chế, nhóm em hi vọng được sự chỉ bảo của giáo viên bộ môn và mọi người

Chúng em xin chân thành cảm ơn!

Trang 4

PHẦN I

SƠ ĐỒ MẠCH VÀ CÁC LINH KIỆN SỬ DỤNG

1 Sơ đồ mạch

Sơ đồ mạch được vẽ trên phần mềm Proteus Sử dụng bàn phím

(keypad) 4x4 và mành hình LCD 2x16 có trong thư viện linh kiện của phần mềm Kết hợp với một số linh kiện khác như điện trở, tụ điện…

2 Linh kiện

a Bàn phím ma trận 4x4

Trang 5

* Cấu tạo:

Phím bấm được nối thành ma trận 4 hàng x 4 cột các hàng và cột được nối với các chân cổng vào ra của vi điều khiển Psoc Khi một phím được bấm,

nó sẽ nối một hàng và một cột tương ứng Như vậy ta sẽ có 16 nút nhấn mà chỉ mất có 8 chân vi điều khiển còn muốn tiếp kiệm hơn nữa là dùng con giải

mã 74138 hay dùng 74LS154 Khi nút 0 được nhấn thì nó nối giữa cột 1 hàng

1 Còn nút 1 được nhấn thì cột 2 và hàng 1 được nối hay nút 2 được nhấn thì nối giữa cột 3 và hàng 1 cứ như vậy đến nút thứ 15

*Nguyên lý quét:

Thuật toán quét phím được sử dụng là lần lượt tìm hàng và tìm cột (hoặc ngược lại) Khi tìm hàng, các hàng sẽ được đặt làm đầu vào,các cột được

đặt làm đầu ra mức thấp Sau đó kiểm tra các hàng xem có hàng nào ở mức

Trang 6

thấp hay không (có phím nào bấm gây ra nối với cột hay không)? Sau khi xác

định được hàng sẽ đặt các cột làm đầu vào, hàng vừa tìm được làm đầu ra

mức thấp Việc kiểm tra được tiến hành với các cột Sau khi xác định được hàng và cột sẽ suy ra phím được bấm

Nói thế này cũng khó hiểu nhỉ nhưng mà chỉ cần hiểu sơ qua thuật toán quét LED như thế này:

+ Đầu tiên cho các hàng ở mức 1 và các cột ở mức 0

+ Kiểm tra xem nào hàng nào đựoc nhấn (khi nút được nhấn) tức là

đựoc nhận tín hiệu từ các cột

+ Nếu mà có 1 hàng bất kỳ đựoc nhấn sau đó ta lại chuyển giá trị 0 vào hàng đựoc nhấn và giá trị 1 vào các cột Khi đó cột lại nhận nhiệm vụ làm tín hiệu vào Nếu mà 1 trong các cột đựoc nhấn (Khi nút được nhấn) trong các trường hợp này thì cho ra các giá trị tương ứng

+ Việc kiểm tra các hàng khác là tương tự như trên!Ở đây không đề cập đến việc nhiễu phím nút nhấn nên bỏ qua

b Màn hình LCD 2x16

* Cấu tạo:

Trang 7

* Nguyên lý họat động

-5v và đất tương ứng thì chân Vee được dùng để điều khiển độ tương phản của LCD

- Chân chọn thanh ghi Rs: Có ghi (R/W): Đầu vào đọc/ghi cho phép E

được sử dụng bởi LCD để chốt dữ liệu của nó Khi data được cấp đến chân

dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này và LCD chốt dữ liệu trên các chân dữ liệu Xung này phải rộng tối thiểu 450ns

- Chân D0-D7: Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD Để hiển thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a

đến f và các con số từ 0-9 các chân này khi RS =1

- Cũng có các mã lệnh mà có thể được gửi đến LCD để xóa màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ

- Sử dụng RS = 0 để kiểm tra bít cờ bận xem LCD có sẵn sàng nhận thông tin? Cờ bận là bít D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau:

+ Nếu R/W = 1, RS = 0 khi D7 = 1 thì LCD bận bởi các hai thanh ghi trong LCD, chân RS được dùng để chọn thanh ghi như sau: Nếu RS = 0 thì thanh ghi mà lệnh được lựa chọn để cho phép người dùng gửi một lệnh chẳng hạn như xóa màn hình, đưa con trò về đầu dòng v v… Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD

- Chân đọc/ công việc bên trong và sẽ không nhận bất kỳ thông tin mới nào Khi D7 =0 thì LCD sẵn sàng nhận thông tin mới

c Vi điều khiển 8051

*Cấu tạo:

Trang 8

Vi điều khiển 8051 được Intel sản xuất năm 1981 Đặc điểm chủ yếu:

d Một số linh kiện khác

74LS373, 6264, 74LS00, diode có chức năng cấp ổn định nguồn cho LCD, tạo bộ nhớ tạm thời và bộ đếm logic

Trang 9

PHẦN II CHƯƠNG TRÌNH VÀ GIẢI THÍCH LỆNH

phim ban lan 1 = 0

ljmp main ;nhay den chuong trinh main

org 0bh ;su dung ngat bo timer 0

ljmp ngattimer0 ;nhay den chuong trinh ngat

org 40h ;viet tai vi tri 40h

main:

lcall khoitao ;nhay den nhan~ khoi tao

mainloop: ;nhay den chuong trinh chinh

lcall quetphim ;nhay den quet phim, de nhap vao so thu nhat

lcall quetphim2 ;nhay den quet phim de nhap vao so thu 2

sjmp mainloop ;lap lai o cho nay

khoitao: ;khoi tao ,su dung timer 0,

mov r1,#0

mov tmod,#01h

setb et0

setb ea

mov th0,#high(-10000)

mov tl0,#low(-10000)

setb tr0

ret

ngattimer0: ;chuong trinh ngat time

push psw

push acc

mov th0,#high(-10000)

mov tl0,#low(-10000)

lcall quetled

pop acc

pop psw

reti

quetled: ;chuong trinh quet led va hien thi

mov p0,r1

;mov r6,#4

;mov r5,#3

Trang 10

MOV A,#38H ;thiet lap LCD

acall delay ;che

mov A,#0eh ;nhap nhay con tro

acall conlenh

acall delay

acall hienthi

mov A,#01h ;hien thi dau ' cach'

acall hienthi

acall delay

cong:

mov A,r6 ;di chuyen 6 vao thanh ghi R6,de lat nua dua vao thanh ghi a,hien thi

add a,#30h ;cong them vao 30h,de hien thi dang asscii

acall hienthi

acall delay

mov a,#'+' ;hien thi dau + thi khong can add a,#30h

acall hienthi

acall delay

mov a,r5

add A,#30h

acall hienthi

acall delay

mov a,#'=' ;hien thi dau =

acall hienthi

acall delay

;doan nay la di chuyen r5 vao a,sau do cong r6 voi a,cong 31h de hien thi dang ascii cua no

mov a,r5

Trang 11

add a,r6

add a,#30h

acall hienthi

acall delay

mov r1,#0

mov r1,a

ret

;cac chuong trinh hien thi

conlenh: ;tao ra khoang chong 'cach' MOV P1, A

CLR P3.0

CLR P3.1

SETB P3.2

CLR P3.2

RET

hienthi: ;hien thi nhieu so,

MOV P1, A

SETB P3.0

CLR P3.1

SETB P3.2

CLR P3.2

RET

delay: ; chuong trinh che time

mov TMOD,#01h

mov R0,#1

againi:

mov TH0,#high(-500)

mov TL0,#low(-500)

setb TR0

here:

clr TF0

ret

;ret

delay1ms: ;che 1ms

mov r2,#100

Trang 12

delay1msloop:

nop

nop ;dung de tre 1 khoang thoi gian

nop

nop

nop

nop

nop

nop

djnz r2,delay1msloop ;R2-1 nhay den dalay1msloop ret

delay10ms: ;tre 10ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

lcall delay1ms

ret

quetphim:

mov p2,#11110000b

jnb p2.4,quet ;jnb la nhay neu p2.4=0

jnb p2.5,quet

jnb p2.6,quet

jnb p2.7,quet

ret

quet:

lcall delay10ms

jnb p2.4,hang1

jnb p2.5,hang2

jnb p2.6,hang3

jnb p2.7,hang4

ret

hang1:

setb p2.0 ;cho bit p2.0=1

setb p2.1

setb p2.2

Trang 13

setb p2.3

clr p2.4

nop

jnb p2.0,phim1 jnb p2.1,phim2 jnb p2.2,phim3 jnb p2.3,phim4 ret

hang2:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.5

nop

jnb p2.0,phim5 jnb p2.1,phim6 jnb p2.2,phim7 jnb p2.3,phim8 ret

hang3:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.6

nop

jnb p2.0,phim9 jnb p2.1,phim10 jnb p2.2,phim11 jnb p2.3,phim12 ret

hang4:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.7

nop

jnb p2.0,phim13 jnb p2.1,phim14 jnb p2.2,phim15 jnb p2.3,phim16

Trang 14

ret

phim1:

jnb p2.0,$ mov r1,#7 mov r5,#7 ret

phim2:

jnb p2.1,$ mov r1,#4 mov r5,#4 ret

phim3:

jnb p2.2,$ mov r1,#1 mov r5,#'1' ret

phim4:

jnb p2.3,$ mov r1,#0 mov r5,#0 ret

phim5:

jnb p2.0,$ mov r1,#8 mov r5,#8 ret

phim6:

jnb p2.1,$ mov r1,#5 mov r5,#5 ret

phim7:

jnb p2.2,$ mov r1,#2 mov r5,#2 ret

phim8:

jnb p2.3,$ mov r1,#0 mov r5,#0 ret

phim9:

jnb p2.0,$

Trang 15

mov r1,#9

mov r5,#9

ret

phim10:

jnb p2.1,$

mov r1,#6

mov r5,#6

ret

phim11:

jnb p2.2,$

mov r1,#3

mov r5,#3

ret

phim12:

jnb p2.3,$

mov r5,#'='

ret

phim13:

jnb p2.0,$

mov r5,#'\'

ret

phim14:

jnb p2.1,$

mov r5,#'x'

ret

phim15:

jnb p2.2,$

mov r5,#'-'

ret

phim16:

jnb p2.3,$

mov r5,#'+'

ret

;quet phim 2

quetphim2:

mov p2,#11110000b jnb p2.4,quet2 jnb p2.5,quet2

Trang 16

jnb p2.6,quet2 jnb p2.7,quet2 ret

quet2:

lcall delay10ms jnb p2.4,hang12 jnb p2.5,hang22 jnb p2.6,hang32 jnb p2.7,hang42 ret

hang12:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.4

nop

jnb p2.0,phim123 jnb p2.1,phim22 jnb p2.2,phim32 jnb p2.3,phim42 ret

hang22:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.5

nop

jnb p2.0,phim52 jnb p2.1,phim62 jnb p2.2,phim72 jnb p2.3,phim82 ret

hang32:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.6

nop

jnb p2.0,phim92

Trang 17

jnb p2.1,phim102 jnb p2.2,phim112 jnb p2.3,phim122 ret

hang42:

setb p2.0

setb p2.1

setb p2.2

setb p2.3

clr p2.7

nop

jnb p2.0,phim132 jnb p2.1,phim142 jnb p2.2,phim152 jnb p2.3,phim162 ret

phim123:

jnb p2.0,$

mov r1,#7

mov r6,#7

ret

phim22:

jnb p2.1,$

mov r1,#4

mov r6,#4

ret

phim32:

jnb p2.2,$

mov r1,#1

mov r6,#1

ret

phim42:

jnb p2.3,$

mov r1,#0

mov r6,#0

ret

phim52:

jnb p2.0,$

mov r1,#8

mov r6,#8

ret

phim62:

jnb p2.1,$

Trang 18

mov r1,#5 mov r6,#5 ret

phim72:

jnb p2.2,$ mov r1,#2 mov r6,#2 ret

phim82:

jnb p2.3,$ mov r1,#0 mov r6,#0 ret

phim92:

jnb p2.0,$ mov r1,#9 mov r6,#9 ret

phim102:

jnb p2.1,$ mov r1,#6 mov r6,#6 ret

phim112:

jnb p2.2,$ mov r1,#3 mov r6,#3 ret

phim122:

jnb p2.3,$ mov r6,#'='

phim132:

jnb p2.0,$ mov r5,#'\' ret

phim142:

jnb p2.1,$ mov r6,#'x' ret

Trang 19

phim152:

jnb p2.2,$ mov r6,#'-' ret

phim162:

jnb p2.3,$ mov r6,#'+' ret

end

Ngày đăng: 30/04/2014, 00:56

HÌNH ẢNH LIÊN QUAN

SƠ ĐỒ MẠCH VÀ CÁC LINH KIỆN SỬ DỤNG - Bài tập lớn ASM
SƠ ĐỒ MẠCH VÀ CÁC LINH KIỆN SỬ DỤNG (Trang 4)

TỪ KHÓA LIÊN QUAN

w