Vi xử lý được sử dụng trong nhiều lĩnh vựckhác nhau, nhất là trong các máy IBM PC/XT... Tín hiệu xung clock : Nó cung cấp thời gian cho bộ xử lý cho các hoạt động... Trong chu k
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
SVTH : NGUYỄN THANH TÚ - 20168566
TRẦN QUANG NAM - 20168366 TRẦN ĐĂNG TÙNG - 20168579
Hà Nội, 2021
Trang 2MỤC LỤC
CHƯƠNG I: GIỚI THIỆU VÀ PHÂN TÍCH KIẾN TRÚC HỆ
THỐNG 3
I.Yêu cầu chức năng 3
II.Khối điều khiển và ngôn ngữ lập trình 3
2.1.Vi xử lý 8086: 3
2.2.Vi mạch 8255A 10
2.5.Sơ đồ khối phối lắp mạch 15
CHƯƠNG II THIẾT KẾ MẠCH 16
I.Sơ đồ đấu nối 16
II.Kết quả mô phỏng 16
III Lập trình vi xử lý 17
KẾT LUẬN 57
Trang 3CHƯƠNG I: GIỚI THIỆU VÀ PHÂN TÍCH KIẾN TRÚC HỆ
THỐNG
I.Yêu cầu chức năng
Xây dựng 1 máy tính bỏ túi sử dụng ma trận phím để nhập dữ liệu vàLCD để hiển thị kết quả, chỉ cần cộng trừ nhân chia sử dụng 8086,8255, ma trậnphím, LCD,74LS373
II.Khối điều khiển và ngôn ngữ lập trình
2.1.Vi xử lý 8086 :
Vi xử lý 8086 là bộ vi xử lý 16 bít đầu tiên của Intel và là vi xử lý đầu tiên hỗtrợ tập lệnh x86 Ngoài ra Intel cũng giới thiệu 8088 tương thích với 8086 nhưng độrộng buýt dữ liệu bằng một nửa (8 bít) Vi xử lý được sử dụng trong nhiều lĩnh vựckhác nhau, nhất là trong các máy IBM PC/XT
Trang 4Hình 2 Sơ đồ mô tả cấu trúc của bộ vi xử lý 8086
Đơn vị thực thi EU
Cung cấp hướng dẫn cho BIU, ghi chú nơi lấy dữ liệu và sau đó giải mã, thựchiện các hướng dẫn, Chức năng chính là điều khiển các hoạt động trên dữ liệu bằngcách sử dụng bộ giải mã lệnh ALU và EU không có kết nối trực tiếp với các bus hệthống, nó thực hiện các hoạt động thông qua dữ liệu BIU
Đơn vị dao diện BUS (BIU)
BIU đảm nhận tất cả dữ liệu và chuyển địa chỉ trên các xe bus cho EU, gửi địa chỉ, nạp các lệnh từ bộ nhớ, đọc dữ liệu từ các cổng và bộ nhớ cũng như dữ liệu vào
Trang 5accs cổng bộ nhớ EU không có kết nối hướng với bus hệ thống nên điều này có thể xảy ra với BIU,EU và BIU được kết nối với bus nội bộ
Hình 3 Sơ đồ chân của bộ vi xử lý 8086
Nguồn cung và tín hiệu số : Nó sử dụng nguồn điện 5V DC ở chân V
và sử dụng nối đất ở chân V SS - 1 và 20 cho hoạt động của nó
Tín hiệu xung clock : Nó cung cấp thời gian cho bộ xử lý cho các hoạt
động Tần số của nó là khác nhau đối với các phiên bản khác nhau, tức là 5MHz,8MHz và 10MHz
CC -40
Trang 6Địa chỉ trạng thái bus và bus dữ liệu : AD0-AD15 Đây là 16 bus địa chỉ /
dữ liệu AD0-AD7 mang dữ liệu byte bậc thấp và AD8-AD15 mang dữ liệu byte bậc cao Trong chu kỳ xung nhịp đầu tiên, nó mang địa chỉ 16 bit và sau đó nó mang dữ liệu 16 bit
A16 /S3-A19/S6 Đây là 4 xe buýt địa chỉ / trạng thái Trong chu kỳ xungnhịp đầu tiên, nó mang địa chỉ 4 bit và sau đó nó mang các tín hiệu trạng thái
BHE/S7 BHE là viết tắt của Bus High Enable Nó có sẵn ở chân 34 và được
sử dụng để chỉ ra việc truyền dữ liệu bằng cách sử dụng bus dữ liệu D8-D15 Tínhiệu này ở mức thấp trong chu kỳ đồng hồ đầu tiên, sau đó nó hoạt động
RD Nó có sẵn ở chân 32 và được sử dụng để đọc tín hiệu cho hoạt động đọc.
READY là tín hiệu báo nhận từ các thiết bị I / O mà dữ liệu được truyền Đó
là một tín hiệu cao đang hoạt động Khi nó ở mức cao, nó chỉ ra rằng thiết bị đã sẵnsàng để truyền dữ liệu (Chân 22)
RESET được sử dụng để khởi động lại quá trình thực thi Nó khiến bộ xử lý
chấm dứt ngay hoạt động hiện tại của nó Tín hiệu này hoạt động ở mức cao trong
4 chu kỳ xung nhịp đầu tiên để ĐẶT LẠI bộ vi xử lý ( Chân 21)
INTR Đây là một tín hiệu yêu cầu ngắt, được lấy mẫu trong chu kỳ xung
nhịp cuối cùng của mỗi lệnh để xác định xem bộ xử lý có coi đây là một ngắt haykhông (có sẵn ở chân 18)
Trang 7TEST Khi tín hiệu này ở mức cao, thì bộ xử lý phải đợi trạng thái IDLE, nếu
không thì quá trình thực thi sẽ tiếp tục.(Chân 23)
NMI Nó là một đầu vào được kích hoạt cạnh, gây ra một yêu cầu ngắt tới bộ
vi xử lý.( Chân 17)
INTA Nó là một tín hiệu báo nhận ngắt và id Khi bộ vi xử lý nhận được tín
hiệu này, nó sẽ báo nhận ngắt (Chân 24)
ALE Nó là viết tắt của chốt kích hoạt địa chỉ Một xung tích cực được tạo ra
mỗi khi bộ xử lý bắt đầu bất kỳ hoạt động nào Tín hiệu này cho biết sự sẵn có củamột địa chỉ hợp lệ trên các đường địa chỉ / dữ liệu ( Chân 25)
DEN
Nó là viết tắt của Data Enable Nó được sử dụng để kích hoạt Bộ thu phát
8286 Bộ thu phát là một thiết bị dùng để tách dữ liệu khỏi bus địa chỉ / dữ liệu.(Chân
26)
DT/R
Nó là viết tắt của tín hiệu Truyền / Nhận dữ liệu Nó quyết định hướng củaluồng dữ liệu qua bộ thu phát Khi nó ở mức cao, dữ liệu được truyền ra ngoài vàngược lại (Chân 27)
M/IO
Tín hiệu này được sử dụng để phân biệt giữa bộ nhớ và các hoạt động I / O.Khi nó ở mức cao, nó cho biết hoạt động I / O và khi nó ở mức thấp cho biết hoạtđộng của bộ nhớ Nó có sẵn tại pin 28
WR
Trang 8Nó là viết tắt của tín hiệu ghi Nó được sử dụng để ghi dữ liệu vào bộ nhớhoặc thiết bị đầu ra tùy thuộc vào trạng thái của tín hiệu M / IO (Chân 29)
0 1 Byte opcode đầu tiên từ hàng đợi
S 0 ,S 1 ,S 2
Trang 102.2.Vi mạch 8255A
• Vi mạch 8255A là vi mạch cỡ lớn LSI, là mạch phối ghép vào ra songsong lập trình được
• Do khả năng mềm dẻo trong ứng dụng thực tế nó là mạch phối ghép đc
sử dụng phổ biến cho các hệ vi xử lý 8,16,32 bit Gồm 40 chân:
• 24 đường dẫn lối vào ra xếp thành 3 cổng song song (port A,port B, port C) Một nửa cổng (PC4…PC&) thuộc nhóm A, còn lại nửa thuộc nhóm B
• Chân reset phải đuộc nối với tín hiệu reset chung toàn hệ thống
• Tín hiệu CS được nối với mạch tạo xung chọn thiết bị để đặt mạch
8255 vào một cơ sở địa chỉ nào đó Các tín hiệu địa chỉ A0, A1 chọn 4 thanh ghi bên trong 8255, một thanh đi điều khiển cho hoạt động 8255 và 3 thanh ghi khác ứng các cổng PA,PB,PC để đọc dữ liệu
Trang 11Hình 4 Cấu trúc 8255A
Trang 12Hình 5 Sơ đồ khối 8255A
Cấu tạo và nguyên lý hoạt động :
24 chân cho 3 cổng vào / ra
PAO - PAT : 8 chân cho Công A
Dùng để chốt địa chỉ và trạng thái
Chân OC (Output Control) điều khiển cho phép/ cấm dữ liệu ra
Trang 14-Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển
điều khiển
-Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc logic "1":
+ Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi”
để ghi hoặc nối với logic “1” đọc
-Chân số 6 - E : chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân này như sau:
phát hiện một xung (high-to-low transition) của tín hiệu chân E
(low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuốngmức thấp
Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để trao đổithông tin với MPU Có 2 chế độ sử dụng 8 đường bus này là: Chế độ 8 bit (dữ liệuđược truyền trên cả 8 đường, với bit MSB là bit DB7) và Chế độ 4 bit (dữ liệu đượctruyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7)
Trang 152.5.Sơ đồ khối phối lắp mạch
M ạch điều khiển
Trong khuôn khổ môn học, 8086 xuyên suốt quá trình, đồng thời 8086 cũng
là thiết bị cơ bản nhất cho các chip cao cấp hơn như i5 i7… Nhóm chúng em có thểhiểu cụ thể hơn nữa về 8086 bằng việc bắt tay vào làm một mạch thực tế Còn vơi ngôn ngữ ASM là ngôn ngữ lập trình bậc thấp, không hỗ trợ những hàm if hay for như trong C/C++
Trang 16CHƯƠNG II THIẾT KẾ MẠCH
I.Sơ đồ đấu nối
II.Kết quả mô phỏng
Trang 17Nhận xét:
+ Thiết kế thành công được mạch
+ Code và các vi xử lý hoạt động ổn định (Code được mô tả chi tiết ở mục III.) + Thực hiện được các phép tính cộng trừ nhân chia chính xác
PORTC_VAL DB 0
MSSV1 DB "20168142$"
MSSV2 DB "20168635$"
MSSV3 DB "20168960$"
;DIA CHI CAC CONG
CWR equ 10001000B ; C UPPER INPUT CON LAI OUTPUT
Trang 18PA EQU 00H ;PORTA KET NOI VOI D0-D7 CUA LED
PB EQU 02H ;PORTB0 LA RW (READ/WRITE), PORTB1 LA RS(RESET SELECT), PORTB2 LA EN(ENABLE)
PC EQU 04H ;PORT KET NOI KEYPAD
PCWR EQU 06H ;PORT DE DIEU KHIEN IO
; BIEN DEM
NHAP DW 0 ; LUU SO NHAP VAO TU BAN PHIM
SO_10 DW 10 ; DE NHA, CHIA 10
PHEP_TOAN DW 0 ; PHAN BIET +-x/
KET_QUA DW 0 ; LUU VA HIEN THI KET QUA
SO_PHEP_TINH DW 0 ; DE PHAN BIET LAN BAM DAU TIEN
VA CAC LAN SAU
HIEN_THI DW 0 ; DUNG DE HIEN THI TUNG CHU SO KHI CO KET QUA
XOA_MH DW 0 ; XOA MAN HINH SAU KHI RA KET QUA
BIEN_CX DW 0 ; TRANH TH CX BI THAY DOI VA KO CAN
DUNG PUSH POP
CAC_CHU_SO DW 1 ; XOA MAY DAU 0 O KET QUA
DAU_TRU DW 0 ; CHECK DAU
ENDS
STACK SEGMENT
Trang 19;HANG 1
;COT 1
LEA SI,MSSV1 ; CHO DIA CHI CUA NAME1 VAO SI, DE HIEN TRONG HAM IN CHUOI
Trang 21; PHAN TREN NAY TUONG TU PHAN SETUP TRONG
ADRUINO Y, CHAY 1 LAN THOI
LAP: ; CHUONG TRINH SE LAP TU DAY
; CHO HANG 1 XUONG LOW MOV AX, 11111110B
Trang 25MOV NHAP, AX ; CHO LAI VAO SO_NHAP
ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 26ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 27CMP NHAP, 0 ; TRANH TH AN DAU TRUOC CA KHI NHAP SO
Trang 28ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 29ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 30CALL LCD_WRITE_CHAR
MOV AX, 6
ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 31MOV AX, NHAP ; CHIA 10 DI VI SO BI NHAP GAP 10 LAN
ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
Trang 32MOV NHAP, AX ; CHO LAI VAO SO_NHAP
ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 33ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
Trang 34CMP NHAP, 0 ; TRANH TH AN DAU TRUOC CA KHI NHAP SO
MOV PHEP_TOAN, 2 ; DANH DAU PHEP TOAN LA PHEP TRU
CMP SO_PHEP_TINH, 0 ; KIEM TRA XEM CO PHAI LAN DAU BAM KO
JE TINH_LAN_DAU
JMP DOI ; DO LUC TRUOC DA CO PHEP TINH ROI NEN PHAI DOI DAU = HOAC LA GHI TIEP SO
Trang 36MOV AX, NHAP
MUL SO_10 ; NHAN 10
Trang 41JE KHONG_DOI_DAU ; GHI DAU NEU NHU DOI DAU
MOV AH, '-'
CALL LCD_WRITE_CHAR
KHONG_DOI_DAU:
MOV CX, CAC_CHU_SO ; LUU LAI SO CHUSO
MOV AX, KET_QUA
Trang 43HIEN_LUON:
Trang 45PROC CHECK_DAU ; KIEM TRA DAU TRUOC KHI TINH TRUPUSH AX ; LUU LAI GIA TRI THANH GHI TRANH MATGIA TRI
Trang 46MOV AH,30H ; 30H LA MA SETUP CUA LED
CALL LCD_CMD ; MAY CAI KHAC CUNG LA MA SETUP
CUA CAI LED NAY, THEO NHA SAN XUAT
MOV CX,50
CALL DELAY
MOV AH,30H
Trang 48;DAU VAO: AH = MA LENH
; RS = 0 = CHO LENH CHI DAN VAO
PUSH DX ; LUU LAI GIA TRI CAC THANH GHI DE KHI
CALL LENH KO THAY DOI GIA TRI CUA CHUNG
Trang 50CHO DU LIEU VAO>
; BAT RS LEN 1( CHE DOCALL OUT_B
MOV AL,AH
CALL OUT_A
DUNG LENH OUT_A
; DOI QUA THANH GHI AL DE
Trang 51AND AL,0FBH ; DOI GIA TRI CHAN EN VE 0CALL OUT_B
= 1 THI DOC NGUOC
; CO DF = 0 THI DOC THUAN,
LODSB
CAC KY TU VAO THANH GHI AL
; load String byte: NAP DAN GIA TRI
Trang 52;LCD DUNG COT 0 LAM COT CO BAN
DEC DH ; VI COT CO BAN LA 0 NEN - 1 DI
CHO DUNG VI TRI
;CHON TH HANG 1 HAY 2
Trang 53@ROW1: ; HANG 1
MOV AH,80H ; 80H = 10000000BJMP @LCD_SET_CUR_ENDCASE
MOV AH,0C0H ; C0H = 1100000B
JMP @LCD_SET_CUR_ENDCASE
@LCD_SET_CUR_ENDCASE: ; DH = COTADD AH,DH ; GIASU T GOI COT 1 THI GIA TRI
ENDP LCD_SET_CUR
PROC LCD_SHOW_CUR ; HIEN CON TRO
Trang 54;GUI DU LIEU TOI CAC CONG PA, PB, PC VA LUU GIA TRI
CUA CHUNG VAO BIEN
Trang 55; CHO GIA TRI AL VAO O NHO CO DIA
MOV PORTB_VAL,AL ; LUU LAI GIA TRI Al VAO GIA TRI CUA PB
Trang 57KẾT LUẬN
Đề tài thiết kế, xây dựng 1 máy tính bỏ túi sử dụng ma trận phím để nhập dữ liệu vàLCD để hiển thị kết quả , là một ứng dụng rất thực tế và hữu ích Qua quá trình dàinghiên cứu và tiếp thu kiến thức từ thầy Nguyễn Đình Thuận, chúng em đã hoàn thành được đề tài trên
Trong quá trình làm việc và học tập dưới sự hướng dẫn của thầy, chúng em đã họcthêm nhiều kiến thức quan trọng, giúp bọn em nắm rõ hơn về trình độ kiến thức chuyên môn cũng như đánh giá tốt hơn về trình độ bản thân Bài báo cáo của bọn
em vẫn còn nhiều thiếu sót Qua đó, bọn em rất mong được sự góp ý và chỉ bảo thêm từ thầy để có thể hoàn thiện hơn
Chúng em xin chân thành cảm ơn thầy