TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN VIỄN THÔNG VÀ TỰ ĐỘNG HOÁ LUẬN VĂN TỐT NGHIỆP TÊN ĐỀ TÀI: MẠCH VI ĐIỀU KHIỂN ĐA DỤNG DÙNG PIC16F84A Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu Sinh viên thực hiện: Giáo viên hướng dẫn: NGUYỄN HOÀNG HẢI Th.S PHẠM VĂN TẤN MSSV: 1980734 ĐIỆN TỬ 02 – K24 2003 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Chương I:GIỚI THIỆU I.1/MỤC TIÊU CỦA ĐỀ TÀI : Đề tài vào khảo sát ,tìm hiểu tính ưu việt họ vi điều khiển PIC mà cụ thể vi điều khiển PIC 16F84A,từ chổ nắm bắt đặc tính ,tiến hành thiết kế “Bộ Vi Điều Khiển Đa Dụng “ Nhiệm vụ cụ thể là: I.1.1/Thiết kế lắp ráp board mạch hệ thống,trong xử lí trung tâm IC vi điều khiển PIC 16F84A đồng thời thiết kế mạch nạp cho PIC board hệ thống để trao đổi liệu với máy tính qua cổng song song Vi điều khiển làm nhiệm vụ kiểm soát điều hành hoạt động hệ thống I.1.2/Vận dụng vi điều khiển thiết kế để thiết lập hai chương trình điều khiển :một chương trình điều khiển Motor bước chương trình điều khiển quang báo I.2/HƯỚÙNG GIẢI QUYẾT: Để hoàn tất nhiệm vụ trên,tiến trình thực phân thành bứơc sau: -Tìm hiểu lý thuyết liên quan đến IC vi điều khiển PIC 16F84A lý khácĐH liên Cần quan đế n đề@ tài.Tài liệu học tập nghiên cứu Trungthuyế tâmt phụ Họctrợliệu Thơ -Từ sở lý thuyết liên quan kết hợp với điều kiện cho phép để tiến hành thiết kế phần cứng cho hệ thống phần cứng cho board mạch ứng dụng -Chọn lựa ngôn ngữ lập trình dựa vào ứng dụng cụ thể mà thiết lập chương trình điều khiển hoạt động hệ thống I.2.1/GIẢI PHÁP PHẦN CỨNG: Vấn đề cần phải thiết kế vi điều khiển đa có khả giao tiếp với máy tính thiết bò ngoại vi khác.Nhưng nhớ không nhiều nên thời điểm thực công việc đònh ứng với phần mềm đònh đặt bên FLASHROM vi điều khiển,như để trở thành vi điều khiển đa dụng phải thiết kế phần cứng cho có khả kết nối với thiết bò ngoại vi khác Ứng với công việc,mỗi thiết bò ngoại vi kết nối vào ,ta phải thay đổi phần mềm điều khiển đặt FLASHROM tương ứng với thiết bò Một điểm cần quan tâm,một chương trình viết để nạp vào FLASHROM hẳn khó tránh khỏi lỗi ,nhất chương trình phức tạp,dung lượng lớn.Lúc bắùt buộc phải sửa chữa lại chương trình nạp lại việc bất tiện làm giảm tuổi thọ vi mạch Cùng lúc để giải vấn đề này,ta thưc theo giải pháp sau: SVTH: Nguyễn Hoàng Hải Trang I.1 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A *Hệ thống thiết kế cho dùng máy tính PC nhiệm vụ máy tính download chương trình xuống FLASHROM hệ thống ,giúp soạn thảo ,phiên dòch chương trình sang dang tập tin mã máy *Phần cứng hệ thống phải thoả mãn yêu cầu sau: -IC vi điều khiển PIC 16F84A làm xử lý trung tâm cho hệ thống -Mach nạp chip nằm board hệ thống I.2.2/GIẢI PHÁP PHẦN MỀM: Có nhiều ngôn ngữ có khả lập trình cho PIC hoạt động:Pascal, C,Visual Basic…Nhưng lựa chọn ngôn ngữ ASSEMBLY lập trình cho PIC 16F84A phần mềm MPLAB.Phần mềm có khả tự chuyển tập tin dạng hợp ngữ sang tập tin dạng mã máy,đồng thời MPLAB có trình mô để chạy thử chương trình trước nạp vào nhớ FLASHROM vi điều khiển Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu SVTH: Nguyễn Hoàng Hải Trang I.2 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Chương II:LÝ THUYẾT LIÊN QUAN II.1/ TỔNG QUAN VỀ VI ĐIỀU KHIỂN HỌ PIC: -PIC 16F84A họ vi điều khiển hệ mới.PIC viết tắt chữ “PERIPHERAL INTERFACE CIRCUIT”(họ vi điều khiển có chứa giao tiếp với thiết bò ngoại vi bên nó),ngoài chúng chứa biến đổi A/D việc thiết kế chúng trở nên đơn giản hơn.Mặt khác dòng xuất từ port tương đối lớn nên PIC nối trực tiếp với thiết bò ngoại vi có công suất nhỏ mà không cần đến khuếch đại dòng loại vi điều khiển khác.Hơn PIC tương thích với nhiều chuẩn nên giao tiếp với máy tính vi điều khiển qua chuẩn điện -PIC 16F84A loại VĐK bit có kiến trúc RISC,ở kiến trúc PIC có lệnh kiểu đònh vò mà lệnh thực CPU hoàn toàn phần cứng mà tốc độ hoạt động PIC nhanh loại vi điều khiển khác có cấu trúc CISC cấu trúc có tập lệnh qúa phức tạp có nhiều kiểu đònh vò nên cần có CPU chứa vi chương trình để thực chúng Tuy nhiên để lập trình cho PIC làm công việc phức tạp lập trình cho vi điều khiển có kiến trúc CISC điển AT 89C51 PIC 16F84A dùng 14 bit cho lệnh lệnh từ dùng bit cho byte liệu -FLASHROM a PIC dùngThơ để chương đượtập c viếvà t.Kể từ nhớ Trung tâm Học liệucủĐH Cần @a Tài liệutrình học nghiên cứu dùng kỹ thuật FLASH đời lập trình xoá nhiều lần làm cho VĐK phù hợp với phát triển thiết bò ảnh hưởng đến độ bền VI ĐIỀU KHIỂN Đòa 0000h dành cho RESET 0004h dành cho VECTOR NGẮT -EEPROM nhớ cần để lưu trữ liệu quan trọng nguồn.Nếu EEPROM liệu bò nguồn phải thiết lập lại từ đầu ,yếu tố làm cho vi điều khiển dễ dàng kết nối với thiết bò ngoại vi -RAM nhớ liệu dùng chương trình suốt tiến trình nó.Trong RAM chứa kết đạt hay liệu tạm thời mà không đủ để chạy thiết bò -Các PORT PIC ta đònh nghóa chúng ngõ vào hay tuỳ ý dựa vào TRIS A TRIS B để giao tiếp với thiết bò ngoại vi -Bộ đònh thời gian trống TMRO ghi bit bên VĐK làm việc độc lập với chương trình.Tuỳ vào chia xung prescaler mà TMRO có tăng thích hợp từ 0-255 trở giá trò 0.Đặt biệt PIC có thêm WATCHDOG tự động RESET chương trình có cố -CPU PIC dùng để kết nối phận vi điều khiển lại với tần số hoạt động rộng 32KHZ-20MHZ -PIC có mode ngắt: SVTH: Nguyễn Hoàng Hải Trang II.1 Luận văn tốt nghiệp B Mạch vi điều khiển đa dùng PIC16F84A +Ngắt tràn từ đònh thời gian trống TMRO +Ngắt từ chân số VĐK +Sự kết thúc việc viết liệu vào EEPROM tạo thành ngắt +Ngắt nhận thay đổi mức logic chân 4,5,6 PORT II.2 /BÊN TRONG VI ĐIỀU KHIỂN PIC 16F84A : II.2.1/ĐẶC ĐIỂM: -PIC 16F84A VI ĐIỀU KHIỂN bit có kiến trúc RISC, FLASHROM chúng có 1024*14 bit vò trí nhớ -PIC 16F84A có 64 byte EEPROM 68 byte RAM -PIC 16F84A có PORT PORT A PORT B:PORT A có bit,PORT B có bit -FREE TIMER đònh thời PIC 16F84A mà đặc biệt PIC 16F84A có thêm WATCHDOG để tự động RESET he äthống có cố - CPU cã vai trß nèi c¸c khèi cđa vi ®iỊu khiĨn II.2.2:VỊ TRÍ CỦA CÁC CHÂN VI ĐIỀU KHIỂN: IC PIC16F84A cã tỉng céng 18 ch©n Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu H.II.1:C¸c ch©n cđa vi ®iỊu khiĨn PIC 16F84A Ch©n sè 1: RA2 ch©n thø cđa port A Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 2: RA3 ch©n thø cđa port B Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 3: RA4 ch©n thø cđa port B Thªm chøc n¨ng TOCK1 nh timer Ch©n sè 4: MCLR ngâ vµo Reset vµ ®iƯn ¸p n¹p tr×nh Vpp cđa mét vi ®iỊu khiĨn Ch©n sè 5: cung cÊp ®iƯn thÕ mass Vss Ch©n sè 6: RB0 ch©n cđa port B Ngâ vµo ng¾t(interrupt) Ch©n sè 7: RB1 ch©n thø nhÊt cđa port B Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 8: RB2 ch©n thø cđa port B Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 9: RB3 ch©n thø cđa port B Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 10: RB4 ch©n thø cđa port B Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 11: RB5 ch©n thø cđa port B Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 12 : RB6 ch©n thø cđa port B ’Clock’ ®êng chÕ ®é ch¬ng tr×nh Ch©n sè 13 : RB7 ch©n thø cđa port B ‘Given’ ®êng chÕ ®é ch¬ng tr×nh Ch©n sè 14: Vdd cung cÊp ngn cho vi ®iỊu khiĨn Ch©n sè 15: OSC2 ch©n ®ỵc nèi víi bé dao ®éng Ch©n sè 16: OSC1 ch©n ®ỵc nèi víi bé dao ®éng SVTH: Nguyễn Hoàng Hải Trang II.2 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Ch©n sè 17: RA0 ch©n cđa port A Kh«ng thªm chøc n¨ng kh¸c Ch©n sè 18: RA1 ch©n thø cđa port A Kh«ng thªm chøc n¨ng kh¸c II.2.3 BỘ XỬ LÝ TRUNG TÂM (CPU ): II.2.3.1 BỘ XỬ LÝ TRUNG TÂM : Bé xư lý trung t©m lµ bé n·o cđa vi ®iỊu khiĨn PhÇn ®ã cã nhiƯm vơ t×m kiÕm vµ nhËn ®ỵc lƯnh ®óng ®Ĩ ®äc lƯnh, thùc hiƯn ,vµ ci cïng kÕt thóc lƯnh H.II.2:C¸c bus nội cđa bé xư lý trung t©m: Bé xư lý trung t©m nèi tÊt c¶ c¸c phÇn cđa vi ®iỊu khiĨn.nã cã chøc n¨ng quan träng ®äc lƯnh cđa ch¬ng tr×nh Khi lËp tr×nh viªn viÕt mét ch¬ng tr×nh,nh÷ng lƯnh Trung tâm®iỊu Học Cần Thơ liệu nghiên cứu rÊt ®¬n khiểliệu n nhĐH MOVLW 0x20 @ TuyTài nhiªn, bªnhọc trongtập mét vi ®iỊu khiĨn kh«ng hiĨu lƯnh ®ã, nh÷ng tõ mét lƯnh cÇn ph¶i chun sang mét chi vµ ®ỵc gäi lµ ‘m· lƯnh’ (instruction code) M· lƯnh ®ỵc ®äc nhê bé xư lý trung t©m Chóng ta cã thĨ chän tõ b¶ng tËp lƯnh ®Ĩ viÕt ch¬ng tr×nh II.2.3.2/ BỘ LUẬN LÝ TOÁN HỌC(ALU): Bé luận lý to¸n häc cã nhiƯm vơ thi hµnh thao t¸c nh céng, trõ, ghi dÞch vµ thao t¸c logic.PIC16F84 chøa ®ùng mét bé luận lý to¸n häc 8-bit vµ ghi W(work) 8-bit H.II.3:Bé luận lý to¸n häc vµ c¸ch lµm viƯc SVTH: Nguyễn Hoàng Hải Trang II.3 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Trong nh÷ng lƯnh cã hai to¸n h¹ng, thêng mét to¸n h¹ng lµ ghi W(work) vµ mét to¸n h¹ng kh¸c lµ mét ghi hc mét h»ng GPR(General Purposes Registers) lµ ghi thêng dïng, vµ SFR (Special Function Registers) lµ ghi hµm ®Ỉc biƯt Trong nh÷ng lƯnh víi mét to¸n h¹ng, mét to¸n h¹ng ®ã lµ ghi W hc mét nh÷ng ghi Nh sù céng thªm chøc n¨ng tÝnh to¸n vµ luận lý, ALU ®iỊu khiĨn nh÷ng bit tr¹ng th¸i( nh÷ng bit t×m thÊy ghi tr¹ng th¸i STATUS register) Thi hµnh mét sè lƯnh t¸c ®éng ®Õn bit tr¹ng th¸i, mµ phơ thc vµo kÕt qu¶ cđa chÝnh nã Sù phơ thuộc lƯnh ®ỵc thi hµnh, ALU cã thĨ t¸c ®éng gi¸ trÞ cđa C(Carry), DC (Digit Carry), vµ Z (Zero) lµ nh÷ng bit ghi tr¹ng th¸i (STATUS register) Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu H.II.4:Nh÷ng ®êng nèi bªn ngoµi c¸c khèi chi tiÕt cđa vi ®iỊu khiĨn PIC16F84 II.2.3.3/ THANH GHI TRẠNG THÁI ( STATUS register): Bit C (Carry) Transfer Bit nµy t¸c ®éng sù ho¹t ®éng c¸c phÐp to¸n céng, trõ vµ ghi dÞch Bit ®ã ®ỵc ®Ỉt(set) mét gi¸ trÞ lín h¬n trõ mét gi¸ trÞ nhá h¬n, vµ ®ỵc ®Ỉt l¹i (reset) mét sè nhá h¬n trõ mét sè lín h¬n = chun qua tõ kÕt qu¶ cđa bit lín nhÊt = chun qua kh«ng x¶y Bit C ®ỵc t¸c ®éng bëi nh÷ng lƯnh : ADDWF, ADDLW, SUBLW, SUBWF Bit DC (Digic Carry) DC Transfer Bit t¸c ®éng bëi sù ho¹t ®éng cđa c¸c phÐp to¸n céng vµ trõ Kh«ng gièng nh bit C, bit nµy ®ỵc chun qua tõ kÕt qu¶ cđa bit thø phÐp to¸n SVTH: Nguyễn Hoàng Hải Trang II.4 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A = chun qua tõ kÕt qu¶ cđa bit thø = Chun qua kh«ng tån t¹i Bit DC th× ®ỵc t¸c ®éng c¸c lƯnh : ADDWF, ADDLW, SUBLW, SUBWF Bit Z (Zero bit) DÊu hiƯu cđa kÕt qu¶ lµ Bit nµy th× ®Ỉt (set) kÕt qu¶ cđa mét phÐp to¸n thi hµnh lµ = kÕt qu¶ b»ng 0 = kÕt qu¶ kh¸c Bit PD (Power-down bit) Bit ®ỵc ®Ỉt (set) ngn cung cÊp cho vi ®iỊu khiĨn lóc nã b¾t ®Çu ch¹y, sau mçi lÇn reset ỉn ®Þnh vµ sau thi hµnh lƯnh CLRWDT LƯnh SLEEP ®Ỉt l¹i (reset) bit nµy = sau ngn ®ỵc bËt = thi hµnh lƯnh SLEEP Bit TO (Time-out) Watchdog trµn Bit ®ỵc ®Ỉt (set) sau bËt ngn vµ thi hµnh lƯnh CLRWDT vµ lƯnh SLEEP Bit ®ỵc ®Ỉt l¹i (reset) chó gi÷ nhµ (watchdog) kÕt thóc chu kú cđa nã = trµn kh«ng x¶y = trµn x¶y Bit 6:5 RP1:RP0 (Register Bank Select bits) nh÷ng bit chän Bank ghi Hai bit nµy ë phÇn ®Çu ®Þa chØ cđa ®Þa chØ trùc tiÕp Nh÷ng ®Þa chØ ®ỵc nhí trùc tiÕp chØ cã bit, chóng cÇn cã h¬n mét bit ®Ĩ cã thĨ chØ ®Õn ®Þa chØ cđa 256 byte mµ vi ®iỊu khiĨn PIC16F84A cã Bit RP1 th× kh«ng ®ỵc dïng, nhng nã ®ỵc dïng ®Ĩ dù tr÷ cho viƯc më réng vi ®iỊu khiĨn 01 = bank I Trung tâm Học liệu 0.ĐH Cần Thơ @ Tài liệu học tập nghiên cứu 00 = bank Bit7 IRP (Register Bank Select bit) bit chän Bank ghi Bit cã vai trß lµ bit thø ®Þa chØ gi¸n tiÕp cđa RAM néi = bank vµ = bank vµ1 (tõ 00h ®Õn FFh) Thanh ghi tr¹ng th¸i chøa ®ùng bé tÝnh to¸n tr¹ng th¸i ALU (C, DC, Z), tr¹ng th¸i RESET (TO, PD) vµ nh÷ng bit chän bank cđa bé nhí (IRP, RP1, RP0) Sù suy xÐt chän bank bé nhí ®ỵc ®iỊu khiĨn bëi ghi ®ã, nã cã mỈt mçi bank Bank bé nhí sÏ ®ỵc th¶o ln nhiỊu h¬n ch¬ng tỉ chøc bé nhí Thanh ghi tr¹ng th¸i cã thĨ gëi tíi cho bÊt cø lƯnh nµo, víi bÊt cø ghi nµo II.2.3.4.THANH GHI TUỲ CHỌN (OPTION register): Bit 0:2 PS0, PS1,PS2 (Prescaler Rate Select bit) Ba bit ®ã ®Þnh nghÜa viƯc chän tèc ®é prescaler SVTH: Nguyễn Hoàng Hải Trang II.5 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Bảng II.1 Bit PSA (Prescaler Assignment bit) Bit nµy dïng ®Ĩ chän gi÷a TMRO vµ watchdog = prescaler ®ỵc chän ®Õn watchdog = prescaler ®ỵc chän ®Õn free timer TMRO Bit TOSE (TMRO Source Edge Select bit) Bit ngn chän c¹nh TMRO NÕu nã cho phÐp ®Ĩ trigger TMRO xung trun tíi tõ ch©n RA4/TOCKI, bit ®ã ®Þnh nhËn xung trun lµ c¹nh lªn hc c¹nh xng = c¹nh xng = c¹nh lªn Bit TOCS (TMRO Clock Source Select bit) bit chän ngn xung cho TMRO Ch©n nµy cho phÐp free timer t¨ng t×nh tr¹ng cđa nã tõ dao ®éng néi(1/4xung ®ång hå), hc tõ xung ngoµi ch©n RA4/TOCKI = xung ngoµi tõ ch©n RA4/TOCKI = 1/4 xung ®ång hå Bit INTEDG (Interrupt Edge Select bit) bit chän c¹nh ng¾t ®ỵc thùcĐH hiƯnCần th× bit ®ã sÏ méttập ng¾tvà sÏ ho¹t ®éng cứu Trung tâmng¾t Học liệu Thơ @®Þnh Tàic¹nh liệumµhọc nghiên ch©n RB0/INT = c¹nh lªn = c¹nh xng Bit RBPU (PORTB Pull-up Enable bit) bit cho phÐp kÐo lªn cao c¸c ch©n cđa portB Bit nµy bËt vµ t¾t nh÷ng ®iƯn trë kÐo lªn néi port B = t¾t nh÷ng ®iƯn trë kÐo lªn = bËt nh÷ng ®iƯn trë kÐo lªn II.2.3.5/ BỘ ĐỊNH THỜI CHÓ GIỮ NHÀ (WATCHDOG): §Ĩ hoµn thiƯn viƯc thùc hiƯn vi ®iỊu khiĨn chóng ta dïng chúng ®iỊu khiĨn Giả sư nh mét kÕt qu¶ cđa mét vµi sù cè vi ®iỊu khiĨn cđa chóng ta dõng thùc hiƯn ch¬ng tr×nh, hc lçi, nã b¾t ®Çu ho¹t ®éng kh«ng chÝnh x¸c H.II.5:Bộ Watchdog Nh vËy cố x¶y víi m¸y tÝnh, chóng ta phải reset để hệ thống lµm viƯc trë l¹i Tuy nhiªn, ë ®©y kh«ng cã nót reset vËy chóng ta cÇn mét khèi gäi lµ chã gi÷a nhµ (watchdog) Khèi nµy kh¸c free counter, n¬i mµ ch¬ng tr×nh chóng ta cÇn SVTH: Nguyễn Hoàng Hải Trang II.6 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A viÕt lªn mçi thêi gian nã thùc hiƯn chÝnh x¸c Trêng hỵp sù cè x¶y ra, sè sÏ kh«ng ®ỵc viÕt lªn, vµ có bé ®Õm (watchdog) sÏ reset vi ®iỊu khiĨn KÕt qu¶ ch¬ng tr×nh ho¹t ®éng trë l¹i chÝnh x¸c mµ kh«ng cÇn sù nom cđa bÊt cø mét II.2.4/ PORT: II.2.4.1/PORT: Port quy vµo mét nhãm ch©n vi ®iỊu khiĨn mµ ta cã thĨ lµm ®êng dÉn, hc chóng ta ®Ỉt lªn chóng vµ 1, hc ®äc tõ chóng t×nh tr¹ng hiƯn cã Theo vËt lý, port lµ mét ghi bªn vi ®iỊu khiĨn vµ ®ỵc nèi kÕt b»ng c¸c d©y dÉn ®Õn c¸c ch©n cđa vi ®iỊu khiĨn Port dïng ®Ĩ nèi kÕt gi÷a CPU vµ thÕ giíi bªn ngoµi Cã mét vµi ch©n cã hai chøc n¨ng nh :PA4/TOCKI cã chøc n¨ng lµ port thø cđa port A vµ ngâ vµo free count Chän mét hai chøc n¨ng ®ã ®ỵc ®Þnh bëi mét ghi Mét sù minh häa cho ®iỊu ®ã lµ bit thø TOCS ghi tïy chän(OPTION register) TÊt c¶ c¸c ch©n port cã thĨ ®Þnh nghÜa lµ ngâ vµo hc ngâ ra, tïy theo tøng dơng mµ ®Þnh c¸c ch©n port Mn ®Þnh nghÜa thø tù c¸c ch©n lµ ngâ vµo hc ngâ th× ta ®Ỉt hc lªn ghi TRIS NÕu ghi TRIS cã møc logic lµ th× ch©n port tương øng lµ ch©n ngâ Mçi port cã ghi TRIS thÝch hỵp Nh vËy, port A cã TRIS A ë ®Þa chØ 85h, vµ port B lµ TRIS B ë ®Þa chØ 86h Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu H.II.6:Tris A II.2.4.2 Port B: Port B cã tÊt c¶ ch©n Thanh ghi dµnh riªng ®Ĩ ®iỊu khiĨn nã lµ TRIS B ë ®Þa chØ 86h Sù ®Ỉt mét bit ghi TRIS B ®Ĩ ®Þnh nghÜa ch©n port B t¬ng øng Mçi ch©n port B cã ®iƯn trë néi ®Ĩ kÐo lªn møc cao §iƯn trë ®ã cã thĨ ®iỊu khiĨn b»ng c¸ch ®Ỉt l¹i (reset) bit thø RBPU ghi tïy chän (OPTION register) §iƯn trë kÐo lªn th× tù ®éng t¾t ch©n port ®ỵc ®Þnh nghÜa nh lµ ngâ Bèn ch©n port B RB7 : RB4 cã thĨ trë thµnh c¸c ch©n ng¾t c¸c ch©n nµy thay ®ỉi tr¹ng th¸i tõ logic sang logic ChØ cã nh÷ng ch©n ®Þnh nghÜa lµ ngâ vµo míi cã thĨ lµ c¸c ch©n ng¾t( ch©n RB7 : RB4 ®Ịu ®ỵc ®Þnh nghÜa lµ ngâ vµo, th× ng¾t míi ®ỵc sinh ra) VÝ dơ: clrf STATUS ;chän Bank0 clrf PORTB ;PORTB=0 bsf STATUS ;chän Bank1 movlw 0x0F ;®Þnh nghÜa ngâ vµ ngâ vµo SVTH: Nguyễn Hoàng Hải Trang II.7 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A D No 1000? Yes No 0100 ? No Right ? Yes Yes No Right ? Đònh data CW (0100) Yes Đònh data CCW (1000) Đònh data CCW (0001) Đònh data CW (0010) Bắt đầu Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu No 0010 ? Yes No 0001 ? No Right ? Yes Yes No Right ? Đònh data CW (0001) Yes Đònh data CCW (0100) Đònh data CCW (0010) Đònh data CW (1000) Đònh data CW (1000) Bắt đầu SVTH: Nguyễn Hoàng Hải Trang IV.31 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A IV.3.3/Mà NGUỒN CHƯƠNG TRÌNH: ; ************************************************************** ; ; Stepper Motor Controller ; ; ************************************************************** List p = “pic16f84a” ; xác đònh vi điều khiển #include “P16F84A.INC” ; khai báo thư viên vi điều khiển CONFIG _HS _OSC & _WDT _OFF & _PWRTE _ON & _CP _OFF ; đặt thông số cho dao động, đònh thời ; ********************* Đònh nghóa nhãn *********************** cblock h ‘0c’ mode ; mode điều khiển ; = stop = right = left count1 ; đếm chờ count2 ; đếm chờ (1 ms) endc rb0 tâm equ Học liệu ĐH Cần Thơ ; châ a portB Trung @n RB0 Tài củ liệu học tập nghiên cứu rb1 rb2 rb5 rb7 equ equ equ equ ; chân RB1 portB ; chân RB2 portB ; chân RB5 portB ; chân RB7 portB ; ******************** Bắt đầu chương trình *********************** org ; reset đếm chương trình goto init ; nhảy tới tiến trình đặt giá trò đầu org ; chương trình gọi ngắt clrf intcon ; xóa ghi ngắt ; ***************** Tiến trình đặt giá trò đầu ********************* init bsf status, rp0 ; chuyển sang nhớ Bank1 clrf trisa ; set toàn PortA Out movlw b’00100111’ ; set chân RB0, 1, 2, 5= In, RB7= Out movwf trisb ; set PortB movlw b’10000000’ ; set RBPU = (Off) movwf option_reg ; set ghi option, RBPU = bcf status, rp0 ; chuyển sang nhớ Bank0 SVTH: Nguyễn Hoàng Hải Trang IV.32 Luận văn tốt nghiệp clrf clrf clrf movlw movwf bsf btfsc goto Mạch vi điều khiển đa dùng PIC16F84A mode count1 count2 b’00001000’ porta portb, rb7 portb, rb5 $-1 ; set mode = Stop ; xóa đếm ; xóa đếm ; set giá trò đầu cho PortA ; xuất PortA ; đặt chân RB7 = ; chân RB5 = chưa ? ; chưa Chờ start ; **************** Kiểm tra điều kiện switch ****************** btfsc portb, rb1 ; switch STOP = On ? goto check1 ; no Kiểm tra switch clrf mode ; yes đònh mode Stop (mode = 0) bcf portb, rb4 bsf portb, rb3 bsf portb, rb6 goto drive ; nhảy đến tiến trình điều khiển check1 btfsc portb, rb2 ; switch RIGHT = On ? goto check2 ; no kiểm tra switch movlw d’1’ ĐH Cần Thơ ; yes Righttập (mode 1) Trung tâm Học liệu @Đònh Tài mode liệu học và=nghiên movwf mode ; lưu mode bsf portb, rb4 bsf portb, rb3 bsf portb, rb6 goto drive ; nhảy đến tiến trình điều khiển check2 btfsc portb, rb0 ; switch LEFT = On ? goto drive ; no nhảy đến tiến trình điều khiển movlw d’2’ ; yes Đònh mode Left (mode = 2) bsf portb, rb4 bcf portb, rb3 bsf portb, rb6 movwf mode ; lưu mode cứu ; ****************** Điều khiển motor *************************** drive movf mode, w ; đọc mode bz start ; mode = stop Trở từ đầu bsf portb, rb7 ; đặt chân RB7 = btfsc portb, rb5 ; chân RB5 = chưa ? SVTH: Nguyễn Hoàng Hải Trang IV.33 Luận văn tốt nghiệp goto movlw movwf loop call decfsz goto bcf btfss goto movf sublw bnz movf sublw bz movlw goto ; drive1 movlw gotoHọc Trung tâm ; -drive2 movf sublw bnz movf sublw bz movlw goto ; drive3 movlw goto ; drive4 movf sublw bnz movf Mạch vi điều khiển đa dùng PIC16F84A $-1 d’5’ count1 timer count1, f loop portb, rb7 portb, rb5 $-1 porta, w b’00001000’ drive2 mode, w d’1’ drive1 b’00000001’ drive_end b’00000100’ drive_end liệu ĐH Cần ; chưa Chờ ; đặt vòng đếm (5 ms) ; lưu vòng đếm ; gọi chương trình chờ ms ; đếm ; chưa xong Tiếp tục ; đặt chân RB7 = ; chân RB5 = chưa ? ; chưa Chờ ; đọc PortA ; kiểm tra vò trí (0101) motor ; không vò trí nhảy đến drive2 ; đọc mode ; kiểm tra mode (Right) ; mode = Right nhảy đến drive1 ; mode = Left Đònh data CCW (1001) ; xuất tín hiệu điều khiển Thơ @ Tài liệu học tập nghiên cứu porta, w b’00000100’ drive4 mode, w d’1’ drive3 b’00001000’ drive_end ; đọc PortA ; kiểm tra vò trí (0110) motor ; không vò trí Nhảy đến drive4 ; đọc mode ; kiểm tra mode (Right) ; mode = Right Nhảy đến drive3 ; mode = Left Đònh data CCW (1010) ; xuất tín hiệu điều khiển b’00000010’ drive_end ; mode = Right Đònh data CW (1010) ; xuất tín hiệu điều khiển porta, w b’00000010’ drive6 mode, w ; đọc PortA ; kiểm tra vò trí (1010) motor ; không vò trí Nhảy đến drive6 ; đọc mode SVTH: Nguyễn Hoàng Hải Trang IV.34 Luận văn tốt nghiệp sublw bz movlw goto ; drive5 movlw goto ; -drive6 movf sublw bnz movf sublw bz movlw goto ; drive7 movlw Trung tâm Học goto ; -drive8 movlw drive_end movwf goto Mạch vi điều khiển đa dùng PIC16F84A d’1’ drive5 b’00000100’ drive_end ; kiểm tra mode (Right) ; mode = Right Nhảy đến drive5 ; mode = Left Đònh data CCW (0110) ; xuất tín hiệu điều khiển b’00000001’ drive_end ; mode = Right Đònh data CW (1001) ; xuất tín hiệu điều khiển porta, w b’00000001’ drive8 mode, w d’1’ drive7 b’00000010’ drive_end ; đọc PortA ; kiểm tra vò trí (1001) motor ; không vò trí Nhảy đến drive8 ; đọc mode ; kiểm tra mode (Right) ; mode = Right Nhảy đến drive7 ; mode = Left Đònh data CCW (1010) ; xuất tín hiệu điều khiển b’00001000’ ; mode = Right liệu ĐH Cần Thơ @ Tài liệònh họcdata tậpCW và(0101) nghiên cứu drive_end ; xuất tín hiệu điều khiển b’00001000’ ; quay vò trí 0101 porta start ; xuất tính hiệu điều khiển ; trở từ đầu ; ************* Chương trình chờ ms ************************ timer movlw d’200’ ; đặt vòng đếm movwf count2 ; lưu vòng đếm tmlp nop ; làm trễ nop decfsz count2, f ; đếm goto tmlp ; chưa xong Tiếp tục return ; xong Kết thúc ; *************************************************************** ; END of Stepper Motor Controller SVTH: Nguyễn Hoàng Hải Trang IV.35 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A ; *************************************************************** end IV.4/LẬP TRÌNH PHẦN MỀM ĐIỀU KHIỂN QUANG BÁO: IV.4.1/CÁC TIẾN TRÌNH ĐIỀU KHIỂN: IV.4.1 1/TIẾN TRÌNH ĐẶT GIÁ TRỊ ĐẦU: Các chân PORT A PORT B dùng để xuất tín hiệu điều khiển Chọn đònh thời TMRO(256) sử dụng xung nội,đặt điều chỉnh thời gian quét,kích thước EEPROM cho phép ngắt tràn IV.4.1.2/TIẾN TRÌNH HIỂN THỊ DỮ LIỆU: Quang báo quét từ bên phải sang bên trái với tốc độ 26ms∗16 ,vì tốc độ nhanh nên ta đặt thêm đếm để trì tốc đo hiển thòä LED IV.4.1 3/TIẾN TRÌNH NGẮT: Ngắt xãy đònh thời TMRO bò tràn,đòa ghi ngắt h’0004’.Trong bit TOIF ghi INTCON lên mức đòa chương trình sau ngắt quay lưu ngăn xếp ,lúc GIE ghi INTCON tự động xuống mức 0.Khi bước vào tiến trình ngắt trước tiên ta Trung liệu ghi ĐHW,STATUS Cần Thơvà@ vàvànghiên phảitâm save Học sauTài liệu liệhọc u đượtập c dòch thay thếcứu xong kết thúc tiến trình ngắt,trước kết thúc tiến trình ngắt ghi W,STATUS bò save bắt đầu ngắt trả giá trò trở lại đồng thời trở chương trình chính.còn TMRO không bò tràn chương trình quay đặt giá trò đầu IV.4.1 4/TIẾN TRÌNH DỊCH VÀ THAY THẾ DỮ LIỆU: Sau 16 byte RAM hiển thò toàn liệu dòch sang trái byte ,byte cuối bò dòch thay byte EEPROM chúng lại hiển thò,quá trình tiếp diễn IV.4.2/LƯU ĐỒ CHƯƠNG TRÌNH Lưu đồ sau trình bày chương trình dạng khối tiến trình SVTH: Nguyễn Hoàng Hải Trang IV.36 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu H.IV.21 IV.4.3/Mà NGUỒN CHƯƠNG TRÌNH: ;********************************************************** ;*************TIẾN TRÌNH ĐIỀU KHIỂN QUANG BÁO********* ;********************************************************** List p="pic16f84a" #include "p16F84A.INC" CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC ;*******************ĐỊNH NGHĨA CÁC NHÃN ***************************** lpcnt equ 0c ;screen loop counter adr scrnidx equ 0d ; screen data index adr w_save equ 0e ;w register save adr s_save equ 0f ; status register save adr scrnhd equ 10 ; screen table head adr tm_cnt equ 20 ;time adjust counter adr e_adr equ 21 ; eeprom data adr e_check equ 22 ; eeprom end check cnt adr s_loop equ 23 ; screen data loop cnt adr SVTH: Nguyễn Hoàng Hải Trang IV.37 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A s_index equ 24 ; screen table index adr s_work equ 25 ; screen data work area tm_adj equ 0c ;time adjust e_size equ d'40' ;eeprom data size ;*******************ĐỊNH NGHĨA DỮ LIỆU EEPROM *********************** org h'2100' de b'11111111' de b’00000000' de b'11110111' de b'11110111’ de b'00000000' de b'11111111’ de b'10000001’ de b'01111110' de b'01111110' de b'10000001' de b'11111111' de b'00000001' de b'11110110' de b'11110110' de tâm b'00000001' Trung Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu de b'11111111' de b'00000000' de b'11111011' de b'11110111' de b'00000000' de b'11111111' de b'10000001' de b'01101110' de b'10101101' de b'00001111' de b'11111111' de b'00000000' de b'11110111' de b'11110111' de b'00000000' de b'11111111' de b'00000001' de b'11110110' de b'11110110' de b'00000001' SVTH: Nguyễn Hoàng Hải Trang IV.38 Luận văn tốt nghiệp de de de de de Mạch vi điều khiển đa dùng PIC16F84A b'11111111' b'00000000' b'11111111' b'11111111' b'11111111' ;************************BẮT ĐẦU CHƯƠNG TRÌNH ********************* org ;reset vector goto init org ;interrupt vector goto init ;*********************** TIẾN TRÌNH ĐẶT GIÁ TRỊ ĐẦU************************* org init bsf STATUS,RP0 ;change to bank1 movlw 0x00 ; movwf TRISA ; set portA to output mode movlw 0x00 ; movwf TRISB ; set portB to output mode movlw 0x07 ; movwf OPTION_REG Trung tâm Học liệu ĐH Cần Thơ @ Tài; TOCS=0,PSA=0,PS2/1/0=111 liệu học tập nghiên cứu bcf STATUS,RP0 ; change to bank0 movlw 0x00 ; set timer condition movwf TMR0 ;TMRO=0 movlw tm_adj ;set time adjust value movwf tm_cnt ; save time adjust movlw 0x00 ; movwf e_adr ; clear eeprom data adr movlw e_size ; set eeprom data size movwf e_check ; save eeprom data end check movlw 0xA0 ;GIE=1,TOIE=1 movwf INTCON ;interruption enable ;***********************TIẾN TRÌNH XUẤT DỮ LIỆU ******************* screen bsf INTCON,GIE ;interrupt enable movlw d'16' ;set loop count movwf lpcnt ;save loop count movlw 0x0F ;set screen index movwf scrnidx ;save index bcf INTCON,GIE ;interrupt disable SVTH: Nguyễn Hoàng Hải Trang IV.39 Luận văn tốt nghiệp scrnlp movlw movwf movf movwf movlw addwf movwf movf movwf decf decfsz goto goto Mạch vi điều khiển đa dùng PIC16F84A 0xFF PORTB scrnidx,W PORTA scrnhd scrnidx,W FSR INDF,W PORTB scrnidx,f lpcnt,f scrnlp screen ; ; set led off data ; output data ; set position ;out position ; set table head address ; head+index ; set table address ; read data ; output data ; index-1 ; loop end? ; no.next line ; yes.next screen ;***********************TIẾN TRÌNH BẮT ĐẦU NGẮT ******************** int movwf w_save ;save w reg movf STATUS,W ;read status reg movwf s_save ;save status reg btfsc ;time outliệu interruption Trung tâm Học liệuINTCON,T0IF ĐH Cần Thơ @ Tài học tập nghiên cứu goto timer_int ;jump to timer process goto init ;reset ;***********************TiẾN TRÌNH KẾT THÚC NGẮT******************* int_end movf s_save,W ;read saved status reg movwf STATUS ;recover status reg swapf w_save,f ;read saved w register swapf w_save,W ;recover w reg retfie ; ;***********************TiẾN TRÌNH NGẮT TRÀN*********************** timer_int bcf INTCON,T0IF ;clear timer int flag movlw 0x00 ; set timer value movwf TMR0 ;TMRO=0 decfsz tm_cnt,f ;time over? goto int_end ;no retry movlw tm_adj ;set time adjust value movwf tm_cnt ;save time adjust ;***********************Tiến trình dòch liệu RAM**************** SVTH: Nguyễn Hoàng Hải Trang IV.40 Luận văn tốt nghiệp loop movlw movwf movlw movwf Mạch vi điều khiển đa dùng PIC16F84A d'15' s_loop scrnhd s_index ;set loop count ;save loop count ;set screen head address ; set screen address incf s_index,W ;inclement index movwf FSR ;set read address movf INDF,W ;read data movwf s_work ;save data movf s_index,W ;read index movwf FSR ;set write address movf s_work,W ;recover data movwf INDF ;write data incf s_index,f ;inclement index decfsz s_loop,f ;all shifted? goto loop ;no continue ;***********************TIẾN TRÌNH THAY THẾ DỮ LIỆU**************** movf s_index,W ;read index movwf FSR ;set write address movf ;read eeprom address Trung tâm Học liệue_adr,W ĐH Cần Thơ @ Tài liệu học tập nghiên cứu movwf EEADR ; set eeprom address bsf STATUS,RP0 ;change to bank bsf EECON1,RD ;start eeprom reading bcf STATUS,RP0 ;change to bank movf EEDATA,W ;read eepromdata movwf INDF ;write new data incf e_adr,f ;inclement data address decfsz e_check,f ;end of eeprom data goto int_end ;no return clrf e_adr ;clear eeprom data address movlw e_size ;set eeprom data size movwf e_check ;save eeprom end check goto int_end ;return ;***********************KẾT THÚC CHƯƠNG TRÌNH***************** end SVTH: Nguyễn Hoàng Hải Trang IV.41 Luận văn tốt nghiệp Mạch vi điều khiển đa dùng PIC16F84A Chương V: KẾT LUẬN VÀ KIẾN NGHỊ V.1/CÁC KẾT QUẢ Đà ĐẠT ĐƯC VÀ CÁC MẶT HẠN CHẾ V.1.1/ KÃÚT QU  ÂẢT ÂỈÅÜC: V.1.1.1/VỀ PHẦN CỨNG: -Thiết kế Pic Programmer,có khả nạp vào liệu cho vi điều khiển Pic từ máy tính đọc liệu từ Pic trở máy tính -Thiết kế mạch hệ thống điều khiển đa mạch ứng dụng motor bước ,quang báo… V.1.1.2/VỀ PHẦN MỀM: -Đã sử dụng thành công phần mềm MPLAB để lập trình cho vi điều khiển Pic 16F84A -Trước chương trình nạp vào EEPROM , kiểm tra sửa chữa trình mô MPLAB.Chương trình thực trực tiếp RAM -Lập trình cho hệ thống điều khiển motor bước quang báo đạt V.1.2/MẶT HẠN CHẾ: V.1.2.1/VỀ PHẦN CỨNG: -Tốc độ làm việc hệ thống chưa cao khoảng từ 4MHZ-10MHZ Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu -Chưa mở rộng PORT để giao tiếp với thiết bò ngoại vi bên -Chỉ sử dụng RAM ROM nội,RAM ROM ngoại chưa nối kết V.1.2.2/VỀ PHẦM MỀM: -Hệ thống cho phép chương trình điều khiển có dung lượng giới hạn,khoảng 1024*14 bit,không vượt giới hạn Do thiếu kinh nghiệm viêc lập trình,nên chương trình có phần phức tạp gây khó khăn cho người đọc V.2/HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI VÀ KIẾN NGHỊ: V.2 1/HƯỚNG PHÁT TRIỂN: Đề tài có ưu điểm là:có thể mở rộng nhiều PORT vào nên kết nối với nhiều ngoại vi khác đồng thời cấu trúc PIC đơn giản,ít chân dễ nghiên cứu Và dễ nhớ khả để phát triển đề tài phong phú ,điều tuỳ thuộc nhu cầu cụ thể người Với thiết bò điều khiển motor bước ta mở rộng đề tài thành thiết kế động cho ROBOT V.2.2/KIẾN NGHỊ: -Để trở thành sản phẩm bán thò trường hệ thống cần phải điều chỉnh thêm vài chi tiết: SVTH: Nguyễn Hoàng Hải Trang V.1 Luận văn tốt nghiệp chiều rộng Mạch vi điều khiển đa dùng PIC16F84A + Mở rộng kích thước quang báo theo yêu cầu chiều dài +Thu nhỏ diện tích mạch điện +Ứng dụng motor bước vào công việc cụ thể:bộ đònh thời,đồng hồ,động điều khiển ROBOT…… -Trong lónh vực dạy học,em mong vi điều khiển này,có thể sửa đổi bổ sung phận cần thiết để hoàn chỉnh thành thí nghiệm Vi Điều Khiển ,dành cho sinh viên có nhu cầu học hỏi nghiên cứu Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập nghiên cứu SVTH: Nguyễn Hoàng Hải Trang V.2 MỤC LỤC Lời cảm tạ Nhận xét giáo viên hướng dẫn Nhận xét giáo viên phản biện Mục lục Lời nói đầu Abstract Chương I:GIỚI THIỆU I.1/Mục tiêu đề tài I.1 I.2/Hướng giải I.1 I.2.1/Giải pháp phần cứng I.1 I.2.2/Giải pháp phần mềm I.2 Chương II:LÝ THUYẾT LIÊN QUAN II.1/Tổng quan vi điều khiển PIC II.1 Trung tâm Họcviliệu Thơ @ Tài liệu học tập nghiên cứu II.2/Bê n điềuĐH khiểnCần PIC 16F84A II.2 II.2.1/Đặc điểm II.2 II.2.2/ Vò trí chân vi điều khiển II.2 II.2.3/Bộ xử lý trung tâm II.3 II.2.4/Port II.7 II.2.5/Tổ chức nhớ II.8 II.2.6/Ngắt II.11 II.2.7/Bộ đònh thời gian trống II.16 II.2.8/Bộ nhớ liệu EEPROM II.19 II.3/Khảo sát cổng song song II.21 Chương III:THIẾT KẾ PHẦN CỨNG III.1/Phần cứng hệ thống .III.1 III.1.1/Sơ đồ khối hệ thống III.1 III.1.2/Thiết kế chi tiết III.1 III.1.3/Sơ đồ chi tiết toàn hệ thống III.3 III.2/Phần cứng ứng dụng : Mạch điều khiển motor bước .III.3 III.3/Phần cứng ứng dụng : Mạch điều khiển quang báo III.7 Chương IV:THIẾT KẾ PHẦN MỀM IV.1/ Phần mềm mplab IV.1 IV.1.1/ Giới thiệu phần mềm MPLAB .IV.1 IV.1.2/ Giao diện phần mềm MPLAB .IV.2 IV.1.3/Làm quen với môi trường MPLAB IV.5 IV.1.4/Tập lệnh vi điều khiển họ PIC IV.14 IV.1 5/Dạng tổng quát lệnh IV.17 IV.1 6/Một số ký hiệu thường gặp lưu đồ IV.19 IV.2/Lập trình assembly cho PIC IV.20 IV.2 1/Lời nói đầu IV.20 IV.2 2/Ngôn ngữ assembly IV.20 IV.2 3/Thí dụ chương trình IV.21 IV.2 4/Những lệnh điều khiển .IV.21 IV.2 5/Những lệnh điều kiện IV.23 IV.2 6/Những lệnh điều khiển liệu .IV.26 IV.2 7/Việc đònh dạng lệnh điều khiển IV.27 IV.3/Lập trình ứng dụng : Điều khiển motor bước IV.27 IV.3 1/Các tiến trình điều khiển IV.27 IV.3 2/Lưu đồ chương trình IV.29 IV.3 3/Mã nguồn chương trình IV.32 IV.4/Lập trình ứng dụng 2: Điều khiển quang báo .IV.36 IV.4 1/Các tiến trình điều khiển IV.36 IV.4 Học 2/Lưuliệu đồ chương trình.Thơ IV.36 Trung tâm ĐH Cần @ Tài liệu học tập nghiên cứu IV.4 3/Mã nguồn chương trình IV.37 Chương V: KẾT LUẬN VÀ KIẾN NGHỊ V.1/Các kết đạt mặt hạn chế V.1 V.1 1/Kết đạt V.1 V.1.2/Mặt hạn chế V.1 V.2/Hướng phát triển đề tài kiến nghò V.1 V.2 1/Hướng phát triển V.1 V.2 2/Kiến nghò V.1 Tài liệu tham khảo [...]... nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A Chương III:THIẾT KẾ PHẦN CỨNG III.1/PHẦN CỨNG HỆ THỐNG: III.1.1/SƠ ĐỒ KHỐI HỆ THỐNG: Phần cứng cuả hệ thống là một bộ vi điều khiển ,sử dụng IC vi điều khiển Pic16F84A ,chương trình điều khiển có thể được chạy thử ,kiểm tra sửa chữa hoàn chỉnh trước khi lưu vào bộ nhớ FLASHROM OSC MÁY TÍNH PC KHỐI GIAO TIẾP VỚI PC PC MẠCH NẠP HỆ THỐNG RESET VI ĐIỀU KHIỂN... EEPROM NÕu bit nµy kh«ng ®ỵc ®Ỉt, vi ®iỊu khiĨn sÏ kh«ng cho phÐp vi c vi t ®Õn EEPROM SVTH: Nguyễn Hoàng Hải Trang II.19 Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A 1 = vi c vi t ®ỵc cho phÐp 0 = vi c vi t kh«ng ®ỵc cho phÐp Bit 4 EEIF (EEPROM Write Operation Interrupt Flag bit) bit cê cho biÕt ho¹t ®éng ng¾t khi vi t EEPROM kÕt thóc Khi vi c vi t kÕt thóc, bit ®ã sÏ ®Ỉt mét c¸ch... III.1.2/THIẾT KẾ CHI TIẾT: III.1.2.1 /VI ĐIỀU KHIỂN: Sử dụng vi điều khiển Pic 16F84A , giữ nhiệm vụ điều khiển toàn bộ hoạt động của hệ thống.Thạch anh hoặc RC dao động với tần số từ vài kHz đến vài MHz III.1.2.2/BỘ PHẬN RESET: 5V R1 8.2K RESET SW1 H.III.2:Reset SVTH: Nguyễn Hoàng Hải Trang III.1 Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A Khi mới cấp nguồn cho mạch toàn bộ hệ thống sẽ được... ch¬ng tr×nh cđa anh ta ®Ĩ vi ®iỊu khiĨn cã thĨ nhËn ®ỵc sù kÕt thóc míi cđa vi c vi t vµo EEPROM 1 = vi c vi t kÕt thóc 0 = vi c vi t kh«ng kÕt thóc, hc cha ®ỵc b¾t ®Çu II.2.8.2/ Vi c ®äc tõ bé nhí EEPROM: Vi c ®Ỉt bit RD lóc ®Çu khi trun d÷ liƯu tõ ®Þa chØ t×m thÊy trong thanh ghi EEADR ®Õn thanh ghi EEDATA Trong vi c ®äc d÷ liƯu chóng ta kh«ng cÇn qu¸ nhiỊu thêi gian nh trong vi c vi t, d÷ liƯu... văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A byte lại được hiển thò,tương tự một byte kế tiếp trong EEPROM thay thế cho byte cuối cùng trong RAM khi 16 byte đã dòch 1 lần nữa.Cứ thế tiếp tục cho đến byte cuối cùng trong EEPROM Trung tâm Học liệu ĐH Cần Thơ @ Tài liệu học tập và nghiên cứu SVTH: Nguyễn Hoàng Hải Trang III.9 Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A Chương... án (Project Manager): Thực hiện vi c quản lý và nhóm các tập tin của cùng đề án vào một đề án Trình soạn thảo (Text Editor): Dùng để vi t và hiệu chỉnh một chương trình SVTH: Nguyễn Hoàng Hải Trang IV.1 Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A Trình mô phỏng (Simulator): Dùng mô phỏng chương trình, mô phỏng các hàm chương trình của một bộ vi điều khiển Bên cạnh đó, có nhiều thành... III.2/PHẦN CỨNG ỨNG DỤNG 1: MẠCH ĐIỀU KHIỂN MOTOR BƯỚC III.2.1 / SƠ LƯC VỀ MOTOR BƯỚC: SVTH: Nguyễn Hoàng Hải Trang III.3 Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A Hiện nay trên thò trường có nhiều loại motor bước Loại đơn cực ,loại lưỡng cực ,loại một pha ,loại nhiều pha …Loại motor bước một pha thường được dùng nhiều nhất ,mà đặt biệt trong đề tài này em cũng sử dụng motor bước một... ng¾t ,vi điều khiển sẽ trở lại thực hiện tiếp chương trình chính SVTH: Nguyễn Hoàng Hải Trang II.11 Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A H.II.10:TÝn hiƯu cđa mét ng¾t vµ c¸ch nã t¸c ®éng ®Õn ch¬ng tr×nh chÝnh Thanh ghi ®iỊu khiĨn mét ng¾t ®ỵc gäi lµ INTCON vµ ®ỵc t×m thÊy ë ®Þa chØ 0Bh Vai trß cđa nã cho phÐp hc kh«ng cho phÐp ng¾t, vµ nh÷ng ®iỊu khiĨn kh¸c nhê vµo c¸c bit cđa... Luận văn tốt nghiệp Mạch vi điều khiển đa năng dùng PIC16F84A 4) bsf EECON1, WR ;b¾t ®Çu vi c vi t bsf INTCON, GIE ;c¸c ng¾t ®ỵc cho phÐp Ch¬ng tr×nh trªn c¸c nh·n 1,2,3 vµ 4 ph¶i thùc hiƯn ®óng thø tù Nã rÊt quan träng trong vi c t¾t c¸c ng¾t nã thay ®ỉi thêi gian lµm vi c cÇn cho vi c thùc hiƯn c¸c lƯnh PhÇn vÝ dơ trªn giíi thiƯu vỊ WREN ®ỵc t¾t trong thêi gian ®Ỉt biƯt khi ®ang vi t d÷ liƯu lªn... gian cđa vi c ®äc vµ vi t kh¸c nhau, d÷ liƯu tõ EEDATA cã thĨ s¼n sµng ®ỵc dïng xa h¬n trong lƯnh tíi 1 = ®iỊu khiĨn vi c ®äc 0 = kh«ng ®iỊu khiĨn Bit 1 WR (Write Control bit) bit ®iỊu khiĨn vi c vi t Vi c ®Ỉt bit nµy ®iỊu khiĨn vi c vi t d÷ liƯu tõ thanh ghi EEDATA ®Õn ®Þa chØ trong thanh ghi EEADR 1 = ®iỊu khiĨn vi c vi t 0 = kh«ng ®iỊu khiĨn Bit 2 WREN (EEPROM Write Enable bit) bit cho phÐp vi t ... từ vi điều khiển thoát xuất ngắt (nếu dùng chương trình), vi điều khiển reset IV.1.4/TẬP LỆNH CỦA VI ĐIỀU KHIỂN HỌ PIC: Trước vào vi t chương trình cho vi điều khiển xem qua tập lệnh vi điều khiển. .. nghiệp Mạch vi điều khiển đa dùng PIC16F84A Chương III:THIẾT KẾ PHẦN CỨNG III.1/PHẦN CỨNG HỆ THỐNG: III.1.1/SƠ ĐỒ KHỐI HỆ THỐNG: Phần cứng cuả hệ thống vi điều khiển ,sử dụng IC vi điều khiển Pic16F84A. .. để vi thọc chương vi t chương trình “file hex” cho vi điều khiển Vi c chọn vi điều khiển thực bên phía tay phải Trong thí dụ vi t chương trình cho vi điều khiển PIC16F84 Nói chung bắt đầu làm vi c