GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO- Một cửa sổ thông báo hiện ra nhấp No - Tạo File lập trình mới Menu – File -> New hoặc chọn ngay biểu tượng như hình dưới... GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
Trang 1WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 1
I Hướng dẫn sử dụng phần mềm Lập trình Keil biên dịch code Asembly
- Khởi động phần mềm Keil C – Vào Project – Chọn New uvisin project để tạo dự án mới
- Chọn IC lập trình ở đây chọn IC 89C52 – vào Atmel – chọn AT89C52
Trang 2GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Một cửa sổ thông báo hiện ra nhấp No
- Tạo File lập trình mới Menu – File -> New hoặc chọn ngay biểu tượng như hình dưới
Trang 3WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 3
- Lưu tên file vừa tạo mới chọn Save
Trang 4GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Đặt Tên file là BAI 1.ASM chú ý lập trình asembly phải là đuôi
*.asm
- Thêm file chương trình vừa lưu ( mục đích lấy file nguồn để biên dịch)
Trang 5WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 5
- Nhấp vào chon All files (*.*) để lấy tất cả các đuôi ( mục đích hiển thị file nguồn lập trình asm)
Trang 6GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Nhấp chọn tên File đã lưu sẽ có đuôi *.asm
- Sau khi viết chương trình xong thì vào mục Target để chọn tần số thạch anh sử dụng và chọn biên dịch sang file hex nạp vào IC mô phỏng
Trang 7WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 7
protues
- Nhấp chọn Creat HEX file để có file nạp
IC
II Hướng dẫn sử dụng phần mềm Protues để mô phỏng
- Khởi động phần mềm Protues 7.10 Chọn Component Mode rồi nhấp P để lấy ( phím tắt
P trên bàn phím)
Trang 8GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Cửa sổ lấy linh kiện:
+ Thạch anh gõ Cry ( khóc huhu ấy ^^)
- Sau khi lấy xong linh kiện bắt đầu sắp xếp và nối mạch:
Trang 9WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 9
- Mạch mà không có nguồn làm sao chạy được đây, đi tìm nguồn nào?
- Sau khi nối xong nguồn ta được sơ đồ nguyên lý chuẩn
Trang 10GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Mạch mà không có Noron thần kinh cũng bó tay không chạy được, ta nhấp đúp chuột vào thân IC rồi truy cập file hex biên dịch trong BAI
Trang 11WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 11
1
- Tìm thấy file HEX BAI1 rồi nạp xem mạch chạy như thế nào
Trang 12GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Hồi hộp nhấn Play để chạy,
Trang 13WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 13
- Cuối cùng mạch cũng chạy ngon lành
Trang 14GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
III Tìm hiểu IC 89xx – Các cổng I/O lập trình – Các mức tích cực lập trình Led đơn quảng cáo
1 Tìm hiểu IC 89xx: IC 89xx có nhiều loại như :
- 89C4051 có 20 chân
- 89C51/S51 có 40 chân 4k ROM – 128 byte RAM – 2 timer/counter – 32 chân I/O
- 89C52/S52 có 40 chân 8K ROM – 256 byte RAM – 3 timer/counter – 32 chân I/O
Tại sao lại dùng IC họ 8051 để lập trình quảng cáo? Lý do giá thành rẻ, tốc độ xử lý vừa phải với bảng led quảng cáo, mạch nạp chương trình đơn giản, dễ dàng lập trình, phổ biến trên thị trường
2 Các cổng I/O lập trình:
Đây là sơ đồ chân thực tế trên một ic 89xx 4 chân Bao gồm 4 PORT I/O
+ Port 0: P0.0 – P0.7 ( phải có thêm trở băng kéo )
+ Port 1: P1.0 – P1.7
+ Port 2: P2.0 – P2.7
+ Port 3: P3.0 – P3.7
Chân 20 nối âm nguồn, chân 40 nối dương nguồn 5V
Chú ý chân EA chân 31 bắt buộc phải nối dương 5v không thì mạch không thì mạch không hoạt động được
Trang 15WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 15
3 Các mức tích cực lập trình led quảng cáo:
Led trên thị trường có nhiều loại nhưng chung lại đều có cực Anode (A) – Chân dài và
cathode (K ) – chân ngắn có cạnh khuyết Anode nối với dương nguồn còn Cathode nối với âm nguồn thì led mới sáng
Chính sự quy định chân led như vậy sẽ nảy sinh 2 kiểu lập trình led đó là tích cực mức dương và tích cực mức âm.
Trang 16GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
- Led tích cực mức dương có nghĩa là chân Anode led nối với chân Vi Điều khiển ( chân I/O của chip 89xx) còn các chân Cathode được nối với chung lại nối xuống âm ( xuống đất) và khi đó trong lập trình quy định mức 1 là sáng và mức 0 là tắt
VD; MOV P2,#00111111B các led nào là 1 sẽ sáng vàng còn 0 sẽ tắt
- Tương tự led mắc tích cực âm: các chân Cathode led nối với chân I/O Vi Điều Khiển còn các chân Anode led nối chung với nhau nối với nguồn dương Và khi lập trình điều khiển mức 1 là tắt, và mức 0 là sáng.
VD: MOV P2, #11000000B
Tóm lại khi lập trình biển led quảng cáo chủ yếu lập trình tích cực mức dương? Tại sao lại như vậy? Vì thường dùng TIP41 C hoặc TIP122 để điều khiển led, mà muốn kích mở TIP thì phải kích mức dương thì TIP mới mở có vậy thôi
IV Lập trình biển led quảng cáo:
1 Một số lệnh cơ bản dùng trong lập trình biển led quảng cáo:
- Lệnh MOV lệnh di chuyển dữ liệu:
VD: MOV P2,#00000000B chuyển dữ liệu nhị phân 8 bit 00000000 vào Port 2
- Lệnh DJNZ giảm và nhảy nếu R0 = 0
VD: MOV R0,#100
LAP: DJNZ R0,LAP
- Lệnh SETB P1.0 thực hiện cài bit tại chân P1.0 lên mức 1
- Lệnh CLR P1.0 thực hiện cài bit tại chân P1.0 xuống mức 0
- Lệnh CJNE A,#data Nhảy nếu A khác data
- Lệnh RR A thực hiện quay phải thanh ghi A
Một byte dữ liệu có 8 bit, được chia thành 4 byte cao và 4 byte thấp
VD: MOV P2,#01010011B Một byte dữ liệu 01010011 byte thấp là 0011 byte cao là
0101 và khi đó Byte dữ liệu có bit thấp nhất là 1 = P2.0 và bít cao nhất là 0 = P2.7 tương
Trang 17WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 17
ứng lần lượt là P2.7 = 0, P2.6 =1, P2.5 = 0, P2.4 =1, P2.3 =0, P2.2 =0, P2.1=1, P2.0 =0 Rất quan trọng trong lúc lập trình thao tác từng bit
- Lệnh RL A thực hiện quay trái thanh ghi A
HIEU_UNG1:; chuong trinh con hieu ung
;…………Viet hieu ung vao ben trong………
- Cách tính toán chương trình delay:
Một chương trình delay đơn giản 1 vòng lặp như sau:
Trang 18GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
DJNZ R1,LOOP1
DJNZ R0,LOOP
RET
1 chu kỳ máy bằng 12 lần dao động thạch anh, nếu mạch dùng thạch anh 12Mhz thì tần
số sẽ là f = 12/12 = 1Mhz -> chu kỳ máy sẽ bằng T=1/f = 1/1 = 1us Như vậy mỗi chu kỳ máy thưc hiện 1us rất nhanh Ở đây lập trình quảng cáo không cần độ chính xác quá cao
Ta sẽ tính đối với delay 1 vòng lặp là lấy giá trị 100x1us = 100us suy ra delay đó trễ 100us = 0.1ms
Đối với delay 2 vòng lặp thì lấy 200 ở vòng lặp trong nhân 100 vòng lặp ngoài nhân với 1us là ok vậy trễ 200x100x1us = 20000us = 20ms
Khi muốn thay đổi độ trễ tăng lên ta thay đổi gia trị như 100 hoặc 200 lên tối đa là 255
không được vượt quá
Muốn băm nhỏ hơn delay thì thêm Nop vào trong vòng lặp
- Yêu cầu: lập trình bằng lệnh MOV, viết hiệu ứng 8 led Port 2 theo sơ đồ sau:
+ Led sáng đuổi từ trên xuống dưới:
HIEU_UNG1:; Led sang duoi tu tren xuong
Trang 19WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 19
+ Sáng đuổi từ dưới lên trên
HIEU_UNG2:;Sang duoi tu duoi len tren
Trang 20GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
RET
+ Led sáng dần từ trên xuống:
HIEU_UNG3:; sang dan tu duoi len tre
+ Led sáng dần từ dưới lên trên:
HIEU_UNG4:; sang dan tu duoi len tre
Trang 21WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 21
Trang 22GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
+ led nhấp nháy tráo đổi 4 bit cao và 4 bit thấp
Trang 23WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 23
Trang 24GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
Trang 25WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 25
Trang 26GIÁO TRÌNH LẬP TRÌNH QUẢNG CÁO
YÊU CẦU LED VÀNG NỐI PORT 2
Trang 27WWW.ECHIPKOOL.COM – ĐÌNH DUY - UNETI Page 27