Giờ viết thêm hiệu ứng chữ CHIPKOOL sáng dần từ phải sang trái chạy hiệu ứng viền tổng hợp và delay tốc độ nhanh... Lập trình cho dòng chữ QUẢNG CÁO và CHIPKOOL nhấp nháy đổi chỗ luân ph
Trang 1I Tìm hiểu viết một số hiệu ứng viền
Việc điều khiển viền cũng không quá phức tạp, quan trọng là thời gian delay để nhìn thấy hiệu ứng viền, hiệu ứng chữ và hiệu ứng viền sẽ phụ thuộc vào nhau nếu hiệu ứng chữ chạy nhanh thì hiệu ứng viền khó nhìn thấy, và ngược lại Ở đây có 2 phương pháp lập trình hiệu ứng viền :
- Dùng các lênh SETB và CLR rất đơn giản:
- Dùng lệnh MOV kết hợp
1 Viết hiệu ứng viền với lệnh SETB và CLR
Trước hết tôi giới thiệu một số hiệu ứng viền lập trình cơ bản:
Trang 2Nhìn vào hình bên dưới và so sánh với hình ảnh bảng led phía trên Ta thấy nhóm led bên
dưới gồm 3 màu cơ bản là Đỏ Xanh dương Xanh lục tương ứng với 3 chân a b c trong
mỗi màu tùy theo người thiết kế bảng led có thể dùng 2 con led cho 1 màu hoặc 3 con led cho 1 màu ( theo bảng nhỏ hoặc to) Việc lập trình chúng ta chỉ việc điều khiển cho 3 chân Led a b c sáng đổi chỗ luân phiên:
VD: - Hiệu ứng viền chạy qua trái tốc độ chậm:
CLR P2.0
SETB P2.1
SETB P2.2
CALL DELAY_SLOW
SETB P2.0
CLR P2.1
SETB P2.2
CALL DELAY_SLOW
SETB P2.0
SETB P2.1
CLR P2.2
CALL DELAY_SLOW
- Hiệu ứng led viền chạy qua phải tốc độ nhanh:
SETB P2.0
SETB P2.1
CLR P2.2
CALL DELAY_FAST
SETB P2.0
CLR P2.1
SETB P2.2
CALL DELAY_FAST
CLR P2.0
SETB P2.1
SETB P2.2
CALL DELAY_FAST
- Hiệu ứng nhấp nháy viền tốc độ bình thường:
SETB P2.0
SETB P2.1
SETB P2.2
CALL DELAY
CLR P2.0
CLR P2.1
CLR P2.2
CALL DELAY
Trang 32 Viết chương trình hiệu ứng viền với lệnh MOV ( Hay dùng đỡ tốn bộ nhớ đỡ ảnh hướng hiệu ứng led )
VD: Hiệu ứng viền nhấp nháy
MOV P2,# 00000000B
CALL DELAY
MOV P2,#11111111B
CALL DELAY
- Hiệu ứng viền chạy đuổi sang phải tốc độ bình thường:
MOV P2,#00000100B
CALL DELAY
MOV P2,#00000010B
CALL DELAY
MOV P2,#00000001B
CALL DELAY
- Hiệu ứng viền chạy đuổi sáng phải tốc độ nhanh:
MOV P2,#00000100B
CALL DELAY_FAST
MOV P2,#00000010B
CALL DELAY_FAST
MOV P2,#00000001B
CALL DELAY_FAST
- Hiệu ứng viền chạy đuổi sáng phải tốc độ chậm:
MOV P2,#00000100B
CALL DELAY_SLOW
MOV P2,#00000010B
CALL DELAY_SLOW
MOV P2,#00000001B
CALL DELAY_SLOW
- Hiệu ứng viền chạy đuổi sáng trái tốc độ chậm:
MOV P2,#00000001B
CALL DELAY_SLOW
MOV P2,#00000010B
CALL DELAY_SLOW
MOV P2,#00000100B
CALL DELAY_SLOW
=> Tóm lại: để có hiệu ứng viền đẹp, ta có thể kết hợp nhiều hiệu ứng lại với nhau( Lúc viền chạy sang trái – lúc chạy sang phải) Quan trọng là chương trình delay phù hợp để
có hiệu ứng đẹp và sau này muốn viền nhanh chậm ta chỉ việc thay đổi giá trị của Delay
Trang 4Viết chương trình delay dùng chung các thanh ghi R0 R1 R2 đều được miễn sao không trùng vào các biến chương trình lặp lại hiệu ứng
DELAY:
MOV R0,#150
LOOP:
MOV R1,#200
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
DELAY_SLOW:
MOV R0,#250
LOOP:
MOV R1,#255
LOOP1:
NOP
NOP
NOP
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
DELAY_FAST:
MOV R0,#50
LOOP:
MOV R1,#100
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
II Viết chương trình hiệu ứng chữ, kết hợp chương trình hiệu ứng viền
Trang 5Theo như sơ đồ nguyên lý mạch mô phỏng ở trên, bình thường chúng ta muốn dòng chữ CHIPKOOL sáng chạy đuổi từ trái sáng phải chúng ta viết là:
CHIPKOOL1:
MOV P2,#00000001B
CALL DELAY
MOV P2,#00000010B
CALL DELAY
MOV P2,#00000100B
CALL DELAY
MOV P2,#00001000B
CALL DELAY
MOV P2,#00010000B
CALL DELAY
MOV P2,#00100000B
CALL DELAY
MOV P2,#01000000B
CALL DELAY
MOV P2,#10000000B
CALL DELAY
RET
Trang 6Nếu cho viền chạy cùng thì chúng ta phải thay các dòng CALL DELAY thành các
chương trình con hiệu ứng viền như sau:
CHIPKOOL1:
MOV P2,#00000001B
CALL VIEN1
MOV P2,#00000010B
CALL VIEN1
MOV P2,#00000100B
CALL VIEN1
MOV P2,#00001000B
CALL VIEN1
MOV P2,#00010000B
CALL VIEN1
MOV P2,#00100000B
CALL VIEN1
MOV P2,#01000000B
CALL VIEN1
MOV P2,#10000000B
CALL VIEN1
RET
VIEN1:// Hieu ung sang duoi sang phai toc do binh thuong
MOV P3,#00000100B
CALL DELAY
MOV P3,#00000010B
CALL DELAY
MOV P3,#00000001B
CALL DELAY
RET
DELAY:// Chuong trinh delay toc do binh thuong
MOV R0,#150
LOOP:
MOV R1,#200
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
Tại sao lại phải làm như vậy, vì chương trình viền chứa delay rồi, khi ta thêm CALL VIEN1 sau mỗi lệnh hiệu ứng chữ CHIPKOOL thì đồng thời có hiệu ứng viền và sẽ có
Trang 7cả delay nằm trong, muốn viền nhanh chậm hay chữ nhanh chậm ta chỉ việc thay đổi giá trị trong chương trình delay là xong
Giờ viết thêm hiệu ứng chữ CHIPKOOL sáng dần từ phải sang trái chạy hiệu ứng viền tổng hợp và delay tốc độ nhanh
CHIPKOOL2:
MOV P2,#00000001B
CALL VIEN1_2
MOV P2,#00000010B
CALL VIEN1_2
MOV P2,#00000100B
CALL VIEN1_2
MOV P2,#00001000B
CALL VIEN1_2
MOV P2,#00010000B
CALL VIEN1_2
MOV P2,#00100000B
CALL VIEN1_2
MOV P2,#01000000B
CALL VIEN1_2
MOV P2,#10000000B
CALL VIEN1_2
RET
VIEN1_2:// Hieu ung sang duoi sang phai toc do binh thuong
MOV P3,#00000100B
CALL DELAY_FAST
MOV P3,#00000010B
CALL DELAY_FAST
MOV P3,#00000001B
CALL DELAY_FAST
MOV P3,#00000001B
CALL DELAY_FAST
MOV P3,#00000010B
CALL DELAY_FAST
MOV P3,#00000100B
CALL DELAY_FAST
RET
DELAY_FAST:
MOV R0,#50
LOOP:
Trang 8MOV R1,#150
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
Tương tự cho các hiêu ứng khác, giờ lại quay lại Mạch mô phỏng ta thấy còn dòng chữ QUANG CAO nối PORT 0
Hiệu ứng của những dòng chữ này có thể viết chạy các hiệu ứng sáng dần, sáng nhấp nháy, đuổi,…
VD: Hiệu ứng sáng dần từ giữa ra PORT 2 và nhấp nháy PORT 0
CHIPKOOL3:
MOV P2,#00000000B// chipkool
MOV P0,#00000000B// quang cao
CALL VIEN1
MOV P2,#00011000B
MOV P0,#11111111B
CALL VIEN1
MOV P2,#00111100B
MOV P0,#00000000B
CALL VIEN1
MOV P2,#01111110B
MOV P0,#11111111B
CALL VIEN1
MOV P2,#11111111B
MOV P0,#00000000B
CALL VIEN1
MOV P0,#11111111B
RET
VIEN1:// Hieu ung sang duoi sang phai toc do binh thuong
MOV P3,#00000100B
CALL DELAY
MOV P3,#00000010B
CALL DELAY
MOV P3,#00000001B
CALL DELAY
RET
DELAY:// Chuong trinh delay toc do binh thuong
MOV R0,#150
Trang 9LOOP:
MOV R1,#200
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
Nhưng khi làm ngoài thực tế sẽ không mắc như vậy sẽ tốn chân Chip (IC) vì hiệu ứng cho dòng chữ đó thường chớp chớp là đẹp nhất và ta chỉ việc nối dòng chữ quảng cáo đó thành 1 chân VĐK
VD; Nối dòng chữ Quảng cáo mắc Mô phỏng 1 con led màu xanh Lá tại chân P3.3 Khi đó lập trình ta chỉ việc chỉnh trong chương trình viền là ok:
CHIPKOOL4:
MOV P2,#00000001B
CALL VIEN1
MOV P2,#00000010B
CALL VIEN1
MOV P2,#00000100B
CALL VIEN1
MOV P2,#00001000B
CALL VIEN1
MOV P2,#00010000B
CALL VIEN1
MOV P2,#00100000B
CALL VIEN1
MOV P2,#01000000B
CALL VIEN1
MOV P2,#10000000B
CALL VIEN1
RET
VIEN1_QC:// Vien nay se tao cho dong chu Quang Cao mac tai chan P3.3 nhap nhay
MOV P3,#00001100B
CALL DELAY
MOV P3,#00000010B
CALL DELAY
MOV P3,#00001001B
CALL DELAY
RET
Trang 10VIEN1_QC1:// Vien nay se tao cho dong chu Quang Cao mac tai chan P3.3 sang cả MOV P3,#00001100B
CALL DELAY
MOV P3,#00001010B
CALL DELAY
MOV P3,#00001001B
CALL DELAY
RET
DELAY:// Chuong trinh delay toc do binh thuong
MOV R0,#150
LOOP:
MOV R1,#200
LOOP1:
NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
BÀI TẬP YÊU CẦU:
1 Lập trình cho dòng chữ QUẢNG CÁO và CHIPKOOL nhấp nháy đổi chỗ luân phiên 3 lần – Viền chạy tốc độ bình thường sang phải
2 Lập trình dòng chữ QUẢNG CÁO sáng cả ( nghĩa là bật sáng ) Dòng chữ CHIPKOOL sáng dần từ trái qua phải – Viền chạy tốc độ nhanh
3 Lập trình dòng Chữ QUẢNG CÁO nhấp nháy sau đó sáng rồi cho dòng chữ
CHIPKOOL nhấp nháy rồi sáng – viền chạy tốc độ bình thường sang trái
4 Lập trình dòng chữ QUẢNG CÁO sáng dần từ trái qua phải và dòng chữ CHIPKOOL sáng dần từ phải qua trái – viền chạy tốc độ chậm
5 Lập trình dòng chữ QUẢNG CÁO sáng dồn từ phải qua trái, dòng chữ CHIPKOOL sáng dồn từ trái qua phải – viền tốc độ nhanh
6 Lập trình dòng chữ QUẢNG CÁO sáng đứng yên, dòng chữ CHIPKOOL sáng dần từ giữa ra, sau đó sáng dần từ 2 bên vào, sau đó nhấp nháy
7 Lập trình dòng chữ QUẢNG CÁO nhấp nháy, dòng chữ CHIPKOOL sáng dồn từ 2 bên vào giữa, rồi nhấp nháy
8 Lập trình dòng chữ QUẢNG CÁO sáng đứng yên, dòng chữ CHIPKOOL sáng đuổi qua lại 5 lần
9 Lập trình dòng chữ QUẢNG CÁO sáng đứng yên, dòng chữ CHIPKOOL sáng 1 led dồn đều ra 2 bên
10 Lập trình dòng chữ QUẢNG CÁO nhấp nháy, dòng chữ CHIKOOL sáng tráo đồi 2 chữ CHIP và chữ KOOL
Trang 11BÀI TẬP THAM KHẢO:
$mod51
ORG 0000H
MAIN:
CALL CHIPKOOL1
CALL CHIPKOOL2
CALL CHIPKOOL3
CALL CHIPKOOL4
JMP MAIN
CHIPKOOL1:
MOV P2,#00000001B
CALL VIEN1
MOV P2,#00000010B
CALL VIEN1
MOV P2,#00000100B
CALL VIEN1
MOV P2,#00001000B
CALL VIEN1
MOV P2,#00010000B
CALL VIEN1
MOV P2,#00100000B
CALL VIEN1
MOV P2,#01000000B
CALL VIEN1
MOV P2,#10000000B
CALL VIEN1
RET
CHIPKOOL2:
MOV P2,#00000001B
CALL VIEN1_2
MOV P2,#00000010B
CALL VIEN1_2
MOV P2,#00000100B
CALL VIEN1_2
MOV P2,#00001000B
CALL VIEN1_2
MOV P2,#00010000B
CALL VIEN1_2
MOV P2,#00100000B
CALL VIEN1_2
Trang 12MOV P2,#01000000B
CALL VIEN1_2
MOV P2,#10000000B
CALL VIEN1_2
RET
CHIPKOOL3:
MOV P2,#00000000B// chipkool
MOV P0,#00000000B// quang cao
CALL VIEN1
MOV P2,#00011000B
MOV P0,#11111111B
CALL VIEN1
MOV P2,#00111100B
MOV P0,#00000000B
CALL VIEN1
MOV P2,#01111110B
MOV P0,#11111111B
CALL VIEN1
MOV P2,#11111111B
MOV P0,#00000000B
CALL VIEN1
MOV P0,#11111111B
RET
CHIPKOOL4:
MOV P2,#00000001B
CALL VIEN1_QC
MOV P2,#00000010B
CALL VIEN1_QC
MOV P2,#00000100B
CALL VIEN1_QC
MOV P2,#00001000B
CALL VIEN1_QC
MOV P2,#00010000B
CALL VIEN1_QC
MOV P2,#00100000B
CALL VIEN1_QC
MOV P2,#01000000B
CALL VIEN1_QC
MOV P2,#10000000B
Trang 13CALL VIEN1_QC
RET
VIEN1:// Hieu ung sang duoi sang phai toc do binh thuong
MOV P3,#00000100B
CALL DELAY
MOV P3,#00000010B
CALL DELAY
MOV P3,#00000001B
CALL DELAY
RET
VIEN1_2:// Hieu ung sang duoi sang phai toc do binh thuong
MOV P3,#00000100B
CALL DELAY_FAST
MOV P3,#00000010B
CALL DELAY_FAST
MOV P3,#00000001B
CALL DELAY_FAST
MOV P3,#00000001B
CALL DELAY_FAST
MOV P3,#00000010B
CALL DELAY_FAST
MOV P3,#00000100B
CALL DELAY_FAST
RET
VIEN1_QC:// Hieu ung sang duoi sang phai toc do binh thuong
MOV P3,#00001100B
CALL DELAY
MOV P3,#00000010B
CALL DELAY
MOV P3,#00001001B
CALL DELAY
RET
DELAY:// Chuong trinh delay toc do binh thuong
MOV R0,#150
LOOP:
MOV R1,#200
LOOP1:
Trang 14NOP
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
DELAY_FAST:
MOV R0,#50
LOOP2:
MOV R1,#150
LOOP3:
NOP
DJNZ R1,LOOP3
DJNZ R0,LOOP2
RET
END