Vi xử lý được sử dụng trong nhiều lĩnh vực khác nhau, nhất là trong các máy IBM PC/XT... 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
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
NHÓM : 21 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ận phí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ực khác nhau, nhất là trong các máy IBM PC/XT
Trang 4Đơ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ộ
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
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ỳ xung nhị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ín hiệ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ẵn
sà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 hay khô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ủa mộ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ủa luồ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 10
2.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 song song 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 12
Hì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
PB0 - PB7 : 8 chân cho Cổng B
PC0 PC7 : B chân cho Cổng C
Nhóm A Gồm Cổng A và 4 bit cao của Cổng C
Nhóm B : Gồm cổng B và 4 bit thấp của Cổng C
B255 Có thể hoạt động ở chế độ ( 0 , 12 )
2.3 Mạch chốt 74LS373
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
- Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển
- Chân số 3 - VE : điều chỉnh độ tương phản của LCD
- 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”
- write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
- Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0”
để 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: + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi bên trong khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để trao đổi thô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 được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7)
- Chân số 15 - A : nguồn dương cho đèn nền
- Chân số 16 - K : nguồn âm cho đèn nền
Trang 152.5.Sơ đồ khối phối lắp mạch
Lý do chọn 8086 và ASM
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++
M ạ ch ch ố t
8255 A
M ạ ch hi ể n th ị
M ạ ch thao tác
Trang 16CHƯƠNG II THIẾT KẾ MẠCH
I.Sơ đồ đấu nối
II.Kết quả mô phỏng
Trang 17
Nhậ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
;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 19LEA SI,MSSV1 ; CHO DIA CHI CUA NAME1 VAO
SI, DE HIEN TRONG HAM IN CHUOI
Trang 20CALL LCD_PRINTSTR
MOV DL,1 ;HANG 1 MOV DH,8 ;COT 1 CALL LCD_SET_CUR
LEA SI,MSSV2 ; CHO DIA CHI CUA MSSV1 VAO
SI, DE HIEN TRONG HAM IN CHUOI
CALL LCD_PRINTSTR
MOV DL,2 ;HANG 2 MOV DH,4 ;COT 1 CALL LCD_SET_CUR
LEA SI,MSSV3 CALL LCD_PRINTSTR
MOV CX, 40000 CALL DELAY
CALL LCD_CLEAR
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
Trang 24ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
Trang 25MOV NHAP, AX ; CHO LAI VAO SO_NHAP
ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_NHAP
MOV XOA_MH, 0
POP AX
Trang 26ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_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
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_NHAP
Trang 29ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_NHAP
Trang 30CALL LCD_WRITE_CHAR
MOV AX, 6
ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_NHAP
Trang 31MOV AX, NHAP ; CHIA 10 DI VI SO BI NHAP GAP 10 LAN DIV SO_10
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
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_NHAP
MOV XOA_MH, 0
POP AX
Trang 33ADD NHAP, AX ; CONG VAO SO_NHAP
MOV AX, NHAP
MUL SO_10 ; NHAN 10
MOV NHAP, AX ; CHO LAI VAO SO_NHAP
Trang 34CMP NHAP, 0 ; TRANH TH AN DAU TRUOC CA KHI NHAP SO
Trang 35MOV CAC_CHU_SO, 0 MOV DAU_TRU, 0 CALL LCD_CLEAR
Trang 36MOV AX, NHAP
MUL SO_10 ; NHAN 10
Trang 41JE KHONG_DOI_DAU ; GHI DAU NEU NHU DOI DAU
MOV CX, CAC_CHU_SO ; LUU LAI SO CHUSO
MOV AX, KET_QUA
Trang 43
HIEN_LUON:
MOV BX, NHAP ; KHI AN DAU = MA KO AN +-x/
MOV KET_QUA, BX ; CHO SO NHAP = KET QUA MOV PHEP_TOAN, 0
Trang 45PROC CHECK_DAU ; KIEM TRA DAU TRUOC KHI TINH TRU PUSH AX ; LUU LAI GIA TRI THANH GHI TRANH MAT GIA TRI
Trang 46ENDP DELAY
PROC LCD_INIT ; KHOI TAO LCD
MOV AL,0 CALL OUT_B ; SET CAC GIA TRI CUA RS=En=RW=0
MOV CX,1000 CALL DELAY ; CAI DAT LAI TRINH TU
MOV AH,30H ; 30H = 00110000B CALL LCD_CMD
MOV CX,250 CALL DELAY
MOV 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 47CALL LCD_CMD MOV CX,500 CALL DELAY MOV AH,38H ; 38H = 00111000B CALL LCD_CMD
MOV AH,0CH ; 0CH = 00001100B CALL LCD_CMD
MOV AH,01H ;00000001B CALL LCD_CMD
MOV AH,06H ;00000110B CALL LCD_CMD
RET ENDP LCD_INIT
;CODE CHUNG DUNG MOI KHI THAY DOI SETUP CUA LED PROC LCD_CMD
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
PUSH AX
MOV AL,PORTB_VAL ; LAM CHAN RS CUA LED
Trang 49CALL DELAY
MOV AL,PORTB_VAL AND AL,0FBH ; LAM CHO EN CUA LED =
0
CALL OUT_B
MOV CX,50 CALL DELAY
POP AX ; LAY LAI GIA TRI CAC THANH GHI POP DX
RET ENDP LCD_CMD
PROC LCD_CLEAR
MOV AH,1 CALL LCD_CMD ; TAC DUNG LA XOA MAN HINH
RET ENDP LCD_CLEAR
Trang 50PROC LCD_WRITE_CHAR ; VIET 1 KY TU VAO VI TRI CON TRO
;DAU VAO: AH
PUSH AX
MOV AL,PORTB_VAL
OR AL,100B ; BAT CHAN EN LEN 1 CALL OUT_B
MOV CX,50 CALL DELAY
MOV AL,PORTB_VAL
Trang 51AND AL,0FBH ; DOI GIA TRI CHAN EN VE 0 CALL OUT_B
POP AX RET ENDP LCD_WRITE_CHAR
PROC LCD_PRINTSTR ; IN CHUOI KY TU VAO VI TRI CON TRO CHUOT
PUSH SI ; MOI LAN NAP LAI THAY DOI GIA TRI SI NEN PHAI PUSH SI DE LUU LAI
PUSH AX
;DOC VA VIET KY TU
@LCD_PRINTSTR_LT: ; CO DF = 0 THI DOC THUAN,
= 1 THI DOC NGUOC
LODSB ; load String byte: NAP DAN GIA TRI CAC KY TU VAO THANH GHI AL
CMP AL,'$'
JE @LCD_PRINTSTR_EXIT MOV AH,AL ; CHO VAO AH DE DUNG HAM VIET KY TU
CALL LCD_WRITE_CHAR JMP @LCD_PRINTSTR_LT
Trang 52@LCD_PRINTSTR_EXIT:
POP AX POP SI RET ENDP LCD_PRINTSTR
PROC LCD_SET_CUR ; DIEU KHIEN VI TRI CON TRO
;DL=HANG, DH=COT
;DL = 1 HOAC 2
;DH = 1-8, 1st column is 1
PUSH AX
;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 = 10000000B JMP @LCD_SET_CUR_ENDCASE
@ROW2: ; HANG 2
MOV AH,0C0H ; C0H = 1100000B JMP @LCD_SET_CUR_ENDCASE
@LCD_SET_CUR_ENDCASE: ; DH = COT ADD AH,DH ; GIASU T GOI COT 1 THI GIA TRI
SE LA:
CALL LCD_CMD ; AH = 10000001B ; HANG 1 COT 1
@LCD_SET_CUR_END:
POP AX RET ENDP LCD_SET_CUR
PROC LCD_SHOW_CUR ; HIEN CON TRO
Trang 54
PUSH AX MOV AH,0FH ; 0FH = 00001111B CALL LCD_CMD
POP AX RET ENDP LCD_SHOW_CUR
PROC LCD_HIDE_CUR ; TAT HIEN CON TRO
PUSH AX MOV AH,0CH
CALL LCD_CMD ; 0CH = 00001100B POP AX
RET ENDP LCD_HIDE_CUR
;GUI DU LIEU TOI CAC CONG PA, PB, PC VA LUU GIA TRI CUA
CHUNG VAO BIEN
PROC OUT_A
;DAU VAO: AL
;DAU RA: PORTA_VAL
PUSH DX MOV DX,PA ; TUONG TU PB
Trang 55OUT DX,AL MOV PORTA_VAL,AL POP DX
RET ENDP OUT_A
PROC OUT_B
;DAU VAO: AL
;DAU RA: PORTB_VAL
PUSH DX MOV DX,PB OUT DX,AL ; CHO GIA TRI AL VAO O NHO CO DIA CHI CUA PB
MOV PORTB_VAL,AL ; LUU LAI GIA TRI Al VAO GIA TRI CUA PB
POP DX RET ENDP OUT_B
PROC OUT_C
;DAU VAO: AL
;DAU RA: PORTC_VAL
Trang 56PUSH DX MOV DX,PC OUT DX,AL MOV PORTC_VAL,AL POP DX
RET ; TUONG TU PB ENDP OUT_C
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ài nghiê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ọc thê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