Hướng dẫn lắp ráp các mạch nạp vi xử lý: Phần 2

34 28 0
Hướng dẫn lắp ráp các mạch nạp vi xử lý: Phần 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ebook Hướng dẫn lắp ráp các mạch nạp vi xử lý: Phần 2 gồm có những nội dung cơ bản sau: Một số phần mềm lập trình/soạn thảo Assembly, các phần mềm biên dịch file.asm ra file.hex, các phần mềm mô phỏng vi xử ly, hướng dẫn sử dụng ezdl4.0 cho các mạch nạp. Mời các bạn cùng tham khảo

Lê Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 44 - PHẦN 3: HƯỚNG DẪN SỬ DỤNG CÁC PHẦN MỀM VI XỬ LÝ NỘI DUNG Vấn đề 8: MỘT SỐ PHẦN MỀM LẬP TRÌNH / SOẠN THẢO ASSEMBLY Vấn đề 9: CÁC PHẦN MỀM BIÊN DỊCH FILE ASM RA FILE HEX Vấn đề 10 : CÁC PHẦN MỀM MÔ PHỎNG VI XỬ LÝ Vấn đề 11 : HƯỚNG DẪN SỬ DỤNG Ezdl4.0 CHO CÁC MẠCH NẠP Vấn đề 8: MỘT SỐ PHẦN MỀM LẬP TRÌNH - SOẠN THẢO ASSEMBLER I-GIỚI THIỆU: Nhân tiện viết tậpsách ,tôi xin giới thiệu bạn sơ lược số phầnmềm thông dụng giành cho Vi Xử Lý , phần mềm mà giới thiệu có nhiều tạicác tiêm bán software , bạn mua lên mạng vào trang web : “ vixuly.cjp.net” để download sử dụng hoàn toànmiễn phí Tôi xin nói trước tất mà hướng dẫn ợ hoàn toàn tải nghiệm thực tế nên bạn yên tâmmà sử dụng , có số phần mềm khác hay chưa bẻ khoá hay chưa cập nhật kịp mong cacá bạn thông cảm bỏ qua cho II-CÁC PHẦN MỀM LẬP TRÌNH- SOẠN THẢO VI XỬ LÝASSEMBLER: 1) LẬP TRÌNH ASSENBLER BẰNG NOTEPAD: Từ menu Star bạn vào mục Program để mở cửa sổ NOTEPAD hình sau Sau bạn lập trình xong lưulại với đuôi “chấm-asm” sau: *** asm Lưu ý : Dấu *** nơi bạn đặt tên chương trình bạn Tên mà bạn đặt dài tối đa kí tự mà Ví dụ tên hợp lệ: ledtest.asm , denchop.asm , leduyphi.asm PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 45 - Hình : Mở cửa sổ NOTEPAD để lập trình ASM 2) LẬP TRÌNH ASSENBLER BẰNG NC-EDIT ( NORTONCOMMANDER): Ngoài Notepad , bạn lập trình Assembler chức soạn thảo Edit Norton Commander chạy Windows Dos Để mở chức NC bạn nhấn hai phím: “SHIFT + F4” Sau bạn lưu lại với tên là: ***.ASM PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Lê Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 46 - VẤN ĐỀ 9: CÁC PHẦN MỀM BIÊN DỊCH FILE ASM RA FILE HEX I-GIỚI THIỆU: Như cúng ta biết , muốn nạp nội dung chương trình mà lập trình vào cho vi xử lý để hoạt động phải nạp vào cho file có dạng file HEX file BIN , đa số người ta thường nạp cho file có dạng file HEX Do xin giới thiệu với bạn phần mềm thường dùng để chuyển file có dạng file Asm sang dạng file Hex ASM51 TASM II_CÁC PHẦN MỀM PHIÊN DỊCH ASM SANG HEX: (A) PHẦN MỀM ASM51 : 1-CÁC FILE CẦN CÓ TRONG BỘ ASM51: Trong ASM51 gồm có file sau: ASM51.EXE MOD152 MOD154 MOD252 MOD44 MOD451 MOD452 MOD51 MOD512 MOD515 MOD517 MOD52 MOD521 MOD552 MOD652 MOD751 MOD752 MOD851 The Cross Assembler program itself Source file for the $MOD152 control Source file for the $MOD154 control Source file for the $MOD252 control Source file for the $MOD44 control Source file for the $MOD451 control Source file for the $MOD452 control Source file for the $MOD51 control Source file for the $MOD512 control Source file for the $MOD515 control Source file for the $MOD517 control Source file for the $MOD52 control Source file for the $MOD521 control Source file for the $MOD552 control Source file for the $MOD652 control Source file for the $MOD751 control Source file for the $MOD752 control Source file for the $MOD851 control Tổng dung lượng : 153Kb 2) CÁCH SỬ DỤNG: - Sau bạn lập trình xong ( Notepad hay NC-Edit nói trên) bạn lưu lại với tên là: ***.asm , giả sử : vidu.asm file bạn lưu ổ đỉa C:\ chẳng hạn, đồng thời giả sử bạn để ASM51 ổ đỉa C:\ có sau: C:\ vidu.asm ASM51.EXE MOD152 MOD154 MOD252 MOD44 MOD451 MOD452 MOD51 MOD512 MOD515 MOD517 MOD52 MOD521 MOD552 MOD652 MOD751 MOD752 The Cross Assembler Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the Source file for the program itself $MOD152 control $MOD154 control $MOD252 control $MOD44 control $MOD451 control $MOD452 control $MOD51 control $MOD512 control $MOD515 control $MOD517 control $MOD52 control $MOD521 control $MOD552 control $MOD652 control $MOD751 control $MOD752 control PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com MOD851 - 47 - Source file for the $MOD851 control Sau bạn mở cừa sổ MS-DOS gõ dòng lệnh y sau bạn file có tên là: vidu.hex , dòng lênh sau : C:\asm51 vidu.asm C:\asm51 vidu Như bạn hoàn thành xong công việc biên dịch file >ASM sang file >HEX , bây giời bạn có rhể lấy file nạp vào cho chip vi xử lý bạn 3) Phần Mềm Này Kiếm Ở Đâu : Các bạn vào trang Web để tải sử dụng miển phí hoàn toàn : http://vixuly.cjp.net hay bạn liên hệ phòng Photo B1 (dưới cầu thang) trường ĐH.Bách Khoa Tp.HCM có chép săn đỉa mềm 1,44Mb B) PHẦN MỀM TASM Tiếp theo xin giới thiệu bạn phần mềm khác biên dịch file ASM sang file.HEX hay khác phần mềm : TASM 1) Nội Dung Các File Có Trong Bộ TASM Bộ Tasm chứa file có tên Tasminst có nghóa Tasm instal ( tệp tin để cài đặt) bạn click chuột lên tệp tin tự đông tự giải nén cài đặt dung lượng tệp tin Tasminst 126Kb , bạn vào trang Web để tải sử dụng miển phí hoàn toàn : http://vixuly.cjp.net hay bạn liên hệ phòng Photo B1 (dưới cầu thang) trường ĐH.Bách Khoa Tp.HCM 2) CÁCH SỬ DỤNG : Bạn thoát khỏi windows –ra môi trương DOS cách từ môi trường Windows98 , bạn click chuột vào Star menu chọn mục Program chọn tiếp MS-DOS prompt , bạn môi trường DOS PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 48 - Sau bạn thay đổi lại đường dẫn , thư mục để đến nơi chúa file TASM để bắt đầu biên dịch cáh sử dụng dòng lệnh sau : tasm -51 *.asm *.hex Tôi giả sử , bạn để file phần mềmTASM file ledtest.asm ổ đỉa C:\ chẳng hạn , bạn gõ dòng lện sau để biên dịch file ledtest.asm : C:\ tasm -51 ledtest.asm ledtest.hex Kết việc làm bạn tạo file : ledtest.hex Xong , bây giời bạn đóng cửa sổ: DOS prompt để trở lại với windows Hãy lưu ý : Bạn tạo tệp tin kiểm tra lổi lập trình trước tạo tệp tin nạpcho vi xử lý , cách bạn tạo file có đuôi Lst , tệp tin kiểm tra lổi cú pháp lệnh chương trình bạn , cho bạn thấy lổi sai để bạn kịp thời sửa chữa Khi bạn gõ câu lệnh sau: tasm -51 *.asm *.obj Kết ta tệp tin :*.Obj *.Lst Cũng với giả sử ta gõ sau : C:\ tasm -51 ledtest.asm ledtest.obj Sau bạn hai tệp tin : ledtest.obj ledtest.Lst bạn mở file Ledtest.Lst Notepad hay Word để xem kết kiểm tra.! PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Lê Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 49 - Ngoài phần mềm Tasm hỗ trợ cho số loại Vi Xử Lý khác , tuỳ theo loại mà bạn gõ dòng lệnh cho phù hợp , xin chép nguyên tiếng anh hhö sau : TASM - Table Driven Assembler Version 2.8 assemble the code in a file called source.asm, one would enter: tasm tasm tasm tasm tasm tasm tasm tasm tasm -48 -65 -51 -85 -80 -05 -68 -70 -32 source.asm source.asm source.asm source.asm source.asm source.asm source.asm source.asm source.asm for for for for for for for for for an a an an a a a a a 8048 assembly 6502 assembly 8051 assembly 8085 assembly Z80 assembly 6805 assembly 6800/6801 assembly TMS7000 assembly TMS32010 assembly The file name that the tables are read from is formed by taking the digits specified after the '-' and appending it to 'TASM' then appending the '.TAB' extension Thus, the '-48' flag would cause the tables to be read from the file 'TASM48.TAB' It is possible to designate tables by non numeric part numbers if the '-t' flag is used For example, if a user built a table called TASMF8.TAB then TASM could be invoked as follows: tasm -tf8 source.asm Each option flag must be preceded by a dash Options need not precede the file names, however The various options are described below: C- MỘT PHẦN MỀM BIÊN DỊCH KHÁC : Trong đỉa SoftWare điện 2003 môn điện tử thấy có giới thiệu dịch –nhưng tên , có đầy đủ tệp tin cần dùng thư muc DichASM , bạn mua sử dụng : Cách sử duïng : Day la mot so phan mem de bien dich asm sang hex hoac bin Cho ho ic intel Chay tren moi truong dos Cac ban phai su dung ket hop cac phan mem voi 1/ ban lap trinh assembler bang notepad hoac nc-edit (nhan shift +f4) 2/ sau luu lai file : *.asm 3/ su dung "x8051" de kiem tra loi va bien dich : *.obj 4/ su dung "link" de bien dich *.obj *.hex 5/ nhu vay ban da co file *.hex de nap vao ic hay rom Neu may nap cua ban can file *.bin thi ban dung "hexbin2" de chuyen doi Ngoài phần mềm Assemblers vs dung lượng 40 kb nhiều phần mềm biên dịch hay khác giới thiệu bạn tập 2” Hướng dẫn giao tiếp vi xử lý với máy tính “ , xin mời bạn đón đọc! Xin chúc bạn vạn thành công ! PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Lê Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 50 - VẤN ĐỀ 10: CÁC PHẦN MỀM MÔ PHỎNG VI XỬ LÝ 1) Phần mềm mô 8051 JSIM-51 miển phí hoàn toàn Jens Altmann Dung lượng : 395 kb 3) PHẦN MỀM MÔ PHỎNG Emulator 8051 V1.0 Phần mềm Emulator 8051 V1.0 TS Controls phần mềm mô cho 8051 Hiện có nhiều đỉa Software điện tử, bạn mua nó, thông thương có tên Ts_Contols 8051 Dung lượng: 963kb Lưu ý : Một số phần mềm lớn đưa lên mạng , số phần mềm có bán tiệm Software giới thiệu , bạn chịu khó mua , liên hệ riêng với tôi gởi cho bạn ! Giao diện phần mềm sau : PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 51 - 3) Ngoaøi phần mềm mô khác chạy môi trư6ờng Dos sau: Emily 8051/8052 V1.7 Dunfield Development Systems phần mềm mô cho 8051 for DOS Dung lượng : 357 kb PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 52 - Vấn đề 11: HƯỚNG DẪN SỬ DỤNG PHẦN MỀM EZ4.0 CHO MẠCH NẠP VI XỬ LÝ I-Giao diện EZ4.0 sau: Option Option Command Command II - CAÙCH SỬ DỤNG: Optin 1: Khi bạn nút chip bạn khoá lại , sau bạn nạp lại chọn option , theo tôilà không chọn tốt để nạp nhiều lần ! Option 2: Khi bạn nút việc kiểm tra sau nạp xong diễn nhanh , bạn có chọn hay không tuỳ ý chẳng ! Command 1: Chức Command nạp chương trình file.Hex vào cho vi xử Lý Bạn nhấn vào command để đến nơi chứa file ,Hex cần nạp để tiến hành trình nạp Lưu ý : Khi bạn chọn Command điều xoá nội dung cũ vi xử lý có , để dọn đường chuẩn bị nạp nội dung vào , công việc làm tự động hoàn toàn Command 2: Chức đọc ngược nội dung có vi xử lý bạn lại dạng file Hex Hãy nhớ : Phần mềm dùng chung cho hai mạch nạp AT89C51 At89C2051 , việc nhận dạng làm tự động hoàn toàn PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 53 - PHẦN 4: CÁC MẠCH ĐIỆN VI XỬ LÝ - LÝ THÚ- ĐƠN GIẢN CHO NGƯỜI MỚI BẮT ĐẦU HỌC LẬP TRÌNH CÙNG VI XỬ LÝ Vấn đề 12 – MẠCH 1: Hãy Làm Một Đèn Led Chớp Với- 8951 Bước 1) Bước làm mạch điện Tại thời điểm bạn phải làm quen với việc sử dụng linh kiện ( Ở có điện trở , tụ , thạch anh 12Mhz đèn Led , tất có bán chợ Nhật Tảo ) Bạn đặt linh kiện lên breakboard dùng dây điện nối chúng lại ( breakboard bày bán nhiều chợ Nhật Tảo bạn mua để làm thí nghiệm !) Sự thiết kế dùng với vi điều khiển 89c51 Điều mà muốn làm mạch :Làm cho Led chớp Bằng việc làm bạn học chương trình xử lý viết ngôn ngữ Assembly sau bạn biết cách nạp file chương trình vào cho Chip vi điều khieån PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 63 - Bộ nguồn 5V bạn lắp ráp sau : Như bạn thấy phía góc phải breakborad ngõ vào 9VDC Đến xem xong thực hành thứ Xin Chúc Các Bạn Thành Công Khi Làm Mạch Này Và Tôi Hy Vọng Nó Sẽ Mang Lại Cho Bạn Nhiều Niềm Say Me â Mới !… Lê Duy Phi Xin mời bạn đón đọc ví dụ thứ viết xong: “ Hướng Dẫn Giao Tiếp Vi Xử Lý Với Máy Tính” giúp bạn biết cáh giao tiếp vi xử lý máy tính thông qua phần mềm Visual Basic , đông thời có đề cặp nhiều ví dụ mạch điện lý thú “ Máy đo nhiệt độ hiển thị Led , Máy đo nhiệt độ hiển thị Máy Tính , Làm bảng đèn chữ chạy đơn giản , Làm bảng đèn chữ chạy giao tiếp với Máy Tính , Mạch đo điện áp giao tiếp máy tính ( đề tài mà đạt giải ” thi sinh viên sáng tạo lần 1” , mạch điện vi xử lý khác giới thiệu sau , xin bạn đón đọc ! Các tài liệu liên quan xin bạn đến phòng Photo B1- đh.Bách Khoa PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 64 - Vấn đề 14 - MẠCH 3: LÀM CÒI HỤ VỚI HAI MỨC ÂM ĐIỆU KHÁC NHAU Hãy lưu ý : Rằng , thao tác hướng dẫn kỹ ví dụ –ở giới thiệu cô đọng vấn đề mà chủ yếu sơ đồ giải thuật cho bạn mà ! I-SƠ ĐỒ MẠCH: Lưu ý : Loa mắc nối tiếp với điện trở 500 ohm bạn mua loại loa Buze đen –tròn chợ Nhật Tảo PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt màu Lê Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 65 - II- CHƯƠNG TRÌNH CHO MẠCH ĐIỆN : ;************************************************************************** ;* ;* Speaker Sounds - Weird * ;* ;************************************************************************** ; ; VARIABLES AND CONSTANTS ; ; ;************************************************************************** ; ; RESET ;reset routine ORG AJMP 0H START ;locate routine at 00H ;jump to START ; ;************************************************************************** ; INITIALIZE: ;set up control registers ; MOV TCON,#00H MOV TMOD,#00H MOV PSW,#00H MOV IE,#00H ;disable interrupts RET ; ;************************************************************************** ; Real code starts below The first two routines are for delays ;************************************************************************** ; DELAYMS: ;millisecond delay routine ; ; MOV R7,#00H ;put value of in register R7 LOOPA: INC R7 ;increase R7 by one (R7 = R7 +1) MOV A,R7 ;move value in R7 to Accumlator (also known ;as A) CJNE A,#0FFH,LOOPA ;compare A to FF hex (256) If not equal go ;to LOOPA RET ;return to the point that this routine was ;called from ; ;************************************************************************** ; DELAYHS: ;half second delay above millisecond delay ; ; MOV R6,#080H ;put in register R6 (R6 = 0) MOV R5,#002H ;put in register R5 (R5 = 2) LOOPB: INC R6 ;increase R6 by one (R6 = R6 +1) ACALL DELAYMS ;call the routine above It will run and ;return to here MOV A,R6 ;move value in R6 to A JNZ LOOPB ;if A is not 0, go to LOOPB DEC R5 ;decrease R5 by one (R5 = R5 -1) MOV A,R5 ;move value in R5 to A JNZ LOOPB ;if A is not then go to LOOPB RET PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 66 - ; ;************************************************************************** ; TONE_ONE: ; MOV R4, #00H MOV R3,#002H ;put in register R3 LOOPC: INC R4 ;increase R4 by one ACALL DELAY ;Delay ACALL DELAYMS DEC R2 ; This time decrement R2 to make tone go ;down in frequency CPL P1.0 MOV A,R4 ;move value in R4 to A JNZ LOOPC ;if A is not 0, go to LOOPC DEC R3 ;decrease R3 by one MOV A,R3 ;move value in R3 to A JNZ LOOPC ;if A is not then go to LOOPC RET ; ;************************************************************************** ; TONE_TWO: ; MOV R4, #00H MOV R3,#002H ;put in register R3 LOOPD: INC R4 ;increase R4 by one ACALL DELAY ;Delay ACALL DELAYMS INC R2 ; INCrement R2 to make frequency go up CPL P1.0 MOV A,R4 ;move value in R4 to A JNZ LOOPD ;if A is not 0, go to LOOPC DEC R3 ;decrease R3 by one MOV A,R3 ;move value in R3 to A JNZ LOOPD ;if A is not then go to LOOPC RET ; ;************************************************************************** ; DELAY: ; MOV A, R2 MOV R7,A ;put value of R2 in register R7 LOOPE: INC R7 ;increase R7 by one (R7 = R7 +1) MOV A,R7 ;move value in R7 to Accumlator (also known ;as A) CJNE A,#0FFH,LOOPE ;compare A to FF hex (256) If not equal go ;to LOOPA RET ;return to the point that this routine was ;called from ; ;************************************************************************** START: ;main program (on power up, program starts ;at this point) ACALL INITIALIZE ;set up control registers LOOP: ACALL TONE_ONE ACALL TONE_TWO AJMP LOOP ;go to LOOP(always jump back to point ;labeled LOOP) END ;end program PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 67 - Vấn đề 15 - MẠCH 4: HÃY LÀM : ĐỒNG HỒ BÁO GIỜ ĐIỆN TỬÛ I-GIỚI THIỆU: Hiện có nhiều dự án ứng dụng Led đoạn trở nên phổ biến , xin giới thiệu ứng dụng Led đoạn cho bạn tham khảo mà thân làm , dễ làm bạn không ngại khó khăn Sau ráp xong kiểm tra kỹ chạy II- SƠ ĐỒ MẠCH NHƯ SAU: Hình miêu tả sơ đồ mạch điện đồng hồ báo Ở Port1 (từ P1.0àP1.7) điều khiển cực dương Led đoạn Còn chân P3.0àP3.3 điều khiển cực âm chung Led đoạn Hãy lưu ý rằng: Cả Led loại âm chung ( hay gọi Catod chung) Do mua , bạn nhớ nói rõ cần mua “ Led Catod chung” dân chuyên nghiệp ( Đôi bạn nói Led âm chung có người không nhớ Led loại , nhớ với Led người ta hay gọi “Led Catod chung” hay ” Anod chung” , hai cách gọi catod âm cực nhau!) III- TÓM TẮT SỰ HOẠT ĐÔNG CỦA MẠCH: PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 68 - Bạn thấy chân P3.0 tới P3.3 có hai đường nối vào : Một đường nối đến transistor đương nối đến khoá nhấn (switch ) với chân P3.4 Điều có nghóa trình hiển thị đồng thời vi xử lý kiểm tra xem có khoá nhấn hay không Nếu có chân P3.4 xuống mức “thấp” Lúc vi xử lý xử lý theo chức phím mà nhấn Trong khoá có khoá điều chỉnh điều chỉnh phút, khoá dùng để tắt mở đèn mà điều khiển chân P3.7 thông qua rờ le-và điểm L N bạn nối vào nguồn điện xoay chiều 220 V, dó nhiên bóng đèn loại 220 V IV - SAU ĐÂY LÀ CHƯƠNG TRÌNH ĐƯCVIẾT BẰNG NGÔN NGỮ C /* CLOCK V1.0 89C2051 + 4-digit 7-SEG led + 4-key switch Simple Digital Clock demostrates scanning LED and key switch The clock has 1-bit output port P3.7 for driving AC load through MOC3040+triac The source program was compiled by Micro-C with optimize option * * * * * * * **** **** * * * * * **** * * * * * **** set HOUR set MIN **** * * * * * * * * * * * * * * * * * * * * **** **** time ON/OFF manual ON/OFF Copyright (c) 1999 W.SIRICHOTE */ #include c:\mc51\8051io.h #include c:\mc51\8051reg.h extern register char cputick; unsigned register char sec100,sec,sec5,min,hour,flag1,command,ACC,temp,opto; /* above must be defined as register for tiny model */ unsigned register char i,digit,buffer[4],onHour1,onMin1,offHour1,offMin1; register char key,delay,count1; char convert[10] = {0x3F,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f}; main() { opto = 0xff; cputick = 0; hour = 18; = 0; sec = 0; key = -1; flag1 = 0; onHour1 = 18; /* 18:30 turn lamp on */ onMin1 = 01; offHour1 = 18; /* 21:30 turn off */ offMin1 = 02; count1 = 0; buffer[0] = 0x40; buffer[1] = 0x40; buffer[2] = 0x40; PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 69 - buffer[3] = 0x40; serinit(9600); /* must be invoked for tiny model */ while(1) { while ( cputick < 1) scanLED(); cputick = 0; /* - the following tasks execute every 10ms */ time(); timeToBuffer(); blink(); offmsd(); keyexe(); keydelay(); comparetime(); /* -*/ } } /* ****************** change constant below for other X-tal ********/ time () /* update real-time clock */ { sec100++; if (sec100 >= 100) /* 100 * 10 ms = s */ {sec100 = 0; flag1 |= 0x05; /* set bit 0, bit */ temp = 50; sec++; if (sec >= 60) {sec = 0; flag1 |= 0x02; /* set bit */ min++; if (min >= 60) {min = 0; hour++; if (hour >= 24) {hour = 0; } } } } } scanLED() /* scan 4-digit LED and 4-key switch, if key pressed key = 0-3 else key = -1 */ { int i; digit = 0x08; key = -1; for( i = 0; i < 4; i++) /* 4-DIGIT scanning */ { P3 = ~digit & opto; /* send complement[digit] */ P1 = ~buffer[i]; /* send complement[segment] */ pause(1); /* delay a while */ P1 = 0xff; /* off LED */ if ((P3 & 0x10) == 0) /* if key pressed P3.4 became low */ PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com key = i; digit>>=1; - 70 - /* save key position to key variable */ /* next digit */ } } timeToBuffer() { buffer[0] = buffer[1] = buffer[2] = buffer[3] = convert[min%10]; convert[min/10]; convert[hour%10]; convert[hour/10]; } blink() { if((flag1 & 0x04) != 0) /* check bit if set decrement temp until zero */ {temp ; if (temp != 0) { buffer[1] |= 0x80; buffer[2] |= 0x80; } else( flag1 &= ~0x04); } } keyexe() { if (key != -1) { if ((flag1 & 0x80) == 0) /* within 0.5 sec after 1st press the following execution is not allowed */ { flag1 |= 0x80; delay = 50; switch(key){ case (0): /* key position */ manualOnOff(); /* service key */ break; case (1): /* key position */ savetimeOnOff1(); /* service key */ break; case (2): /* key position */ setmin(); /* service key */ break; case (3): /* key position */ sethour(); } } } } sethour() { hour++; if ( hour== 24) hour = 0; PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 71 - } setmin() { min++; sec = 0; if( == 60 ) = 0; } savetimeOnOff1() { count1++; if (count1 == 1) { onHour1 = hour; onMin1 = min; buffer[0] = 0x00; buffer[1] = 0x68; buffer[2] = 0x78; buffer[3] = 0x71; showOnce(); } else { count1 = 0; savetimeOff1(); } } savetimeOff1() { offHour1 = hour; offMin1 = min; buffer[0] = 0x63; buffer[1] = 0x63; buffer[2] = 0x78; buffer[3] = 0x71; showOnce(); } manualOnOff() { opto= ~opto | 0x7f; /* complement bit which in turn activates P3.7 */ if ((opto & 0x80) == 0) { buffer[0] = 0; buffer[1] = 0; buffer[2] = 0x68; buffer[3] = 0x78; showOnce(); } else { buffer[0] = 0; buffer[1] = 0x63; buffer[2] = 0x63; buffer[3] = 0x78; showOnce(); } } showOnce() { PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com CuuDuongThanCong.com https://fb.com/tailieudientucntt Leâ Duy Phi - http://vixuly.cjp.net duyphi@yahoo.com - 72 - int i; for(i=0;i

Ngày đăng: 04/09/2021, 15:07

Tài liệu cùng người dùng

Tài liệu liên quan