Bài thí nghiệm 1 Bật tắt led đơn, hàng led 1.1. Mô tả mạch phần cứng Hình 1: Mạch nguyên lý nháy led Mạch phần cứng được mô tả như trong hình 1, cổng 0 nối với 8 led đơn (viết các giá trị 01 ra các chân tương ứng của cổng 0 để bậttắt led) 1.2. Chương trình mẫu 1.2.1. Chương tình nháy 1 led đơn ;===================== ; Nhay mot led don ; start ;===================== ( bài thí nghiệm 1, 2,3, 4, 6) Tài liệu TN Vi xử lýBộ môn KTĐTHCN Year 8 led bit p0.0 ;led tai chan P0.0 org 00h main: clr led ;bat led lcall delay_500ms ;delay 500ms setb led ;tat led lcall delay_500ms sjmp main delay_500ms: MOV 50H,200 loop: MOV 51H,250 DJNZ 51H, DJNZ 50H,loop RET end 1.2.2 Chương trình sáng lần lượt các led ;=========================== ; Sang lan luot cac led ; start ;============================ led_data equ p0 org 00h main: mov a,0x00 setb c loop: rlc a cpl a mov led_data,a cpl a lcall delay_500ms sjmp loop delay_500ms: MOV 50H,200 l1: MOV 51H,250 DJNZ 51H, DJNZ 50H,l1 RET end
Trang 1B ào bi
B Vào thanh công c Project, ch New Project, ch
ên file ( ví d ài 1 )
Vào Select device ch Atmel, ch 89C51, ch OK
89C52
Trang 2Sau khi so
Vào File ch save as ên file ( chú ý “.asm” ho c “ )
Trang 35 Kích chu ào d + Target1 s Source Group 1, Kích chu
ph ào Source Group1 , Kích chu ch Add files to group ‘Source Group1’, Ch
d “.asm”, Kích chu ên file , Kích chu Add, Kích chu
close, Kích chu ào d + Source ta
ào Bai1.asm
Trang 4Vào Project ch Options for Target ‘Target1’; ch Ok
Project ch rget ‘Target1’ ta th
:
Trang 5Ch Create Hex File ên file Name of Executable ; Ch
OK
Vào Project ch Rebuild all target files, n
Sau khi so à d ào Debug ch Start/Stop Debug Session
Trang 6Nh òng l
trong c Value
ram trong vào m Address gõ D:0x00
ch
Trang 7BÀI THÍ NGHIỆM VI XỬ LÝ 2015
Mở file “fullkit8051” theo đường dẫn sau: C:\TNVXL\students\full kit 8051\mo phong, để mở
file mạch nguyên lý mô phỏng trên phần mềm proteus 8.1
Bài thí nghiệm 1 Bật tắt led đơn, hàng led 1.1 Mô tả mạch phần cứng
Hình 1: Mạch nguyên lý nháy led
Mạch phần cứng được mô tả như trong hình 1, cổng 0 nối với 8 led đơn (viết các giá trị 0/1 ra các chân tương ứng của cổng 0 để bật/tắt led)
Trang 8led bit p0.0 ;led tai chan P0.0
org 00h
main:
lcall delay_500ms ;delay 500ms
- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus
Trang 9Bài thí nghiệm 2:
Led 7 thanh 2.1 Mô tả phần cứng
Hình 2: Mạch nguyên lý nối led 7 thanh
Các chân A-DP của led 7 thanh tương ứng được nối với P1.0-P1.7, 2 chân chọn led thanh thanh 1-2 tương ứng nối với P2.2-P2.3
Trang 10mov data_7seg,a ;so 5
lcall delay ;delay 250us
clr led1 ;disable 7seg no1
Trang 11mov data_7seg,a ;chu so hang chuc
lcall delay_250us ;delay 250us
clr led1 ;disable 7seg no1
- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus
Trang 12Bài thí nghiệm 3 Hiển thị LCD 3.1 Mô tả phần cứng
Hình 3: Mạch nguyên lý nối LCD 16x2
Sử dụng LCD 16x2, cổng P2.4 nối với chân D4, cổng P2.5 nối với chân D5, cổng P2.6 nối với chân D6, cổng P2.7 nối với chân D7 Tín hiệu điều khiển từ cổng P2.0 nối chân RS, cổng P2.1 nối với chân E Sử dụng một biến trở nối với chân VEE của LCD để điều chỉnh tương phản màn hình
U equ 31 ; memory location to hold upper nibble
L equ 32 ; memory location to hold lower nibble
Port equ P2 ; data port to connect LCD
RS equ P2.0 ; RS pin connection
RW equ P2.2 ; RW pin connection
EN equ P2.1 ; EN pin connection
Trang 13MOV U,A ; save A at temp location U
ANL U,#0F0H ; mask it with 0Fh (28h & F0h = 20h)
SWAP A ; swap nibble (28h => 82H)
ANL A,#0F0H ; mask it with 0fh (82h & f0h = 80h)
MOV L,A ; save it at temp location L
SETB EN ; make EN high
ACALL DELAY ; call a short delay routine
CLR EN ; clear EN
ACALL DELAY ; short delay
RET ; return
;=================================
Trang 14;LCD command
;=================================
lcd_cmd:
CLR RS ; clear rs, going to send command
ACALL separator ; separate the command and save to U and L
SETB RS ; RS=1, going to send DATA
ACALL separator ; separate the data and save to U & L
CLR port.7 ; send 20h to LCD to set 4 bit mode
CLR RS ; after that we can use lcd_cmd
SETB EN ; make EN switching
Trang 15- Soạn thảo, dịch, chạy, gi lại kết quả
- Mô phỏng trên phần mềm proteus
Bài thí nghiệm 4:
Giải mã phím (mã trân phím 2x2) 4.1 Mô tả phần cứng
Trang 16U equ 31 ; memory location to hold upper nibble
L equ 32 ; memory location to hold lower nibble
Port equ P2 ; data port to connect LCD
RS equ P2.0 ; RS pin connection
RW equ P2.2 ; RW pin connection
EN equ P2.1 ; EN pin connection
Trang 18MOV U,A ; save A at temp location U
ANL U,#0F0H ; mask it with 0Fh (28h & F0h = 20h)
SWAP A ; swap nibble (28h => 82H)
ANL A,#0F0H ; mask it with 0fh (82h & f0h = 80h)
MOV L,A ; save it at temp location L
SETB EN ; make EN high
ACALL DELAY ; call a short delay routine
CLR RS ; clear rs, going to send command
ACALL separator ; separate the command and save to U and L
Trang 19; LCD data
;=================================
lcd_data:
SETB RS ; RS=1, going to send DATA
ACALL separator ; separate the data and save to U & L
CLR port.7 ; send 20h to lcd to set 4 bit mode
CLR RS ; after that we can use lcd_cmd
SETB EN ; make EN switching
Trang 20- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus
Bài thí nghiệm 5:
Giải mã bàn phím 4x4 5.1 Mô tả phần cứng
Hình 5: Mạch nguyên lý giải mã phím 4x4
Trang 21Bốn hàng được nối với P2.0-P2.3, bốn cột được nối với P2.4-P2.7 Bấm từng phím từ trái sang phải, từ trên xuống dưới sẽ hiện số tuần tự 0 đến 9 trên led 7 thanh Mô phỏng trên proteus bằng cách mở file “Keypad_Scan_Interrupt” theo đường dẫn sau: C:\TNVXL\students\Bai 5 - Quet ban phim dung ngat
SETB EA ; Enable Interrupt SETB EX0 ; Enable INT0
;=================================
;=================================
MOV TMOD, #20H MOV TH1, #0B0H
MOV P2, #0FH MOV P1, #0 MOV R1, #0 ; COUNT
Trang 22ANL A, #0F0H CJNE A, #0F0H, ROW0 MOV P2, #11111101B MOV A, P2
MOV R1, #4 ANL A, #0F0H CJNE A, #0F0H, ROW1 MOV P2, #11111011B MOV A, P2
MOV R1, #8 ANL A, #0F0H CJNE A, #0F0H, ROW2 MOV P2, #11110111B MOV A, P2
MOV R1, #12 ANL A, #0F0H CJNE A, #0F0H, ROW3 ROW0:
SJMP ROW0 ROW1:
Trang 23INC R1 SJMP ROW1 ROW2:
SJMP ROW2 ROW3:
SJMP ROW3 MATCH:
MOV A, #0 MOV A, R1 MOV P1, A EXIT:
MOV R1, #0 MOV P2, #0F0H RETI
- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus
Trang 24; * FUNCTION_PURPOSE: This file set up uart in mode 1 (8 bits uart) with
; * timer 1 in mode 2 (8 bits auto reload timer)
MOV SCON, #50h ; /* uart in mode 1 (8 bit), REN=1 */
ORL TMOD, #20h ; /* Timer 1 in mode 2 */
MOV TH1, #0FDh ; /* 9600 Bds at 11.059MHz */
MOV TL1, #0FDh ; /* 9600 Bds at 11.059MHz */
SETB ES ; /* Enable serial interrupt*/
SETB EA ; /* Enable global interrupt */
SETB TR1 ; /* Timer 1 run */
;/**
; * FUNCTION_PURPOSE: serial interrupt, echo received data
; * FUNCTION_INPUTS: P3.0(RXD) serial input
; * FUNCTION_OUTPUTS: P3.1(TXD) serial output
; */
serial_IT:
JNB RI,EMIT_IT ; test if it is a reception
CLR RI ; clear reception flag for next reception
MOV A,SBUF ; read data from uart
MOV SBUF,A ; write same data to uart
Trang 256.2 Yêu cầu
- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus
Bài thí nghiệm 7
Đo nhiệt độ bằng cảm biến LM35 7.1 Mô tả phần cứng
Hình 6: Mạch nguyên lý mạch đo nhiệt độ
Sử dụng CLOCK ngoài cấp cho ADC0808 Đọc nhiệt độ vào chân IN0 của ADC Chân dữ liệu của 8051 gửi lên led 7 thanh là: P0.0 – P0.6 nối lần lượt với các chân A – G của led 7 thanh Mô phỏng trên proteus bằng cách mở file “do nhiet do_89c51” theo đường dẫn sau: C:\TNVXL\students\Bai 7 Do nhiet do\mo phong
Trang 27- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus
Bài thí nghiệm 8 Giao tiếp I2C, thiết kế mạch đồng hồ
8.1 Mô tả phần cứng
Hình 7: Mạch nguyên lý mạch đồng hồ
Sử dụng IC thời gian thực DS1307 để hiện thị thời gian trên led 7 thanh Mạch sử dụng các nút bấm để cài đặt thời gian cho đúng Chân dữ liệu của 8051 gửi lên led 7 thanh là: P0.0 – P0.7 nối
Trang 28lần lượt với các chân A – G - DP của led 7 thanh Mô phỏng trên proteus bằng cách mở file
“Dong ho ds1307 Dn proteus” theo đường dẫn sau: C:\TNVXL\students\Bai 8 Mach dong ho\mo phong
XUNG_NHAY DATA 38H ; XUNG 100ms
BIEN_NHAY DATA 39H ; 0 = SANG TAT CA DEN , 1 = NHAY led TUONG UNG KHI set GIAY DATA 40H
Trang 31MOV A,ADD_LOW ; send address low
Trang 33MOV A,GIAY ;Lan luot chia cac Bien: Giay, Phut, Gio cho 10
MOV B,#10 ;de tach phan Don Vi va Hang Chuc ra, de cat rieng vao cac Bien tuong ung DIV AB ;PHAN NGUYEN trong A, PHAN DU trong B
MOV CHUC_GIAY,A ;Luu lai HANG CHUC Giay
MOV DONVI_GIAY,B ;luu lai DON VI Giay
Trang 35MOV A,CHUC_GIAY ;hien thi hang chuc cua Giay
Trang 38CJNE A,#-1,L_SW3 ;Bien Phut = -1? - Thoat khoi ngat Time0 neu khong =
MOV PHUT,#59 ;Neu = -1 th? set bien nay = 60
Trang 39- Soạn thảo, dịch, chạy, ghi lại kết quả
- Mô phỏng trên phần mềm proteus, cài đặt múi giờ khác bằng các nút bấm
Trang 40Bài thí nghiệm 9 Tạo xung vuông tần số 5 KHz 9.1 Mô tả phần cứng
Hình 8: Mạch nguyên mạch tạo xung vuông
Tạo xung vuông tần số 5 kHz trên chân P2.0, sử dụng Oscilloscope để đo tần số của xung được tạo ra Mô phỏng trên proteus bằng cách mở file “tao xung” theo đường dẫn sau: C:\TNVXL\students\Bai9 PWM\mo phong
Trang 41- Soạn thảo, dịch, chạy, ghi lại kết quả, thay đổi tần số khác
- Mô phỏng trên phần mềm proteus