Diễn đàn lớp 32CĐ Cơ-Điện Tử ĐHCN Việt - Hung
Chào Mừng bạn đến với diễn đàn của lớp 32CĐ Cơ - Điện Tử ĐHCN Việt-Hung

Diễn đàn lớp 32CĐ Cơ-Điện Tử ĐHCN Việt - Hung

Sân chơi dành cho sinh viên giao lưu học tập
 
Trang ChínhPortalCalendarGalleryTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập

Share | 
 

 BÀI 4: THỰC HÀNH VỚI LED ĐƠN-P5

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Admin
vip
vip
avatar

Tổng số bài gửi : 366
vi phạm : 0
Join date : 15/04/2010
Age : 27
Đến từ : Bình Lục-Hà Nam

Bài gửiTiêu đề: BÀI 4: THỰC HÀNH VỚI LED ĐƠN-P5   Sat Dec 25, 2010 4:06 pm

Bài 14: " Sáng dồn 8 led"
Phần cứng: 8 led nối với Port 0 được định vị trí như sau: led 1 nối với P0.0, lần lượt cho đến led 8 (nối với P0.7). Biết led sáng khi tín hiệu xuất ở mức 1.Viết chương trình để các led nối với Port 0 sáng dồn từ led 1 đến led 8 sau đó tắt hết led và lặp lại. Các quá trình được lặp lại không giới hạn.
Minh hoạ:




Cách 1: Cách này đơn giản là làm cho các led sáng bằng cách thiết đặt các giá trị thích hợp cho các Port để làm led sáng theo từng trạng thái, cách này đơn giản nhưng cần viết dài và tốn dung lượng bộ nhớ Rom. Nếu cần thiết các bạn tự giải
Cách 2: Ở cách này giải thuật phức tạp hơn:
Chia quá trình sáng thành hai quá trình đơn: quá trình có 1 led sáng xoay vòng và quá trình các led sáng cố định có lưu giữ trạng thái led cuối chu trình, kết hợp hai chu trình trên sẽ ra kết quả cần thực hiện.
Dùng thanh ghi R3 để làm cho bit mang giá trị 1 xoay vòng như ở bài 5.
Dùng ô nhớ 30H dùng lưu giá trạng thái cuối của quá trình.(ban đầu 30H= #00000000B)
Thực hiện OR: R3 với 30H rồi xuất ra P0 sau mỗi lần R3 xoay 1 bit.
Trong quá trình đầu: một bit mang giá trị 1 trên R3 xoay từ vị trí R3.0 đến R3.7, vì 30H lúc này đang mang giá trị là #00000000B, nên khi OR R3 với 30H rồi xuất ra P0 sẽ thấy 1 led sáng di chuyển từ led 1 đến led 8. Khi vị trí sáng đến led thứ 8 vi điều khiển lưu lại giá trị của P0 vào 30H.
Trong quá trình hai: bit mang giá trị 1 trên R3 vẫn xoay, lúc này 30H có bit 30H.7 đang ở giá trị 1 tức là 30H đang mang giá trị #10000000B,nên khi OR R3 với 30H rồi xuất ra P0 sẽ thấy led 8 sáng cố định, trong lúc đó có 1 led sáng di chuyển từ led 1 đi vào. Đến led 7 vi điều khiển lưu lại giá trị P0 vào 30H (giá trị mới lưu là #11000000B).
Các quá trình tiếp tục như trên. Như vậy cần phải đếm số quá trình đã thực hiện, khi quá trình thực hiện đến lần thứ 8, lúc này các led đều sáng hết, quá trình phải được lặp lại từ đầu. Dùng thanh ghi R0 để lưu giữ giá trị này
Trong quá trình thực hiện, số bit tham gia vào xoay giá trị 1 sẽ giảm theo các quá trình, vì vậy cần kiểm soát số lần xoay trái trong mỗi quá trình. Dùng thanh ghi R1 lưu giữ giá trị này.


Giải thuật

Chương trình:

;*************************************************************************************************
;**************/////--- SANG DON 8 LED ---\\\ ****************************************
;**----------------------------------------------------------------------------------------------------------------------
;**////////////////___ Sang dan tu led 1 den led 8___________\\\\\\\\\\\\\
;**///////////////___ sang o muc 1 va tat o muc 0__________________\\\\\\\\\\\\
;**//////////////____ lap di lap lai khong gioi han____________________\\\\\\\\\\
;**<<<<<<<<<<<<<<<<<<<----------------------------------------------------->>>>>>>>>>>>>>
;*****************************************************************************************************
;*****************************************************************************************************
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
TuDau:
Mov P0,#00h
Mov R0,#8 ;+++>>>so qua trinh thuc hien
Mov 30H,#00h

SD2:
Mov 01H,00H ;+++>>> vi khong co lenh Mov R1,R0
Mov R3,# 00h
SetB C
SD1:
LCall Delay
Mov A,R3 ;@@@@
RLC A ;@@@@===>>>xoay trai R3
Mov R3,A ;@@@@
ORL A,30H ;+++>>> thuc hien phep OR giua A va 30H, ket qua o A
Mov P0,A ;===>>>xuat ket qua ra P0

DJNZ R1,SD1
Mov 30H,P0 ;===>>> luu giu trang thai cuoi
DJNZ R0,SD2
Ljmp TuDau

;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay <<<<<<<<<<<<<<<<<<<<<<<<<<<<

Delay:
Mov R7,#0FFH ;===>>>> gan R7=#0FFH, 1 chu ki may
Kt2: Mov R6,#0FFH ;===>>>> gan R6=#0FFH, 1 chu ki may
Kt1: Djnz R6,Kt1 ;===>>>> giam R6 xuong 1, R6 khac 0-> giam tiep
Djnz R7,Kt2 ;===>>>> giam R7 xuong 1, R6 khac 0-> ve Kt2
Ret ;===>>>> ket thuc chuong trinh con
;_________________________________________________________________________________ End ;===>>>> ket thuc chuong trinh

Bài 15: "Sáng , tắt dồn 8 led"
Hãy viết chương trình "Sáng ,tắt đồn 8 led" như minh họa ở hình phía dưới.
Minh họa:




Bài 16:
Phát triển các chương trình đã viết trong bài 14 và 15 cho 16 led và 32 led
Về Đầu Trang Go down
Xem lý lịch thành viên http://loveanhthao.co.cc
 

BÀI 4: THỰC HÀNH VỚI LED ĐƠN-P5

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn lớp 32CĐ Cơ-Điện Tử ĐHCN Việt - Hung :: Cơ - Điện Tử :: VI ĐIỀU KHIỂN ỨNG DỤNG-
Chuyển đến 
Đăng NhậpNhanh
.:Đăngkí:. | .: Quên mật khẩu:.