Vi điều khiển 805 2: AT89S52

Một phần của tài liệu dây truyền phân loại và đếm sản phẩm (Trang 47 - 57)

D. Nguyên lý hoạt động của dây truyền phân loại và đếm sản phẩm

1Vi điều khiển 805 2: AT89S52

a ) Giới thiệu về AT89S52 - Cấu trúc bên trong:

 CPU( CPU centra lprocessing unit):

 8- bit data bus; 16- bit address bus; khơng gian địa chỉ 64Kbyte  Thanh ghi tích lũy A;

 Thanh ghi tích lũy phụ B;  Đơn vị logic học (ALU);

 Thanh ghi từ trạng thái chương trình;  Bốn băng thanh ghi;

 Con trỏ ngăn xếp;  Bộ nhớ (Memory):

 Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash, ghi xĩa hàng nghìn lần.  Bộ nhớ dữ liệu( dạng SRAM) gồm 256 byte (chứa ngăn xếp – Stack)  Vùng thanh ghi cĩ chức năng đặc biệt SFR (Special Funtion Register).  Bộ UART, cĩ chức năng truyền nhận nối tiếp.

 3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện.  Khối điều khiển ngắt với 2 nguồn ngắt ngồi và 4 nguồn ngắt trong.

 Bộ lập trình (ghi chương trình lên Flash ROM) cho phép người sử dụng cĩ thể nạp các chương trình cho chíp mà khơng cần các bộ nạp chuyên dụng.

 4 cổng xuất nhập song song 2 chiều 8- bit với 32 chân. b) Cấu tạo và chức năng các khối của AT89CS52

 Đơn vị xử lý trung tâm CPU:

Chức năng của CPU là tiến hành các thao tác tính tốn xử lý, đưa ra các tín hiệu địa chỉ, dữ liệu và điều khiển nhằm thực hiện một nhiệm vụ nào đĩ do người lập trình đưa ra thong qua các lệnh (instrustions).

 Bộ nhớ:

Bộ nhớ chương trình và bộ nhớ dữ liệu cĩ khơng gian địa chỉ riêng biêt.

Bộ nhớ chương trình cĩ địa chỉ từ 0x0000 đến 0xFFFF (64Kbyte). Người sử dụng cĩ thể thiết kế để chip hoạt động với bộ nhớ chương trình tích hợp sẵn trên chip bằng cách nối tín hiệu EA (31) lên Vcc, hoặc hoạt động với bộ nhớ chương trình bên ngồi bằng cách nối tín hiệu EA (31) xuống GND. Thơng thường , tín hiệu EA được nối cố định lên Vcc hoặc GND nên chỉ chạy với một trong hai loại bộ nhớ chương trình.

Bộ nhớ chương trình dùng để chứa mã chương trình hướng dẫn CPU thực hiện một nhiệm vụ nào đĩ. AT89S52 cĩ bộ nhớ chương trình 8Kbyte dạng Flash, khơng bị mất dữ liệu khi ngừng cung cấp nguồn nuơi.Bộ nhớ chương trình bên ngồi cĩ dung lượng tối đa là 64Kbyte.

Bộ nhớ dữ liệu dùng để chứa dữ liệu (bao gồm các tham số, các biến tạm thời…). AT89S52 cĩ 256byte bộ nhớ dữ liệu dạng SRAM, mất dữ liệu khi cắt nguồn nuơi. Ngồi ra cĩ thể ghép nối với bộ nhớ SRAM bên ngồi với dung lượng tối đa la 64Kbyte. RAM ngồi

Vùng thanh ghi cĩ chức năng đặc biệt:

 Cổng vào ra song song (Parallel I/O Port)

AT89S52 cĩ 4 cổng vào ra song song, tên lần lượt là P0, P1, P2, P3. Mỗi cổng cĩ 8 tín hiệu (nên cịn gọi là cổng 8- bit), mỗi tín hiệu gọi là một bit và cĩ tên la Px.y. Trong đĩ x là số thứ tự của cổng (0→3), y là số thứ tự của bit ( 0→7).

Hầu hết các cổng đều tích hợp, kiêm nhiệm thêm một số tính năng nào đĩ (ví dụ: ngắt ngồi, cổng truyền thơng nối tiếp, đầu vào đếm sự kiện..). Trong phần lớn trường hợp, khi sử

dụng các tính năng kiêm nhiệm, người dùng khơng nên sử dụng cổng đĩ ở chức năng vào/ra thong thường nữa. Ngoại vi on- chip sẽ nắm quyền điều khiển mức logic tại cổng đĩ.

Tất cả các cổng đều là cổng hai chiều (bi-directional), tức là cĩ thể dùng làm cổng vào hoặc cổng ra.

Cổng vào dùng để đọc dữ liệu từ bên ngồi, cổng ra dùng để điều khiển ngoại vi bên ngồi.

Chiều vào/ ra là độc lập giữa các cổng, thậm chí độc lập giữa các bit trong cùng một cổng.

Sau khi reset, tất cả các cổng đều là cổng vào.

Các thanh ghi SFR liên quan: mỗi cổng liên quan đến một thanh ghi chức năng đặc biệt 8-bit (SFR) cĩ tên trùng với tên của cổng, lần lượt là P0, P1, P2, P3.

Trước khi sử dụng cổng, phải cấu hình hướng vào/ra cho cổng.

Để cấu hình cổng vào (input port), người dùng phải ghi giá trị logic “1” lên bit trong thanh ghi SFR tương ứng. Sau đĩ cĩ thể đọc mức logic tại cổng bằng cách đọc thanh ghi cổng (SFR) tương ứng.

Để cấu hình làm cổng ra (output port), người dùng khơng phải thực hiện them bất kỳ thao tác nào. Đơn giản, chỉ cần ghi mức logic mong muốn vào thanh ghi cổng tương ứng.

Đặc tính điện: Mức logic 0: U<= 0.45V; I= 1.6mA Mức logic 1: U>= 2.4V; I= 60µA  Ngắt (Interrupts) (adsbygoogle = window.adsbygoogle || []).push({});

Ngắt la những yêu cầu do ngoại vi (là các phần cứng tích hợp trên IC hoặc các tác động từ bên ngồi) guwit tới CPU nhằm địi hỏi những đáp ứng nhất định. Mục đích của việc thiết kế cơ chế ngắt trong vi xử lý nhằm tiết kiệm thời gian cho CPU. Trong hầu hết các trường hợp, vi xử lý cần pahir thực hiện nhiều nhiệm vụ trong thời gian rất ngắn và liên tục. Để đáp ứng kịp thợi với các sự kiện cần xử lý, CPU cĩ thể tiến hành thăm dị (polling) liên tục các sự kiện để xem khi nào chúng xảy ra thì xử lý, đáp ứng lại.Tuy nhiên nếu làm như vậy thì lãng phí rất nhiều thời gian của CPU trong khi cịn cĩ rất nhiều nhiệm vụ khác đang chờ được thực hiện, ngồi ra CPU khơng thể thăm dị liên tục nhiều sự kiện trong cùng một lúc được. Người ta tạo ra ngắt để CPU khơng phải thăm dị liên tục một hay nhiều sự kiện đĩ. Bằng cách ghép các sự kiện cần đáp ứng với các cơ chế ngắt khác nhau, khi một sự kiện nào đĩ xảy ra, phần cứng phụ trách ngắt tích hợp trên CPU sẽ tự động báo cho CPU biết rằng sự kiện đã xảy ra. CPU dừng cơng việc đang làm lại ( nhưng phải thực hiện xong lệnh đang thực hiện, dù mới chỉ ở giai đoạn tìm nạp mã lệnh), và chuyển sang xử lý xong sự kiện gây ngắt, CPU sẽ tiếp tục quay lại lam tiếp cơng việc đang dang dở (nhờ hoạt động của ngăn xếp). Nĩi đến ngắt khơng thể khơng nĩi đến mức ưu tiên của các loại ngắt khác nhau. Cĩ 2 loại mức ưu tiên ngắt cơ bản là ưu tiên giữa các ngắt xảy ra đồng thời và ưu tiên giữa các ngắt xảy ra khác thời điểm, chen vào nhau. Trong cả hai trường hợp, ngắt cĩ ưu tiên cao hơn sẽ luơn được phục vụ ngay lập tức.

AT89S52 cĩ 6 nguyên nhân gây ngắt:

Tên ngắt Nguyên nhân gây ra ngắt Địa chỉ vector ngắt Mức độ ưu tiên cứng Cờ báo ngắt Ngắt ngồi 0

Tín hiệu INT0 thay đổi mức logic 1→0, hoặc giữ ở mức logic 0 0x0003 1 IE0(TCON) Ngắt timer/counter 0 Timer/Counter0 đếm tràn trên 0x000B 2 TF0(TCON) Ngắt ngồi 1

Tín hiệu INT1 thay đổi mức logic 1→0, hoặc giữ ở mức logic 0 0x0013 3 IE1(TCON) Ngắt timer/counter 1 Timer/Counter1 đếm tràn trên 0x001B 4 TF1(TCON) Ngắt cổng nối tiếp

Cổng nối tiếp nhận được hoặc truyền xong một khung dữ liệu đầy đủ

0x0023 5 TI,RI (SCON) Ngắt

timer/counter2

Timer/Counter2 đếm tràn trên hoặc tín hiệu T2EX thay đổi mức logic 1→0

0x002B 6 TX2,EXF2 (T2CON)

Các cờ báo ngắt do INT0, INT1, Timer 0, Timer 1 bị xĩa khi CPU xử lý chương trình ngắt. Cịn cờ ngắt của cổng nối tiếp và ngắt do Timer 2 khơng tự động xĩa, người dùng phải xĩa bằng phần mềm.

EA: bít cho phép hoặc cấm tất cả các ngắt. Để cho phép một ngắt thì bít tương ứng với ngắt đĩ và bít EA pahir được đặt bằng 1. Nếu É=0 tất cả các ngắt đều bị cấm.

ET2: bít cho phép ngắtt do Timer 2.

ES: bít cho phép ngắt truyền thong nối tiếp. ET1: bít cho phép ngắtt do Timer 1.

EX1: bít cho phép ngắt ngồi INT1. ET0: bít cho phép ngắtt do Timer 0. EX0: bít cho phép ngắt ngồi INT0.

Mức ưu tiên của ngắt là chỉ số giúp CPU phân xử xem sẽ xử lý ngắt nào trước khi hai hay nhiều ngắt đồng thời xảy ra, hoặc sẽ dừng việc xử lý một ngắt lại hay khơng khi bị một ngắt khác chen vào. Khi xảy ra ngắt đồng thời,CPU sẽ phân xử theo trình tự ưu tiên cứng liệt kê ở bảng trên. Khi một ngắt xảy ra chen vào quá trình xử lý dang dở của một ngắt khác, CPU sẽ phân xử theo mức độ ưu tiên quy định bởi người dùng thơng qua thanh ghi đặt mức ưu tiên ngắt IP.

Thanh ghi ưu tiên ngắt IP (Interrupt Priority):

- - PT2 PS PT1 PX1 PT0 PX0

MSB LSB

PT2: bít ưu tiên ngắt do timer 2.

PS: bít ưu tiên ngắt truyền thơng nối tiếp. PT1: bít ưu tiên ngắt do timer 1.

PX1: bít ưu tiên ngắt ngồi INT1. PT0: bít ưu tiên ngắt do timer 0. PX0: bit ưu tiên ngắt ngồi INT0.

 Bộ định thời/ Bộ đếm (Timers/ Counters)

Timer/Counter là các ngoại vi cĩ chức năng đếm xung nhịp (clock). Khi đếm xung nhịp bên trong chip gọi là bộ đinh thời hay timer.

Khi đếm xung nhịp bên ngồi chip đưa và gọi là bộ đếm sự kiện hay counter. Mỗi xung nhịp xuất hiện them, giá trị của timer/counter sẽ tự động tăng thêm 1.

Khi timer/counter đếm vượt quá giá trị giới hạn mà nĩ cĩ thể biểu diễn, giá trị đếm sẽ tự động xĩa về 0 và đếm lại từ đầu. Sự kiện này được gọi là tràn trên (overflow).

Giá trị lớn nhất tùy thuộc vào chế độ hoạt động.

Khi dừng đếm, giá trị đếm của timer/counter vẫn giữ nguyên, trừ khi mất nguồn nuơi, reset hay người dùng chủ định xĩa bằng lệnh.

AT89S52 cĩ 3 timer/counter 16bit lần lượt là timer/counter 0, timer/counter 1, timer/counter 2.

Các timer đều cĩ ngắt: Timer 0 cĩ ngắt do tràn. Timer 1 cĩ ngắt do tràn. (adsbygoogle = window.adsbygoogle || []).push({});

Timer 2 cĩ ngắt do tràn hoặc do sự kiện capture.

3. Chức năng các chân của AT89S52

Cấu trúc của các chân trên các Port:

 Port 0( P0.0=>P0.7)

Port 0 gồm 8 chân, ngồi chức năng xuất nhập, port 0 cịn là bus đa hợp dữ liệu và địa chỉ( AD0-AD7), chức năng này sẽ được sử dụng khi AT89S52 giao tiếp với các thiết bị ngồi cĩ kiến trúc Bus như các vi mạch nhớ, mạch PIO…

 Port 1( P1.0=>P1.7)

Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng như các Port khác. Port1 cĩ thể xuất nhập theo bit và theo byte.

 Port 2( P2.0=>P2.7)

Port 2 ngồi chức năng là cổng vào/ra như Port 0 và Port 1, Port 2 cịn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngồi.

Mỗi chân trên Port 3 ngồi chức năng xuất nhập cịn cĩ một chức năng riêng, cụ thể như sau:

Bit Tên Chức năng P3.0 RXD Dữ liệu nhận cho Port nối tiếp P3.1 TXD Dữ liệu truyền cho Port nối tiếp

P3.2 INT0 Ngắt ngồi 0

P3.3 INT1 Ngắt ngồi 1

P3.4 TO Ngõ vào của Timer/counter0

P3.5 T1 Ngõ vào của Timer/counter1

P3.6 /WR Xung ghi bộ nhớ dữ liệu ngồi. P3.7 /RD Xung đọc bộ nhớ dữ liệu ngồi.  Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngồi.

 Chân ALE.

ALE là tín hiệu điều khiển chốt địa chỉ cĩ tần số bằng 1/6 tần số dao động của vi điều khiển. Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngồi như 7473.

 Chân /EA.

Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngồi. EA=1 thì thực hiện chương trình trong RAM nội. EA=0 thực hiện ở RAM ngồi.

 RST( reset)

Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi điều khiển sẽ được khởi động lại thiết lập ban đầu.

 XTAL1, XTAL2

Hai chân này được nối song song với thạch anh tần số max=33 Mhz. Để tạo dao động cho bộ vi điều khiển.

 Vcc, GND : cung cấp nguồn nuơi cho bộ vi điều khiển. cấp qua chân 20 và 40.

2 Mạch đảo chiều động cơ 1 chiều : L 298

a) Cấu tạo :

- L298 là một IC cĩ cấu tạo gồm 2 mạch cầu H . - Một số hình ảnh L 298

- Một số đặc điểm của L 298:

Cĩ thể điều khiển 2 động cơ 1 chiều và động cơ bươc bằng PWM. Điện áp cấp lên đến 46V (adsbygoogle = window.adsbygoogle || []).push({});

Tổng dịng chịu đựng lên đến 4A Chức năng bảo vệ quá nhiệt.

Mức logic 0 là là từ 1,5V trở xuống. - Bố trí chân và chức năng của các chân:

Chức năng của từng chân IC L 298 :

b) Nguyên lý hoạt động

- từ sơ đồ trên .khi cấp nguồn +Vs vào chân 4 và chân 1 , 15 nối trở về 0 Mỗi cầu được điều khiển bởi 3 cổng ngõ vào : IN1,IN2,EnA và IN3,IN4, EnB

Các chân IN cĩ tác dụng khi chan En ở mức cao, khi chân En ở mức thấp thì các chân IN bị cấm.

3 Bộ cách ly quang : PC 817

Đây là 1 ic opto- transistor, nĩ cĩ tác dụng cách ly giữa nguồn điều khiển với các mạch lực, mạch cơng suất lớn khác

Một phần của tài liệu dây truyền phân loại và đếm sản phẩm (Trang 47 - 57)