Báo cáo Thí nghiệm Vi xử lý - Nguyễn Trọng Tuấn (Bản đẹp)

Bài 1: QUANG BÁO

 Các phím chức năng của chương trình:

 P1.0: Thay đổi chiều dịch của dữ liệu

 P1.1: Thay đổi tốc độ dịch

 P1.2: Start chương trình và restart chương trình sau khi stop

 P1.3: Stop chương trình

 P1.4: Reset chương trình

 

docx55 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: yen2110 | Lượt xem: 402 | Lượt tải: 0download
Tóm tắt nội dung Báo cáo Thí nghiệm Vi xử lý - Nguyễn Trọng Tuấn (Bản đẹp), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
CALL INIT_LCD
	MOV A, #0CH
	CALL INIT_LCD
	MOV A, #06H
	CALL INIT_LCD
	MOV A, #01H
	CALL INIT_LCD
	MOV A, #80H
	CALL INIT_LCD
RET
WAIT_LCD:
	MOV R7, #4
	BB:
	MOV R6, #250
	DJNZ R6, $
	DJNZ R7, BB
RET
INIT_LCD:
	MOV DPTR,#8000H
	LCALL WAIT_LCD
	CLR RS
	MOVX @DPTR,A
	SETB EN
	CLR EN
RET
WRITE_TEXT:
	MOV DPTR,#8000H
	LCALL WAIT_LCD
	SETB RS
	MOVX @DPTR,A
	SETB EN
	CLR EN
RET
TRA_BANG:
	MOV DPTR,#TABLE
	MOVC A,@A+DPTR
RET
TRA_BANG2:
	MOV DPTR,#TABLE2
	MOVC A,@A+DPTR
RET
DELAY_100US:	
	MOV R6,#200
	DJNZ R6,$
RET
SEND:	
	JNB TI,SEND
	MOV SBUF,A
	CLR TI
RET
TABLE: DB 'KLUONG: GIA: 000 SET'
TABLE2: DB 'KL: GIA:000TIEN: RUN'
END
Bài 3: MÁY GIẶT
Các phím chức năng của chương trình MÁY GIẶT :
	P1.0: Lựa chọn chế độ giặt
	P1.1: Máy bắt đầu vào chương trình giặt
	P1.2: Báo hiệu máy giặt đổ nước xong
	P1.3: Báo hiệu máy giặt xả nước xong
	P1.5: Reset , chương trình quay về ban đầu 
	ORG 0000H
 	LJMP MAIN
Địa chỉ bắt đầu chương trình , điạ chỉ vector ngắt Timer 0 , Timer 1
 	ORG 000BH
 	LJMP ISR_T0
 	ORG 001BH
 	LJMP ISR_T1
MAIN:
	MOV P1, #0FFH
	MOV R2, #2
	MOV R1, #0
Khởi tạo các giá trị trong thanh ghi R2 =2 nhằm để lặp vòng 2 lần giặt , R1=0 để bắt đầu chọn chế độ giặt
Khởi tạo Timer1, SCON để phát một chuỗi kí tự lên màn hình , và đặt tên cho bit P3.4 , P3.5 nhằm xuất lên LCD
	RS BIT P3.5
	EN BIT P3.4
	MOV TMOD, #20H
	MOV TL1, #-3
	MOV TH1, #-3
	MOV SCON, #52H
	SETB TR1
	MOV A, #0CH
	ACALL SEND
Xuất dòng chữ ‘ CHON CHE DO ‘ lên màn hình máy tính cũng như LCD
Quá trình có sự thay đổi dữ liệu trong thanh ghi DPTR về việc lấy dữ liệu từ ROM và việc lấy địa chỉ giải mã của LCD . Do đó , chương trình dùng 2 thanh ghi R0,R4 để làm biến trung gian lưu thanh ghi DPTR trước mỗi lần thay đổi 
	MOV DPTR, #8000H
	ACALL START1
	MOV DPTR, #TABLE
	MOV R0, DPH
	MOV R4, DPL	
QUAY:
	MOV DPH, R0
	MOV DPL, R4
	CLR A
	MOVC A,@A+DPTR
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL	
	CJNE A, #'0', NHAYL
	SJMP LOOP
NHAYL:
	ACALL SEND
	ACALL WRITE_TEXT
	SJMP QUAY
LOOP:
Việc lựa chọn chế độ giặt dựa vào việc nhấn nút P1.0 
Mỗi lần nhấn nút P1.0 , thanh ghi R1 sẽ được tăng lên 1 
Sẽ có 3 chế độ giặt ứng với các giá trị 1 2 3 của thanh ghi R1 . Nếu R1 tăng đến 4 thì R1=0 
	JB P1.0, TTUC
	JNB P1.0, $
	MOV A, #0CH
	ACALL SEND
	INC R1
	CJNE R1, #4, NHAYK
	MOV R1, #1
NHAYK:
	MOV DPTR, #8000H
	ACALL START1
	MOV DPTR, #TABLE1
	MOV R0, DPH
	MOV R4, DPL
LAPLAI:
	MOV DPH, R0
	MOV DPL, R4
	CLR A
Khi nhấn nút P1.0 , chương trình sẽ thực hiện chế độ cài đặt tốc độ quay 
Sau đó chương trình sẽ xuất dòng chữ ‘ CHE DO GIAT?’ lên màn hình máy tính cũng như LCD 
Mỗi khi nhấn P1.0 , chương trình sẽ hiển thị lại chế độ cài đặt mới 
	MOVC A,@A+DPTR
	CJNE A, #'0', CUOI
	SJMP TTTT
CUOI:
	ACALL SEND
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL
	ACALL WRITE_TEXT
	SJMP LAPLAI
TTTT:
	MOV A, R1
	ADD A, #30H
	ACALL SEND
	ACALL WRITE_TEXT
	MOV A, #10
	ACALL SEND
	MOV A, #13
	ACALL SEND
	MOV A, #0C0H
	ACALL INIT_LCD
	MOV DPTR, #TABLE2
	MOV R0, DPH
	MOV R4, DPL
LAPLAI5:
	MOV DPH, R0
	MOV DPL, R4
	CLR A
	MOVC A,@A+DPTR
	CJNE A, #'0', CUOI1
	SJMP TTUC
CUOI1:
	ACALL SEND
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL	
	ACALL WRITE_TEXT
	SJMP LAPLAI5
TTUC:
	JNB P1.1, START
	SJMP LOOP
START:
	JNB P1.1, $
	MOV A, #0CH
	ACALL SEND
	MOV DPTR, #8000H
	ACALL START1
 Khi nhấn nút P1.1 , máy giặt sẽ bắt đầu đổ nước , nhấn nút P1.2 để báo hiệu máy giặt đã đổ nước xong
Đồng thời chương trình cũng phát dòng chữ ‘ ĐANG ĐỔ NƯỚC ‘ lên màn hình máy tính cũng như LCD
	MOV DPTR, #TABLE3
	MOV R0, DPH
	MOV R4, DPL
LAPLAI3:
	MOV DPH, R0
	MOV DPL, R4
	CLR A
	MOVC A,@A+DPTR
	CJNE A, #'0', NHAYF
	JB P1.2, $
	JNB P1.2, $
	SJMP TTTT3
	NHAYF:
	ACALL SEND
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL
	ACALL WRITE_TEXT
	SJMP LAPLAI3
TTTT3:
	MOV A, #0CH
	ACALL SEND
	SETB P1.0
	MOV TMOD, #21H
	CLR TR0
	MOV R3, #20
 Khi nhấn nút P1.2, máy giặt đổ nước xong . đèn LED trên chấn P1.0 sẽ sáng trong một khoảng thời gian để báo hiệu
Sau đó chương trình sẽ vào chương trình giặt
	LAP:
	MOV TH0, #HIGH (-50000)
	MOV TL0, #LOW (-50000)
	SETB TR0
	JNB TF0, $
	CLR TF0
	CLR TR0
	CPL P1.0
	DJNZ R3, LAP
MOV DPTR, #8000H
	ACALL START1
	MOV DPTR, #TABLE4
	MOV R0, DPH
	MOV R4, DPL	
TT3:
	MOV DPH, R0
	MOV DPL, R4
 Xuất dòng chữ ‘ DANG GIAT ‘ lên màn hình máy tính và LCD như những hiển thị trước 
	CLR A
	MOVC A,@A+DPTR
	CJNE A,#'0',NHAYP
	SJMP TT5
NHAYP:
	ACALL SEND
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL
	ACALL WRITE_TEXT
Chương trình sẽ truy xuất địa chỉ ngoại vi của motor , sau đó quá trình điều khiển motor quay dựa vào việc tràn Timer 0 và Timer 1 
Ta sẽ cho motor quay với tốc độ cài đặt trước trong thanh ghi R1 nhờ việc điều chế xung PWM ở những duty cycles khác nhau
Qúa trình quay sẽ diến ra theo trình tự : quay thuận 3s , nghỉ 1s , ngược 3s, nghỉ 1s , lặp lại 5 lần
	SJMP TT3
TT5:
	CLR TR0
	CLR TR1
	MOV DPTR, #0E000H
	CLR A	
	MOV TMOD, #11H
	MOV IE, #82H
	SETB PT0
	MOV R5, #5
LAPF:
	SETB 67H
	MOV R6, #150
	SETB TF0
	CLR ACC.1
LL1:
	JNB 66H, NHAYD
	SETB ACC.0
	MOVX @DPTR, A
	JB 67H, LL1
	SJMP LL2A
NHAYD:
	CLR ACC.0
	MOVX @DPTR, A
	JB 67H, LL1
	CLR TR0
	CLR TR1
	LL2A:
	SETB 67H
	MOV R6,#50
	SETB TF0
LL2:
	CLR ACC.0
	CLR ACC.1
	MOVX @DPTR, A
	JB 67H, LL2
	CLR TR0
	CLR TR1
	SETB 67H
	MOV R6, #150
	SETB TF0
	CLR ACC.0
LL3:
	JNB 66H, NHAYR
	SETB ACC.1
	MOVX @DPTR, A
	JB 67H, LL3
	SJMP LL4A
NHAYR:
	CLR ACC.1
	MOVX @DPTR, A
	JB 67H, LL3
	CLR TR0
	CLR TR1
LL4A:
	SETB 67H
	MOV R6, #50
	SETB TF0
LL4:
	CLR ACC.0
	CLR ACC.1
	MOVX @DPTR, A
	JB 67H, LL4
	CLR TR0
	CLR TR1
	DJNZ R5, LAPF	
MOV IE,#0
	MOV TMOD,#20H
	MOV TL1,#-3
	MOV TH1,#-3
	MOV SCON,#52H
	SETB TR1
	MOV A,#0CH
	ACALL SEND
	MOV DPTR,#8000H
	ACALL START1
	MOV DPTR ,#TABLE5
	MOV R0,DPH
	MOV R4,DPL	
LLG:
	MOV DPH,R0
	MOV DPL,R4
	CLR A
	MOVC A,@A+DPTR
	CJNE A,#'0',LLK
	JB P1.3 , $
; nhan nut P1.3 de bao hieu xa nuoc xong
	SETB P1.1
	MOV TMOD ,#21H
	CLR TR0
	MOV R3,#20
LAP5:
	MOV TH0,#HIGH(-50000)
	MOV TL0,#LOW(-50000)
	SETB TR0
	JNB TF0,$
	CLR TF0
	CLR TR0
	CPL P1.1
	DJNZ R3,LAP5
;----------------------------------------------------------------
; cho nhap nhay LED o P1.1 mot khoan thoi gian bao hieu xa nuoc xong
;-------------------------------------------------------------------
	DJNZ R2,KK1
;-------------------------------------------------------------------
;chuong trinh giat se lap vong 2 lan sau do chuyen sang che do VAT
;-------------------------------------------------------------------
	SJMP TTUC9
LLK:
	ACALL SEND
	INC DPTR
	MOV R0,DPH
	MOV R4,DPL	
	ACALL WRITE_TEXT
	SJMP LLG
;------------------------------------------
;xuat dong chu ' DANG XA NUOC'
;---------------------------------------- 
KK1:
	LJMP START
TTUC9:
	MOV A,#0CH
	ACALL SEND
	MOV DPTR,#8000H
	ACALL START1
	MOV DPTR ,#TABLE6
	MOV R0,DPH
	MOV R4,DPL
LLT:
	MOV DPH,R0
	MOV DPL,R4
	CLR A
	MOVC A,@A+DPTR
	CJNE A,#'0',LLY
	SJMP LLE
LLY:
	ACALL SEND
	INC DPTR
	MOV R0,DPH
	MOV R4,DPL
	ACALL WRITE_TEXT
	SJMP LLT
;-----------------------------------
; hien thi chu ' DANG VAT'
;-----------------------------------
LLE:
	MOV DPTR,#0E000H
	CLR A	
	MOV TMOD,#11H
	MOV IE,#82H
	SETB PT0
	SETB TF0
	MOV R1,#1
	MOV R5,#6
LOOP1:
	SETB 67H
	MOV R6,#150
	SETB TF0
	CLR ACC.1
LLW:
	JNB 66H, NHAYD1
	SETB ACC.0
	MOVX @DPTR, A
	JB 67H, LLW
NHAYD1:
	CLR ACC.0
	MOVX @DPTR,A
	JB 67H, LLW
	DJNZ R5, LOOP1
;--------------------------------------------
;cho quay theo chieu thuan toc do cuc dai khoang 30s
;--------------------------------------------------
	SETB 67H
	MOV R6, #200
	SETB TF0
	LLP:
	CLR ACC.0
	CLR ACC.1
	MOVX @DPTR, A
	JB 67H, LLP
	MOV IE, #0
	MOV TMOD, #20H
	MOV TL1, #-3
	MOV TH1, #-3
	MOV SCON,#52H
	SETB TR1
	MOV A,#0CH
	ACALL SEND
	MOV DPTR, #8000H
	ACALL START1
	MOV DPTR, #TABLE7
	MOV R0, DPH
	MOV R4, DPL
LLT1:
	MOV DPH,R0
	MOV DPL, R4	
	CLR A
	MOVC A,@A+DPTR
	CJNE A,#'0',LLY1
	SJMP TTUCS
LLY1:
	ACALL SEND
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL
	ACALL WRITE_TEXT
	SJMP LLT1
	TTUCS:
	MOV IE, #0
	MOV TMOD, #21H
	MOV R3, #200
	SETB P1.3
	QUAY_LAI:
	MOV TH0, #HIGH (-50000)
	MOV TL0, #LOW (-50000)
	SETB TR0
	JNB TF0, $
	CLR TF0
	CLR TR0
	CPL P1.3
	DJNZ R3, QUAY_LAI
	MOV A,#0CH
	ACALL SEND
	MOV DPTR, #8000H
	ACALL START1
	MOV DPTR, #TABLE8
	MOV R0, DPH
	MOV R4, DPL
LLQ1:
	MOV DPH, R0
	MOV DPL, R4
	CLR A
	MOVC A,@A+DPTR
	CJNE A, #'0', LLK1
	SJMP LLF1
LLK1: 
	ACALL SEND
	INC DPTR
	MOV R0, DPH
	MOV R4, DPL
	ACALL WRITE_TEXT
	SJMP LLQ1
LLF1: 
	JB P1.5, $
	LJMP MAIN
ISR_T0:
	SETB 66H
	CLR TR0
	MOV TL0, #LOW (-20000)
	MOV TH0, #HIGH (-20000)
	SETB TR0
	DJNZ R6, TT
	CLR 67H
	RETI
TT:	
	CJNE R1, #1,KHAC20
	CLR TR1
	MOV TL1, #LOW (-18000)
	MOV TH1, #HIGH (-18000)
	SETB TR1	
	SJMP EXIT
KHAC20: 	
	CJNE R1, #2,KHAC50
	CLR TR1
	MOV TL1, #LOW (-10000)
	MOV TH1, #HIGH (-10000)
	SETB TR1
	SJMP EXIT
 KHAC50:	
	CJNE R1,#3,EXIT
	CLR TR1
	MOV TL1, #LOW (-4000)
	MOV TH1, #HIGH (-4000)
	SETB TR1
	SJMP EXIT
 EXIT:	
	SETB ET1
	RETI
ISR_T1:	
	CLR 66H
	CLR TR1
	CLR ET1
	RETI
SEND: 	
	JNB TI, SEND
	MOV SBUF, A
	CLR TI
	RET
	START1:
	MOV A, #38H
	CALL INIT_LCD
	MOV A, #0CH
	CALL INIT_LCD
	MOV A, #06H
	CALL INIT_LCD
	MOV A, #01H
	CALL INIT_LCD
	MOV A, #80H
	CALL INIT_LCD
	RET
	WAIT_LCD:
	MOV R7, #4
	BB:
	MOV R6, #250
	DJNZ R6, $
	DJNZ R7, BB
	RET
	INIT_LCD:
	MOV DPTR, #8000H
	LCALL WAIT_LCD
	CLR RS
	MOVX @DPTR, A
	SETB EN
	CLR EN
	RET
	WRITE_TEXT:
	MOV DPTR, #8000H
	LCALL WAIT_LCD
	SETB RS
	MOVX @DPTR, A
	SETB EN
	CLR EN
	RET
TABLE: DB 'CHON CHE DO 0'
TABLE1: DB 'CHE DO 0 '
TABLE2: DB 'GIAT ? 0'
TABLE3: DB 'DANG DO NUOC 0'
TABLE4: DB 'DANG GIAT 0'
TABLE5: DB 'DANG XA NUOC 0'
TABLE6: DB 'DANG VAT 0'
TABLE7: DB 'GIAT XONG 0'
TABLE8: DB 'QUAY LAI 0' 
END

File đính kèm:

  • docxbao_cao_thi_nghiem_vi_xu_ly_nguyen_trong_tuan_ban_dep.docx
  • pdfTNVXL_TND1_T9.pdf