1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

NGHIÊN CỨU VI ĐIỀU KHIỂN PIC16F84 - Phần 1 ppsx

18 391 0

Đ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

LỜI CẢM ƠN PIC là một dòng vi điều khiển khá mới mẻ ở nước ta. Lần đầu tiên chúng em tiếp xúc với nó do đó việc tìm hiểu nó gặp rất nhiều khó khăn. Tuy nhiên nhờ sự giúp đỡ nhiệt tình của giáo viên hướng dẫn_thầy Võ Tường Quân cùng với sự hỗ trợ nhiệt tình của các bạn trong lớp, chúng em đã hoàn thành tốt đồ án này. Chúng em xin chân thành cảm ơn Thầy và các bạn. Lần đầu tiên tìm hiểu về dòng PIC nên chắn không tránh khỏi những thiếu sót, chúng em mong sẽ nhận được những hướng dẫn quý báu của các Thầy trong Bộ môn và các ý kiến đóng góp của các bạn để có thể tiếp tục tìm hiểu sau hơn về dòng vi điều khiển PIC. 1 LỜI GIỚI THIỆU Ngày nay, với tốc độ phát triển mạnh mẽ của công nghệ tự động trong tất cả mọi lónh vực thì việc tìm hiểu và ứng dụng các dòng chip Vi điều khiển là một vấn đề cần được quan tâm. Họ Vi điều khiển 8051 rất quen thuộc với chúng ta, và nó từng được xem là họ vi điều khiển rất ưu việt. Tuy nhiên với nhu cầu ngày càng cao về tính ổn đònh, tốc độ xử lý cũng như khả năng tiếp cận dễ dàng của người dùng, thì họ 8051 đã không phát huy được ưu thế của mình. Các chip vi điều khiển thuộc dòng PIC của hãng Microchip  có lẽ không quá xa lạ. Với công nghệ RISC (Reduced Instruction Set Computer) nâng cao đáng kể tốc độ xử lý, khả năng chống nhiễu, khả năng mở rộng tốt, khả năng nạp lại trên 1000 lần, tập lệnh đơn giản, được hỗ trợ lập trình dưới dạng Macro và đa dạng về chủng loại, thì dòng PIC là một dòng vi điều khiển tốt nhất trong các ứng dụng tự động từ đơn giãn đến phức tạp nhất. Tuy nhiên đến giờ nó còn khá mới mẻ và vẫn chưa được ứng dụng rộng rãi. Vì thế việc tìm hiểu dòng vi điều khiển này là một nhu cầu thực tế và nó hứa hẹn mang lại nhiều hiệu quả thiết thực phục vụ cho công nghệ tự động. PIC16F84 là một tiêu biểu, có thể được coi là chip vi điều khiển đơn giản nhất của dòngï PIC. Với 2 Port, 18 chân và đầy đủ các tính chất ưu việt của dòng PIC, PIC16F84 phù hợp với các ứng dụng vừa và nhỏ, nhất là các thí nghiệm phục vụ học tập, nghiên cứu. Chúng em mong rằng với đồ án “PIC16F84 và một số ứng dụng” sẽ là bước khởi đầu mở ra cái nhìn gần gũi hơn về dòng PIC để từ đó chúng ta có thêm một công cụ đắc lực trong điều khiển tự động. 2 GIỚI THIỆU VỀ PIC16F84 Tổng quan: Cấu trúc PIC16F84 thuộc vi điều khiển 8 bit có cấu trúc RISC( Reduce Instruction Set Computer). Cấu trúc tổng quát của nó được biểu diễn dưới dạng các khối sau : Hình Error! No text of specified style in document 1: Sơ đồ khối PIC Bộ nhớ chương trình (Program memory) : Dùng để chứa chương trình nạp. Vì được chế tạo bằng công nghệ FLASH nên bộ nhớ này có thể được lập trình hay xoá nhiều lần.Ưu điểm này khiến cho con vi điều khiển này thích hợp cho việc xây dựng các ứng dụng điều khiển. EPPROM: Đây là bộ nhớ để lưu trữ dữ liệu khi không cấp nguồn. Thông thường nó được dùng để chứa dữ liệu quan trọng không thể mất nếu chẳng may nguồn cấp bò mất đột ngột. RAM: Bộ nhớ dữ liệu được sử dụng cho trong suốt quá trình thực thi chương trình trong vi điều khiển. PORTA và PORTB: là các ngõ kết nối vật lý giữa vi điều khiển với các phần cứng bên ngoài. PORTA có 5 chân giao tiếp trong khi PORTB có đến 8 chân. 3 FREE- RUN TIMER: Đây là một thanh ghi 8 bit ở bên trong vi điều khiển, nó hoạt động độc lập với chương trình. Cứ mỗi bốn xung nhòp của bộ dao động thì giá trò của nó tăng lên một cho đến khi đạt đến giá trò tối đa là 255, và sau đó nó lại bắt đầu đếm từ 0. Nếu như chúng ta biết được chính xác thời giữa hai lần tăng của nội dung thanh ghi Timer, thì khi đó nó sẽ được dùng để đònh thời gian, một đặc điểm hết sức hữu ích và được ứng dụng rất nhiều trong thực tế. CPU(Central Processing Unit ): Đóng vai trò then chốt trong việc kết nối các thành phần trong vi điều khiển với nhau, được so sánh giống như bộ não con người. Nó liên kết các hoạt động của các khối trong vi điều khiển và thực thi chương trình. RISC Ngay phần đầu chúng ta có nói rằng PIC16F84 có cấu trúc RISC, vậy RISC có nghóa là gì? Để có thể thấy được ưu điểm của vi điều khiển này, chúng ta sẽ đi vào tìm hiểu khái niệm về cấu trúc RISC thông qua việc so sánh hai mô hình khối cấu trúc Von - Neuman và cấu trúc Harvards. Hình Error! No text of specified style in document 2: Cấu trúc Havard và Von - Neumann Như ta đã biết, cấu trúc vi điều khiển của Von Neuman la một cấu trúc cổ điển và được ứng dụng phổ biến.Ở cấu trúc này, bus dữ liệu và đòa chỉ được truy xuất trên cùng một đường, do đó nó phần nào ảnh hưởng đến tốc độ thực thi của vi điều khiển. Không giống như cấu trúc Von Neuman, cấu trúc Harvards tách riêng bus dữ liệu với bus đòa chỉ. Chính điều này đã tăng tốc độ xử lý của vi điều khiển lên một cách đáng kể. Các vi điều khiển có cấu trúc phần cứng kiểu Harvards thì được gọi là vi điều khiển RISC. RISC là viết tắt của thuật ngữ “Reduce Instruction Set Computer”. 4 Bởi vì PIC16f84 có cấu trúc RISC nên nó có tập lệnh được tinh giảm, cụ thể là 35 lệnh. Tất cả các lệnh này đều được thực thi trong một chu kỳ máy,trừ các lệnh nhảy và rẽ nhánh. Sơ đồ chân PIC16F84 có tổng cộng 18 chân, tên gọi và chức năng từng chân như sau: Hình Error! No text of specified style in document 3: Hình dáng bên ngoài PIC16f84 • Chân1: RA2, chân thứ hai của port A • Chân 2: RA3, chân thứ ba của port A • Chân 3: RA4, chân thứ tư của port A. Ngoài ra, chân này có có chức năng là một bộ đònh thời( TOCK1) • Chân 4: MCLR ngõ reset và cấp áp lập trình cho vi điều khiển. • Chân 5: Vss chân nối đất của nguồn. • Chân 6: RB0, chân số 0 của port B. Ngoài ra nó còn là ngõ vào của ngắt. • Chân 7: RB1, chân số 1 của port B. • Chân 8: RB2, chân số 2 của port B. • Chân 9: RB3, chân số 3 của port B. • Chân 10: RB4, chân số 4 của port B. • Chân 11: RB5, chân số 5 của port B. • Chân 12: RB6, chân số 6 của port B. • Chân 13:RB7, chân số 7 của port B. • Chân 14: Vdd, chân cấp nguồn cho vi điều khiển. • Chân 15: OSC2,chân nối với bộ dao động. • Chân 16: OSC1, chân nối với bộ dao động. • Chân 17: RA2, chân số 2 của port A. 5 • Chân 18: RA1, chân số 1 của port A. Bộ tạo xung Bộ tạo xung dùng để cấp xung cho vi điều khiển hoạt động. PIC16F84 có thể hoạt động với bộ tạo xung dùng thạch anh và mạch dao động RC. Ở đây chúng ta chỉ sử dụng thạch anh, vì nó ổn đònh và đơn giản. Hình Error! No text of specified style in document 4: Mạch tạo xung dùng thạch anh Reset Chức năng Reset dùng để khởi tạo lại cho điều khiển về điều kiện ban đầu. Thực tế trong quá trình hoạt động, có những lúc vi điều khiển hoạt động không như mong muốn do bò tác động bởi một tác nhân nào đó, khi đấy ta sẽ dùng chức năng Reset để khởi tạo lại chức năng cho vi điều khiển, đưa các thanh ghi về vò trí khởi tạo ban đầu. Không chỉ có thế, Reset còn có vai trò như một ngắt ( Interupt ), giúp thoát khỏi một chương trình một cách tức thời. Các nhiều cách ( nguồn ) để Reset lại vi điều khiển, trong đó có hai nguồn quan trọng nhất, đó là Reset khi vừa cấp nguồn ( Power On Reset _ POR ), và Reset bởi chân MCLR. Bộ xử lý trung tâm (CPU) CPU được ví như là bộ não của vi điều khiển, nó đảm nhận vai trò tìm kiếm và giải mã các cấu trúc lệnh cho vi điều khiển hoạt động. CPU gắn kết các thành phần của vi điều khiển thành một khối thống nhất. Như đã nói ở trên, chức năng quan trọng nhất của nó chính là giải mã lệnh. Khi ta viết một chương trình, các câu lệnh thường có dạng gợi nhớ như MOVLW 0x20. Thế nhưng để cho vi điều khiển hiểu được, thì câu lệnh trên phải được dòch thành một chuỗi các số 6 0 và 1, gọi là mã lệnh ( opcode ). Việc dòch từ dạng chữ sang thành mã lệnh được thực hiện bởi các trình biên dòch, chẳng hạn như trình dòch hợp ngữ. Sau đó CPU sẽ giải mã và thực thi các lệnh. Thanh ghi trạng thái status Hình Error! No text of specified style in document 5: Thanh ghi trạng thái  Bit 7_ IRP( Register bank Select bit ): là bit thứ 8 của thanh ghi STATUS làm nhiệm vụ đònh đòa chỉ gián tiếp cho RAM nội. IRP = 1: bank 2 và 3 IRP = 0 bank 1 và 0 ( từ đòa chỉ 00h đến FFh).  Bit 6:5 _ RP1: RP0 ( Register Bank Select Bits ): Hai bit này dùng để chọn bank thanh ghi. 01 = Bank 1 00 = Bank 0  Bit 4 _TO (Time – out ): bit này được set bằng 1 mỗi khi WDT bò tràn. 1 = Chưa tràn 0 = Bò tràn  Bit 3_ PD ( Power – down bit ) bit này được set mỗi khi vi điều khiển được cấp nguồn, khi bắt đầu chạy, sau khi reset, và sau khi thực hiện lệnh CLRWDT  Bit 2_ Z ( Zero bit ) Dùng để chỉ kết quả ra 0, được set mỗi khi kết quả trả về của một phép toán số học hay luận lý có giá trò là 0.  Bit 1_ DC ( Digit Carry ) Bò ảnh hưởng bởi các phép toán cộng, trừ. Nó được set khi ta trừ một số cho một số lớn hơn.Và được reset trong trường hợp ngược lại.  Bit 0_ C (Carry )ảnh hưởng bởi các lệnh ADDWF, ADDLW, SUBLW, SUBWF. 7 Các port Port dùng để chỉ một nhóm các chân trên vi điều khiển có thể truy xuất đồng thời, hoặc có thể set một bit mong muốn lên 1 hay xuống 0, hoặc đọc từ chúng trạng thái đang tồn tại. Về mặt vật lý, Port là một thanh ghi bên trong vi điều khiển được nối bởi dây dẫn với các chân của vi điều khiển. Nó đại diện cho sự kết nối vật lý giữa bộ xử lý trung tâm với thế giới bên ngoài. Vi điều khiển dùng chúng để hiển thò hay điều khiển các các thành phần hay thiết bò khác. Tuỳ theo chức năng, mà một vài chân có thể đảm nhiệm cả vai trò, chẳng hạn như chân RA4/TOCKI, vừa là bi thứ 4 của Port A, lại vừa là ngõ vào từ bên ngoài cho bộ đếm. Việc lựa chọn một trong hai chức năng này được thực hiện qua việc thay đổi giá trò cho các thanh ghi chuyên dụng, chẳng hạn ở đây là bit thứ 5 TOSC trong thanh ghi OPTION. Khi ta chọn một trong hai chức năng thì chức năng còn lại sẽ không hoạt động được. Tất cả các chân trong port đều có thể được dùng như các ngõ xuất hay nhập, tuỳ thuộc vào yêu cầu của thiết bò cần điều khiển. Để đònh nghóa một chân là xuất hay là nhập, thì ta sử dụng các thanh ghi TRIS ở bank1. Nếu một bit trong thanh ghi TRIS bằng 1, thì bit tương ứng với vò trí đó trong port lúc này sẽ là ngõ nhập, và ngược lại.Mỗi một port có một thanh ghi TRIS riêng cho nó, port A ứng với TRISA, port B ứng với TRISB.Thanh ghi Port A và B nằm trong bank 0, trong khi TRISA và TRISB nằm trong bank1. PORTB và TRISB Port B gồm 8 chân. Thanh ghi tương ứng cho việc xác đònh chiều dữ liệu là TRISB. 8 Hình Error! No text of specified style in document 6: Cấu trúc PORTB & TRISB Mỗi chân trong Port B đều có sẵn một điện trở kéo lên có giá trò nhỏ ở ngay bên trong (dùng để nối ngõ lên mức logic 1 ) có thể được kích hoạt bằng cách reset bit thứ 7 RBPU trong thanh ghi OPTION. Các điện trở kéo lên này tự động tắt khi các chân của port được đònh nghóa là các ngõ xuất. Khi vi điều khiển bắt đầu hoạt động, các điện trở này không được kích hoạt. Các chân từ RB4 đến RB7 của port B có thể gây ra ngắt khi trạng thái của nó thay đổi từ mức 0 lên mức 1 và ngược lại. Chỉ có những chân nào được đònh nghóa là ngõ nhập mới có thể gây ra ngắt được. PORTA và TRISA Port A có 5 chân xuất nhập, thanh ghi tương ứng của nó là TRISA có đòa chỉ 85h. Cũng giống như port B, việc set một bit trong thanh ghi TRISA sẽ đònh nghóa bit tương ứng trong port A là xuất hay là nhập. Một điều quan trọng cần chú ý là chân RA4 của port A chỉ có thể dừng để nhập mà thôi. Nó cũng dùng để nhập từ ngoài cho bộ đònh thời TMR0. 9 Hình Error! No text of specified style in document 7: Cấu trúc PORTA & TRISA Tổ chức bộ nhớ PIC16F84 có hai khối bộ nhớ phân cách nhau, một cho dữ liệu và cái còn lại cho chương trình. Bộ nhớ EPPROM với các thanh ghi GPR và SFR trong bộ nhớ RAM sẽ quản lý khối dữ liệu, còn bộ nhớ FLASH quản lý khối chương trình. Bộ nhớ chương trình Bộ nhớ chương trình được chế tạo bằng công nghệ FLASH, nó cho phép lập trình cho vi điều khiển được nhiều lần trước khi nó được lắp đặt vào thiết bò, hoặc ngay các sau khi nó được lắp đặt mà có một sự cố nào đó xảy ra. Dung lượng của bộ nhớ chương trình này là 1024 dòng lệnh với độ dài 14 bit, trong đó các vò trí từ 0h đến 4h được dùng cho các vector reset và ngắt. Bộ nhớ dữ liệu Bộ nhớ dữ liệu bao gồm bộ nhớ RAM và EPPROM. Bộ nhớ EPPROM bao gồm 64 byte, nội dung của nó không bò mất đi nếu lỡ như mất nguồn. EPPROM không được đònh đòa chỉ trực tiếp, mà được truy xuất gián tiếp thông qua 2 thanh ghi là EEADR và EEDATA. Bởi vì bộ nhớ EPPROM được dùng cho việc lưu trữ những thông số quan trọng, cho nên người lập trình cần phải tuân theo một số quy tắc để tránh mắc lỗi trong lúc viết. Bộ nhớ Ram có đòa chỉ từ 0x0C đến 0x4F, bao gồm 68 ố nhớ 8 bit. Việc xác đònh vò trí của RAM cũng được thực hiện thông qua thanh ghi GPR 10 [...]... ngắt 14 Để có thể được chức năng ngắt của vi điều khiển, thì đầu tiên ta phải thực hiện các lệnh khởi tạo ban đầu cho nó, bằng cách xác đònh các bit tương ứng trong thanh ghi điều khiển ngắt INTCON Timer TMR0 Timer thường là phần gây khó hiểu của vi điều khiển, thế nhưng nếu tìm hiểu kỹ càng, ta sẽ thấy nó giúp ích rất nhiều trong công tác lập trình cho vi điều khiển Một trong những ứng dụng của nó là... với thanh ghi 8 bit PCL cho 8 bit thấp của đòa chỉ Bằng cách tăng dần nội dung của PC, vi điều khiển sẽ từng bước thực hiện các lệnh có trong chương trình Lập trình cho vi điều khiển Để lập trình vào bộ nhớ chương trình ,vi điều khiển phải được set ở chế độ làm vi c đặc biệt, cụ thể khi đó chân MCLR sẽ được nối với áp 13 ,5V, và nguồn cung cấp phải ổn đònh Bộ nhớ chương trình có thể được lập trình nối tiếp... dữ liệu đọc vi t EEADR chứa đòa chỉ của phân vùng EPPROM cần truy xuất EECON1 chứa các bit điều khiển EECON2 thanh ghi này không tồn tại về mặt vật lý, mà nó dùng để bảo vệ EPPROM khỏi những lỗi lập trình không đáng có Thanh ghi EECON1 Hình Error! No text of specified style in document . -1 2: Thanh hi EECON1  Bit 4 EEIF (EEPROM Write Operation Interupt Flag bit) Bit dùng để báo cho vi điều khiển biết... thì vi điều khiển sẽ không cho phép ghi vào EPPROM  Bit 1 WR (Write Control bit ): Vi c set bit này lên sẽ khởi tạo vi c ghi dữ liệu từ thanh ghi EEDATA đến một đòa chỉ cụ thể thông qua thanh ghi EEDR 1 = Khởi tạo ghi 0 = Không khởi tạo  Bit 0 RD ( Read Control bit ): Bit dùng để điều khiển vi c khởi tạo quá trình chuyển dữ liệu từ một đòa chỉ đã được đònh nghóa trong EEDR đến thanh ghi EEDATA 1 =... ứng với nguyên nhân gây ra ngắt 12 Hình Error! No text of specified style in document .-9 : Cấu trúc ngắt Thanh ghi điều khiển ngắt (INTCON ) Thanh ghi điều khiển ngắt (INTCON) được truy xuất bằng cách chọn bank tương ứng Nó có chức năng cho phép hay là cấm xảy ra ngắt, và xác đònh các nguyên nhân ngắt Hình Error! No text of specified style in document . -1 0: Thanh ghi điều khiển ngắt  Bit 7_ GIE ( Global... cách: _Đònh đòa chỉ trực tiếp _Đònh đòa chỉ gián tiếp Các cơ chế ngắt Ngắt là một đặc tính của vi điều khiển mà cho phép nó đáp ứng được với những sự kiện tại lúc nó xảy ra, và xác đònh xem vi điều khiển sẽ làm gì tiếp theo sau đó Đây là một chức năng vô cùng quan trọng, bởi vì nó tạo nên sự gắn kết giữa vi điều khiển với thế giới xung quanh nó Thông thường thì ngắt sẽ làm ngưng chương trình đang thực...Các thanh ghi SFR Đây là các thanh ghi có chức năng đặc biệt, chiếm 12 ô nhớ đầu tiên trong các bank 0 và bank 1 Hình Error! No text of specified style in document .-8 : Tổ chức bộ nhớ PIC16F84 11 Bộ đếm chương trình Bộ đếm chương trình (PC ) là một thanh ghi 13 bit, nó chứa đòa chỉ của các lệnh cần thực thi Nó được xác đònh bằng cách kết hợp của thanh ghi 5 bit PCLATCH... một biến số mà biểu thò trạng thái của một bộ đònh thời với vi điều khiển Về mặt vật lý, timer là một thanh ghi 8 bit có giá trò tăng dần từ 0 đến 255, và sau đó lại tiếp tục đếm lên từ 0 Sự tăng lên này được thực hiện trên nền của các chương trình đang thực hiện của vi điều khiển Nó đưa ra cho người sử dụng nhiều giải pháp hữu hiệu trong vi c giải quyết tối ưu vấn đề, một trong chúng là tăng một biến... lên nhờ vào vi c nhận xung từ bên ngoài thông qua chân RA4/ TOCKI, và khi đó timer hoạt động như một bộ đếm Thanh ghi OPTION Hình Error! No text of specified style in document . -1 1: Thanh ghi OPTION  Bit 7 RBPU ( PORTB Pull up Enable bit ) Đây là bit kích hoạt hay tắt điện trở nội kéo lên có trong các chân của port B 1 = Kích hoạt 0 = Vô hiệu  Bit 6 INTEDG ( Interupt Edge Select bit ) 15 Nếu sự kiện... lên 1 Người lập trình cần phải xoá bit này băng phần mềm để nó có thể nhận biết được một sự kết thúc của vi c ghi tiếp theo 17 1 = Ghi kết thúc 0 = Ghi chưa xong, hoặc chưa bắt đầu ghi  Bit 3 WRERR (Write EPPROM Error Flag ) Báo lỗi nếu gặp trong quá trình ghi vào EPPROM Bit này chỉ được set lên khi quá trình ghi vào EPPROM bò ngắt bởi một tín hiệu reset hoặc bò tràn WDT khi WDT được kích hoạt 1 = . đáng kể. Các vi điều khiển có cấu trúc phần cứng kiểu Harvards thì được gọi là vi điều khiển RISC. RISC là vi t tắt của thuật ngữ “Reduce Instruction Set Computer”. 4 Bởi vì PIC16f84 có cấu. được ví như là bộ não của vi điều khiển, nó đảm nhận vai trò tìm kiếm và giải mã các cấu trúc lệnh cho vi điều khiển hoạt động. CPU gắn kết các thành phần của vi điều khiển thành một khối thống. của PC, vi điều khiển sẽ từng bước thực hiện các lệnh có trong chương trình. Lập trình cho vi điều khiển Để lập trình vào bộ nhớ chương trình ,vi điều khiển phải được set ở chế độ làm vi c đặc

Ngày đăng: 31/07/2014, 17:20

Xem thêm: NGHIÊN CỨU VI ĐIỀU KHIỂN PIC16F84 - Phần 1 ppsx

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w