1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về AT89c51

15 98 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 15
Dung lượng 727,84 KB

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

Nội dung

tìm hiểu về AT89c51 cho hệ thống truyền tin nối tiếp UART

Trang 1

I. Tìm hiểu chung về AT89c51

-Là 1 IC thuộc họ MSC-51 nên có đầy đủ các đặc điểm của họ như:

Bộ xử lý 8 bit

4 cổng I/O mỗi cổng 8 bit

Tối đa có 64K ROM on-chip

Bộ nhớ dữ liệu ngoài tối đa 64K

Bộ nhớ mã lệnh bên ngoài tối đa 64K

2 bộ định thời, một cỗng nối tiếp

128 byte RAM on-chip

Tốc độ thay đổi từ 12MHz

-Ngoài ra còn có thêm các đặc điểm như:

4KB EPROM(Flash programmable and Erasable read only

memory),có khả năng tới 1000 chu kì ghi xóa.

Tần số hoạt động:từ 0Hz đến 24 MHz

3 mức khóa bộ nhớ lập trình.

128 byte RAM nội

4 Port xuất/nhập I/O 8 bit

2 bộ Timer/Counter 16 bit

6 nguồn ngắt

Giao tiếp nối tiếp điều khiển bằng phần cứng

64KB vùng nhớ mã ngoài

64KB vùng nhớ dữ liệu ngoài

cho phép xử lý bit

210 vị trí nhớ có thể định vị bit

4 chu kì máy(4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia

Với các đặc điểm như trên thì AT89c51 hoàn toàn có thể đáp ứng được yêu cầu về truyền tin UART:

4KB EPROM cho phép lưu trữ đến hơn 1000 lệnh

Trang 2

128 byte RAM nội đủ do 128 byte=128 kí tự trong khi việc lưu giá trị nhập từ bàn phím chúng ta chỉ cần khoảng 40 kí tự để hiển thị lên LCD

Có 2 cổng truyền tin nối tiếp là TxD và RxD

Dễ sử dụng,khá phổ biến,mạch nạp dễ chế tạo hoặc mua trên thị trường với giá rẻ

Được điều khiển bởi hệ lệnh có số lệnh đủ mạnh,cho phép lập trình assembly điều khiển hệ thống

Thích hợp cho các ứng dụng nhanh vì bộ nhớ flash có thể được xóa trong vài giây

II. Sơ đồ cấu tạo

IC89c51 là IC đóng vỏ dạng hai hàng chân DIP (Dual In-Line Pakage) dài 1,9inch,rộng 0,6 inch,khoảng cách giữa 2 chân là 0,1inch,có 40 chân:

Trang 3

1.Nhóm chân nguồn

-VCC:chân 40,điện áp cung cấp 5VDC

-GND:chân 20

2.Chân RESET

-chân 9,tác động cao(trong thời gian tối thiểu 2 chu kì máy) cho phép khởi động lại hệ thống

Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều khiển được cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển hoạt động trở lại, hoặc do người sử dụng muốn quay về trạng thái hoạt động ban đầu Vì vậy chân RESET được kết nối như sau:

Với Vi điều khiển sử dụng thạch anh có tần số f zat = 12MHz sử dụng C=10µF

và R=10KΩ.

3.Nhóm chân dao động

-gồm chân 18 và chân 19,cho phép ghép nối thạch anh vào mạch dao động bên trong vi điều khiển

Trang 4

Ta kết nối Vi điều khiển với thạch anh có tần số f zat là 12MHz, thì chu kì máy

T ck =12/(12.10 6) =10 -6 s =1µs

Chính vì lí do thạch anh có tần số f zat là 12MHz tạo ra chu kì máy là 1µs, thuận lợi cho việc tính toán thời gian khi lập trình do đó thạch anh có tần số

f zat là 12MHz thường được sử dụng trong thực tế.

Khi giao tiếp truyền nối tiếp với máy vi tính dùng thạch anh có tần số f zat

là 11.0592MHz.

4.chân chọn bộ nhớ chương trình:chân 31(EA/VPP)

-chân 31 nối mass:sử dụng bộ nhớ bên ngoài vi điều khiển

-chân 31 nối VCC:sử dụng bộ nhớ chương trình(4KB) bên trong vi điều khiển.

5.Nhóm chân điều khiển vào ra

Port 1:

-Kí hiệu P1,gồm 8 chân I/O từ 1 đến 8

-cấu trúc bên trong

Trang 5

Port 2:

-Kí hiệu P2,gồm 8 chân đa hợp I/O và địa chỉ cao,từ chân 21 đến 28

Khi không sử dụng bộ nhớ ngoài,P2 sử dụng như các I/O:khi sử dụng

bộ nhớ ngoài P2 thay thế 8 chân địa chỉ cao để giao tiếp với IC nhớ -cấu trúc bên trong:giống P1

Port 0:

-Kí hiệu P0,gòm 8 chân đa hợp I/O và địa chỉ thấp,từ chân 39 đến 32

Khi không sử dụng bộ nhớ ngoài,P0 sử dụng như các I/O;khi sử dụng

bộ nhớ ngoài P0 thay thế 8 chân địa chỉ thấo để giao tiếp với IC nhớ

-cấu trúc bên trong của P0:đặc biệt hơn so với các chân còn lại do cần mắc thêm điện trở ghép nguồn dòng bên ngoài(do các cổng 1,2,3 có các

bộ khuếch đại công suất bên trong,với cổng 0 các chốt bit có bộ khuếch

Trang 6

đại công suất đẩy-kéo bên trong và là các mạch hở collector nên cần có điện trở ghép nguồn dòng bên ngoài)

Port 3:

-Kí hiệu P3,gồm 8 chân đa hợp I/O và các tín hiệu khác,từ chân 10 đến 18

RxD:chân nhận dữ liệu bất đồng bộ(UART:The Universal

Asynchronous Receiver/Transmitter)

TxD:chân truyền dữ liệu nối tiếp bất đồng bộ

INT0:chân cung cấp tín hiệu ngắt ngoài 0(external interrupt),tác động thấp

INT1:chân cung cấp tín hiệu ngắt ngoài 1,tác động thấp

T0:chân cung cấp xung cho bộ counter 0

T1:chân cung cấp xung cho bộ counter 1

WR:chân cung cấp tín hiệu điều khiển ghi bộ nhớ ngoài,tác động thấp

RD:chân cung cấp tín hiệu điều khiển đọc bộ nhớ dữ liệu

ngoài,tác động thấp 6.Các chân khác

-chân PSEN(program store enable),chân 29:chân cung cấp tín hiệu điều khiển đọc vùng nhớ chương trình ngoài

-chân ALE(Address latch enable),chân 30:chân cung cấp tín hiệu điều khiển cho phép chốt 8bit địa chỉ thấp khi giao tiếp với bộ nhớ ngoài

Trang 7

=>> điều kiện để V ĐK hoạt động

Cấp nguồn cho chip(qua chân VCC-chân 40)

Nối đất cho chip(qua chân GND-chân 20)

Có xung đồng hồ đưa vào thông qua các chân XTAL1 và XTAL2

Thời gian chân RST ở trạng thái cao phải đủ lớn(khoảng lớn hơn 2 chu kì máy để mạch dao động chuyển sang trạng thái ổn định).Khi cần khởi động lại phải nhấn công tắc thường ngắt K,thời gian nhấn công tắc RST phải ở trạng thái cao.

trình

1. Bộ nhớ trong

-vùng nhớ chương trình:gồm 4Kb,được đánh địa chỉ từ

0-4095(000H-FFFH),dùng để chứa mã lệnh(chương trình của người dùng),vùng nhớ này chỉ được sử dụng khi chân 31 của vi điều khiển được nối VCC

Trang 8

-vùng nhớ dữ liệu:gồm 128 byte RAM,được đánh địa chỉ từ 0-127(00-7FH)

2. Bộ nhớ ngoài

-vùng nhớ chương trình:89c51 có khả năng quản lí vùng không gian nhớ lên đến 64Kb(do có 16 tín hiệu địa chỉ),được đánh địa chỉ từ 0000h-FFFFh,dùng

để chứa mã lệnh,vùng nhớ này chỉ được sử dụng khi chân 31 của vi điều khiển được nối mass

Trang 9

Bên cạnh các bộ nhớ còn có một tập các thanh ghi chức năng đặc biệt

SFR(special function register),các thanh ghi này lien quan đến hoạt động của các ngoại vi on-chip(các cổng vào ra,timer,ngắt…).Địa chỉ của chúng trùng với dải địa chỉ vùng SRAM cao,tức là cũng có địa chỉ từ 80h đến FFh.

=>Với yêu cầu của truyền tin UART thì dung lượng bộ nhớ trong đã đủ dùng nên không cần dùng đến bộ nhớ ngoài

Cổng vào ra nối tiếp(serial port)

-liên quan đến cổng vào ra nối tiếp chủ yếu là 2 thanh ghi SCON và SBUF.Ngoài ra một thanh ghi khác là PCON(không đánh địa chỉ bit) có bit 7 là SMOD quy định tốc độ truyền của cổng nối tiếp có gấp

đôi(SMOD=1) hay không(SMOD=0).

Dữ liệu được truyền nhận nối tiếp thông qua cổng P3.0(RxD) và cổng P3.1(TxD).

Thanh ghi SBUF là thanh ghi 8 bit chứa dữ liệu truyền hoặc nhận

Thanh ghi quy định chế độ hoạt động và điều khiển cổng nối tiếp là thanh ghi SCON(đánh địa chỉ bit).

Bit SM0,SM1,SM2 quy định chế độ hoạt động của cổng nối tiếp

Chế độ 0:là chế độ truyền đồng bộ duy nhất.Chân RxD sẽ là tín hiệu

truyền/nhận dữ liệu,chân TxD sẽ là tín hiệu xung nhịp.Bit LSB(0) của dữ liệu

Trang 10

được truyền đi trước tiên.Tốc độ truyền cố định và bằng 1/12 giá trị thạch anh

Chế độ 1:là chế độ truyền dị bộ 8bit.Dữ liệu 8 bit được đóng khung bởi 1 bit Start(=0) ở đầu và 1bit Stop(=1) ở cuối trước khi được truyền đi,Tốc độ truyền thay đổi được theo ý người lập trình

Chế độ 2:là chế độ truyền dị bộ 9bit.Dữ liệu 9bit được ghép bởi 8bit trong thanh ghi SBUF và bit RB8(trường hợp nhận về)hoặc TB8(trường hợp truyền

đi trong thanh ghi SCON,Ngoài ra các bit start và stop vẫn được gắn ở đầu và cuối khung truyền.Trong chế độ này,tốc độ truyền chỉ có thể chọn 1 trong 2 mức:1/32 hoặc 1/64 giá trị của thạch anh(tùy thuộc vào giá trị của bit SMOD trong thanh ghi SCON)

Chế độ 3:là chế độ truyền dị bộ 9bit,khác với chế độ 2 ở chỗ là tốc độ truyền

có thể thay đổi theo ý người lập trình như trong chế độ 1.

Bit REN trong thanh ghi SCON là bit cho phép nhận dữ liệu.Dữ liệu chỉ được nhận qua cổng nối tiếp khi bit này bằng 1

Bit TB8 là bit dữ liệu thứ 9 trong trường hợp truyền đi 9bit(8 bit kia trong thanh ghi SBUF)

Bit RB8 là bit dữ liệu thứ 9 trong trường hợp nhận về 9bit(8 bit kia trong thanh ghi SBUF)

Bit TI là cờ ngắt truyền,báo hiệu việc truyền 1 khung dữ liệu đã hoàn tất Bit RI là cờ ngắt nhận,báo hiệu việc nhận 1 khung dữ liệu đã hoàn tât

=>Để sử dụng cổng nối tiếp của 89c51,phải thực hiện các bước sau:

Chọn chế độ cho cổng nối tiếp(đồng bộ/dị bộ,8bit/9bit),từ đó chọn được các giá trị các bit trong thanh ghi SCON.Lưu ý xóa các bit TI và RI

Chọn tốc độ truyền mong muốn,từ đó tính ra giá trị của thanh ghi TH1.Cho Timer1 chạy ở chế độ Auto reload 8bit(không dùng ngắt tràn timer1)

Đặt mức ưu tiên ngắt và cho phép ngắt cổng nối tiếp nếu muốn

Bắt đầu quá trình truyền dữ liệu bằng một lệnh ghi dữ liệu muốn

truyền vào thanh ghi SBUF.Quá trình truyền kết thúc thì cờ TI tự động nhảy lên 1.

Trang 11

Khi một khung dữ liệu được nhận đầy đủ,cờ RI sẽ tự động đặt lên 1 và người lập trình lúc này có thể dùng lệnh đọc thanh ghi SBUF để lấy dữ liệu ra xử lý.

89c51 có một số lượng khá ít các nguồn ngắt(interrupt source),mỗi ngắt có 1 vecto ngắt riêng,đó là 1 địa chỉ cố định nằm trong bộ nhớ chương trình,khi ngắt xảy ra CPU sẽ tự nhảy đến thực hiện lệnh nằm tại địa chỉ này Bảng tóm tắt các ngắt như sau:

Bộ định thời/bộ đếm(timer/counter)

-AT89c51 có 2 bộ định thời timer0 và timer1 là các timer 16bit,giá trị đếm max là (đếm từ 0 đến 65535).Hai timer có nguyên lý hoạt động hoàn toàn giống nhau và độc lập.Sau khi cho phép chạy,mỗi khi có thêm

1 xung tại đầu vào đếm,giá trị của timer sẽ tự động tang thêm 1 đơn vị,cứ như vậy cho đến khi giá trị tang lên vượt quá giá trị max mà thanh ghi đếm có thể biểu diễn thì giá trị đếm được đưa trở về giá trị min.Đây là sự kiện tràn timer (overflow) và có thể gây ra ngắt nếu ngắt tràn timer được cho phép(bit ETx trong EI bằng 1)

-việc cho timer chạy/dừng được thực hiện bởi các bit TR trong thanh ghi TCON

Trang 12

Khi TRx=1 thì timer sẽ đếm và ngc lại TRx=0 timer sẽ không đếm dù có xung đưa vào.Khi dừng không đếm,giá trị của timer được giữ nguyên Các bit TFx là các cờ báo tràn timer,khi sự kiện tràn timer xảy ra cờ sẽ tự động đặt lên bằng 1 và nếu ngắt tràn timer cho phép,ngắt sẽ xảy ra Giá trị đếm của timer được lưu trong THx(byte cao) và TLx(byte thấp) Chọn timer 1vì các tốc độ baud ở chế độ 1 được xác định bởi tốc độ tràn của timer 1

3. Cách thức nạp

EPROM của 89c51 có thể được nạp thông qua mạch nạp SP200S là mạch nạp

giao tiếp USB dùng chip chuyên dụng USB-RS232, tốc độ nạp cực nhanh, mạch nạp nhỏ gọn, hỗ trợ nạp hầu hết các chip 8051 của Atmel

(89C51, 52, 89S51, 52 ), SST và Winbond, cỏc dũng EEprom 24Cxx,

93Cx.

Mạch nạp tương thích với Windows 2000 / XP / Vista / Windows 7

Hỗ trợ nạp hầu hết cỏc chip 8051 của Atmel (89C51, 89S51 ), SST và Winbond, cỏc dũng EEprom 24Cxx, 93Cx

Chỉ một kết nối USB duy nhất.

Cấp nguồn qua cổng USB (không cần cấp nguồn ngoài).

Tốc độ nạp cao.

Software tự động nhận dạng phần cứng, khi kết nối.

Khóa chương trỡnh, chống sao chộp.

Socket ZIF-40pin dễ dàng tháo và gắn chip khi nạp.

Có led báo chỉ thị nguồn, chỉ thị trạng thái mạch nạp.

Hỗ trợ nhiều dạng file HEX, BIN của Intel, Motorola, Tektronix

Trang 13

Phần mềm đơn giản, thân thiện và dễ sử dụng.

Phần cứng gồm:

Đầu USB loại B, chuyên dùng cho mạch nạp

Đế ZIP 40 chân, dùng cắm IC lên nạp

Led đỏ: báo chỉ thị nguồn

Led xanh: báo trạng thái mạch nạp…….

Phần mềm:

Phần mềm Willar Programer phiên bản mới nhất chạy trên các hệ điều hành

Windows 98, Me, 2000, NT, XP, Vista, 7

Gắn chip trên đế ZIP-40pin:

chân số 1 chip gắn với chân 1 trên đế ZIP-40pin

Dung lượng RAM Dung lượng ROM Chế độ nạp

1/- Sử dụng phần mềm soạn thảo chương trình:

Từ giao diện của chương trình trên PC, click chuột vào nút lệnh EDIT

ASM, phần mềm soạn thảo sẽ được kích hoạt Xem cửa sổ trang sau

Để soạn thảo chương trình, thực hiện lệnh File-> New, và nhập các dòng lệnh của chương trình vào trang màn hình soan thảo Kết thúc một chương trình hợp ngữ cho MOS51 bằng lệnh END File được lưu vào đĩa với phần mở

Trang 14

rộng mặc định *.a51

Để biên dịch chương trình và kiểm tra các lỗi cú pháp trong quá trình dịch

ta chọn lệnh Winsdow-> Tile (hiển thị cửa sổ kết quả trong quá trình biện dịch), và dịch chương trình bằng lệnh Assemble->Assemble hoặc nhấn phím CTRL_F7 Nếu chương trình không có lỗi sẽ tạo ra được file *.HEX

Xem kết quả biên dịch chương trình vào windows->Ouputs

2/- Thao tác ghi chương trình vào Flash ROM của CPU:

- Nối kết đường truyền từ cổng COM của PC và cổng giao tiếp của thiết bị ghi

- Mở nguồn cho thiết bị, khi thấy LED chỉ thị trên thiết bị nhấp nháy tức là thiết bị đã sẵn sàng Nếu LED tắt hoặc sáng hẳn thì tắt nguồn 15 giây và mở lại

- Đặt CPU cần nạp vào đúng đế kẹp và đúng vị trí chân trên đế

- Chọn cổng giao tiếp (mặc định khi vừa khởi động chương trình trên PC

là COM1)

- Chọn loại CPU từ menu ChipSelect

- Chọn thao tác thực hiện trong ProType

- Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ (file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm Số byte của file sẽ được hiển thị trong ô nằm ở góc dưới phải của

chương trình

- Click chuột vào nút lệnh thao tác trong khung Flash ROM (ở góc dưới

bên phải của cửa sổ chương trình)

- Kiểm tra lại nội dung vừa ghi (thao tác này không cần thiết): chọn thao tác Compare từ menu ProType và click chuột vào nút lệnh thao tác

3/- Thao tác ghi và thực hiện chương trình ở bộ nhớ RAM của CPU:

- Đặt CPU 89C51 (đã có chương trình giao tiếp với PC) vào đúng vị trí của

đế kẹp trong module MICROCONTROLER WITH EXTERNAL RAM

- Bật SW chọn bộ nhớ trong module này về vị trí INT MEMORY

- Nhấn SW RESET và kiểm tra đèn LED tín hiệu READY, nếu đèn nhấp nháy thì

hệ thống sẵn sàng cho việc truyền/nhận dữ liệu

- Nối cáp tín hiệu giữa cổng COM máy PC với cổng giao tiếp PC

INTERFACE trên module

- Kích hoạt chương trình trên máy PC, chọn cổng COM (1 hoặc 2)

- Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ

Trang 15

(file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm

Số byte của file sẽ được hiển thị trong ô nằm ở góc dưới phải của chương trình

- Click chuột vào nút WRITE_RAM Nếu đường truyền bị lỗi thì sẽ hiển thị câu thông báo “Time out”, khi đó nhấn SW RESET trên module và thực hiện hiện lại thao tác này

4/- Một số lưu ý khi sử dụng thiết bị:

Memory Selection, nên khi sử dụng ở chế

độ bộ nhớ trong phải hết sức

cẩn thận khi sử dụng PORT P2, vì các tín hiệu của port này dùng làm các tín hiệu giải mã địa chỉ cho bộ nhớ ngoài (0000H - 1FFFH), nếu các trạng thái của các bit P2.7, P2.6, P2.5 = 000B thì bộ nhớ ngoài sẽ được chọn, khi đó dễ dẫn đến xung đột dữ liệu

giữa các bit của port P0 với các bit data của bộ nhớ ngoài RAM.

4. Xây dựng module

Dựa vào các nhân và lệnh kết thúc như:

START;bắt đầu

[câu lệnh]

RET ;lệnh kết thúc chương trình con

Hoặc

NOITIEP

[câu lệnh]

RET;lệnh kết thúc chương trình con phục vụ ngắt

-có các hàm:

- NOITIEP

- MAIN

- QUETBANPHIM

- SEND

- HIENTHI

- DAT

- CMD

- INT

- DELAY

- PWR-DELAY

- CLEAR

Ngày đăng: 22/05/2014, 11:12

TỪ KHÓA LIÊN QUAN

w