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

BÀI TIỂU LUẬN NGHIÊN CỨU VI ĐIỀU KHIỂN PIC 16F84A

24 316 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 882,73 KB

Nội dung

RB0/INT : đây là chân đa nhiệm, ngoài là chân xuất nhập dữ liệu nó còn là chân phát động theo ngắt ngoài, nó có thể được lập trình để có trở kháng lớn dùng làm ngõ vào, nhập trạng thái n

Trang 1

Khi đọc qua tài liệu này, nếu phát hiện sai sót hoặc nội dung kém chất lượng xin hãy thông báo để chúng tôi sửa chữa hoặc thay thế bằng một tài liệu cùng chủ đề của tác giả khác

Bạn có thể tham khảo nguồn tài liệu được dịch từ tiếng Anh tại đây:

http://mientayvn.com/Tai_lieu_da_dich.html

Thông tin liên hệ:

Yahoo mail: thanhlam1910_2006@yahoo.com

Gmail: frbwrthes@gmail.com

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM

KHOA CÔNG NGHỆ ĐIỆN TỬ



BÀI TIỂU LUẬN NGHIÊN CỨU VI ĐIỀU KHIỂN PIC 16F84A

Giảng viên hướng dẫn : Huỳnh Minh Ngọc

Sinh viên thực hiện : Lê Tấn Anh(09286231)

Hứa Thị Hằng(09286371)

ĐHCNTPHCM,30 tháng 03 năm 2012

Trang 3

Bộ nhớ chương trình (Flash Program Memory) 1024 word, với bộ nhớ này có thể xóa ghi được 1000 lần, chiều rộng câu lệnh là 1 word 14 bit Xử lý dữ liệu ở dạng

8 bit tương ứng với 1 byte

ở mức 25mA, với nguồn nuôi trong khoảng 2V đến 5.5V Có bộ định thời Timer

0 (TMR0) dùng thanh đếm xung 8 bit, nên tối đa có thể đếm được 256 nhịp PIC có thể lập trình và nạp ngay trên bo Có nhiều tùy chọn cho mạch dao động tạo xung nhịp chính

Có mode truy cập theo dịa chỉ trực tiếp, gián tiếp và địa chỉ tương đối Có mode bảo vệ mã (Code Protection), và mode sleep dùng tiết kiệm điện năng khi ở trạng thái chờ

PIC có chức năng WDT- bộ đếm xung thời gian

2 Ý nghĩa các chân của PIC 16F84A

Chân OSC1/CLKIN : là chân ngõ vào của mạch dao động thạch anh, dùng để định tần số xung nhịp, và cũng là ngõ vào của mạch tạo xung nhịp

OSC2/CLKOUT : là chân ngõ vào của dao động thạch anh, đồng thời cũng là ngõ ra của xung nhịp

MCLR (Master Clear) : là chân reset, tác dụng của chân là trả lệnh về vị trí ban đầu và xác lập lại vị trí ban đầu cho các thanh ghi có chức năng đặc biệt Với lệnh tác dụng ở mức thấp

Trang 4

Port A(RA0, RA1, RA2, RA3,RA4) : là cổng xuất nhập, có 5 bit

RA4/TOCKI : là chân đa nhiệm, vừa là chân xuất nhập vừa là chân lấy xung cho bộ định thời timer 0 Và chân này có cực máng để hở

Port B từ RB0 đến RB7 : là cổng xuất nhập dữ liệu, có 8 bit

RB0/INT : đây là chân đa nhiệm, ngoài là chân xuất nhập dữ liệu nó còn là chân phát động theo ngắt ngoài, nó có thể được lập trình để có trở kháng lớn dùng làm ngõ vào, nhập trạng thái ngoiaf vào PIC

RB4, RB5 : là chân xuất nhập, đồng thời là chân phát động ngắt theo sự thay đổi trên các chân này

RB6 : là chân xuất nhập, và cũng là chân phát động ngắt theo sự thay đổi của chân, có thể lập trình để để phát xung nhịp cho truyền PIC ở dạng nối tiếp RB7 : là chân xuất nhập, phát động ngắt theo sự thay đổi trên chân này, bên cạnh đó nó còn có thể lập trình để cho trao đổi dữ liệu

VSS : là chân nối masse để lấy dòng

VDD : là chân nối với nguồn dương từ 2V đến 5.5V

Trang 5

3 Các khối chức năng(Kết cấu bên trong) của PIC 16F84A

Sơ đồ khối của PIC 16F84A được trình bày như hình bên dưới, nó được sử dụng dây chung 14 hàng và kết cấu phân ly dây chung số liệu 8 bít làm cho nó có thể tiến hành đồng thời viếc đọc và nhận các lệnh cũng như chấp hành lệnh, nâng cao được tốc độ vận hành

Trang 6

SƠ ĐỒ KHỐI KẾT CẤU BÊN TRONG PIC 16F84

RAM

Bộ nhớ văn kiện 36x8

EEDATA

EEPROM Data Memerg 64x8

Làm trễ dao động

Làm trễ cấp điện

WDT

Trang 7

Flash Program Memory: có dung lượng 1024 thanh nhớ, loại rộng 14 bit

(1Kx14) Ở đây ta cất giữ các mã lệnh của chượng trình nguồn, nó được truy cập theo mã địa chỉ có trong thanh ghi PC (Program Counter) Mã lệnh xuất ra trên thanh ghi Instruction Register

Thanh ghi Program Counter: dùng ghi các địa chỉ của mã lệnh của bộ nhớ

Flash ROM Trong hoạt động, khi dùng lệnh nhảy đến các chương trình con, thì địa chỉ hiện tại sẽ được tạm thời cất giữ trong các thanh ghi ngăn xếp, và chiều sâu ngăn xếp có 8 lớp (8 Level Stack)

Ngăn xếp (Level Stack): dùng lưu giữ các mã địa chỉ của chương trình chính khi trong chưương trình có dùng lệnh nhảy Cất vào địa chỉ ngăn xếp ta dùng lệnh Push và lấy địa chỉ ra từ ngăn xếp có thể dùng lệnh Pop

Thanh ghi mã lệnh( Instruction Register ): ở ngõ ra, mã lệnh có thể chuyển

đến khối giải mã Instruction Decode & Control để tạo ra lệnh điều khiển Hay chuyển đến khối xử lý địa chỉ đa kênh Address Multiplex để truy cập các thanh nhớ trong bộ nhớ RAM (File Register)

Khối giải mã (Instruction Decode & Control): xác định tính năng điều khiển

trong câu lệnh, nó tác dụng vào khối định trạng thái cho IC Khối này gồm có các chức năng: Power-up Timer, Oscillator Start-up Timer, Power-on Reset, Watchdog Timer

Power-up Timer dùng kích hoạt IC theo đồng hồ Timer

Oscillator Start-up Timer: để làm mạch dao động theo đồng hồ Timer

Watchdog Timer: bộ định thời dùng vào ra mode theo đồng hồ Timer, là tính năng dùng tiết kiệm điện

Timing Generation: là khối tạo ra xung nhịp chính, tần số của xung nhịp

thường định theo thạch anh PIC16F84A có thể hoạt động với xung nhịp 20MHz

Đồng hồ Timer 0 (TMR0) dùng một thanh đếm 8 bit để tạo ra chức năng điều khiển theo thời gian Nó có thể đếm tối đa 256 xung nhịp, khi thanh đếm đầy bit báo tràn sẽ chuyển lên mức 1

I/O Port (gồm Port A có 5 chân và Port B có 8 chân) dùng xuất nhập dữ liệu

Nhiều chân còn có tính đa nhiệm, nên ngoài chức năng xuất nhập dữ liệu nó

Trang 8

còn có các chức năng khác, như nhập xung đếm trên chân RA4/TOCKI, ngắt trên chân RB0/INT…

EEPROM Data Memory (bộ nhớ dữ liệu): đây là bộ nhớ xóa ghi được trên 1

triệu lần, EEPROM có 64 thanh nhớ, với độ rộng 8 bit (1 byte) Để truy cập

dữ liệu trong các thanh nhớ, mã địa chỉ sẽ chuyển vào thanh ghi EEADR và

dữ liệu xuất nhập trên thanh ghi EEDATA

Bộ nhớ RAM File Register: đây là bộ nhớ RAM có 68 thanh nhớ, với độ rộng

8 bit, trong đó có 12 thanh nhớ chuyên dụng (SFR, Special Function Register), các thanh nhớ còn lại được dùng làm thanh nhớ phổ dụng (GPR, General Purpose Register) Các thanh nhớ chuyên dụng xác định hoạt động của IC, các thanh nhớ phổ dụng dùng làm thanh nhớ tạm Khi IC mất nguồn, các dữ liệu trong các thanh nhớ RAM đều bị xóa sạch Người ta truy cập dữ liệu trong các thanh nhớ của RAM với bó nối mã địa chỉ RAM Addr (7 đường)

và xuất nhập dữ liệu trên bó nối Data Bus (8 đường)

Thanh ghi FSR (File Select Register) dùng truy tìm dữ liệu theo mã địa chỉ gián tiếp (Indirect Address), dùng bó nối Indirect Addr (7 đường)

Thanh ghi STATUS (Status Register) dùng chọn định các điều kiện cho IC

MUX (Multiplex) là khối xử lý đa nhiệm, nó cung cấp mã cho khối xử lý ALU ALU (Arithmetic & Logic Unit) là khối thực hiện các phép toán số học và logic

Thanh ghi W (Work Register) là thanh ghi tích lũy, nó cất giữ các kết quả của

khối toán ALU

4 Bộ nhớ Flash Program Memory- EEPROM

Đây là loại bộ nhớ ROM xóa ghi bằng mức áp cao Vpp, nên nội dung ghi trong các thanh nhớ sẽ không bị xóa dù IC không được cấp điện Các thanh nhớ này có thể cho xóa ghi lại nhiều lần, dung lương của bộ nhớ là 64 byte, số lần xóa ghi bị hạn chế Vì vậy bộ nhớ EEPROM không được dùng làm bộ nhớ tạm thời như RAM, bộ nhớ EEPROM chỉ được dùng để ghi các dữ liệu ít phải thay đổi

Trang 9

Thanh nhớ có địa chỉ 0000h (Reset Vector) là vị trí nhảy đến chức năng Reset Khi IC vừa được cấp điện, hay do tác dụng của bộ định thời và bất cứ lý do nào khác, tác dụng Reset sẽ cho chương trình khởi đầu trở lại từ địa chỉ 0000h Thanh nhớ 0004h (Interrupt Vector) dùng cho chức năng ngắt

Thanh ghi 2007h (Configuration word) dùng để xác định hoạt động cơ bản của PIC

5 Bộ nhớ RAM

Trang 10

Bộ nhớ RAM của PIC 16F84A về chức năng có thể chia thành loại bộ nhớ thông dụng và bộ nhớ chuyên dùng Về không gian thì có thể chia thành hai băng, đó là băng 0 và băng 1

6 Các thanh ghi

a Thanh ghi trạng thái STATUS

Thanh ghi có địa chỉ là 03h

Bit 7: trong PIC 16F84A không dùng bít này

Bit 6-5: đƣợc dùng để chọn bank Thật ra thì bit 6 luôn để mức 0 và chỉ thay đổi bit 5, nếu xác lập trị 00 là chọn bank 0, còn xác lập trị 01 là chọn băng 1

Bit 4: Bit=’1’: sau khi cấp nguồn dùng lệnh CLRWDT hay SLEEP

Bit=’0’: thì lệnh WDT diễn ra

Bit 3: Bit=’1’: sau cấp nguồn hay sau lệnh CLRWDT

Bit=’0’: thực hiện lệnh SLEEP

Bit 2: Bit=’1’: khi kết quả phép toán bằng 0

Bit=’0’: khi kết quả phép toán khác 0

Bit 1: Bit=’1’: khi xuất hiện tràn số ở bit thấp thứ 4

Bit=’0’: không có bit tràn ở bit thấp thứ 4

Bit 0: Bit=’1’: khi xuất hiện tràn số ở thanh ghi

Bit=’0’: không có số tràn ở thanh ghi

b Thanh ghi OPTION

Bit 7: Bit cho phép điện trở kéo lên ở portB

Bit=’1’: không cho treo các chân ở PortB

Bit=’0’: cho treo các chân ở PortB

Bit 6: Bit chọn cạnh ngắt

Bit=’1’: ngắt cạnh lên của xung trên chân RB0/INT

Trang 11

Bit=’0’: ngắt cạnh xuống của xung trên chân RB0/INT

Bit 5: Bit nguồn tín hiệu TMR0

Bit=’1’: mạch làm việc với xung vào trên chân RA4/TOCKI Bit=’0’: mạch dùng xung nội

Bit 4: Bit chọn cạnh tín hiệu TMR0

Bit=’1’: cạnh từ mức cao xuống mức thấp ở chân RA4/TOCKI Bit=’0’: cạnh từ mức thấp lên mức cao trên chân RA4/TOCKI Bit 3: Bit gán bộ chia số tỉ lệ trước

Bit=’1’: cho xác lập trước với mạch WDT

Bit=’0’: cho xác lập trước với mạch TMR0

c Thanh ghi INTCON

Bit 7: Bit xác định điều kiện mở hay tắt tất cả các ngắt

Bit=’1’: cho dùng tất cả các ngắt

Bit=’0’: tắt tất cả các ngắt

Bit 6: Bit cho phép tắt mở dạng ngắt khi ghi xong vô EEPROM

Bit=’1’:cho mở ngắt khi ghi xong vô EEPROM

Bit=’0’:cho tắt ngắt

Trang 12

Bit 5: Bit cho phép ngắt TMR0 tràn

Bit=’1’: cho phép ngăt

Bit 1: Là bít cờ ngắt RB0/INT mà chỉ ra sự thay đổi trên RB0

Bit=’1’: chỉ ra sự thay đổi diễn ra

Bit=’0’: chỉ ra không có sự thay đổi diễn ra

Bit 0: Là bit cờ ngắt thay đổi ở chân B4 và chân B7 ở port B

Bit=’1’: chỉ ra một trong 4 chân ngõ vào B4 đến B7 có sự thay đổi trạng thái Bit này được xóa bằng phần mềm

Bit=’0’: chỉ ra không có sự thay đổi

II.ỨNG DỤNG CỦA PIC 16F84A

Các chip đơn thường dùng là mạch tích hợp số TTL,CMOS,nắm vững về nó không phải là dễ dàng vì vấn đề là ở hỗ các chip đơn thông minh,không những chúng ta phải nắm vững phần cứng mà còn phải nắm vững phần mềm.Khi thiết kế phần mềm cần phải có nhiều sang tạo

Do PIC 16F84 có EEPROM cóthể viết và xóa để lưu chương trình cho nên nó đặc biệt thích hợp với một số ứng dụng thường phải thay đổi giá trị.PIC 16F84 thích hợp cho những người mới học lập trình vì nó có thể viết và xóa dễ dàng.Ngoài ra trong bộ nhớ EEPROM 64x8 không chỉ có chức năng bảo

vệ số liệu khi mất điện mà còn có tính bảo mật cao

Như vậy trước hết chúng ta sẽ tìm hiểu về các tập lệnh của 16F84A

Một lệnh hợp ngữ đầy đủ gồm 4 phần:

+Nhãn(LABEL)

Trang 13

-BCF:xóa bit trong ô nhớ F

-BSF:bật bit lên 1 trong ô nhớ F

Vd:BSF 6,4;bật bit 4 của ô nhớ 6 -BTFSC:kiểm tra bit trong ô nhớ và bỏ qua lệnh kế tiếp nếu bit bị xóa

Vd:BTFSC 3,2;kiểm tra bit 2(cờ Z) của thanh ghi STATUS ●Lệnh này sẽ bỏ qua nếu cờ Z=0

-BTFSS:kiểm tra bit trong ô nhớ và nhảy qua lệnh kế nếu bit được bật lên 1

b)Lệnh byte

-ADDWF:Cộng nội dung thanh ghi W vào ô nhớ F Vd:ADDWF 7;cộng W với ô nhớ 7.Kết quả đặt vào ô nhớ 7

Vd:ADDWF 7,W;như trên nhưng kết quả đượ lưu vào thanh ghi W

-ANDWF:Nội dung của thanh ghi W được logic AND với ô nhớ F.Lệnh này ảnh hưởng đến cờ DC và cờ Z

Vd:ANDWF 12h,W;W AND 12H

Vd:ANDWF 12H;như trên nhưng kết quả lưu vào 12H

-CLRF:Lệnh này xóa 8 bit trong ô nhớ F.Trạng thái ảnh hưởng đến cờ Z

Vd:CLRF 5;xóa ô nhớ 5

Trang 14

-CLRW:xóa nội dung thanh ghi W -COMF:Lấy bù 8 bit trong ô nhớ F

Vd:COMF 6;đảo bit bù ô nhớ 6 -DECF:Nội dung của ô nhớ F giảm đi 1.Lệnh này có tác dụng khi đếm về 0

Vd:DECF 12;giảm ô nhớ 12 đi 1,kết quả lưu tại ô nhớ 12 Vd:DECF 12,W;như trên nhưng kết quả lưu ở W

-DECFSZ:Nội dung ô nhớ F được giảm đi 1 và lệnh kế được bỏ qua nếu kq=0’

Vd:DECFSZ 12;Lệnh này thường dùng để tạo trễ

-INCF:Cộng 1 vào ô nhớ F.Giá trị này sau đó được so sánh với cái khác để xem giá tri tổng đã đạt được chưa

-INCFSZ:Cộng 1 vào ô nhớ F.Nếu kết quả bằng 0 thì bỏ qua lệnh kế tiếp

-IORWF:Nội dung thanh ghi tích lũy W được logic OR với ô nhớ F

-MOVF:Nội dung của ô nhớ F được di chuyển vào thanh ghi tích lũy Ư.Từ đó dữ liệu có thể chuyển đến port ngõ ra.Lệnh này ảnh hưởng đến cờ Z

-MOVWF:Nội dung của thanh ghi W chuyển đến ô nhớ F

-NOP(No Operation):không làm gì cả nhưng để tạo trễ 1 chu kỳ máy.Lệnh này có tác dụng cho các trì hõan nhỏ

-RLF:Nội dung của ô nhớ F được quay trái 1 bit thông qua cờ Z.Dịch đi 1 bit nghĩa là số

đó nhân 2.Lệnh này có ích khi lên xuống nhị phân

Vd:RLF 12,W;dịch trái ô nhớ 12,kết quả lưu ở ô thanh ghi W

-RRF:Nội dung của ô nhớ F được quay phải 1 bit thông qua cờ nhớ C

-SUBWF:Trừ W từ F.Nghĩa là lấy F-W

Vd:SUBWF 14,W;ô nhớ 14-W,kết quả lưu ở W

Lưu ý: Nếu W>F thì cờ C=0 nghĩa là kết quả âm

Nếu W<F thì cờ C=1 nghĩa là kết quả dương

Nếu Ư=F thì cờ Z=1.Tạng thái này ảnh hưởng đến cờ Z

-SWAPF:4 bit thấp và 4 bit cao được hóan đổi cho nhau

Trang 15

-XORWF(Exclusive Or):Nội dung W được EXOR.Nếu 1 ngõ vào trên port chỉ báo nhiệt

độ giống như thanh ghi W thì kết quả là 0 và cờ Z=1

Lưu ý: Không thể EXOR ngõ vào trực tiếp của 1 ô nhớ mà phải làm điều này bằng cách nạp ô nhớ vào

thanh ghi W trước.trạng thái này ảnh hưởng đến cờ Z

Như trong phần này ta đã thấy thanh ghi tích lũy W quan trọng như thế nào trong hoạt động của Vi điều khiển.Dữ liệu không thể di chuyển trực tiếp từ A đến B mà phải thông qua W (A đến W,W đến B)

2.Các tác vụ số và điều khiển

-ADDLW:Cộng 1 số với thanh ghi W

-ANDLW:Nội dung thanh ghi W được AND với số 8 bit.Kết quả đặt vào thanh ghi W -CALL:gọi chương trình con trong chương trình chính.Lệng này tốn 2 chu kỳ máy -CLRWDT:xóa bộ đếm xung thời gian

-GOTO:Lệnh nhảy không điều khiển tới 1 vị trí cụ thể trong chương trình

-IORLW:Nội dung của W được OR với 1 số

-MOVLW:số 8 bit di chuyển trực tiếp vào W.Lệnh này ảnh hưởng đến cờ Z

-RETFIE:Trở về từ ngắt, -RETLW:Lệnh được dùng ở cuối chương trình con để trở về chương trình chính.Giá trị

số đượcđặt vào W.Lệnh này có ích trong bảng tìm kiếm

-RETURN:Lệnh này dùng trở về chương trình con

-SLEEP:khi thực hiện lệnh này chip VĐK đặt ở chế độ nghỉ.Bộ đếm xung thời gian và bộ chia tần bị xóa

-SUBLW:Nội dung thanh ghi được trừ đi 1 số

-EXORLW:Nội dung của thanh ghi W được EXOR với 1 số 8 bit.Nếu kết quả là 0 thì nội dung là gắn kết

III.MỘT SỐ VÍ DỤ VỀ PIC 16F84A

VÍ DỤ 1:ĐẾM SỰ KIỆN

-Xét ví dụ đếm sự kiện số người đi vào tòa nhà, xe đi vào bãi đậu xe,nếu

bị mất nguồn thì dữ liệu vẫn được lưu trữ.Như vậy,khi ta chuyển mạch ta phải chuyển dữ liệu EEPROM trước đó vào ô nhớ COUNT

Trang 16

-Nút nhấn được mô phỏng quá trình đếm và 8 LED ở port B hiển thi số đếm ở dạng nhị phân.Tác dụng của công tắc là chống dội

Một vài điểm trước khi xem xét chương trình:

-EEROM phải được RESET trước khi bắt đầu.Việc này có thể thực hiện bằng cách ghi 00H đến địa chỉ 0H.Điều này được thực hiện bằng lệnh sau:

ORG 2100h

Trong đó:2100h là địa chỉ của bộ nhớ dữ liệu đầu tiên,nghĩa là 00H.DE định nghĩa dữ liệu EEPROM Vì vậy khi khởi động với địa chỉ 00h và 2100h là địa chỉ đầu tiên.Dữ liệu có thể ghi vào EEPROM bằng lệnh VIEW

-Ở đây ta lấy ví dụ về bộ nhớ 8 bit nên số lần phải nhấn nút khi có người đi qua là 28

=256 lần,sau đó sẽ được RESET lại.Với bộ nhớ 10 bit cũng tương tự nhưng một số thông số sẽ được thay đổi tương ứng

Lưu đồ có thể được minh họa như sau:

CHUYỂN DỮ LIỆU EEPROM VÀO Ô NHỚ

COUNT

NÚT NHẤN ĐƯỢC NHẤN?

1=YES,0=NO 000=

INCF COUNT(Bằng lệnh)

CHUYỂN COUNT ĐẾN PORT B

CHUYỂN COUNT ĐẾN EEPROM

Ngày đăng: 09/10/2017, 12:39

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w