Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
2,64 MB
Nội dung
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP THÁI NGUYÊN BÀI TẬP LỚN Môn học: Vi Xử Lý – Vi Điều Khiển Sinh viên thực hiện: LÊ CÔNG HIỆỤ MSSV: K185520207014 Phần – Vi Điều Khiển Câu 2: Tạo xung 10Hz 5Hz với vi điều khiển AT89C51, đó: xung 10Hz có duty 25% xung 5Hz có duty 50% Lập trình ASM chạy mơ Proteus Tự chọn thông số linh kiện Phần 1: Tính tốn Xung 1: Tần số = 10hz duty =25% Với tần số thạch anh fxtal=12mhz ta có chu kỳ máy =1us Áp dụng công thức T= 1/F*10^6=(1/10)x10^6=100000us Với duty =25% ta có thời gian tạo xung cao = 25000us xun thấp =75000us Xung 2: Tần số 5hz duty=50% Áp dụng công thức tương tự ta có Thời gian tạo xung cao = thấp = 100000 us Với delay thấp =25000us ta viết delay =25000us Phần 2: Mạch mô Các linh kiện dung bao gồm : Vi điều khiển –at89c51- chịu trách nhiệm phát xung Máy xung- oscilloscope- sử dụng để kiểm tra xung Phần 3: Lập trình cho vi điều khiển : Các lệnh dùng ghi: 1: mov p1,#00000000b ; copy p1=00000000 cpl p1.0 ; đảo gia trị chân p1.0 : p1.0 = đảo =1 ngược lại call tre ; hàm gọi chạy trương trình có tên tre Các hi sử dụng : ghi timer0 : bao gồm phần th0 tl0 phần lưu trữ bit cao bit thấp Phần 4: Kết : Xung tần số 10hz duty =25% Xung 2: tần số 5hz duty 50% Bài 3: Lập trình ASM cho VĐK AT89C51 (các thông số tự chọn) để hoạt động theo yêu cầu sau: VĐK số 1: Input: - Từ nút bấm: LEFT, RIGHT => để động quay trái hay quay phải - Từ nút bấm: RUN, STOP => để động quay hay dừng - Từ truyền thông nối tiếp VĐK số 2: nhận tín hiệu điều khiển từ VĐK số (RUN, STOP, LEFT, RIGHT) => điều khiển động chuyển sang trạng thái tương ứng Output: - Điều khiển: động chiều mạch cầu H - Hiển thị led đơn: trạng thái động STOP RUN - Hiển thị led đơn: chiều quay động LEFT RIGHT (khi RUN: quay trái hay quay phải STOP led ý nghĩa quay trái hay quay phải.) - Hiển thị số lần quay trái lên led pack2 số Số lần quay trái số lần động chuyển từ trạng thái STOP -> RUN LEFT - Hiển thị số lần quay phải lên led pack2 số Số lần quay trái số lần động chuyển từ trạng thái STOP -> RUN RIGHT - Truyền thông nối tiếp sang VĐK số 2: trạng thái động cơ, số lần động quay trái, số lần động quay phải (chỉ truyền thơng có thay đổi) VĐK số 2: Input: - Từ nút bấm: LEFT, RIGHT => Để động bên vđk số quay trái hay quay phải - Từ nút bấm: RUN, STOP => Để động bên vđk số quay hay dừng - Từ truyền thông nối tiếp VĐK số truyền đến: nhận trạng thái động cơ, số lần quay trái , số lần quay phải => để hiển thị (xem output) - Output: - Hiển thị led đơn: trạng thái động STOP RUN - Hiển thị led đơn: chiều quay động LEFT RIGHT RUN led ý nghĩa quay trái hay quay phải STOP led ý nghĩa quay trái hay quay phải - Hiển thị số lần quay trái lên led pack2 số Số lần quay trái số lần động chuyển từ trạng thái STOP -> RUN LEFT - Hiển thị số lần quay phải lên led pack2 số Số lần quay trái số lần động chuyển từ trạng thái STOP -> RUN RIGHT - Truyền thông nối tiếp sang VĐK số 1: trạng thái cần chuyển sang động (theo nút bấm input cho VĐK số 2)./ Bài làm Phần 1: Đưa sơ đồ làm việc hệ thống - Khi bắt đầu cấp điện chưa tác động Trên vdk Led đơn stop right sáng led đơn lại tắt Led pack hiển thị 00 Động trạng thái dừng : Khi bắt đầu tác động Muốn tác động trước tiên ta chon trạng thái động -Nếu muốn động chạy ta ấn nút run cịn muốn động dừng ta ấn nút stop - trường hợp động quay phải Ta điểu khiển sau Bên vdk1 ta ấn nút run sau dó ấn nút right Lúc vdk1 xuất giá trị điểu khiển led đơn run led đơn right sáng led cịn lại tắt Sau xuất tiếp giá trị điều khiển mạch cầu h làm động quay thuận Sau truyền xâu với bit điều khiển sang vdk2 Sau truyền xong tiến hành quét tang led pack x1 lên giá trị Cùng lúc vdk2 nhận phản hồi truyền từ vdk tiến hành phân tích Sau hiển thị led đơn led pack Đối với trường hợp quay trái tương tự Trường hợp động quay phải ta điều khiển bên vdk2 cho dc dừng Ta chọn nút stop bên vdk2 Lúc vdk2 nhận tín hiệu từ nút tiến hàn truyền phản hồi vdk1 để tắt độn hiển thị led đơn trạng thái động Tương tự với điều khiển dừng vdk1 Phần 2: mạch mô hệ thống Linh kiện sử dụng: Vi điều khiển at89c51 Led pack anot chung ( chân abcdefg =0 sáng) chân điều khiển dùng để điều khiển led tương ứng Led đơn màu xanh nối k chung ( =1 sáng) Linh kiện bán dẫn npn pnp (dùng để tạo mạch cầu h) Motor chiều Nút bấm (button) Phần lập trình vdk tương tự Với ta chia làm phần chính; Phần Kiểm tra điều kiện Bao gồm: kiểm tra trạng thái nút bấm kiểm tra cac bit phản hổi từ vdk cho kiểm tra trạng thái làm việc động Phần Thực yêu cầu thỏa mãn điều kiện Bao gồm điều khiển động vdk1 hiển thị trạng thái làm việc led đơn vdk gửi nhận phản hồi vdk hiển thi led x1 x2 Phần phần phụ Bao gồm phần cài đặt trạng thái biến trung gian sử dụng Tập hợp nhãn phụ trương trình tạo trễ trương trình uart Các chương trình khác Lập trình ; vdk1 phần lập trình giống nhiên vdk1 có them phần điều khiển động em giải thích chi tiết phần vdk1 cịn phần vdk em giải thích tron phần code Phần phần kiểm tra bao gồm: kiểm tra trạng thái nút bấm cờ nhận phản hổi ri kiểm tra cac bit phản hổi từ vdk cho tách lấy bit điều khiển kiểm tra trạng thái làm việc động Phần Thực yêu cầu thỏa mãn điều kiện Bao gồm điều khiển động vdk1 nút run bấm thực phần kiểm tra - Nếu nút left ấn phần sau thực hiện; Cho độn quay trái , truyền xâu , hien thi trang thai tren led đơn tăng x1 lên đơn vị hiển thi led x1 x2 - Với x1 tăng Phần giải thích chi tiết có tron code để tránh gây dài dòng cho phần nhật ký em ko mô tả nhiểu Về thực tuẩn tự theo phần từ kiểm tra đến hết Nhận xét cho theo ý kiến riêng em em có đánh sau Phần khó phần phản hồi vi điều khiển với Các lỗi hay mắc phải bao gồm lỗi tần số thạch anh , lỗi tốc độ truyển lỗi cần truyển ký tự thành truyền giá trị Phần khó phần quét led pack việc phải quét led liên tục ta led lỗi thường gặp Lỗi delay lâu , lỗi ko thể thoát để thực yêu cầu Nói chung khó nhiên tâm tìm hiểu làm khơng khó khan mấu chốt tư lập trình Về phần cách làm em em viết code riêng cho vdk sau gắn uart để kiểm tra em viết code co phần yêu cầu sau ghép lại Và kết em Khi ta cấp nguồn chưa có tác động ; GOI HAM NGAT NHAP KI TU TU BAN PHIM: MA ACCI CUA KI TU DO DUOC LUU TRONG AL ; SAU DO TRU MA ACCI DI KI TU '0' (AL-'0') VA LUU VAO BL, TIEP TUC NHAN KI TU TIEP THEO ; + NEU KI TU TIEP THEO KHAC PHIM ENTER (CO MA ACCI LA 13) THI NHAN SO DA LUU O BL VOI 10 ; TRU MA ACCI DI KI TU '0' (AL-'0') VA CONG VAO BL ; + SO SANH NEU KI TU TIEP THEO LA PHIM ENTER (CO MA ACCI LA 13) THI DUNG NHAP SO => DA NHAP SO XONG READ_1_SO: MOV DX,0 NHAP_TIEP: MOV AH,01 INT 21H CMP AL,13 JE NHAP_SO_XONG SUB AL,'0' MOV BL,AL MOV AL,10 MUL DL ADD AL,BL MOV DL,AL JMP NHAP_TIEP NHAP_SO_XONG: RET ; HAM NHAP MANG ; SO DA NHAP SAU KHI GOI HAM NHAP_SO DUOC LUU VAO DX, VI VAY TA CHUYEN GIA TRI TRONG DX LAN LUOT VAO MANG ; NHAP CHO DEN KHI HET SO PHAN TU MANG DA NHAP O TREN NHAP_MANG: SAVE: MOV DL,10 MOV AH,02 INT 21H MOV DL,13 INT 21H CALL READ_1_SO MOV [DI],DX INC DI LOOP SAVE RET ; HAM HIEN THI SO NGUYEN ; THUAT TOAN: ; CHIA SO CAN HIEN THI CHO 10 VA DUOC DAY DAN VAO STACK ; CHIA CHO DEN KHI THUONG CUA PHEP CHIA = (AL = 0) THI DUNG CHIA ; CU MOI LAN CHIA THI CX TANG LEN DE PHUC VU CHO VIEC XUAT HIEN_THI_SONGUYEN: MOV CX, 0H MOV AH,0 MOV AL,DL CHIA: MOV BL,10 DIV BL MOV BL,AH PUSH BX INC CX MOV AH,0 CMP AL,0 JE DA_XONG JMP CHIA DA_XONG: ; LAN LUOT LAY TUNG SO DA DUOC DAY VAO STACK O TREN DUA VAO AX ; SAU DO CONG THEM '0' DE LAY MA ACCI CUA SO CAN HIEN THI ; GOI NGAT 21 DE XUAT RA MAN HINH VA LAP CHO DEN KHI CX = (CX DA DUOC TICH LUY DAN O PHIA TREN) PRINT: POP AX MOV DL,AL ADD DL,'0' MOV AH,02 INT 21H LOOP PRINT RET ; HAM HIEN THI MANG ; LAY LAN LUOT TUNG PHAN TU O TRONG MANG CAN HIEN THI RA LUU VAO DL ; SAU DO GOI HAM HIEN_THI DE IN SO DO RA MAN HINH ; IN CHO DEN KHI HET PHAN TU TRONG MANG, SO PHAN TU TRONG DUOC LAY TRONG BIEN SOPTU_AB IN_MANG: LAPP: MOV DH,CL MOV DL,[DI] CALL HIEN_THI_SONGUYEN MOV CL,DH INC DI MOV DL,' ' INT 21H LOOP LAPP RET ; SAP XEP MANG A TANG DAN ; LAN LUOT LAY TUNG PHAN TU CUA MANG A SO SANH VOI CAC PHAN TU CON LAI DUNG SAU NO ; NEU LON HON THI DOI VI TRI CHO NHAU SAPXEP_TANGDAN_MANG_A: LEA DI,A MOV CX,DI LEA DI,MANG_TG MOV [DI],CX LEA DI,SO_PTU MOV CL,[DI] LEA DI,SOPTU_TG MOV [DI],CL MOV CX,0 SX_TANG_A: LEA DI,SOPTU_TG MOV CL,[DI] DEC CX LEA DI,MANG_TG MOV DI,[DI] ADD CX,DI LEA DI,DCLUU_SOPTU MOV [DI],CX MOV BX,0 MOV CX,0 LUOT_TIEP_A: MOV DX,1 LEA DI,MANG_TG MOV DI,[DI] ADD DI,CX PUSH DI SX_LANLUOT_A: POP DI PUSH DI MOV AL,[DI] ADD DI,DX MOV BL,[DI] CMP AL,BL JA HOAN_DOI_A JMP BO_QUA_A HOAN_DOI_A: MOV [DI],AL SUB DI,DX MOV [DI],BL ADD DI,DX BO_QUA_A: MOV BX,DI LEA DI,DCLUU_SOPTU MOV AX,[DI] CMP AX,BX JE XONG_A INC DX JMP SX_LANLUOT_A XONG_A: INC CX LEA DI,SOPTU_TG MOV DL,[DI] DEC DL CMP CL,DL JB LUOT_TIEP_A JMP SX_XONG_A RET ; SAP XEP MANG B TANG DAN ; TUONG TU NHU THUAT TOAN SAP XEP CHO MANG A SAPXEP_TANGDAN_MANG_B: LEA DI,B MOV CX,DI LEA DI,MANG_TG MOV [DI],CX LEA DI,SO_PTU MOV CL,[DI] LEA DI,SOPTU_TG MOV [DI],CL MOV CX,0 SX_TANG_B: LEA DI,SOPTU_TG MOV CL,[DI] DEC CX LEA DI,MANG_TG MOV DI,[DI] ADD CX,DI LEA DI,DCLUU_SOPTU MOV [DI],CX MOV BX,0 MOV CX,0 LUOT_TIEP_B: MOV DX,1 LEA DI,MANG_TG MOV DI,[DI] ADD DI,CX PUSH DI SX_LANLUOT_B: POP DI PUSH DI MOV AL,[DI] ADD DI,DX MOV BL,[DI] CMP AL,BL JA HOAN_DOI_B JMP BO_QUA_B HOAN_DOI_B: MOV [DI],AL SUB DI,DX MOV [DI],BL ADD DI,DX BO_QUA_B: MOV BX,DI LEA DI,DCLUU_SOPTU MOV AX,[DI] CMP AX,BX JE XONG_B INC DX JMP SX_LANLUOT_B XONG_B: INC CX LEA DI,SOPTU_TG MOV DL,[DI] DEC DL CMP CL,DL JB LUOT_TIEP_B JMP SX_XONG_B RET ; TRON MANG A VA B LUU VAO MANG C ; THUAT TOAN: ; SAU KHI MANG A B DA DUOC SAP XEP TANG DAN ; LAY TUNG PHAN TU CUA MANG A SO SANH VOI PHAN TU CUA MANG B ; NEU NHO HON THI DUOC DUA VAO MANG C AB_SANG_C: LEA DI,SO_PTU MOV CL,[DI] MOV AX,2 MUL CL LEA DI,SOPTU_MANG_C MOV [DI],AL MOV BX,0 LEA CX,A LEA DX,B ; LAY LAN LUOT PHAN TU CUA MANG SO SANH VOI NHAU ; NEU PHAN TU O MANG A NHO HON THI DUOC DUA VAO MANG C TRUOC ; NGUOC LAI NEU PHAN TU O MANG B NHO HON THI DUOC DUA VAO MANG C TRUOC TRON_AB: MOV DI,CX MOV AH,[DI] MOV DI,DX MOV AL,[DI] CMP AH,AL JAE CHUYEN_B_SANG_C JB CHUYEN_A_SANG_C ; VI PHAN TU O MANG B NHO HON NEN CHUYEN VAO MANG C TRUOC ; SAU KHI CHUYEN SONG TANG DX LEN THEM DON VI DE SO SANH LUOT TIEP THEO ; DONG THOI TANG BX LEN THEM DON VI DE CHO NHAN PHAN TU TIEP THEO CHUYEN_B_SANG_C: LEA DI,C ADD DI,BX MOV [DI],AL INC DX INC BX MOV AX,0 LEA DI,SO_PTU MOV AL,[DI] LEA DI,B ADD AX,DI CMP DX,AX JE HET_MANG_B JMP KETTHUC_LUOT ; VI PHAN TU O MANG A NHO HON NEN CHUYEN VAO MANG C TRUOC ; SAU KHI CHUYEN SONG TANG CX LEN THEM DON VI DE SO SANH LUOT TIEP THEO ; DONG THOI TANG BX LEN THEM DON VI DE CHO NHAN PHAN TU TIEP THEO CHUYEN_A_SANG_C: LEA DI,C ADD DI,BX MOV [DI],AH INC CX INC BX MOV AX,0 LEA DI,SO_PTU MOV AL,[DI] LEA DI,A ADD AX,DI CMP CX,AX JE HET_MANG_A KETTHUC_LUOT: LEA DI,SOPTU_MANG_C MOV AL,[DI] CMP BL,AL JB TRON_AB RET ; KHI NHAN THAY MANG A DA CHUYEN HET PHAN TU THI KO CAN SO SANH NUA, CHUYEN HET PHAN TU TIEP THEO TRONG MANG B VAO C HET_MANG_A: MOV DI,DX MOV AL,[DI] LEA DI,C ADD DI,BX MOV [DI],AL INC DX INC BX LEA DI,SO_PTU MOV AL,[DI] MOV AH,0 LEA DI,B ADD AX,DI CMP DX,AX JB HET_MANG_A JE CHUYEN_XONG ; KHI NHAN THAY MANG B DA CHUYEN HET PHAN TU THI KO CAN SO SANH NUA, CHUYEN HET PHAN TU TIEP THEO TRONG MANG A VAO C HET_MANG_B: MOV DI,CX MOV AL,[DI] LEA DI,C ADD DI,BX MOV [DI],AL INC CX INC BX LEA DI,SO_PTU MOV AL,[DI] MOV AH,0 LEA DI,A ADD AX,DI CMP CX,AX JB HET_MANG_B JE CHUYEN_XONG CHUYEN_XONG: RET SO_PTU DB ? ;BIEN LUU SO LUONG PHAN TU TRONG MANG A VA B SOPTU_MANG_C DB ? ;BIEN LUU SO LUONG PHAN TU TRONG MANG C SOPTU_TG DB ? DCLUU_SOPTU DW ? A DB 255 DUP(?) B DB 255 DUP(?) C DB 510 DUP(?) MANG_TG DW ? CHUOI_A1 DB 10,13,"NHAP SO PHAN TU: $" CHUOI_A2 DB 10,13,"NHAP MANG A: $" CHUOI_A3 DB 10,13,"MANG A TRUOC KHI SX: $" CHUOI_A4 DB 10,13,"MANG A SAU KHI SX: $" CHUOI_B2 DB 10,13,"NHAP MANG B: $" CHUOI_B3 DB 10,13,"MANG B TRUOC KHI SX: $" CHUOI_B4 DB 10,13,"MANG B SAU KHI SX: $" CHUOI_C1 DB 10,13,"MANG C SX TANG DAN: $" END Nhận xét chung cho phần vi xử lý q khó ln ko cịn diễn tả gần 500 dòng code Bài em copy nhiên đề bạn em giảm dần cịn em tang dần e có sửa lại cho giống yêu cầu ( em sửa 100% ) Giá kể mơn vấn đáp em cịn tính lấy A nhiên sau nhận đề em ngất phần vi điều khiển vxl khó đề kỳ rất rất nhiều Cuối em mong thầy cô giúp đỡ ... ta vi? ??t delay =25000us Phần 2: Mạch mô Các linh kiện dung bao gồm : Vi điều khiển –at89c51- chịu trách nhiệm phát xung Máy xung- oscilloscope- sử dụng để kiểm tra xung Phần 3: Lập trình cho vi. ..Phần – Vi Điều Khiển Câu 2: Tạo xung 10Hz 5Hz với vi điều khiển AT89C51, đó: xung 10Hz có duty 25% xung 5Hz có duty 50% Lập... CHUYEN_A_SANG_C ; VI PHAN TU O MANG B NHO HON NEN CHUYEN VAO MANG C TRUOC ; SAU KHI CHUYEN SONG TANG DX LEN THEM DON VI DE SO SANH LUOT TIEP THEO ; DONG THOI TANG BX LEN THEM DON VI DE CHO NHAN