Thực hành: Mạch nguyên lý có sử dụng công tắc tắt/ mở led đơn Code cho mạch nguyên lý trên:... Viết đoạn code sang dần với thời gian MOV R4,#0AAA: MOV A,R4MOV DPTR,#BANGMOVC A,@A+DPTRMOV
Trang 1BÀI 1: IN/OUT
1. Giới thiệu chung.
IC 89C51 là họ vi điều điều khiển do hãng Intel của Mỹ sản xuất có đặc điểm như sau:
Bộ nhớ chương trình bên trong: 4KB (ROM)
Bộ nhớ dữ liệu bên trong: 128 byte
Bộ nhớ chương trình bên ngoài: 64KB
Bộ nhớ dữ liệu bên ngoài: 64KB
4 port xuất nhập dữ liệu: 8 bit
2 bộ định thời: 16 bit
Mạch giao tiếp nối tiếp
Bộ xử lý bit
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
Nhân chia trong 4s
2. Thực hành:
Mạch nguyên lý có sử dụng công tắc tắt/ mở led đơn
Code cho mạch nguyên lý trên:
Trang 2SJMP PACK
END
Mạch nguyên lý hiển thị trên led đơn
Viết đoạn code sang dần với thời gian
MOV R4,#0AAA:
MOV A,R4MOV DPTR,#BANGMOVC A,@A+DPTRMOV P2,A
ACALL DELAYINC R4
CJNE R4,#9,AAASJMP MAINBANG:
Trang 3MOV R2,#100LAP2:
NOPNOPNOPNOPNOPNOPNOPDJNZ R2,LAP2DJNZ R1,LAP1RET
END
Viết đoạn code sang dần, rồi tắt dần với
thời gian delay 10ms
Viết đoạn code làm cho led sang dần
từ trong ra ngoài, rồi tắt dần từ ngoài vào trong với thời gian delay 10ms.ORG 00H
MAIN:
MOV R4,#0AAA:
MOV A,R4MOV DPTR,#BANGMOVC A,@A+DPTRMOV P2,A
ACALL DELAYINC R4
CJNE R4,#17,AAASJMP MAIN
Trang 4MOV R1,#10LAP1:
MOV R2,#100LAP2:
NOPNOPNOPNOPNOPNOPNOPDJNZ R2,LAP2DJNZ R1,LAP1RET
END
Bài 2: LED 7 ĐOẠN
1. Giới thiệu chung.
Cathode chung: thanh đó được sáng nếu như mức vào của thanh là Vcc
Trang 5Anode chung: thanh đó được sang nếu như mức vào của thanh là GND.
IC giải mã led 7 đoạn anode chung là IC 7447
2. Thực hành.
Mạch nguyên lý hiển thị trên led 7 đoạn
Quét led 7 đoạn
Trang 6MOV A,BMOVC A,@A+DPTRMOV P0,A
ACALL DELAYINC R4
CJNE R4,#100,AAASJMP MAIN
MOV R1,#10LAP1:
MOV R2,#100LAP2:
MOV R3,#100LAP3:
NOPNOPNOPNOPNOPNOPNOPNOP
Trang 7MOV TMOD,#01100000BMOV TL1,#0
MOV TH1,#0SETB P3.5LOOP1:
SETB TR1MOV A,TL1CJNE A,#100,LOOPMOV TL1,#0
LOOP:
MOV DPTR,#BANGMOV B,#10
DIV ABMOVC A,@A+DPTRMOV P2,A
MOV A,BMOVC A,@A+DPTRMOV P1,A
JNB TF1,LOOP1CLR TF1
CLR TR1SJMP LOOP1BANG:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
RETEND
Trang 9MOV A,#0FFHMOV DPTR,#BANGMOV R1,#0
MOV R2,#00000001BMOV P2,#00000000BLOOP:
MOV P2,R2MOV A,R1MOVC A,@A+DPTRCALL DICH
MOV R3,#200DJNZ R3,$
INC R1MOV A,R2CJNE R1,#6,LOOP
Trang 10MOV R7,#8LAP:
RRC AMOV SERIAL,CCLR CLK
NOPNOPNOPSETB CLKCLR LATCHNOP
NOPNOPSETB LATCHDJNZ R7,LAPRET
BANG:
DB 83H,0F5H,0F6H,0F5H,083H,0FFHEND
Code chạy chữ A dùng IC dịch
ORG 00HSJMP MAIN CLK EQU P3.1LATCH EQU P3.2
SERIAL EQU P3.0MAIN:
MOV A,#0FFHMOV DPTR,#BANG
MOV R2,#200MOV R4,#00000001B LOOP:MOV R1,#6
MOV P2,R4CALL HIENTHI
MOV A,R4MOV R6,A RL AMOV R4,A
CJNE A,#10000000B,BBB LJMP MAIN
BBB:
Trang 11MOV R1,#6MOV P2,R6CALL HIENTHI
MOV A,R4MOV R5,A LAPLAI:
MOV A,R5
RR AMOV R5,A
CJNE A,#10000000B,AAA DJNZR2,BBB
LJMP LOOP AAA:
MOV P2,R5DEC R1CALL HIENTHILJMP LAPLAIDICH:
MOV R7,#8LAP:
RRC AMOV SERIAL,C CLR CLK
NOP NOP NOPSETB CLK CLR LATCH NOPNOP
NOPSETB LATCH DJNZ R7,LAPRET
HIENTHI:
MOV A,R1MOVC A,@A+DPTR CALL DICH
MOV R3,#200DJNZ R3,$ RETBANG:
DB
Trang 12Chức năng các chân của LCD
Chân Vss: chân nối đất
Chân Vee: điều chỉnh độ tương phản
Chân RS: chân chọn thanh ghi RS = 1 chọn thanh ghi dữ liệu
Chân RW: chân đọc/ ghi dữ liệu
LJMP MAIN
Trang 13CALL WRITE_COM MOV A,#06H
CALL WRITE_COM MOV A,#01H
CALL WRITE_COMRET
WAIT_LCD:
DELAY: MOV R7, #100D DEL1:MOV R6, #250D
DJNZ R6, $DJNZ R7, DEL1RET
WRITE_TEXT:
LCALL WAIT_LCD MOV P2,A
SETB RS SETB ENCLR ENRET
WRITE_COM:
LCALL WAIT_LCD MOV P2,A
CLR RS SETB ENCLR ENRET
BANG1:
DB 'TDT *'RET BANG2:
DB 'I LOVE TDT*' RET
MAIN:
CALL LCD_INIT MOV A,#87HCALL WRITE_COM MOV DPTR,#BANG1CLR A
LOOP:
Trang 14CALL WRITE_TEXT CLR A
INC DPTRSJMP LOOP LAN2:
MOV A,#0C3H CALL WRITE_COMMOV DPTR,#BANG2CLR A
LOOP2:
MOVC A,@A+DPTR CJNE A,#'*',NEXT2SJMP KETTHUC NEXT2:
CALL WRITE_TEXT CLR A
INC DPTR SJMP LOOP2KETTHUC:
SJMP $END
BÀI 5:GIỚI THIỆU VỀ KÍT THÍ NGHIỆM
1. Giới thiệu chung
Trang 15Thành phần của kít thí nghiệm.
• Demo versions of Micro C Compiler/Linker/Assembler
• Full version of SDCC C Compiler (open-source)
• Micro-IDE Integrated Development Environment/Simulator/Offline
• Serial downloader (WinLoad)
Các bước thực hiện viết và chạy chương trình trên kit
1. Sửa chữa một chương trình có sẵn hay một chương trình mới bằng trìnhbiên tập Micro-IDE Program Editor
2. Biên dịch chương trình sử dụng ASM51 Assembler for 8051-8052 Toolkit(công cụ biên dịch Assembler)
3. Nạp chương trình vào vi điều khiển trên kit thí nghiệm sử dụng công
cụ MINI- MAX/51-C Loader
4. Chạy và gỡ rối chương trình trên kit thí nghiệm sử dụng công cụ MAX/51-C Debugger
Trang 16MOV R4,#0AAA:
MOV A,R4MOV DPTR,#BANGMOVC A,@A+DPTRMOV P2,A
ACALL DELAYINC R4
CJNE R4,#9,AAASJMP MAINBANG:
MOV R1,#100LAP1:
MOV R2,#100LAP2:
NOPNOPNOPNOPNOP
Trang 17Viết đoạn code sang dần, rồi tắt dần với
thời gian delay 10ms
Viết đoạn code làm cho led sang dần
từ trong ra ngoài, rồi tắt dần từ ngoài vào trong với thời gian delay 10ms.ORG 00H
MAIN:
MOV R4,#0AAA:
MOV A,R4MOV DPTR,#BANGMOVC A,@A+DPTRMOV P2,A
ACALL DELAYINC R4
CJNE R4,#17,AAASJMP MAIN
Trang 18MOV R2,#100LAP2:
NOPNOPNOPNOPNOPNOPNOPDJNZ R2,LAP2DJNZ R1,LAP1RET
Chân Vss: chân nối đất cho LCD
Chân Vdd: chân cấp nguồn
Chân Vee: điều chỉnh độ tương phản
Chân RS: chân chọn thanh ghi RS=1: ghi dữ liệu, RS=0: chế độ lệnhChân R/W: điều khiển đọc/ghi RW=1: ghi dữ liệu, RW=0: đọc dữ liệuChân E: trạng thái dữ liệu/ điều khiển
2. Thực hành
Hiển thị chuỗi chữ lên LCD
ORG 00H
EN EQU P0.2
Trang 19ORL A,#00000100B ;EN=1,RW=0,RS=0MOV P0,A
MOV R1,#1ACALL DELAY1MS CLR EN
MOV R1,#1ACALL DELAY1MSMOVA,R3
SWAP AANLA,#0F0H CLR C
ORL A,#00000100B ;EN=1,RW=0,RS=0MOVP0,A
MOV R1,#1ACALL DELAY1MSCLR EN
MOV R1,#1 ACALL DELAY1MS
RETWRITE_TEXT:
MOV R3,AANL A,#0F0H CLR C
ORL A,#00000101B ;EN=1,RW=0,RS=1MOV P0,A
MOV R1,#1ACALL DELAY1MSCLR EN
MOV R1,#11ACALL DELAY1MSMOV A,R3
SWAP A ANL A,#0F0H CLR C
ORL A,#00000101B ;EN=1,RW=0,RS=1MOV P0,A
Trang 20MOV R1,#1ACALL DELAY1MS CLR EN
MOV R1,#1ACALL DELAY1MS RETDELAY1MS:
MOV TMOD,#01H LOOP:
MOV TH0,#0FCHMOV TL0,#18H SETB TCON.4JNB TCON.5,$
CLR TCON.4CLR TCON.5DJNZ R1,LOOP RET
DELAY100U:
MOV R2,#10 LAP:
NOP NOP NOP NOP NOP NOP NOP NOPDJNZ R2,LAPRET
INIT_LCD:
MOV R1,#50ACALL DELAY1MSMOV A,#30H CLR C
ORL A,#00000100B ;EN=1,RW=0,RS=0MOV P0,A
MOV R1,#1ACALL DELAY1MS CLR EN
MOV R1,#5ACALL DELAY1MSMOV A,#30H CLR C
Trang 21ORL A,#00000100B ;EN=1,RW=0,RS=0MOV P0,A
MOV R1,#1ACALL DELAY1MS CLR EN
ACALL DELAY100U MOV A,#30H
CLR CORL A,#00000100B ;EN=1,RW=0,RS=0MOV P0,A
MOV R1,#1ACALL DELAY1MS CLR EN
MOV A,#32HACALL WRITE_COMMOV A,#28H
ACALL WRITE_COMMOV A,#08H
ACALL WRITE_COM MOV A,#06H
ACALL WRITE_COMMOV A,#01H
ACALL WRITE_COMMOV A,#0CH
ACALL WRITE_COMRET
ACALL INIT_LCDMOV DPTR,#BANG1AGAIN:
CLR AMOVC A,@A+DPTR CJNE A,#'*',AAASJMP LAN2 AAA:
CALL WRITE_TEXT INC DPL
Trang 22SJMP AGAIN LAN2:
MOV A,#0C0H CALL WRITE_COM MOV DPTR,#BANG2
AGAIN2:
CLR AMOVC A,@A+DPTR CJNE A,#'*',BBBSJMP $
BBB:
CALL WRITE_TEXT INC DPL
SJMP AGAIN2 END
BÀI 8: GIAO TIẾP VỚI MẠCH CÒI BUZZER
1. Giới thiệu chung.
Cái còi hay một chiếc loa đơn giản sẽ tạo ra tiếng nhạc khi một chuỗi sóng vuông tác động vào ngõ dương của nó ( trong ngõ vào âm được nối đất) Tần
số của song vuông sẽ tạo ra những tiếng nhạc khác nhau
Cái còi trên kit được nối với chân P1.2 của vi điều khiển Chân này cần đượclập trình như là một ngõ ra và các song vuông với tần số và chu kỳ thay đổi cần được tạo ra
2 Thực hành
Đoạn code 8 nốt nhạc
ORG 00HMAIN:
MOV R0,#05FH
DJNZ R0,N1MOV R0,#05FHN2: LCALL RE
DJNZ R0,N2MOV R0,#05FHN3: LCALL MI
DJNZ R0,N3
FA:
CPL P1.2MOV R1,#5LCALL DELAYRET
SO:
CPL P1.2MOV R1,#4LCALL DELAYRET
LA:
Trang 23MOV R0,#05FHN4: LCALL FA
DJNZ R0,N4MOV R0,#05FHN5: LCALL SO
DJNZ R0,N5MOV R0,#05FHN6: LCALL LA
DJNZ R0,N6MOV R0,#05FHN7: LCALL SI
DJNZ R0,N7MOV R0,#05FHN8: LCALL DOO
DJNZ R0,N8SJMP MAIN
DO:
CPL P1.2MOV R1,#8LCALL DELAYRET
RE:
CPL P1.2MOV R1,#7LCALL DELAY RET
MI:
CPL P1.2MOV R1,#6LCALL DELAYRET
CPL P1.2MOV R1,#3LCALL DELAYRET
SI:
CPL P1.2MOV R1,#2LCALL DELAYRET
DOO:
CPL P1.2MOV R1,#1LCALL DELAYRET
DELAY:
LOOP1:
MOV R2,#100LOOP2:
NOPNOPNOPNOPNOPNOPNOPNOPDJNZ R2,LOOP2DJNZ R1,LOOP1RET
END