1. Trang chủ
  2. » Mẫu Slide

Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus

66 680 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

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 2,34 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hiện nay sự tiến bộ khoa học kĩ thuật trên thế giới diễn ra nhanh chóng, với sự ra đời của hàng loạt những sản phẩm mới ứng dụng những tiến bộ ở những nước phát triển. Đặc biệt trong những năm gần đây kĩ thuật điều khiển phát triển mạnh mẽ, có nhiêug công nghệ điều khiển mới được ra đời để thay thế cho những công nghệ truyền thống.Để bắt kịp với tiến bộ khoa học kĩ thuật trên thế giới cũng như đáp ứng yêu cầu CNH_HĐH đất nước thì ngành công nghiệp Việt Nam đang thay đổi nhanh chóng, công nghệ và thiết bị hiện đại đang dần dần được thay thế các công nghệ lạc hậu và thiết bị cũ. Các thiết bị công nghệ tiên tiến với hệ thống điều khiển lập trình PLC, Vi xử lý, điện khí nén, điện tử đã và đang được ứng dụng rộng rãi trong công nghiệp như các dây truyền sản xuất, chế biến, máy điều khiển theo chương trình CNC, các hệ thống đèn giao thông, các hệ thống báo động…vv. Trong các trường đại học, cao đẳng và các trường trung học đã và đang đưa các thiết bị hiện đại có khả năng lập trình được vào giảng dạy. Một trong những loại thiết bị có ứng dụng mạnh mẽ và đảm bảo có độ tin cậy cao là hệ thống vi xử lýVới yêu cầu “Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus”. Em đã nhận thấy được những ưu điểm của hệ thống điều khiển có hiệu quả cao này. Sau quá trình học tập rèn luyện và nghiên cứu em đã tích luỹ được vốn kiến thức để thực hiện tiểu luận của mình.

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT

TIỂU LUẬN

XỬ LÝ TÍN HIỆU TRONG CÔNG NGHIỆP

Giảng viên hướng dẫn : PGS.TS NGUYỄN ĐỨC KHOÁT

Học viên : NGUYỄN HỮU CƯỜNG Lớp : Tự động hóa K26

Hà Nội tháng 5 – 2014

Trang 2

Lời nói đầu

Hiện nay sự tiến bộ khoa học kĩ thuật trên thế giới diễn ra nhanh chóng, với sự ra đời của hàng loạt những sản phẩm mới ứng dụng những tiến bộ ở những nước phát triển Đặc biệt trong những năm gần đây kĩ thuật điều khiển phát triển mạnh mẽ, có nhiêug công nghệ điều khiển mới được ra đời để thay thế cho những công nghệ truyền thống

Để bắt kịp với tiến bộ khoa học kĩ thuật trên thế giới cũng như đáp ứng yêu cầu CNH_HĐH đất nước thì ngành công nghiệp Việt Nam đang thay đổi nhanh chóng, công nghệ và thiết bị hiện đại đang dần dần được thay thế các công nghệ lạc hậu và thiết bị cũ Các thiết bị công nghệ tiên tiến với hệ thống điều khiển lập trình PLC, Vi

xử lý, điện khí nén, điện tử đã và đang được ứng dụng rộng rãi trong công nghiệp như các dây truyền sản xuất, chế biến, máy điều khiển theo chương trình CNC, các

hệ thống đèn giao thông, các hệ thống báo động…vv Trong các trường đại học, cao đẳng và các trường trung học đã và đang đưa các thiết bị hiện đại có khả năng lập trình được vào giảng dạy Một trong những loại thiết bị có ứng dụng mạnh mẽ và đảm bảo có độ tin cậy cao là hệ thống vi xử lý

Với yêu cầu “Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus” Em đã nhận thấy được những ưu điểm của hệ

thống điều khiển có hiệu quả cao này

Sau quá trình học tập rèn luyện và nghiên cứu em đã tích luỹ được vốn kiến thức để thực hiện tiểu luận của mình

Cùng với sự hướng dẫn tận tình của thầy giáo Nguyễn Đức Khoát, đến nay em đã

hoàn thành đề tài này với nội dung sau:

1 Tìm hiểu được ngôn ngữ lập trình C cho vi điều khiển

2 Tìm hiểu nghiên cứu bộ vi điều 8 bit PIC16F877

3 Thiết kế mô hình mô phỏng dựa trên phần mềm Proteus

4 Chạy mô phỏng và hoàn thành thuyết minh

Do thời gian nghiên cứu có hạn nên không thể tránh khỏi nhưng sai sót, em rất mong nhận đựơc sự chỉ dẫn của thầy hướng dẫn,và sự góp ý các bạn học viên để giúp chuyên đề của em hoàn thiện hơn, đáp ứng đầy đủ những mục tiêu đã đặt ra

Em xin chân thành cảm ơn!

Vĩnh Phúc, ngày 8 tháng 5 năm 2014

HỌC VIÊN

Trang 3

Nguyễn Hữu Cường

Trang 4

CHƯƠNG I TÌM HIỂU NGÔN NGỮ LẬP TRÌNH CHO VI ĐIỀU KHIỂN

I Ngôn ngữ C cho vi điều khiển

1.1 Giới thiệu ngôn ngữ C

Trong kỹ thuật lập trình vi điều khiển nói chung, ngôn ngữ lập trình được sử dụng thường chia làm 2 loại: Ngôn ngữ bậc thấp và Ngôn ngữ bậc cao

Ngôn ngữ bậc cao là các ngôn ngữ gần vơi ngôn ngữ con người hơn, do đó việc lập trình bằng các ngôn ngữ này trở nên dễ dàng và đơn giản hơn Có thể kể đến một số ngôn ngữ lập trình bậc cao như C, Basic, Pascal… trong dó C là ngôn ngữ thông dụng hơn cả trong kỹ thuật vi điều khiển Về bản chất, sử dụng các ngôn ngữ này thay cho ngôn ngữ bậc thấp là giảm tải cho lập trình viên trong việc nghiên cứu các tập lệnh và xây dựng các cấu trúc giải thuật Chương trình viết bằng ngôn ngữ bậc cao cũng sẽ được một phần mềm trên máy tính gọi là trình biên dịch (Compiler) chuyển sang dạng hợp ngữ trước khi chuyển sang mã máy

Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấu trúc của bộ vi điều khiển Có nghĩa là với một người chưa quen với một vi điểu khiển cho trước sẽ xây dựng được chương trình một cách nhanh chóng hơn, do không phải mất thời gian tìm hiểu kiến trúc của vi điều khiển

1.2 Ngôn ngữ C

1.2.1 Kiểu dữ liệu

a Kiểu dữ liệu trong C

Kiểu Số Byte Khoảng giá trị

Trang 5

Mảng là một tập hợp nhiều phần tử cùng một kiểu giá trị và chung một tên Các phần tử của mảng phân biệt với nhau bởi chỉ số hay số thứ tự của phần tử trong dãy phẩn tử Mỗi phần tử có vai trò như một biến và lưu trữ được một giá trị độc lập với các phần tử khác của mảng Mảng có thể là mảng một chiều hoặc mảng nhiều chiều

/ Phép chia lấy phần nguyên X=a/b: (a=9, b=2 → X=4)

% Phép chia lấy phần dư a%b : (a=9, b=2 → X=1)

Trang 6

d Phép toán thao tác Bit

^ Phép hoặc loại trừ (XOR) Bit_1 ^ Bit_2

1 Khai báo chỉ thị tiền xử lý

2 Khai báo các biến toàn cục

3 Khai báo nguyên mẫu các hàm

> So sánh lớn hơn a>b : 4>5 các giá trị 0

>= So sánh lớn hơn hoặc bằng a>=b : 6>=2 các giá trị 1

< So sánh nhỏ hơn a<b : 6<7 các giá trị 1

<= So sánh nhỏ hơn hoặc bằng a<=b : 8<=5 các giá trị 0

== So sánh bằng nhau a==b : 6==6 các giá trị 1

!= So sánh khác nhau a!=b : 9!=9 các giá trị 0

Trang 7

Cách 2: #ifdef ten_macro

Đoạn chương trình 1 #else

Đoạn chương trình 2 #endif

* Chỉ thị #ifndef

- Cú pháp:

Cách 1: #ifndef ten_macro

Đoạn chương trình #endif

Cách 2: #ifndef ten_macro

Đoạn chương trình 1 #else

Đoạn chương trình 2 #endif

- Cấu trúc: if(dieu_kien)

{

Trang 8

1.3 Trình biên dịch Keil C (compiler)

1.3.1 Khởi tạo cho Project.

Trang 9

Để tạo 1 project mới chọn project → New project như sau:

Đánh tên và chuyển đến thư mục bạn lưu project.bạn nên tạo mỗi một thư mục cho

1 project rồi chọn save Hộp thoại sau hiện ra:

Trong này có 1 loạt các hãng điện tử sản xuất 8051 bạn lập trình cho con nào thì chọn con đấy, kích chuột vào dấu + để mở rộng các con IC của các hang ở đây ta lập trình cho AT89C51 của hang ATMEL nên ta chọn như trên

Khi chọn chip thì ngay lập tức 1 bảng hiện ra 1 số tính năng của chip các bạn có thể nhìn thấy: 8051 based fully static 24Mhz … nhập OK Để tạo một file code các bạn

chọ file → new hoặc ấn ctrl+N như sau:

Trang 10

Cửa sổ text1 hiện ra Tiếp theo bạn chọn File → save As hoặc Ctrl+S, để lưu File

mặc dù chưa có gì như sau:

Được cửa sổ sau:

Các bạn nhập tên vào text box file name.chú ý tên gì cũng được nhưng không được thiếu đuôi mở rộng C, và nhấn SAVE

Trong ô bên trái màn hình, cửa sổ PROJECT WORKSPACE, các bạn mở rộng cái target 1 ra như sau:

Trang 11

Nhấp chuột phải nên SOURCE GROUP, chọn Add file to Group “Source Group 1” hộp thoại hiện ra chọn file C mà các bạn vừa SAVE rồi nhấn Add 1lấn rồi nhấn Close nếu bạn nhấn Add 2 lần nó sẽ thong báo là file đã add bạn chỉ việc OK rồi nhấn Close Được như sau:

Bây giờ trong hình nhìn thấy trong Source Group 1 có file VIDU.C các bạn nhấp chuột phải vào vùng soạn thảo file VIDU.C để thêm file thư viện Chon Insert

“#include<REGX51.H>”

Phần cuối cùng của công việc khởi tạo là các bạn viết lời giải thích cho dự án của mình phần này rất cần thiết vì nó để người khác hiểu mình làm gì trong project này

và khi mình cần sử dụng lại code đọc lại còn biết nó là cái gì

1.4 Soạn thảo chương trình.

Trang 12

Ta viết thử 1 chương trình làm ví dụ khi viết xong mỗi dòng lệnh nên giải thích dòng lệnh đó làm gì Ví dụ:

1.5 Biên dịch một chương trình.

Sau khi soạn thảo xong nhấn Ctrl+S để nhớ Nhớ xong các bạn biên dịch chương

trình bắng cách ấn phím F7 hoặc chọn Build target là biểu tượng ngay trên cửa sổ Workspace, như trên hình:

Để biên dịch chương trình thành file HEX các bạn chọn: Project→option for

‘target 1’ như hình vẽ:

Trong hộp thoại hiện ra, hãy check vào Creat HEX File như chỉ dẫn: chọn thẻ táp target nhập lại tần số thạch anh là 12Mhz

Trang 13

Để mô phỏng các bạn chon Debug→Start/stop debug session hoặc ấn Ctrl+F5,

hoặc nhấn vào Icon chữ D màu đỏ trong cái kính lúp trên thanh công cụ

Để chạy chương trình các bạn ấn chuột phải vào màn hình soạn thảo, rồi ấn F11.mỗi làn ấn sẽ chạy 1 lệnh.khi debug nếu các bạn chờ hàm delay lâu quá 1000 lần lặp các bạn nhấn ctrl+F11 để bỏ qua hàm hoặc ấn F10 để chạy từng dòng lệnh

II Ví dụ minh họa: Điều khiển Led đơn, Led 7 thanh và nút nhấn

1.1 Hiển thị Led đơn

Bài toán:Ghép nối LED đơn với chân P1.0 của vi điều khiển, viết chương trình

điều khiển LED nhấp nháy với thời gian trễ là 1s.

+ Chương trình điều khiển:

/*==================Bo tien xu li===================*/

#include<AT89x51.h> // Dinh kem file thu vien

#define bat 1 // Dinh nghia gia tri bat den Led

#define tat 0 // Dinh nghia gia tri tat den Led

Trang 14

/*==================khai bao bien==================*/sbit Led = P1^0; // Khai bao bien Led kieu bit chan P1.0

/*================= Khai bao hàm==================*//* -ham tre -*/void delay(long time)

{

while(time );

}

/* -ham chinh -*/void main(void)

{

while(1) {

Led = bat; // bat Leddelay(25000); // tre 1sLed = tat; // tat Leddelay(25000); //tre 1s }

}

1.2 Hiển thị LCD

1.2.1 Ghép nối vi điều khiển với LCD 16x2.

- Sơ đồ ghép nối LCD với vi điều khiển:

Bài toán : Hãy viết chương trình hiển thị trên LCD:

Dòng 1 chữ “VIETNAM” bằng cách hiển thị tưng kí tự

Trang 15

Dòng 2 chữ "VI DIEU KHIEN" bằng cách hiển thị cả chữ Với sơ đồ mạch cho dướí đây.

Chương trình:

/*=========bo tien xu li===============*/

#include<AT89x51.h>

#include<string.h>

/*===========khai bao bien toan cuc============*/

sfr LCDdata = 0xA0; // cong P2, 8 bit du lieu

sbit BF = 0xA7; // co ban, bit DB7

sbit RS = P3^0; // chon thanh ghi

sbit RW = P3^1; // doc/ghi

sbit EN = P3^2; //cho phep chot du lieu

/*===========cac chuong trinh con cua LCD==========*/

/* -kiem tra su san sang cua LCD -*/

void wait(void)

{

RS=0; //chon thanh ghi lenh

RW=1; //đoc tu LCD

LCDdata=0xff; //gia tri 0xff

while(BF) //kiem tra co ban

EN=0; //dua xung cao xuong thap đe chot

EN=1; //dua chan cho phep len cao

/* -thiet lap lenh cho LCD -*/

void LCDcontrol(unsigned char x)

{

RS=0;//chon thanh ghi lenhRW=0;//ghi len LCD

Trang 16

LCDdata=x ;// gia tri xEN=1;//cho phep muc caoEN=0;//xung cao xuong thapwait();//đoi LCD san sang.

}

/* -Khoi tao LCD -*/void LCDinit(void)

{

LCDcontrol(0x38);//2 dong va ma tran 5x7LCDcontrol(0x0e);//bat man hinh, bat con troLCDcontrol(0x01);//xoa man hinh

EN=1;//cho phep muc caoEN=0;//xung cao xuong thapwait();//cho

Trang 17

LCDinit(); // khoi tao LCDLCDcontrol(0x82);// dua con tro den vi tri thu 4 dong 1LCDwrite(‘V’);

LCDwrites("VI DIEU KHIEN");

while(1); //vong lap vo han}

}

Trang 18

CHƯƠNG II NGHIÊN CỨU KHẢO SÁT BỘ VI ĐIỀU KHIỂN 8 BÍT

PIC16F877

1 Giới thiệu bộ vi điều khiển 8 bít

Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi trong các lĩnh vực kỹ thuật và đời sống xã hội, đặc biệt là trong kỹ thuật tự động hoá và điều khiển từ xa Giờ đây với nhu cầu chuyên dụng hoá, tối ưu (thời gian, không gian, giá thành), bảo mật, tính chủ động trong công việc ngày càng đòi hỏi khắt khe Việc đưa ra công nghệ mới trong lĩnh vực chế tạo mạch điện tử để đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính thực tế cao

1.1 Khái niệm về bộ vi điều khiển

Để hiểu khái niệm về bộ vi điều khiển, ta có thể làm phép so sánh nó với bộ

vi xử lý công dụng chung như sau:

Ta biết rằng, các bộ vi xử lý công dụng chung như họ Intel x86 (8086,

80286, 80386, 80486 và Pentium) hoặc họ Motorola 680x0(6800, 68010,

68020, 68030, 68040 vv ) không có RAM, ROM và không có các cổng ra vào trên chip Với lý do đó mà chúng được gọi là các bộ vi xử lý công dụng chung

Một nhà thiết kế hệ thống sử dụng một bộ vi xử lý công dụng chung chẳng hạn như Pentium hay 68040 sẽ phải bổ xung thêm RAM, ROM, các cổng vào ra và các bộ định thời ngoài để làm cho chúng hoạt động được Mặc dù việc bổ xung các RAM, ROM, các cổng vào ra sẽ làm cho hệ thống cồng kềnh lên nhưng nó lại có ưu điểm khi sử dụng các bộ vi xử lý này là rất linh hoạt Chẳng hạn như người thiết kế có thể quyết định về số lượng RAM, ROM, và các cổng vào ra cần thiết sao cho phù hợp với khả năng, mục đích

sử dụng của hệ thống

Điều này không thể có đối với các bộ vi điều khiển Bởi vì, một bộ vi điều khiển đã có một CPU (một bộ vi xử lý) cùng với một số lượng RAM, ROM, các

cổng vào ra và một bộ định thời trên cùng một chíp Hay nói cách khác là bộ vi

xử lý, RAM, ROM, các cổng vào ra và một bộ định thời cùng được nhúng trên

một chip Do vậy người thiết kế không thể bổ xung thêm bộ nhớ ngoài, số các

cổng vào ra hoặc bộ định thời cho nó Với số lượng RAM, ROM và số các cổng

vào ra cố định như vậy là một mặt hạn chế (k m linh hoạt) xong nó lại thật sự lý

tưởng đối với những ứng dụng mang tính chuyên biệt, tối ưu về giá thành, tối ưu

về không gian

Hiện nay trên thị truờng có các bộ vi điều khiển 8 bít chính là 6811 của

Trang 19

Motorola, 8051 của Intel, Z8 của Xilog và Pic16x của Microchip Technology Mỗi loại trên đây đều có một tập lệnh và thanh ghi riêng duy nhất, nên chúng đều không tương thích lẫn nhau Cũng có những bộ vi điều khiển 16 bít và 32 bít được sản xuất ra bởi các hãng sản xuất chíp khác nhau

1.2 Những yêu cầu để lựa chọn một bộ vi điều khiển là:

Trang 20

Đáp ứng nhu cầu tính toán của bài toán một cách hiệu quả về mặt giá thành

và đầy đủ chức năng có thể nhìn thấy được, (khả dĩ)

Có sẵn các công cụ phát triển phần mềm chẳng hạn như các trình biên

dịch trình hợp ngữ và gỡ rối

Nguồn các bộ vi điều khiển có sẵn nhiều và tin cậy

1.3 Các tiêu chuẩn lựa chọn một bộ vi điều khiển:

Tiêu chuẩn đầu tiên và trước hết trong lựa chọn một bộ vi điều khiển là nó phải đáp ứng nhu cầu bài toán về mặt công suất tính toán, giá thành và hiệu quả Trong khi phân tích các nhu cầu của một dự án dựa trên bộ vi điều khiển, chúng ta trước hết phải biết là bộ vi điều khiển nào là 8 bít, 16 bít hay 32 bít

có thể đáp ứng tốt nhất nhu cầu tính toán của bài toán một cách hiệu quả nhất Những tiêu chuẩn được đưa ra để cân nhắc là:

Tốc độ: Tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu

Kiểu đóng vỏ: Đó là kiểu 40 chân DIP hay QFP hay là kiểu đóng vỏ khác Đây là điều quan trọng đối với yêu cầu về không gian, kiểu lắp ráp và tạo mẫu thử cho sản phẩm cuối cùng

Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với những sản phẩm dùng pin, ắc quy

Dung lượng bộ nhớ RAM và ROM trên chíp Số

chân vào - ra, bộ định thời, số ngắt trên chíp

Khả năng dễ dàng nâng cấp cho hiệu suất cao hoặc giảm công suất tiêu thụ

Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành cuối cùng của sản phẩm mà một bộ vi điều khiển được sử dụng

2 Bộ Vi điều khiển 8 bit PIC16F877

2.1 Đặc tính nổi bật của bộ vi xử lí

+ Sử dụng công nghệ tích hợp cao RISC CPU

+ Người sử dụng có thể lập trình với 35 câu lệnh đơn giản

+ Tất cả các câu lệnh thực hiện trong một chu kì lệnh ngoại trừ một số câu lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh

+ Tốc độ hoạt động là: - Xung đồng hồ vào là DC- 20MHz

- Chu kỳ lệnh thực hiện trong 200ns

+ Bộ nhớ chương trình Flash 8Kx14

words + Bộ nhớ Ram 368x8 bytes

+ Bộ nhớ EFPROM 256x 8 bytes

- Khả năng của bộ vi xử lí này

+ Khả năng ngắt ( lên tới 14 nguồn ngắt trong và ngắt

Trang 21

ngoài ) + Ngăn nhớ Stack được phân chia làm 8 mức

+ Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián

tiếp + Nguồn khởi động lại (POR)

+ Bộ tạo xung thời gian (PWRT) và bộ tạo dao động (OST)

+ Bộ đếm xung thời gian (WDT) với nguồn dao động trên chíp (nguồn dao động RC ) hoạt động đáng tin cậy

+ Có mã chương trình bảo vệ

+ Phương thức cất giữ SLEEP

+ Có bảng lựa chọn dao động

+ Công nghệ CMOS FLASH /EEPROM nguồn mức thấp ,tốc độ

cao + Thiết kế hoàn toàn tĩnh

+ Mạch chương trình nối tiếp có 2 chân + Xử

lý đọc /ghi tới bộ nhớ chương trình + Dải

điện thế hoạt động rộng : 2.0V đến 5.5V +

Nguồn sử dụng hiện tại 25 mA

+ Dãy nhiệt độ công nghiệp và thuận lợi

+ Công suất tiêu thụ thấp:

< 0.6mA với 5V, 4MHz

20 A với nguồn 3V, 32 kHz

< 1 A nguồn dự phòng

Các đặc tính nổi bật của thiết bị ngoại vi trên chip

+ Timer0: 8 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước

+ Timer1: 16 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước, có khả năng

tăng trong khi ở chế độ Sleep qua xung đồng hồ được cung cấp bên ngoài

+ Timer 2: 8 bít của bộ định thời, bộ đếm với 8 bít của hệ số tỷ lệ trước, hệ số

tỷ lệ sau

+ Có 2 chế độ bắt giữ, so sánh, điều chế độ rộng xung(PWM)

+ Chế độ bắt giữ với 16 bít, với tốc độ 12.5 ns, chế độ so sánh với 16 bít, tốc

độ giải quyết cực đại là 200 ns, chế độ điều chế độ rộng xung với 10 bít

+ Bộ chuyển đổi tín hiệu số sang tương tự với 10 bít

+ Cổng truyền thông nối tiếp SSP với SPI phương thức chủ và I2C(chủ/phụ)

+ Bộ truyền nhận thông tin đồng bộ, dị bộ(USART/SCL) có khả năng phát

hiện 9 bít địa chỉ

+ Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR và CS điều

khiển

Trang 22

.Sơ đồ các chân PIC16F87X

Trang 23

Sơ đồ khối bộ vi điều khiển PIC16F87X

2.2 So sánh với bộ vi điều khiển 8051

*Bộ vi điều khiển 8051 là bộ VĐK đầu tiên thuộc họ VĐK x51 được sản xuất bởi công ty Intel, Siemens, Advanced Micro Devices, Fujitsu, Philips

Các đặc điểm chung của bộ VĐK này:

Có khả năng quản lý được 64 KB bộ nhớ dữ liệu ngoài (RAM ngoài)

Có bộ xử lý logic riêng (thao tác trên các bit)

Trang 24

Có thể thao tác trực tiếp được 210 bit (các bit này đã được địa chỉ hoá)

Có 5 ngắt

Dùng nguồn dao động ngoài

Dùng điện áp 5V để cho chip hoạt động

*Cổng P0: Có dạng cực máng hở và có 8 chân (8 bit) là cổng vào/ra hoặc là

cổng chuyển dữ liệu và địa chỉ

*Cổng P1: Là cổng vào/ra có 8 chân (8 bit)

*Cổng P2: Có 8 chân (8 bit) là cổng vào/ra hoặc là cổng chuyển dữ liệu và địa chỉ

*Cổng P3: Có 8 chân, cổng này có thể là cổng vào/ra 8 bit hay còn có các

chức năng quan trọng khác như phục vụ cho ngắt, các bộ định thời, việc

truyền nhận dữ liệu truyền thông nối tiếp, đọc và ghi các bộ nhớ ngoài…

Sơ đồ khối của VĐK 8051:

I / O Ports

ROM

4 K

Timer 0 Timer 1

Serial port

T

Trang 25

P0 P2 P1 P3 TxD RxDGND

Như vậy có thể thấy đặc điểm đầu tiên mà PIC16F877 đem lại và nổi bật so với VĐK

8051 là dòng PIC16F877 những đặc tính kĩ thuật hơn hẳn so với bộ VĐK

8051 thể hiện ở những điểm sau:

lượng

Ngoài những đặc tính trên thì bộ vi điều khiển PIC16F877 còn có một đặc

điểm hơn hẳn so với 8051 là có 10 bít chuyển đổi A/D trên chíp điều này sẽ giúp

chúng ta không phải mất một bộ chuyển đổi (sẽ dẫn đến kết nối dây trở nên phức

tạp)

Một đặc điểm nữa là bộ vi điều khiển PIC16F877 có bộ tạo dao động chủ

trên chíp điều này sẽ tránh được những sai số không cần thiết trong việc tạo

xung dao động, vi điều khiển PIC16F877 có khả năng tự Reset bằng bộ

WDT, và có thêm 256 byte EEPROM

2.3 Sự tổ chức bộ nhớ Pic16F877

Pic16F877 có 3 khối bộ nhớ Bộ nhớ chương trình PLASH, bộ nhớ dữ liệu

RAM, bộ nhớ EEPROM

2.3.1 Sự tổ chức bộ nhớ chương trình FLASH và Stack nhớ

Vi điều khiển PIC16F877 có một bộ đếm chương trình 13 bit và có 8Kx14

từ mã của bộ nhớ chương trình FLASH, được chia thành 4 trang mỗi trang

2Kx14 từ mã

Khi Reset địa chỉ bắt đầu thực hiện chạy là 0000h, Vector ngắt bắt đầu

0004h

Stack có 8 mức dùng để lưu địa(PC) chỉ lệnh thực hiện tiếp theo sau lệnh

CALL và khi xẩy ra ngắt

Bản đồ bộ nhớ chương trình và các ngăn xếp

Trang 26

2.3.2 Sự tổ chức bộ nhớ dữ liệu RAM

RAM là bộ nhớ có thể đọc và ghi, nó không lưu dữ liệu khi mất điện, bộ nhớ RAM của PIC16F877 có 4 bank, mỗi bank có dải địa chỉ 0-7FH(128byte) trên các bank những thanh ghi đa mục đích, nó hoạt động như một RAM tĩnh (General purpose register), và nhưng thanh ghi chức năng đặc biệt(Special function registers) ở vùng địa chỉ thấp Bít RP1(Status <6>) và bit RP0(Status <5>) dùng để lụa chọn bank làm việc

Trang 27

Hình ảnh các bank như sau:

Các thanh ghi đa mục đích: (General Purpose Register), các thanh ghi này được truy cập bằng cả hai cách trực tiếp hoặc gián tiếp qua thanh ghi FSR,tổng cộng có 368 byte

Các thanh ghi chức năng đặc biệt Các thanh ghi này được dùng bởi CPU và các khối ngoại vi để điều khiển sự hoạt động theo yêu cầu của thiết bị

Các thanh ghi này có thể được phân loại vào hai bộ phận trung tâm (CPU) và ngoại

vi

Sau đây là một số thanh ghi đặc biệt quan trọng

* Các thanh ghi trạng thái STATUS: Có 4 thanh ghi trạng thái trên 4 dãy, tại các địa chỉ 03h, 83h, 103h, 183h Các thanh ghi này cho biết trạng thái của phần tử lôgic toán học ALU, trạng thái RESET, trạng thái của các bit lựa chọn dãy thanh ghi cho bộ nhớ dữ liệu

Thanh ghi trạng thái có thể là kết quả của một số lệnh như là với một số thanh ghi khác Nếu thanh ghi trạng thái là kết quả bởi một lệnh mà tác động đến các bit Z, DC, C thì việc ghi vào các bit này là không thể

* Các thanh ghi lựa chọn OPTION_REG: Có hai thanh ghi lựa chọn tại các

Trang 28

địa chỉ 81h và 181h, các thanh ghi này có thể đọc hoặc ghi, nó chứa đựng nhiều bit điều khiển khác nhau để xác định hệ số định trước TMR0/hệ số định sau WDT, ngắt ngoài INT, TMR0, các điện áp treo trên cổng B

* Các thanh ghi INTCON: Có 4 thanh ghi INTCON tại các địa chỉ 0Bh, 8Bh, 10Bh, 18Bh Các thanh ghi này có thể đọc và ghi, nó chứa đựng nhiều sự cho phép và các bit cờ cho việc tràn thanh ghi TMR0, các ngắt thay đổi cổng RB

và chân các ngắt ngoàI RB0/INT

* Thanh ghi PIE1: Tại địa chỉ 8Ch, chứa đựng các bit cho phép riêng lẻ cho các ngắt ngoại vi

* Thanh ghi PIR1: Tại địa chỉ 0Ch, chứa đựng các bit cờ riêng lẻ cho các ngắt ngoại vi

* Thanh ghi PIE2: Tại địa chỉ 8Dh, chứa đựng các bit cho phép riêng lẻ cho các ngắt ngoại vi CCP2, ngắt xung đột tuyến SSP và EEPROM ghi các hoạt động ngắt

* Thanh ghi PIE2: Tại địa chỉ 8Dh, chứa đựng các cờ bit cho các ngắt ngoại

vi CCP2, ngắt xung đột tuyến SSP và EEPROM ghi các hoạt động ngắt

* Thanh ghi PCON (Power Control): Chứa bit cờ cho phép phân biệt giữa

việc Reset hệ thống (POR) để Reset MCLR ngoại với Reset WDT

* PCL và PCLATH Chương trình đếm chỉ rõ địa chỉ của lệnh tiếp theo

được thực hiện PC có độ rộng 13 bit, byte thấp được gọi là thanh ghi PCL, thanh ghi này có thể đọc hoặc ghi Byte cao được gọi là thanh ghi PCH, nó chứa các bit PC<12:8> và không trực tiếp đọc hoặc ghi mà toàn bộ sự cập nhập của nó thông qua thanh ghi PCLATH Khi reset 5 bit PCLATH<4:0> nạp tới PCH, khi thực hiện các lệnh CALL, GOTO 11 bit Ofcode<10:0> và 2 bit PCLATH<4:3> tạo thành 13 bit nạp vào PC Do vậy khi dùng lệnh CALL, GOTO chú đến hai bit PCLATH<4:3> đó cũng chính là hai bit chỉ các trang của bộ nhớ chương trình

Hình ảnh sự nạp PCLATH tới PC

Trang 29

2.3.3 Các trang bộ nhớ chương trình

PIC16F877 có 8Kx14 PLASH các lệnh CALL, GOTO chỉ cung cấp 11 bit địa chỉ cho phép rẽ nhánh được 2k<0->211-1>của một trang bộ nhớ chương trình 2 bit cao được cung cấp bởi 2 bit 3,4 của PCLATH<4:3> do vậy tuỳ việc thiết lập các bit 3,4 của PCLATH trước khi lệnh CALL, GOTO thực hiện cho phép rẽ nhánh tới các trang bộ nhớ khác nhau

Chú ý các lệnh RETURN, RETFIE không làm thay đổi PCLATH

Ví dụ từ trang 0 gọi chuơng trình con ở trang 1 như sau

Trang 30

RETURN

END

2.3.4 Truy cập bộ nhớ RAM bằng địa chỉ trực tiếp, gián tiếp

* Ví dụ đọc ô nhớ 0xE0 bằng địa chỉ trực tiếp

* Truy cập RAM bằng địa chỉ gián tiếp

Thanh ghi FSR chỉ ra địa chỉ(0->0XFF) ô nhớ cần truy cập, thanh ghi

INDF cho nội dung ô nhớ truy cập, bit IRP thanh ghi STATUS<7> chỉ ra

bank truy cập

ví dụ xoá các ô nhớ từ địa chỉ 0x20-0xFF

Trang 31

BTFSS STATUS, ZR

GOTO LOOP

2.3.5 Bộ nhớ dữ liệu EEPROM và bộ nhớ chương trình FLASH

Các bộ nhớ này có thể đọc và ghi trong khi các hoạt động vẫn diễn ra bình thường Bộ nhớ dữ liệu không trực tiếp sắp xếp dữ liệu trên các thanh ghi dữ liệu còn trống Thay vì đó là đánh các địa chỉ gián tiếp qua các thanh ghi

chức năng đặc biệt Có 6 thanh ghi SFR dùng để đọc và ghi bộ nhớ chương trình và bộ nhớ dữ liệu EEPROM đó là các thanh ghi:

từ 00h tới FFh

Bộ nhớ dữ liệu EEPROM được xếp vào loại cao cho các chu trình xoá/ghi Thời gian được điều khiển bởi một bộ định thời trên chip Thời gian ghi sẽ thay đổi cùng với điện thế và nhiệt độ

Bộ nhớ chương trình cho phép đọc và ghi các kí tự Khi tác động đến khối chương trình nhớ, các thanh ghi EEDATH, EEDATA có dạng 2 byte kí tự giữ

14 bit dữ liệu để đọc/ghi và các thanh ghi EEADRH, EEADR có dạng hai bit

từ mã với 13 bit địa chỉ của vị trí EEPROM được truy cập Những thiết bị này

có thể có tới 8K từ mã của chương trình EEPROM với một địa chỉ giới hạn từ 0h tới 3FFh

* Thanh ghi EEADR

Thanh ghi địa chỉ có thể đánh địa chỉ lớn nhất là 256 Byte của dữ liệu EEPROM hoặc lớn nhất là 8K kí tự của chương trình FLASH Khi lựa chọn giá trị một địa chỉ chương trình, byte MS của địa chỉ sẽ được ghi vào thanh ghi EEADRH và byte LS được ghi vào thanh ghi EEADR Khi lựa chọn một giá trị địa chỉ dữ liệu, chỉ có byte LS của địa chỉ được ghi tới thanh ghi EEADR

* Các thanh ghi EECON1 và EECON2

Trang 32

EECON1 là thanh ghi điều khển cho việc nhập dữ liệu bộ nhớ

EECON2 không phải là thanh ghi vật lý Khi đọc thanh ghi EECON2 sẽ

đọc toàn bộ là 0 Thanh ghi EECON2 đựơc sử dụng dành riêng cho việc ghi

Các bit điều khiển RD và WR kích hoạt các hoạt động đọc và ghi theo thứ tự

Trong phần mềm những bit này không thể bị xoá, chỉ được set Chúng bị xoá

trong phần cứng khi mà các hoạt động đọc hoặc ghi hoàn thành Việc không

thể xoá bit WR trong phần mềm ngăn ngừa sự kết thúc bất ngờ hoặc kết thúc

sớm của một hoạt động ghi

2.3.6 Đọc bộ nhớ dữ liệu EEPROM

Để đọc một vị trí bộ nhớ dữ liệu, ta phải ghi địa chỉ vào thanh ghi EEADR,

xoá bit điều khiển EEPGD (EECON1<7>) sau đó set bit điều khiển RD

(EECON1<0>) Dữ liệu vẫn tồn tại trên nhiều lệnh tiếp theo ở trên thanh ghi

EEDATA, do đó nó có thể được đọc bởi lệnh tiếp theo EEDATA sẽ giữ giá

trị này cho tới khi có hoạt động đọc dữ liệu khác hoặc là tới khi được ghi

2.3.7 Ghi vào bộ nhớ dữ liệu EEPROM

Để ghi vào bộ nhớ EEPROM thì đầu tiên địa chỉ phải được ghi vào thanh ghi

EEADR và dữ liệu ghi vào thanh ghi EEDATA, và trình tự được tiến hành

Trang 33

A

; Dãy 3

; Con trỏ tới bộ nhớ dữ liệu

Ngày đăng: 10/05/2015, 08:39

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối bộ vi điều khiển PIC16F87X - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối bộ vi điều khiển PIC16F87X (Trang 23)
Sơ đồ khối của VĐK 8051: - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối của VĐK 8051: (Trang 24)
Hình ảnh sự nạp PCLATH tới PC - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
nh ảnh sự nạp PCLATH tới PC (Trang 28)
Sơ đồ khối chân RA3:RA0 và chân RA5 và của chân RA4/TOCKI của cổng A - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối chân RA3:RA0 và chân RA5 và của chân RA4/TOCKI của cổng A (Trang 37)
Sơ đồ khối của chân RB3 Đến RB0 , chân RB7 : RB4 của Cổng B - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối của chân RB3 Đến RB0 , chân RB7 : RB4 của Cổng B (Trang 38)
Sơ đồ khối cổng D - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối cổng D (Trang 39)
Sơ đồ khối của cổng E : - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối của cổng E : (Trang 40)
Sơ đồ khối của Timer0 và WDT: - Sử dụng Dspic để đo tốc độ động cơ có số xung là 100 xung, mô phỏng trên phần mềm Proteus
Sơ đồ kh ối của Timer0 và WDT: (Trang 42)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w