Tải bản đầy đủ (.doc) (139 trang)

Báo cáo TN mạch đếm và phân loại sản phẩm NOI DUNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.6 MB, 139 trang )

ĐỒ ÁN TỐT NGHIỆP KHĨA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

CHƯƠNG DẪN NHẬP
1 . ĐẶT VẤN ĐỀ :
Ngày nay cùng với sự phát triển của các ngành
khoa học kỹ thuật, kỹ thuật điện tử mà trong đó là kỹ
thuật số đóng vai trò quan trọng trong mọi lónh vực khoa
học kỹ thuật, quản lí, công nghiệp tự động hóa, cung
cấp thông tin…. do đó chúng ta phải nắm bắt và vận
dụng nó một cách có hiệu quả nhằm góp phần vào
sự phát triển nền khoa học kỹ thuật thế giới nói chung
và trong sự phát triển kỹ thuật điện tử nói riêng.
Xuất phát từ những đợt đi thực tập tốt nghiệp tại
nhà máy và tham quan các doanh nghiệp sản xuất,
chúng em đã được thấy nhiều khâu được tự động hóa
trong quá trình sản xuất. Một trong những khâu đơn giản
trong dây chuyền sản xuất tự động hóa đó là số lượng
sản phẩm làm ra được đếm một cách tự động.
Tuy nhiên đối với những doanh nghiệp vừa và nhỏ
thì việc tự động hóa hoàn toàn chưa được áp dụng trong
những khâu đếm sản phẩm, đóng bao bì mà vẫn còn
sử dụng nhân công.
Từ những điều đã được thấy đó và khả năng của
chúng em, chúng em muốn làm một điều gì nhỏ để
góp phần vào giúp người lao động bớt phần mệt nhọc
chân tay mà cho phép tăng hiệu suất lao động lên gấp
nhiều lần, đồng thời đảm bảo được độ chính xác cao.
Nên chúng em quyết đònh thiết kế một mạch đếm sản
phẩm vì nó rất gần gũi với thực tế và nó thật sự rất


có ý nghóa đối với chúng em vì đã làm được một phần
nhỏ đóng góp cho xã hội.
Để làm được mạch này cần thiết kế được hai phần
chính là: bộ phận cảm biến và bộ phận đếm.
* Bộ phận cảm biến: gồm phần phát và phần thu.
Thông thường người ta sử dụng phần phát là led hồng
ngoại để phát ra ánh sáng hồng ngoại mục đích để
chống nhiễu so với các loại ánh sáng khác, còn phần
thu là transistor quang để thu ánh sáng hồng ngoại.
* Bộ phận đếm có nhiều phương pháp thực thi đó là :
-Lắp mạch dùng kỹ thuật số với các IC đếm,
chốt, so sánh ghép lại
-Lắp mạch dùng kỹ thuật vi xử lí
-Lắp mạch dùng kỹ thuật vi điều khiển
GVHD : NGUYỄN TRỌNG KHANH

1

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHĨA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

2 . CHỌN PHƯƠNG ÁN THIẾT KẾ :
2.1 Phương pháp đếm sản phẩm dùng IC số :
Các ưu điểm sau:
• Cho phép tăng hiệu suất lao động.

• Đảm bảo độ chính xác cao.
• Tần số đáp ứng của mạch nhanh, cho phép đếm
với tần số cao.
• Khoảng cách đặt phần phát và phần thu xa nhau
cho phép đếm những sản phẩm lớn.
• Tổn hao công suất bé, mạch có thể sử dụng pin
hoặc acquy.
• Khả năng đếm rộng.
• Giá thành hạ.
• Mạch đơn giản dễ thực hiện.
Với việc sử dụng kỹ thuật số khó có thể đáp
ứng được việc thay đổi số đếm. Muốn thay đổi một
yêu cầu nào đó của mạch thì buộc lòng phải thay đổi
phần cứng.Do đó mỗi lần phải lắp lại mạch dẫn đến
tốn kém về kinh tế mà nhiều khi yêu cầu đó không
thực hiện được bằng phương pháp này.
Với sự phát triển mạnh của nghành kỹ thuật số
đặc biệt là cho ra đời các họ vi xử lí và vi điều khiển
rất đa chức năng do đó việc dùng kỹ thuật vi xử lí, kỹ
thuật vi điều khiển đã giải quyết những bế tắc và
kinh tế hơn mà phương pháp dùng IC rời kết nối lại
không thực hiện được.
2.2 Phương pháp đếm sản phẩm dùng kỹ thuật xử lí :
Ngoài những ưu điểm như đã liệt kê trong phương
pháp dùng IC rời thì mạch đếm sản phẩm dùng kỹ
thuật vi xử lí còn có những ưu điểm sau:
• Mạch có thể thay đổi số đếm một cách linh hoạt
bằng việc thay đổi phần mềm, trong khi đó phần
cứng không cần thay đổi mà mạch dùng IC rời
không thể thực hiện được mà nếu có thể thực

hiện được thì cũng cứng nhắc mà người công
nhân cũng khó tiếp cận, dễ nhầm.
• Số linh kiện sử dụng trong mạch ít hơn.

GVHD : NGUYỄN TRỌNG KHANH

2

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHĨA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

• Mạch đơn giản hơn so với mạch đếm sản phẩm
dùng IC rời và có phần cài đặt số đếm ban
đầu.
• Mạch có thể lưu lại số liệu của các ca sản xuất.
• Mạch có thể điều khiển đếm được nhiều dây
chuyền sản xuất cùng lúc bằng phần mềm.
• Mạch cũng có thể kết nối giao tiếp được với
máy tính thích hợp cho những người quản lí tại
phòng kỹ thuật nắm bắt được tình hình sản xuất
qua màn hình của máy vi tính.
Nhưng trong thiết kế người ta thường chọn phương
pháp tối ưu nhưng kinh tế do đó chúng em chọn phương
pháp đếm sản phẩm dùng kỹ thuật vi điều khiển.
2.3 Phương pháp đếm sản phẩm dùng vi điều khiển :

Ngoài những ưu điểm có được của hai phương pháp
trên, phương pháp này còn có những ưu điểm :
• Trong mạch có thể sử dụng ngay bộ nhớ trong đối
với những chương trình có quy mô nhỏ, rất tiện
lợi mà vi xử lí không thực hiện được.
• Nó có thể giao tiếp nối tiếp trực tiếp với máy
tính mà vi xử lí cũng giao tiếp được với máy tính
nhưng là giao tiếp song song nên cần có linh kiện
chuyển đổi dữ liệu từ song song sang nối tiếp để
giao tiếp với máy tính.
3 . MỤC ĐÍCH U CẦU CỦA ĐỀ TÀI :
Trong đồ án này chúng em thực hiện mạch đếm sản
phẩm bằng phương pháp đếm xung. Như vậy mỗi sản
phẩm đi qua trên băng chuyền phải có một thiết bò để
cảm nhận sản phẩm, thiết bò này gọi là cảm biến. Khi
một sản phẩm đi qua cảm biến sẽ nhận và tạo ra một
xung điện đưa về khối xử lí để tăng dần số đếm. Tại
một thời điểm tức thời, để xác đònh được số đếm cần
phải có bộ phận hiển thò. Tuy nhiên mỗi khu vực sản
xuất hay mỗi ca sản xuất lại yêu cầu với số đếm
khác nhau vì thế phải có sự linh hoạt trong việc chuyển
đổi số đếm. Bộ phận chuyển đổi trực quan nhất là
bàn phím. Khi cần thay đổi số đếm người sử dụng chỉ
cần nhập số đếm ban đầu vào và mạch sẽ tự động
đếm. Khi số sản phẩm được đếm bằng với số đếm ban

GVHD : NGUYỄN TRỌNG KHANH

3


SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHĨA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

đầu thì mạch sẽ tự động dừng. Từ đây suy ra mục đích
yêu cầu của đề tài:
• Số đếm phải chính xác, và thay đổi việc cài đặt
số đếm ban đầu một cách linh hoạt.
• Bộ phận hiển thò phải rõ ràng.
• Mạch điện không quá phức tạp, bảo đảm được sự
an toàn,dễ sử dụng.
• Giá thành không quá mắc.
4 . GIỚI HẠN CỦA ĐỀ TÀI :
• Các sản phẩm rất đa dạng với nhiều chủng loại:
đặc, rỗng, kích cỡ khác nhau. Nhưng với khả năng
của thiết bò lắp thì mạch chỉ có thể đếm đối
với sản phẩm có khả năng che được ánh sáng
và có kích thước từ 10cm3 đến 30cm3.
• Đếm số sản phẩm trong một thùng phạm vi thay
đổi từ 2 → 999.

PHẦN I : KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A
CHƯƠNG 1 : CẤU TRÚC PHẦN CỨNG CỦA PIC 16F877A
1.1 Sơ lượt về vi điều khiển PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ
dài 14 bit. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tố độ hoạt

động tối đa cho phép là 20 MHz.
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40
chân, bộ nhớ đủ cho hầu hết các ứng dụng thơng thường). Cấu trúc tổng qt của
PIC16F877A như sau:
• 8K Flash ROM.
• 368 Bytes RAM.
• 256 Bytes EEPROM.
• ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.
• Bộ định thời 8 bits (Timer 0 và Timer 2).
• Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết
kiệm năng lượng (SLEEP MODE) với nguồn xung Clock ngồi.
• bơ CCP( Capture / Compare/ PWM).
GVHD : NGUYỄN TRỌNG KHANH

4

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM











1 bộ biến đổi AD 10 bits, 8 ngõ vào.
bộ so sánh tương tự (Compartor).
1 bộ định thời giám sát (WatchDog Timer).
Một cổng song song 8 bits với các tín hiệu điều khiển.
Một cổng nối tiếp.
15 nguồn ngắt.
Có chế độ tiết kiệm năng lượng.
Nạp chương trình bằng cổng nối tiếp ICSP ( In-Circuit Serial
Programming).
• Được chế tạo bằng công nghệ CMOS
• 35 tập lệnh có độ dài 14 bits.
• Tần số hoạt động tối đa 20MHz.
Các Đặc Tính Ngoại VI Bao Gồm Các Tính Năng Sau :
• Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.
• Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng
ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
• Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
• Hai bộ Capture/so sánh/điều chế độ rộng xung.
• Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
• Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
• Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều
khiển RD, WR, CS ở bên ngoài.
Các Đặc tính Analog :
• 8 kênh chuyển đổi ADC 10 bit.
• Hai bộ so saùnh.
Bên Cạnh Đó Là Một Vài Đặc Tính Khác Của Vi Điều Khiển :
• Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.

• Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
• Dữ liệu bộ nhớ EEPROM có thể lưu trử trên 40 năm.
• Khả năng tự nạp chương trình với sự điều khiển của phần mềm. Nạp
được chương trình ngay trên mạch điện ICSP (In Circuit Serial
Programming) thông qua 2 chân. Watchdog Timer với bộ dao động
trong.
• Chức năng bảo mật mã chương trình.
• Chế độ Sleep.
• Có thể hoạt động với nhiều dạng Oscillator khác nhau.
GVHD : NGUYỄN TRỌNG KHANH

5

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

1.2 Sơ lượt về các chân của PIC :

GVHD : NGUYỄN TRỌNG KHANH

6

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY



ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

GVHD : NGUYỄN TRỌNG KHANH

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

7

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

GVHD : NGUYỄN TRỌNG KHANH

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

8

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức

GVHD : NGUYỄN TRỌNG KHANH

9

SVTH : TRẦN THẾ HUY
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

năng khác nhau. Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt
động như một đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để
giao tiếp với các thiết bị ngoại vi.
SƠ ĐỒ KHỐI PIC 16F877A :

GVHD : NGUYỄN TRỌNG KHANH
HUY

10

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM


1.3 MỘT SỐ ĐIỂM ĐẶC BIỆT CỦA CPU :
1.3.1 Dao động :
PIC16F877A có thể hoạt động trong
bốn chế độ dao động khác nhau:





LP low-power crystal
XT crystal/resonatpor
HS high-speed crystal/resonatpor
RC resistor/capacitor

Trong các chế độ LP, XT và HS chúng ta
sử dụng thạch anh dao động nối vào các chân
OSC1 và OSC2 để tạo dao động.
Việc lựa chọn tụ trong dao động thạch anh dựa vào bảng sau:

Lưu ý:Tụ có giá trị lớn sẽ tăng tính ổn
như
định của dao động nhưng cũng làm tăng
thời gian khởi động.

Chế độ dao động RC được sử dụng
một giải pháp tiết kiệm trong các ứng
dụng không cần sự chính xác về thời gian.

Cách Tính Chu Kì Máy
Ví dụ ta sử dụng thạch anh 10Mhz. Khi đó: Tần số dao động của

thạch anh là Fosc = 10Mhz → Chu kỳ dao ñộng của thạch anh là Tosc =
1/Fosc= 1/10*106(s)
Chu kỳ máy: T_instruction = 4*Tosc = 4/10*106(s) = 0.4 µs = 400
ns

GVHD : NGUYỄN TRỌNG KHANH
HUY

11

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

1.3.2 RESET :
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau như :
• Power-on Reset (POR)
• MCLR Reset during sleep
• MCLR Reset during normal operation
• WDT Reset (during normal operation)
• WDT Wake-up (during sleep)
• Brown-out Reset (BOR)

1.3.3 MCLR :
PIC16F877A có một bộ lọc nhiễu ở phần MCLR. Bộ lọc nhiễu này sẽ phát hiện
và bỏ qua các tín hiệu nhiễu. Ngõ vào MCLR trên chân 4 của PIC16F877A. Khi

đưa chân này xuống thấp thì các thanh ghi bên trong VĐK sẽ được tải những giá trị
thích hợp để khởi động lại hệ thống. (Lưu ý: Reset do WDT không làm chân MCLR
GVHD : NGUYỄN TRỌNG KHANH
HUY

12

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

xuống mức thấp).

1.3.4 INTERRUPTS

PIC16F877A có nhiều nguồn ngắt khác nhau. Đây là một số ngắt tiêu biểu :
• Ngắt ngoài xảy ra trên chân INT.
• Ngắt do Timer0.
• Ngắt do Timer1.
• Ngắt do Timer2.
• Ngắt do thay ñổi trạng thái trên các chân PortB.
• Ngắt so sánh ñiện thế.
• Ngắt do Port song song.
• Ngắt USART.
• Ngắt nhận dữ liệu.
• Ngắt truyền dữ liệu .

• Ngắt chuyển ñổi ADC.
• Ngắt màn hình LCD.
• Ngắt hoàn tất ghi EEPROM.
• Ngắt module CCP.
• Ngắt Module SSP.
Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các
thanh ghi này sẽ ñược nghiên cứu ở các phần sau).

GVHD : NGUYỄN TRỌNG KHANH
HUY

13

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

1.3.5 CHẾ ĐỘ NGUỒN THẤP SLEEP (POWER DOWN MODE)
Đây là chế độ hoạt động của VđK khi lệnh sleep được thực thi. Khi đó nếu
được cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp
tục hoạt động bit PD (STATUS <3>) được reset về không, bit TO được set,
oscillator ngưng hoạt động và các PORT giữ nguyên trạng thái như trước khi
lệnh sleep được thực thi.
Do khi chế độ sleep dòng cung cấp cho VđK là rất nhỏ nên ta cần
thực hiện các bước sau trước khi VđK thực thi lệnh sleep.
• Đưa tất cả các chân về trạng thái VDD hoặc VSS.

• Cần đảm bảo rằng không có mạch ngoại vi nào được điều khiển
bởi dòng điện của VđK vì dòng điện nhỏ không đủ khả năng
cung cấp cho các mạch ngoại vi hoạt động.
• Tạm ngưng hoạt động của khối A/D và không cho phép các
xung clock bên ngoài tác dụng vào VđK.
GVHD : NGUYỄN TRỌNG KHANH
HUY

14

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

• Để ý chức năng ñiện trở kéo lên của PORTB.
• Pin MCLR phải ở mức logic cao.
1.3.6 BỘ ĐỊNH THỜI GIÁM SÁT (WATCH DOG TIMER -WDT)

Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ
chạy nếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như
vậy bạn phải làm một vòng lặp để khi chương trình chạy đến điểm cuối thì nó
lại quay trở về điểm bắt đầu. Nhưng mà hãy xem một trường hợp: Giả sử
chương trình kiểm tra một chân input, nếu nó lên mức cao thì Pic16f877A sẽ
tiếp tục kiểm tra một chân input thứ hai có lên mức cao hay không, nếu chân
input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát
ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao.

Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương
trình, bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng
từng bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẻ như
mọi chuyện đều tốt, bạn đem nạp vào con Pic. Sau một thời gian chạy thử,
con Pic thình lình bị kẹt vào nơi nào đó trong chương trình mà không thể
thoát ra được trạng thái hiện tại. Điều gì là cần thiết ñể giải quyết hai trường
hợp trên, reset lại hay vẫn để cho nó bị kẹt không thoát ra được, đó là mục
đích của mạch Watchdog.
Mạch Watchdog thì không phải là mới mẽ gì, có rất nhiều
microprocessors và microcontrollers đã có mạch Watchdog, nhưng mà nó làm
việc ra sao ?
Bên trong vi xử lí Pic có một mạch RC, mạch này cung cấp 1 xung
Clock độc lập với bất kỳ xung Clock nào cung cấp cho Pic. Khi Watchdog
Timer (viết tắt là WDT) được cho phép (enabled), nó sẽ đếm bắt đầu từ 00 và
tăng lên 1 cho đến FFh, khi nó tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị
Reset bất kể đang làm gì, chỉ có 1 cách là ngăn không cho WDT đếm tới 00.
Khi Pic16F877A bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT
vẫn tiếp tục đếm mà không bị bất kỳ ñiều gì ngăn cấm nó đếm tới FF và đến
FF+1, vì vậy nó sẽ reset làm cho chương trình phải khởi động lại từ ñầu.
Để Sử




Dụng WDT Chúng Ta Cần Làm 3 Việc :
Thứ nhất, cần thời gian bao lâu để reset WDT ?
Thứ hai, làm sao xoá WDT ?
Cuối cùng, chúng ta phải nói cho Pic biết chương trình cho phép WDT
hoạt động.


GVHD : NGUYỄN TRỌNG KHANH
HUY

15

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

1 . 4 TỔ CHỨC BỘ NHỚ :
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm các bộ nhớ
chương trình (Program memory) và bộ nhớ dữ liệu (Data Memory).
1.4.1 Bộ Nhớ Chương Trình :
PIC16F877A có bộ đếm chương trình dài 13 bits có thể định địa chỉ
cho khoảng không gian nhớ 8K x 14bits. Không gian bộ nhớ này được chia
làm 8 trang, có địa chỉ từ 0005h đến 1FFFh.
Mọi sự truy cập ngoài vùng không gian nhớ này sẽ không có tác dụng.
Ngoài ra, bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức.
Vector Reset được đặt tại địa chỉ 0000h và vector ngắt được đặt tại địa chỉ
0004h.
Bộ nhớ chương trình của vi điều khiền PIC16F877A là bộ nhớ flash,
dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều
trang ( từ page0 đến page 3). Nhờ vậy bộ nhớ chương trình có khả năng chứa
được 8*1024 = 8192 lệnh (vì moät lệnh sau khi mã hóa sẽ có dung lượng 1
word (14 bit).
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm

chương trình có dung lượng 13 bit (PC<12:0>). Khi vi điều khiển được reset,
bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector). Khi có ngắt
GVHD : NGUYỄN TRỌNG KHANH
HUY

16

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector). Bộ
đếm chương trình không bao gồm: bộ nhớ stack và không được địa chỉ hóa bởi
bộ đếm chương trình. Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau.

1.4.2 Bộ Nhớ Dữ Liệu :
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra laøm nhiều
bank. Đối với PIC16F877A bộ nhớ dữ liệu được chia ra laøm 4 bank. Mỗi
bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt
SFG (Special Function Register) nằm ờ các vùng địa chỉ thấp và các thanh ghi
mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại
trong bank. Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh
ghi STATUS) sẽ được đặt ở tất cả các bank của bộ nhớ dữ lệu giúp ta thuận tiện
GVHD : NGUYỄN TRỌNG KHANH
HUY


17

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

trong quá trình truy xuất và lam2giam4 bớt lệnh của chương trình. Sơ đồ cụ
thể của bộ nhớ dữ liệu PIC16F877A như sau:

1.4.2.1 Vùng Ram đa Mục đích :
GVHD : NGUYỄN TRỌNG KHANH
HUY

18

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập
trực tiếp hoặc gián tiếp thông qua thanh ghi FSR. Vùng RAM đa mục đích được
phân phối ở các Bank như sau:

• Bank 0: 96 Bytes từ địa chỉ 20h đến địa chỉ 7Fh.
• Bank 1: 80 Bytes từ địa chỉ A0h đến địa chỉ EFh.
• Bank 2: 96 Bytes từ địa chỉ 110h đến địa chỉ 16Fh.
• Bank 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh.
1.4.2.2 Vùng Thanh Ghi Chức Năng đặc Biệt :
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung
tâm CPU hoặc các module ngoại vi để điều khiển hoạt động của VđK. Các
thanh ghi chức năng đặc biệt này được chia làm 2 loại: loại thứ nhất dùng cho
các chức năng của CPU, loại thứ 2 dùng cho các chức năng ngoại vi.

GVHD : NGUYỄN TRỌNG KHANH
HUY

19

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

GVHD : NGUYỄN TRỌNG KHANH
HUY

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

20

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY



ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

GVHD : NGUYỄN TRỌNG KHANH
HUY

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

21

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

GVHD : NGUYỄN TRỌNG KHANH
HUY

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

22

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010


ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

1.4.3 Các Thanh Ghi Chức Năng Đặc Biệt :
1.4.3.1 Thanh Ghi Trạng Thái ( Status Register) :
Thanh ghi trạng thái chứa các trạn thái số học của bộ ALU, trạng thái
Reset và các bit chọn Bank của bộ nhớ dữ liệu.

Bit 7 IRP: Bit lựa chọn bank thanh ghi ( Sử dụng cho định địa chỉ gián tiếp ).
1 = Bank 2, 3 (100h – 1FFh )
0 = Bank 0, 1 (00h – FFh)
Bit 6 – 5 RP1 – RP0: Bit lựa chọn bank thanh ghi (Dùng trong định điạ chỉ trực
tiếp).
11 = Bank 3 ( 180h – 1FFh)
10 = Bank 2 (100h – 17Fh)
01 = Bank 1 (80h – FFh)
00 = Bank 0 (00h_7Fh)
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT.
1: Lệnh xóa WDT hoặc Sleep xảy ra.
0: WDT hoạt động.
Bit 3 PD: Bit báo công suất thấp ( Power down bit).
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT.
0: Thực thi lệnh
Sleep. Bit 2 Z: bit Zero
1: Khi kết quả của một phép toán bằng 0.
0: Khi kết quả của một phép toán
khác 0. Bit 1 DC: Digit Carry
1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit
thấp.
0: Không có số nhớ sinh

ra. Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ.
0: Không có số nhớ sinh ra.
1.4.3.2 Thanh Ghi Tùy Chọn (Option-Reg Register):
Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa
năng như: ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và
thời gian chờ của WDT.
GVHD : NGUYỄN TRỌNG KHANH
HUY

23

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

Bit 7

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

RBPU : Bit cho phép PORTB được kéo lên nguồn.
1: Không cho phép PORTB kéo lên nguồn.
0: Cho phép PORTB kéo lên nguồn.

Bit 6 INTEDG: Bít lựa chọn cạnh tác ñộng ngắt (INTERRUPT EDGE)
1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5 T0CS: Bit lựa chọn nguồn xung Clock cho Timer 0

1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
0: Xung Clock cung cấp bởi nguồn dao động nội.
Bit 4 T0SE: Bit lựa chọn cạnh nào của xung clock tác động lên timer0
1: Cạnh xuống
0: Cạnh lên

Bit 3 PSA: Bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer0 hay WDT
1: Tốc độ đếm PS2:PS0 sẽ tác động lên WDT
0: Tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT

Thời gian tràn WDT
1
8ms
36ms
72
ms
144 ms
288 ms
576 ms
1.1
s
GVHD : NGUYỄN TRỌNG KHANH
HUY

24

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY



ĐỒ ÁN TỐT NGHIỆP KHÓA 2007-2010

ĐT : MẠCH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM

1.4.3.3 Thanh Ghi Điều Khiển Ngắt INTCON ( Interrupt Control
Register) :

Bit 7 GIE: Bit cho phép ngắt toàn cục
1: Cho phép ngắt toàn cục
0: Không cho phép ngắt
Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất.
1: Cho phép ngắt ghi vào EEPROM hoạt động
0: Không cho phép ngắt ghi vào EEPROM hoạt động
Bit 5 TMR0IE: Bit cho phép ngắt khi timer0 tràn
1: Cho phép ngắt khi timer0 tràn
0: Không cho phép ngắt khi timer0 tràn
Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi
1: Cho phép
0: Không cho phép
Bit 2 TMR0IF: Cờ báo ngắt Timer0
1: Timer0 tràn
0: Timer0 chưa tràn
Bit 1 INTF: Cờ báo ngắt ngoài RB0/INT
1: Có ngắt
0: Không xảy ra ngắt.
Bit 0 RBIF: Cờ báo ngắt khi có thay đổi trạng thái PORTB

1: Có thay đổi
0: Không có thay đổi xảy ra trên PORTB
GVHD : NGUYỄN TRỌNG KHANH
HUY

25

SVTH : TRẦN THẾ
LƯƠNG ĐỨC HUY


×