ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN
***
ĐỀ TÀI:
ỨNG DỤNG VI ĐIỀU KHIỂN PIC
TRONG ĐẾM SẢN PHẨM
Giáo viên hướng dẫn: TS. Trần Đình Khôi Quốc
Học viên : Nguyễn Hữu Tiến
Lớp : 01ĐTĐ
Đà Nẵng, 05/ 2006
ĐỒ ÁN TỐT NGHIỆP
Em xin bày tỏ lòng biết ơn chân thành đến thầy Trần Đình Khôi Quốc đã
tận tình hướng dẫn và tạo mọi điều kiện thuận lợi cho em trong thời gian thực
hiện luận văn tốt nghiệp này.
Em xin chân thành cảm ơn quý thầy cô ở bộ môn tự động hóa đã tạo điều
kiện và hổ trợ em trong suốt quá trình học tập
Em xin chân thành cảm ơn gia đình đã tạo những điều kiện thuận lợi nhất
để em học tập cũng như hoàn thành luận văn tốt nghiệp này.
Cuối cùng em xin chân thành cảm ơn sự giúp đỡ động viên của bạn bè đã
giúp em hoàn thành luận văn tốt nghiệp này.
Sinh viên thực hiện
NGUYỄN HỮU TIẾN
ĐỒ ÁN TỐT NGHIỆP
Trong những năm gần đây, khoa học kỹ thuật đã có những bước tiến rất
nhanh chóng ở các quốc gia trên toàn thế giới nói chung và Việt Nam nói riêng.
Ngành tự động hóa đã, đang và sẽ tiếp tục có những đóng góp to lớn cho tình
hình phát triển chung đó. Một trong những thành tựu của ngành tự động hóa là
việc cho ra đời các hệ thống sản xuất tự động thay thế con người. Điều này đã
1.4 Sơ đồ chân của PIC16F84A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Tổ chức bộ nhớ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Các thanh ghi chức năng đặc biệt (SFR) quan trọng và hoạt động của
chúng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 PORT I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.1 Port A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.2 Port B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8 Hoạt động định thời . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.9 Hoạt động ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.10 Tập lệnh của họ PIC16FXX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.11 SƠ ĐỒ CHÂN PIC 16F877A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.12 SƠ ĐỒ KHỐI PIC 16F877A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.13 TỔ CHỨC BỘ NHỚ CỦA PIC 16F877A . . . . . . . . . . . . . . . . . . . 26
1.14 Kết luận chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Chương 2:
TỔNG QUAN VỀ HỆ THỐNG BĂNG CHUYỀN ĐẾM SẢN PHẨM
2.1. Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2. Chọn phương án thiết kế: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.1. Với mạch đếm sản phẩm dùng IC rời có: . . . . . . . . . . . . . . . . 33
2.2.2. Với mạch đếm sản phẩm dùng kỹ thuật vi xử lí: . . . . . . . . . . 33
2.2.3. Phương pháp đếm sản phẩm dùng vi điều khiển: . . . . . . . . . . 34
2.3. Mô tả: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.1. Yêu cầu: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.2 Các bộ phận chính của hệ thống băng chuyền. . . . . . . . . . . . . . 35
ĐỒ ÁN TỐT NGHIỆP
2.4. Mục đích yêu cầu của đề tài: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5. Giới gạn của đề tài: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6. Các khối trong sơ đồ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.1.Vi điều khiển: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.2. MAX 232:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.8 Cách mã hóa của các loại REMOTE thông dụng . . . . . . . . . . . . . . 57
3.8.1. Mã RC5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.8.2. Mã Sony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.8.3. Mã Daewoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.8.4. Mã của JVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.8.5. Mã Panasonic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.9. Kết luận chương: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Chương 4:
THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG . . . . . . . . . . . . . . . . . . . . . . 64
4.1 Giới thiệu chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.2 Sơ đồ khối chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Sơ đồ mạch nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.4 Thiết kế Kit vi điều khiển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.5 Thiết kế mạch hiển thị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.6 Thiết kế mạch đóng cắt động cơ . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.7 Thiết kế mạch thu phát hồng ngoại . . . . . . . . . . . . . . . . . . . . . . . 72
4.8 Kết luận chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Chương 5:
THIẾT KẾ VÀ THI CÔNG PHẦN MỀM . . . . . . . . . . . . . . . . . . . . . . . 75
5.1.Thuật toán chương trình chính: . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2. Thuật toán chương trình EnterProduct:. . . . . . . . . . . . . . . . . . . . 76
5.3. Thuật toán chương trình EnterNumber: . . . . . . . . . . . . . . . . . . . 77
5.4.Thuật toán chương trình task: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.5. Thuật toán chương trình remote: . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.6.Thuật toán chương trình keyboard:. . . . . . . . . . . . . . . . . . . . . . . . 80
5.7.Thuật toán chương trình CountProduct: . . . . . . . . . . . . . . . . . . . . 82
5.8. Thuật toán chương trình Interrupt: . . . . . . . . . . . . . . . . . . . . . . . 84
5.9 Thuật toán chương trình Rs232:. . . . . . . . . . . . . . . . . . . . . . . . . . . 85
ĐỒ ÁN TỐT NGHIỆP
Chương 1:
của họ: PIC1650. Đây là con vi điều khiển đầu tiên, là mẹ đẻ của tất cả các vi
điều khiển họ PIC sau này. Đến ngày nay, PIC1650 được phát triển và được biết
dưới tên gọi PIC16C54. Nó được thiết kế để dùng cho các thiết bị ngoại vi của vi
xử lý CP1600
Tóm lược dòng PIC:
-Mã số bắt đầu là 12xxxx có nghĩa là opcode của nó 12 bit, bắt đầu với
16xxxx là các con PIC 14 bit và 18xxxx là PIC 16 bit
- Mã số C là các PIC có bộ nhớ EPROM, duy chỉ có con 16C84 là EEPROM,
F là Flash, LF là PIC Flash hoạt động ở điện áp thấp, con cũ là LV. Ngoài ra, một
số con xxFxxx là EEPROM, để phân biệt với con Flash thì các bạn sẽ thấy chữ A
ở tận cùng. Vd: 16F877 và 16F877A,16F84 và 16F84A,v.v.
- Các SX PIC được dùng nhiều hơn vì nó cung cấp nhiều công cụ tính toán
hơn Microchip PIC, tuy vậy, ở VN vẫn phổ biến với các con PIC của Microchip.
Ngôn ngữ lập trình:
-Ngôn ngữ lập trình rất đa dạng MPASM, C, Basic, Pascal…. Mọi người sẽ
thích dùng các ngôn ngữ cấp cao vì nó đơn giản hơn, ở đây em sử dụng trình
biên dịch mikropascal. Ngoài ra còn có các trình biên dịch khác như: MPLAB,
CCS C, BASCOM, C17, C18, C30… C18
1.3 Tóm tắt phần cứng PIC16F84A
1.3.1Cấu trúc bên trong và các đặc trưng cơ bản
♦Kiến trúc của PIC
ĐỒ ÁN TỐT NGHIỆP
-PIC được tổ chức phần cứng theo kiến trúc Harvard, và tập lệnh RISC. Sự
khác biệt giữa kiến trúc Harvard và kiến trúc Von Neumann ở chỗ bộ nhớ dữ liệu
và bộ nhớ chương trình nằm riêng biệt, hay nằm chung.
-Chúng ta sẽ thấy rằng, với kiến trúc von-Neumann, bộ nhớ dữ liệu và bộ nhớ
chương trình nằm chung, do vậy khi CPU tương tác với bộ nhớ, nó chỉ có thể
làm việc với hoặc bộ nhớ dữ liệu, hoặc bộ nhớ chương trình nên tốc độ xử lý
chậm đi. Trong khi đó, kiến trúc Harvard cho phép CPU tương tác với cả hai bộ
nhớ dữ liệu và bộ nhớ chương trình cùng một lúc, giúp tốc độ xử lý nhanh hơn.
RA0 – RA3 : Cổng giao tiếp hai chiều (Bi-directional I/O port)
RA4/T0CKI : Cổng giao tiếp hai chiều (Bi-directional I/O port). Giữ vai trò như
một bộ định thời dựa vào xung ngoài ( Clock input to the TMR0 timer/counter)
RB0/INT : Cổng giao tiếp hai chiều (Bi-directional I/O port)
Chân ngắt ngoài (External interrupt pin)
RB1 – RB7 :Cổng giao tiếp hai chiều (Bi-directional I/O port)
VSS : Chân mass
VDD :Chân nguồn (+2.0V to +5.5V)
Hình 1.3: Sơ đồ chân của PIC16F84A
ĐỒ ÁN TỐT NGHIỆP
1.5 Tổ chức bộ nhớ
ĐỒ ÁN TỐT NGHIỆP
ĐỒ ÁN TỐT NGHIỆP
Hinh 1.4: Tổ chức bộ nhớ của PIC16F84A
♦ Bộ nhớ chương trình(Flash Program Memory)
Bộ nhớ chương trình là loại bộ nhớ kiểu FLASH dùng để chứa chương trình
.Kích thước bộ nhớ chương trình là 1024 vị trí nhớ, mỗi vị trí nhớ có độ lớn là 14
bit (word).Mỗi khi nguồn mất thì nội dung của bộ nhớ sẽ không bị mất. Có khả
năng lập trình được nhiều lần,số lần ghi được giới hạn là 1000 lần .Vị trí 0000h
và vị trí 0004h được dành cho reset và vector ngắt.
♦ Reset Vector ( 0000h )
Khi xảy ra reset, hoặc bằng cách bật nguồn hoặc do các nguyên nhân khác thì
chương trình sẽ bắt đầu ở vị trí này .PIC16F84A có các cách reset sau :
-Reset khi bật nguồn, POR (Power-On Reset)
-Reset khi có mức logic 0 trên chân MCRL
-Reset khi ở chế độ ngủ (Sleep)
-Reset khi bộ watchdog bị tràn (WDT)
Trong đó cách reset do bật nguồn (POR) và do có mức logic 0 trên chân MCRL
là thường được sử dụng nhất
♦ Peripheral Interrupt Vector ( 0004h )
trình tiếp tục bình thường. Do PIC16F84 có 8 thanh ghi stack nên các chương
trình con có thể gọi lồng nhau liên tiếp 8 lần ,vì sau lần gọi thứ 8 thì một lệnh gọi
sẽ làm mất nội dung của ngăn stack thứ tám .Do đó khi gặp lệnh return thì PC sẽ
gửi tới chương trình địa chỉ trở về sai, điều đó làm cho chương trình hoạt động
sai.
ĐỒ ÁN TỐT NGHIỆP
Hình 1.5: Hoạt động của stack
1.6 Các thanh ghi chức năng đặc biệt (SFR) và hoạt động của chúng
12 vị trí nhớ đầu tiên của mỗi bank được dành cho các thanh ghi chức năng đặc
biệt (FSR), các thanh ghi này rất quan trọng trong hoạt động của họ vi điều khiển
PIC.
♦ Thanh ghi STATUS (địa chỉ bộ nhớ 03h và 83h)
Hình 1.6: Thanh ghi STATUS
-Bit IRP, RP1, RP0: bit dung để chon bank ,ở PIC16F84A bit IRP không được sử
dụng,việc chọn bank phụ thuộc vào hai bit RP1 và RP0
00: chọn bank 0;
01: chọn bank1
-Bit
TO
( time out bit) :cờ báo tràn bộ WDT
1: không xảy ra tràn
0: tràn xảy ra
-Bit PD (Power-down)
1: sau khi bật nguồn
0: khi kích hoạt lệnh SLEEP
ĐỒ ÁN TỐT NGHIỆP
-Bit Z : cờ zero
1: kết quả bằng 0
0: kết quả bằng 1
Bảng 1.8: Tỉ lệ thời gian (µs) cho TMR0 và WDT
♦ Thanh ghi INDF(địa chỉ bộ nhớ 00h)
Thanh ghi này được sử dụng trong định địa chỉ gián tiếp
♦ Thanh ghi EECON1 (địa chỉ bộ nhớ 88h)
Hình 1.9: Thanh ghi EECON1
-Bit EEIF (EEPROM Write Operation Interrupt Flag bit) : Bit này được sử dụng
để báo việc ghi vào EEPROM đã kết thúc
1: quá trình ghi đã kết thúc
0: quá trình ghi chưa kết thúc, hoặc chưa được thực hiện
-Bit WRERR (Write EEPROM Error Flag bit) : cờ báo lỗi trong quá trình ghi
EEPROM
1: có lỗi xảy ra
0: không có lỗi xảy ra
-Bit WREN (EEPROM Write Enable bit): bit cho phép ghi vào EEPROM
1: cho phép ghi
0: không cho phép
-Bit WR (Write Control bit) : thiết lập bit này để bắt đầu ghi dữ liệu trong thanh
ghi EEDATA tới địa chỉ được chỉ định trong thanh ghi EEADR
-Bit RD (Read control bit) : thiết lập bít này để bắt đầu truyền dữ liệu ở địa chỉ
trong thanh ghi EEADR tới thanh ghi EEDATA
ĐỒ ÁN TỐT NGHIỆP
1.7 PORT I/O
-Port I/O được sử dụng để PIC giao tiếp với các thiết bị ngoài. PIC16F84A có 13
chân vào ra. Chúng được phân thành hai port, PORTA và PORTB. PORTA có 5
chân và PORTB có 8 chân, PORTA tương ứng với thanh ghi PORTA và PORTB
tương ứng với thanh ghi PORTB. Mỗi thanh ghi gồm 8 bit và mỗi chân của port
tương ứng với mỗi bit, mỗi chân có thể được quy định là ngõ vào hay ngõ ra.
Việc qui định chân là ngõ vào hay ngõ ra phụ thuộc vào việc thiết lập bit tương
Ở portA chân RA4 ngoài chức năng vào ra cơ bản, nó còn có một chức năng
đặc biệt khác là ngõ vào của xung ngoài. Nó khác với các chân còn lại của porta
là FET cho điều khiển ngõ ra chỉ có NFET và một mạch Schmittch Trigger được
dùng làm bộ đệm ngõ vào . Như hình vẽ sau:
ĐỒ ÁN TỐT NGHIỆP
Hình 1.14: Cấu trúc bên trong của RA4
Chân này còn được sử dụng làm ngõ vào của xung ngoài định thời cho bộ định
thời TMR0, bởi vì nó sử dụng bộ đệm ngõ vào là một mạch Schmittch Trigger,
do đó nó nó rất nhạy với nhiễu, đồng thời do ở ngõ ra không có P-FET đóng vai
trò như là một điện trở kéo lên, vì vậy cần phải mắc điện trở kéo lên bên ngoài.
1.7.2 Port B
Nó gồm có 8 chân :từ RB0 đến RB7
♦ Cấu trúc bên trong của portB(RB0-RB3)
Hình 1.15: Cấu trúc bên trong của portB
Cấu tạo của portB khác với portA. Ở portB không sử dụng FET trong mạch
ngõ ra mà sử dụng một cổng logic(NAND) để qui định chế độ vào ra. Đặc trưng
của portB là có điện trở kéo lên khi ở chế độ là ngõ vào. Chức năng điện trở kéo
lên này có thể lập trình bằng phần mềm.
ĐỒ ÁN TỐT NGHIỆP
Khi ghi vào bộ đệm thanh ghi TRIS giá trị “0” , ngõ ra Q của DFF(TRIS Latch)
có giá trị 0 ,lúc đó cổng điều khiển ngõ ra được mở, đồng thời ngõ ra cổng
NAND luôn ở mức 1, lúc đó P-MOS tắt dẫn tới chức năng điện trở kéo lên bị vô
hiệu hóa
Khi ghi vào bộ đệm thanh ghi TRIS giá trị “1” , ngõ ra Q của DFF(TRIS
Latch) có giá trị là “1”. PORT ở chế độ ngõ vào lúc đó cổng điều khiển ngõ ra bị
cấm, đồng thời ngõ ra của cổng NAND ở mức “1” hay mức “0” tùy thuộc vào
chân RBPU ,tức là cho phép hay không cho phép chức năng điện trở kéo lên.
RBPU là bit 7 của thanh ghi OPTION. Nếu bít RPBU bằng “0” cho phép có điện
trở kéo lên, nếu bằng “1” thì ngược lại.
♦ Cấu trúc bên trong của portB (RB4-RB7)