• Nenhum resultado encontrado

Dong Ho Tren Led 7 Thanh Su Dung 8051 3312

N/A
N/A
Protected

Academic year: 2021

Share "Dong Ho Tren Led 7 Thanh Su Dung 8051 3312"

Copied!
130
0
0

Texto

(1)



ĐỀ TÀI

“ Nghiên cứu về Vi điều khiển 8051. Thiết kế

mô hình đồng hồ thời gian thực hiển thị trên

Led 7 thanh”

G

G

i

i

á

á

o

o

v

v

i

i

ê

ê

n

n

h

h

ư

ư

n

n

g

g

d

d

n

n

:

:

S

(2)

MỤC LỤC

LỜI NÓI ĐẦU ...5

CHƯƠNG 1. TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN 8051...6

1.1 Tóm tắt về lịch sử của 8051 ...6

1.2 Sơ đồ khối chung của họ 8051 ...7

1.3 Các thành viên khác của 8051...8

1.3.1 Bộ vi điều khiển 8052 ...8

1.3.2 Bộ vi điều khiển 8031 ...8

1.4 Các phiên bản của 8051 ...8

1.4.1 Bộ vi điều khiển 8751 ...9

1.4.2 Bộ vi điều khiển AT8951 từ Atmel Corporation...9

1.4.3 Bộ vi điều khiển DS5000 từ hãng Dalas Semiconductor ... 11

1.4.4 Phiên bản OTP của 8051 ...12

1.4.5 Họ 8051 từ hãng Philips...12

1.5 Kiến trúc phần cứng của họ Vi điều khiển 8051... 13

1.5.1 Sơ đồ khối của 8051/8052/ AT89S52... 13

1.5.2 Chức năng các khối của 8051/8052/AT89S52...13

1.5.2.1 CPU ... 13

1.5.2.2 Bộ nhớ chương trình (bộ nhớ Rom)... 14

1.5.2.3 Bộ nhớ dữ liệu (bộ nhớ Ram) ... 14

1.5.2.4 Bộ UART (Universal Ansynchronous Receiver and Transmitter)...14

1.5.2.5 Ba bộ Timer/Counter 16 bit... 14

1.5.2.6 WDM (Watch Dog Timer) ... 14

1.5.2.7 Điều khiển ngắt ... 15

1.5.2.8 Bộ lập trình (ghi chương trình lên Flash Rom) ... 16

1.5.2.9 Bộ chia tần số... 16

1.5.2.10 Bốn cổng xuất nhập...16

1.6 Tổ chức bộ nhớ bên trong của 8051 ... 16

1.7 Hoạt động định thời ... 21

1.7.1 Giới thiệu ... 21

1.7.2 Các thanh ghi của bộ định thời ... 21

1.7.2.1 Các thanh ghi của Timer 0, Timer 1 ... 21

(3)

1.7.3 Các chế độ của bộ định thời ...27

1.7.4 Các nguồn xung Clock ...30

1.8 Cổng nối tiếp ... 31

1.8.1 Giới thiệu ... 31

1.8.2 Các thanh ghi của cổng nối tiếp... 32

1.8.3 Các chế độ hoạt động ... 34

1.8.4 Tốc độ baud của Port nối tiếp... 37

1.9 Ngắt và xử lý ngắt... 38

1.9.1 Giới thiệu ... 38

1.9.2 Tổ chức ngắt ... 39

1.9.3 Xử lý ngắt ... 41

CHƯƠNG 2. CÁC LINH KIỆN LIÊN QUAN... 43

2.1 Tìm hiểu về IC thời gian thực DS1307... 43

2.1.1 Giới thiệu ... 43

2.1.2 Sơ đồ và chức năng các chân... 43

2.1.3 Tài nguyên và cách xuất nhập dữ liệu vào DS1307 ... 44

2.1.4 Thuật toán giao tiếp I2C với Vi điều khiển AT89S52... 48

2.1.4.1 Điều kiện Start và Stop...48

2.1.4.2 Chế độ hoạt động ... 50

2.1.4.3 Cách thức giao tiếp với DS1307 ... 51

2.1.4.4 Thuật toán thiết kế phần mềm ... 52

2.2 Bộ biến đổi tương tự sang số (ADC0804) ... 55

2.2.1 Giới thiệu ... 55

2.2.2 Sơ đồ và chức năng các chân ADC0804... 56

2.2.2.1 Sơ đồ chân ... 56

2.2.2.2 Chức năng các chân...56

2.3 Vi điều khiển AT89S52 ... 58

2.3.1 Giới thiệu... 58 2.3.2 Sơ đồ chân và chức năng các chân của AT89S52 ... 59 2.3.2.1 Sơ đồ chân của AT89S52 ... 59 2.3.2.2 Chức năng các chân của AT89S52 ... 60 2.4 IC ghi dịch 74HC595 ... 64 2.4.1 Giới thiệu ... 64 2.4.2 Sơ đồ chân và chức năng các chân ... 64

(4)

2.4.2.1 Sơ đồ chân ... 64

2.4.2.2 Chức năng các chân...65

2.5 Led 7 đoạn ...65

2.5.1 Giới thiệu ... 65

2.5.2 Kết nối với vi điều khiển ...66

2.5.3 Bảng mã của Led Anode chung (các led đơn sáng ở mức 0)... 67

2.5.4 Bảng mã của Led Cathode chung (các led đơn sáng ở mức 1) ... 69

2.5.5 Giao tiếp Vi điều khiển với led 7 đoạn (minh họa và thực hành với 8 led 7 đoạn)...69 CHƯƠNG 3. THIẾT KẾ MÔ HÌNH...72 3.1 Sơ đồ nguyên lý ... 72 3.2 Sơ đồ mạch in ... 76 3.3 Mô hình thực tế... 79 3.4 Ứng dụng...79 KẾT LUẬN... 80

TÀI LIỆU THAM KHẢO ... 81

(5)

DANH SÁCH HÌNH VẼ

Hình 1.1 Bố trí bên trong của họ 8051 ...7

Hình 1.2 Sơ đồ khối của vi điều khiển AT89S52 ... 13

Hình 1.3 Hoạt động của Timer 0 và Timer 1 ở chế độ 0...27

Hình 1.4 Hoạt động của Timer0 và Timer1 ở chế độ 1... 27

Hình 1.5 Hoạt động của Timer0 và Timer1 ở chế độ 2... 28

Hình 1.6 Hoạt động của Timer0 ở chế độ 3 ... 29

Hình 1.7 Sơ đồ khối cổng nối tiếp của 8051 ... 32

Hình 1.8 Giản đồ truyền nhận dữ liệu ở chế độ 0 ... 34

Hình 1.9 Tốc độ baud ở chế độ 0 ... 34

Hình 1.10 Giản đồ truyền nhận dữ liệu của chế độ 1... 35

Hình 1.11 Dùng Timer 1 và Timer 2 cung cấp tốc độ baud cho cổng nối tiếp ...35

Hình 1.12 Tốc độ baud ở chế độ 1 ...36

Hình 1.13 Tốc độ baud ở chế độ 2 ...36

Hình 1.14 Tốc độ baud ở chế độ 3 ...37

Hình 1.15 Chương trình trước (a) và sau (b) khi có ngắt xảy ra ... 39

Hình 2.1 Các dạng đóng gói của chip DS1307... 43

Hình 2.2 Sơ đồ chân của DS1307 ...43

Hình 2.3 Sơ đồ mắc cơ bản của DS1307... 44

Hình 2.4 Sơ đồ cấu trúc của các thanh ghi trong DS1307 ...45

Hình 2.5 Cách cập nhật dữ liệu cho DS1307... 46

Hình 2.6 Tổ chức theo bit của các thanh ghi ... 46

Hình 2.7 Sơ đồ cấu trúc bên trong của DS1307 ... 48

Hình 2.8 Điều kiện Start và Stop ... 49

Hình 2.9 Quá trình đọc và ghi dữ liệu của DS1307 ... 50

Hình 2.10 Sơ đồ tổng quát của đồng hồ ... 52

Hình 2.11 Thuật toán giao tiếp của DS1307 với Vi Điều Khiển... 52

Hình 2.12 Quá trình đọc dữ liệu từ DS1307 được lưu vào Ram AT89S52 ... 53

Hình 2.13 Thuật toán cài đặt giờ... 54

(6)

Hình 2.15 Sơ đồ chân thực tế của ADC0804 ... 56

Hình 2.16 Cách mắc tạo xung đồng hồ cho chíp ADC0804 ...57

Hình 2.17 Sơ đồ chân của AT89S52 ...59

Hình 2.18 Cấu trúc của các chân trên Port0 ... 60

Hình 2.19 Cấu trúc của các chân trên Port 1 và Port 3 ... 61

Hình 2.20 Cấu trúc của các chân trên Port2 ... 61

Hình 2.21 Mạch reset AT89S52 ... 63

Hình 2.22 Mạch tạo dao động... 63

Hình 2.23 Mạch tạo xung cho Vi điều khiển... 64

Hình 2.24 Sơ đồ chân thực tế 74HC595... 64

Hình 2.25 Sơ đồ chân 7 SEG-COM-ANODE và hình ảnh minh họa... 66

Hình 3.1 Mạch điều khiển ... 72 Hình 3.2 Mạch đo nhiệt độ ... 73 Hình 3.3 Mạch hiển thị ... 73 Hình 3.4 Mạch hiển thị 1 ... 74 Hình 3.5 Mạch nguồn 5V ... 74 Hình 3.6 Mạch quét phím ... 75 Hình 3.7 Mạch điều khiển ... 76 Hình 3.8 Mạch đo nhiệt độ ... 76 Hình 3.9 Mạch hiển thị ... 77 Hình 3.10 Mạch hiển thị 1 ... 77 Hình 3.11 Mạch nguồn 5V ... 78 Hình 3.12 Mạch quét phím ... 78 Hình 3.13 Mô hình đồng hồ thực tế ...79

(7)

DANH SÁCH CÁC BẢNG BIỂU

Bảng 1.1 Các đặc tính của 8051 đầu tiên ...6

Bảng 1.2 So sánh các đặc tính của các thành viên họ 8051 ...8

Bảng 1.3 Các phiên bản của 8051 do hãng Atmel cung cấp (Flash Rom)... 10

Bảng 1.4 Các phiên bản 8051 từ hãng Dalas Semiconductor ... 11

Bảng 1.5 Một số thành viên của họ 8051 ... 12

Bảng 1.6 Số chu kì máy WDT đếm tùy theo giá trị S0, S1, S2... 15

Bảng 1.7 Thời gian tràn của WDT...15

Bảng 1.8 Các thanh ghi trạng thái chương trình (PSW: Program Status Word)...19

Bảng 1.9 Thanh ghi chức năng TMOD ...22

Bảng 1.10 Thanh ghi chức năng TCON ... 23

Bảng 1.11 Thanh ghi chức năng T2CON ... 25

Bảng 1.12 Thanh ghi chức năng T2MOD ... 26

Bảng 1.13 Vị trí và ý nghĩa các bit của thanh ghi SCON...33

Bảng 1.14 Các chế độ của cổng nối tiếp phụ thuộc SM1, SM0 ... 33

Bảng 1.15 Bảng tốc độ baud khác nhau ... 35

Bảng 1.16 Các giá trị của thanh ghi TH1 tạo tốc độ baud ...38

Bảng 1.17 Vị trí và công dụng các bit của thanh ghi IE ...40

Bảng 1.18 Vị trí và công dụng các bit của thanh ghi IP...40

Bảng 1.19 Các cờ gây ngắt ... 41

Bảng 1.20 Các Vector ngắt ... 42

Bảng 2.1 Bảng so sánh điện áp ... 58

Bảng 2.2 Tên chân và chức năng các chân của Port 3 ... 62

Bảng 2.3 Bảng mã cho Led Anode chung (a là MSB, dp là LSB) ... 67

Bảng 2.4 Bảng mã cho Led Anode chung (a là LSB, dp là MSB) ... 68

(8)

DANH SÁCH CÁC TỪ VIẾT TẮT

Từ viết tắt Tên tiếng anh Tên tiếng việt

E

EA External Access Truy cập bên ngoài

I

IC Intergrated Circuit Vi mạch tích hợp IE Interrupt Cho phép ngắt IP Interrupt Priority Thanh ghi ngắt

O

OV Over Flag Cờ tràn

P

PSW Program Status Word Thanh ghi từ trạng thái chương trình

PSEN Program Store Enable Tín hiệu ngõ ra

R

RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên ROM Read Only Memory Bộ nhớ chỉ đọc

RST Reset Reset

S

(9)

LỜI CAM ĐOAN

Trong quá trình thực hiện đề tài tốt nghiệp này, em xin đảm bảo bài báo cáo tốt nghiệp này là do chính em thực hiện, không có sự sao chép nguyên văn của bất kì tài liệu nào. Nếu sai em xin chịu mọi hình thức kỷ luật của nhà trường.

Hà Nội, Ngày 13 tháng 6 năm 2012 Người cam đoan

(Ký, ghi rõ họ tên)

(10)

LỜI NÓI ĐẦU

Ngày nay ngành kỹ thuật điện tử có vai trò rất quan trọng trong cuộc sống của con người. Các hệ thống điện tử ngày nay rất đa dạng và đang thay thế các công việc hàng ngày của con người từ những công việc đơn giản đến phức tạp như điều khiển tín hiệu đèn giao thông, các biển quảng cáo, đo tốc độ động cơ hay các đồng hồ số… Các hệ thống này có thể thiết kế theo hệ thống tương tự, hệ thống số hay là dùng vi điều khiển. Tuy nhiên trong các hệ thống điện tử thông minh hiện nay người ta thường sử dụng vi điều khiển hơn là các hệ thống tương tự hay hệ thống số bởi một số ưu điểm vượt trội mà vi điều khiển mang lại đó là: độ tin cậy cao, giá thành thấp, dễ dàng thiết kế, lắp đặt và vận hành… Để làm được điều đó chúng ta phải có kiến thức về vi điều khiển, hiểu được cấu trúc và chức năng của nó.

Sau gần 3 năm học tập và nghiên cứu tại trường, với sự giảng dạy của các thầy, cô giáo trong trường cùng với sự hướng dẫn tận tình của thầy Hoàng Văn Quang, em đã chọn đề tài: “ Nghiên cứu về Vi điều khiển 8051. Thiết kế mô hình đồng hồ thời

gian thực hiển thị trên Led 7 thanh” để làm đồ án tốt nghiệp với mong muốn áp dụng

những kiến thức đã học vào thực tế phục vụ nhu cầu đời sống con người. Nội dung của đề tài bao gồm 3 chương:

- Chương 1: Tổng quan về họ Vi điều khiển 8051 - Chương 2: Các linh kiện liên quan

- Chương 3: Thiết kế mô hình

Do kiến thức và trình độ năng lực còn hạn hẹp nên việc thực hiện đề tài này không thể tránh được thiếu sót, kính mong nhận được sự thông cảm và góp ý của tất cả các thầy, cô giáo và các bạn để đồ án này được hoàn thiện hơn.

(11)

CHƯƠNG 1. TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN 8051

1.1 Tóm tắt về lịch sử của 8051

Năm 1981, hãng Intel giới thiệu bộ vi điều khiển 8051. Bộ vi điều khiển này chứa trên 60.000 transistor bao gồm 128 byte Ram, 4 kbyte Rom, 2 bộ định thời, một cổng nối tiếp và bốn cổng vào/ra song song (độ rộng 8 bit) tất cả đều được đặt trên một chip. 8051 là bộ xử lý 8 bit, có nghĩa là CPU chỉ có thể làm việc được 8 bit dữ liệu tại một thời điểm.

Dữ liệu lớn hơn 8 bit được chia thành các dữ liệu 8 bit để xử lý, 8051 đã trở lên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán các biến thể của 8051. Điều này dẫn đến sự ra đời nhiều phiên bản 8051 với tốc độ khác nhau và dung lượng Rom trên chíp khác nhau, nhưng các lệnh đều tương thích với 8051 ban đầu. Như vậy, nếu ta viết chương trình cho một phiên bản của 8051 thì cũng chạy được với mọi phiên bản khác không phụ thuộc vào hãng sản xuất.

Vi điều khiển 8051 là loại vi điều khiển 8 bit, công suất tiêu thụ thấp nhưng tính năng tương đối mạnh và trở thành bộ vi điều khiển hàng đầu trong những năm gần đây.

Bảng 1.1 Các đặc tính của 8051 đầu tiên

Đặc Tính Số Lượng Rom 4 kbyte Ram 128 byte Bộ Định Thời 2 Chân vào/ra 32 Cổng nối tiếp 1 Nguồn ngắt 6 Ngoài ra 8051 còn có các thông số đặc tính sau:

+ Không gian nhớ chương trình (mã) ngoài 64 kbyte. + Không gian nhớ dữ liệu ngoài 64 kbyte.

(12)

+ Bộ nhớ xử lý bit (thao tác trên các bit riêng rẽ). + 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit. + Nhân/chia trong 4µs.

1.2 Sơ đồ khối chung của họ 8051

- Interrupt Control: điều khiển ngắt - Other Register: các thanh ghi khác - 128 byte Ram

- Bộ định thời: 0, 1, 2

- CPU: đơn vị điều khiển trung tâm - Oscillator: mạch dao động

- Bus Control: điều khiển Bus - Input/output: các chân vào ra - Serial port: cổng nối tiếp - INT1/INT0: các ngắt 1/0

(13)

1.3 Các thành viên khác của 8051

Có hai bộ vi điều khiển là các thành viên khác của họ 8051 là 8052 và 8031.

1.3.1 Bộ vi điều khiển 8052

Bộ vi điều khiển 8052 là một thành viên của họ 8051, 8052 có tất cả các đặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte Ram và một bộ định thời nữa.

Bảng 1.2 So sánh các đặc tính của các thành viên họ 8051

Đặc Tính 8051 8052 8031 Rom 4 kbyte 8 kbyte Không có Ram 128 byte 256 byte 128 byte Bộ định thời 2 3 2

Chân vào/ra 32 32 31 Cổng nối tiếp 1 1 1 Nguồn ngắt 6 6 1

* Dựa vào bảng 1.2 có thể thấy các chương trình viết cho 8051 đều chạy trên 8052 nhưng điều ngược lại là không đúng.

1.3.2 Bộ vi điều khiển 8031

Một thành viên khác nữa của 8051 là chíp 8031. Chíp được coi như là 8051 không có Rom trên chíp. Để sử dụng chíp này phải bổ sung Rom ngoài cho nó, Rom ngoài phải chứa chương trình mà 8031 sẽ nạp và thực hiện. Với 8051, chương trình được chứa trong Rom trên chíp bị giới hạn bởi 4 kbyte, còn Rom ngoài gắn với 8031 thì có thể lớn đến 64 kbyte. Khi sử dụng Rom ngoài chỉ có thể còn lại hai cổng để sử dụng cho mục đích vào ra, để giải quyết vấn đề này giải pháp có thể là mở rộng cổng vào ra cho 8031 bằng cách sử dụng vi mạch PPI 8255.

1.4 Các phiên bản của 8051

Mặc dù 8051 là thành viên phổ biến nhất của họ 8051 nhưng còn có rất nhiều phiên bản của nó với những tên gọi khác nhau tùy thuộc vào kiểu bộ nhớ chương trình, công nghệ chế tạo, tần số làm việc…

(14)

Ví dụ: Phiên bản của 8051 với bộ nhớ UV-PROM được kí hiệu 8751. Phiên bản Flash Rom cũng được bán bởi nhiều hãng khác nhau, chẳng hạn như Atmel với tên gọi AT89C51 còn phiên bản NV-RAM của 8051 do Dalas Semiconductor cung cấp thì được gọi là DS5000. Ngoài ra còn có phiên bản OTP (lập trình được một lần) cũng được sản xuất bởi nhiều hãng.

1.4.1 Bộ vi điều khiển 8751

Chíp 8751 chỉ có 4 kbyte bộ nhớ UV-EPROM trên chíp. Để sử dụng chíp này cần có bộ đốt PROM và bộ xóa UV-EPROM để xóa nội dung của bộ nhớ UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại nó. Do ROM trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20 phút để xóa 8751 trước khi nó có thể được lập trình trở lại. Vì điều này dẫn đến nhiều nhà sản xuất giới thiệu các phiên bản FLASH-ROM và UV-RAM. Ngoài ra còn có nhiều phiên bản với các tốc độ khác nhau của 8751 từ nhiều hãng khác nhau.

8751 được sử dụng trong công việc phát triển và bộ nhớ chương trình trên các vi mạch này được xóa bằng ánh sáng từ nguồn tử ngoại.

1.4.2 Bộ vi điều khiển AT8951 từ Atmel Corporation

AT8951 là phiên bản 8051 có Rom trên chíp ở dạng bộ nhớ Flash. Phiên bản này là lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xóa trong vài giây. Dùng AT89C51 để phát triển một hệ thống dựa trên bộ vi điều khiển yêu cầu một bộ đốt Rom hỗ trợ bộ nhớ Flash, không yêu cầu bộ xóa Rom. Hãng Atmel đã cho ra đời một phiên bản của AT89C51 có thể lập trình qua cổng truyền thông Com của máy tính IBM PC.

(15)

Bảng 1.3 Các phiên bản của 8051 do hãng Atmel cung cấp (Flash Rom)

Kí hiệu Rom Ram Chan

I/O Timer Ngắt VCC Đóng vỏ AT89C51 4 kbyte 128 byte 32 2 6 5 v 40 chân/2 hàng AT89LV51 4 kbyte 128 byte 32 2 6 3 v 40 chân/2 hàng AT89C1051 1 kbyte 64 byte 15 1 3 3 v 20 chân/2 hàng AT89C2051 2 kbyte 128 byte 15 2 6 3 v 20 chân/2 hàng AT89C52 8 kbyte 128 byte 32 3 8 5 v 40 chân/2 hàng AT89LV52 8 kbyte 128 byte 32 3 8 3 v 40 chân/2 hàng

AT89C2051 là bộ vi điều khiển 8 bit được chế tạo theo công nghệ CMOS, có thể hoạt động được ở dải điện áp 2,7V đến 6V. Bộ vi điều khiển được đóng gói DIP 20 chân, khá nhỏ gọn so với 89S52 nhưng vẫn có đủ tài nguyên thông dụng như: + Bộ nhớ: 2 kbyte Flash có thể ghi/xóa 1000 lần, 128x8-bit Ram

+ Có thể hoạt động ở tần số thạch anh lên tới 24MHz + 15 chân xuất/nhập

+ 2 bộ Timer/Counter 16 bit + 6 nguồn ngắt

+ 1 cổng nối tiếp

+ 1 bộ so sánh (Analog Comparator)

AT89C4051 có sơ đồ chân và các tài nguyên giống AT89C2051, ngoại trừ bộ nhớ Rom có dung lượng lớn hơn (4 kbyte). AT89S52 là một bộ vi điều khiển thông dụng, giá rẻ, có khá nhiều chức năng hay, đặc biệt là có tích hợp sẵn bộ nạp ISP trên

(16)

chíp giúp người sử dụng có thể dễ dàng thực hiện các bài thí nghiệm với chi phí rất thấp.

Cũng có rất nhiều phiên bản kí hiệu thể hiện kiểu đóng vỏ và tốc độ khác nhau của sản phẩm. Ví dụ chữ C đứng trước 51 trong AT89C51-12PC là kí hiệu cho CMOS, ”12” kí hiệu cho 12MHz, và “P” là kiểu đóng vỏ DIP và chữ “C” cuối cùng là kí hiệu cho thương mại (ngược với chữ “M” là quân sự).

1.4.3 Bộ vi điều khiển DS5000 từ hãng Dalas Semiconductor

Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng Semiconductor. Bộ nhớ Rom trên chíp của DS5000 ở dưới dạng NV-RAM. Khả năng đọc/ghi của nó cho phép chương trình được nạp vào Rom trên chíp trong khi nó vẫn ở trong hệ thống (không phải lấy ra). Điều này còn có thể được thực hiện thông qua cổng nối tiếp của máy tính IBM-PC. Việc nạp chương trình trong hệ thống (in-system) của DS5000 thông qua cổng nối tiếp của PC làm cho nó trở thành một hệ thống phát triển tại chỗ lý tưởng. Một ưu việt của NV-RAM là khả năng thay đổi nội dung của Rom theo từng byte tại một thời điểm. Điều này tương phản với bộ nhớ Flash và EPROM mà bộ nhớ của chúng phải được xóa sạch trước khi lập trình lại cho chúng.

Bảng 1.4 Các phiên bản 8051 từ hãng Dalas Semiconductor Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực

Mã linh kiện Rom Ram Chân

I/O Timer Ngắt Vcc Đóng vỏ DS5000-8 8kbyte 128 32 2 6 5V 40 DS5000-32 32kbyte 128 32 2 6 5V 40 DS5000T-8 8kbyte 128 32 2 6 5V 40 DS5000T-8 32kbyte 128 32 2 6 5V 40 * Đồng hồ thời gian thực RTC là khác với bộ định thời Timer. RTC tạo và giữ thời gian 1 phút, giờ, ngày, tháng, năm kể cả khi tắt nguồn.

Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau. Ví dụ DS5000-8-8 có 8 kbyte NV-RAM và tốc độ 8MHz.

Thông thường DS5000-8-12 hoặc DS5000T-8-12 là lý tưởng với những dự án của sinh viên.

(17)

Bảng 1.5 Một số thành viên của họ 8051

Mã linh kiện NV-RAM Tốc độ DS5000-8-8 8kbyte 8MHz DS5000-8-12 8kbyte 12MHz DS5000-32-8 32kbyte 8MHz DS5000T-32-12 32kbyte 8MHz(with RTC) DS5000-32-12 32kbyte 12MHz DS5000-8-12 8kbyte 12MHz(with RTC)

1.4.4 Phiên bản OTP của 8051

Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần và được cung cấp từ nhiều hãng khác nhau. Các phiên bản Flash và NV-RAM thường được sử dụng để phát triển sản phẩm mẫu. Khi một sản phẩm được thiết kế và được hoàn thiện tuyệt đối thì phiên bản OTP của 8051 được dùng để sản xuất hàng loạt vì giá thành một đơn vị sản phẩm sẽ rẻ hơn.

1.4.5 Họ 8051 từ hãng Philips

Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation. Thật vậy, hãng này có một dải lựa chọn rộng lớn cho các bộ vi điều khiển 8051. Nhiều sản phẩm của hãng đã có kèm theo đặc tính như các bộ chuyển đổi ADC, DAC, cổng I/O mở rộng và các phiên bản OTP và Flash.

(18)

1.5 Kiến trúc phần cứng của họ Vi điều khiển 8051 1.5.1 Sơ đồ khối của 8051/8052/AT89S52

Hình 1.2 Sơ đồ khối của vi điều khiển AT89S52 1.5.2 Chức năng các khối của 8051/8052/AT89S52

1.5.2.1 CPU

- Thanh ghi tích lũy A.

- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia. - Đơn vị logic học (ALU: Arithmetic logical unit).

- Thanh ghi từ trạng thái chương trình (PSW: Prorgam status Word). - Bốn băng thanh ghi.

(19)

1.5.2.2 Bộ nhớ chương trình (bộ nhớ Rom)

Gồm 8kbyte Flash.

1.5.2.3 Bộ nhớ dữ liệu (bộ nhớ Ram)

Gồm 256byte.

1.5.2.4 Bộ UART (Universal Ansynchronous Receiver and Transmitter)

Có chức năng truyền nhận nối tiếp, AT89S52 có thể giao tiếp với cổng nối tiếp của máy tính thông qua bộ UART.

1.5.2.5 Ba bộ Timer/Counter 16 bit

Thực hiện các chức năng định thời và đếm sự kiện.

1.5.2.6 WDM (Watch Dog Timer)

WDM được dùng để phục hồi lại hoạt động của CPU khi nó bị treo bởi nguyên nhân nào đó. WDM ở AT89S52 gồm một bộ Timer 14 bit, 1 bộ Timer 7 bit, thanh ghi WDTPRG ( WDT programable ), điều khiển Timer 7 bit và một thanh ghi chức năng WDTRST (WDM register). Bình thường WDT không hoạt động, để cho phép WDT, các giá trị 1EH và E1H cần phải ghi liên tiếp vào thanh ghi WDTRST. Timer 14 bit của WDT sẽ đếm tăng dần sau mỗi chu kì đồng hồ cho đến giá trị 16383 thì xảy ra tràn. Khi xảy ra tràn chân Reset sẽ được đặt ở mức cao trong khoảng thời gian 98*Tosc ( Tosc=1/Fosc ) và AT89S52 sẽ được Reset. Khi WDT hoạt động, ngoài trừ Reset phần cứng và Reset do WDT tràn thì không có cách nào có thể cấm được WDT, vì vậy khi sử dụng WDT thì các đoạn mã của chương trình phải được đặt trong các khe thời gian giữa các lần WDT được khởi tạo lại.

Thanh ghi WDTPRG:

7 6 5 4 3 2 1 0 - - - S2 S1 S0

(20)

Tùy theo các giá trị khác nhau được ghi vào S0, S1, S2, số chu kì máy mà WDT sẽ đếm và thời gian trong các bảng 1.6, bảng 1.7

Bảng 1.6 Số chu kì máy WDT đếm tùy theo giá trị S0, S1, S2

S2 S1 S0 Số chu kì máy WDT đếm 0 0 0 2^14 0 0 1 2^15 0 1 0 2^16 0 1 1 2^17 1 0 0 2^18 1 0 1 2^19 1 1 0 2^20 1 1 1 2^21

Bảng 1.7 Thời gian tràn của WDT

S2 S1 S0 Fosc=12MHz Fosc=16MHz Fosc=20MHz 0 0 0 16,38ms 12,28ms 9,82ms 0 0 1 32,77ms 24,57ms 19,66ms 0 1 0 65,54ms 49,14ms 39,32ms 0 1 1 131,01ms 98,28ms 76,64ms 1 0 0 262,14ms 196,56ms 157,28ms 1 0 1 524,29ms 393,12ms 314,56ms 1 1 0 1,54s 788,24ms 629,17ms 1 1 1 2,10s 1,57s 1,25s 1.5.2.7 Điều khiển ngắt

(21)

1.5.2.8 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 chương trình cho chip mà không cần các bộ nạp chuyên dụng. 1.5.2.9 Bộ chia tần số Với hệ số chia là 12. 1.5.2.10 Bốn cổng xuất nhập Gồm 32 chân. 1.6 Tổ chức bộ nhớ bên trong của 8051

Bộ nhớ trong 89S52 bao gồm ROM và RAM. RAM trong 89S52 bao gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt.

AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu. Chương trình và dữ liệu có thể chứa bên trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64Kbyte bộ nhớ chương trình và 64Kbyte dữ liệu bên ngoài.

(22)

Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:

Địa chỉ

byte Địa chỉ bit Địa chỉ bit

Địa chỉ byte

(23)

RAM bên trong AT89S52 được phân chia như sau: - Các bank thanh ghi có địa chỉ từ 00H đến 1FH.

- RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH. - RAM đa dụng từ 30H đến 7FH.

- Các thanh ghi chức năng đặc biệt từ 80H đến FFH. - RAM đa dụng

RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit bằng cách dùng chế độ định địa chỉ trực tiếp hay gián tiếp.

Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích như trên, ngoài các chức năng đặc biệt được đề cập ở phần sau.

- RAM có thể định địa chỉ bit

Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đa dụng (truy xuất mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử lý bit.

- Các bank thanh ghi

Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h – 07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18 – 1Fh. Các bank thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7. Sau khi khởi động thì hệ thống bank 0 được chọn sử dụng.

Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được truy xuất bởi các thanh ghi R0 đến R7. Việc thay đổi bank thanh ghi được thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW).

- Các thanh ghi có chức năng đặc biệt

Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp). Cũng như R0 đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH.

(24)

Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:

Bảng 1.8 Các thanh ghi trạng thái chương trình (PSW: Program Status Word)

BIT SYMBOL ADDRESS DESCRIPTION

PSW.7 CY D7H Cary Flag

PSW.6 AC D6H Auxiliary Cary Flag PSW.5 F0 D5H Flag 0

PSW4 RS1 D4H Register Bank Select 1 PSW.3 RS0 D3H Register Bank Select 0

00=Bank 0; address 00H07H 01=Bank 1; address 08H0FH 10=Bank 2; address 10H17H 11=Bank 3; address 18H1FH PSW.2 OV D2H Overlow Flag PSW.1 - D1H Reserved

(25)

Chức năng từng bit trạng thái chương trình

- Cờ Carry CY (Carry Flag):

Cờ nhớ thường nó được dùng cho các lệnh toán học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn.

- Cờ Carry phụ AC (Auxiliary Carry Flag):

Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH - 0FH. Ngược lại AC = 0

- Cờ 0 (Flag 0):

Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng.

- Những bit chọn bank thanh ghi truy xuất:

RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bởi phần mềm khi cần thiết.

Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là Bank 0, Bank1, Bank2 và Bank3.

RS1 RS0 BANK 0 0 0 0 1 1 1 0 2 1 1 3

(26)

- Cờ tràn OV (Over Flag):

Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toán học.

- Bit Parity (P):

Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với thanh ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẵn. Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo thành số chẵn.

Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.

1.7 Hoạt động định thời 1.7.1 Giới thiệu

Các bộ định thời ( Timer ) được sử dụng rất rộng rãi trong các ứng dụng đo

lường và điều khiển. Có thể coi một bộ định thời n bit là bộ đếm n bit được tạo ra bởi n flip_flop mắc nối tiếp với nhau. Đầu ra của bộ định thời chính là đầu vào của flip_flop đầu tiên...

AT89S52 có 3 bộ định thời 16 bit trong đó hai bộ Timer 0, Timer 1 có 4 chế độ hoạt động. Timer 2 có 3 chế độ hoạt động. Các bộ định thời dùng để định khoảng thời gian (hẹn giờ), đếm sự kiện xảy ra bên ngoài bộ vi điều khiển hoặc tạo tốc độ baud cho cổng nối tiếp.

Trong các ứng dụng định khoảng thời gian, Timer được lập trình sao cho sẽ tràn sau một khoảng thời gian và thiết lập cờ tràn bằng 1. Cờ tràn được sử dụng bởi chương trình để thực hiện một hành động tương ứng như kiểm tra trạng thái của các ngõ vào hoặc gửi các sự kiện ra các ngõ ra.

Đếm sự kiện dùng để xác định số lần xảy ra của một sự kiện. Trong ứng dụng này người ta tìm cách quy các sự kiện thành sự chuyển mức từ 1 xuống 0 trên các chân T0 hoặc T1 hoặc T2 để dùng các Timer tương ứng đếm các sự kiện đó.

1.7.2 Các thanh ghi của bộ định thời

1.7.2.1 Các thanh ghi của Timer 0, Timer 1

(27)

Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0 và Timer 1.

7 6 5 4 3 2 1 0

GATE1 C/#T1 M1 M0 GATE0 C/#T0 M1 M0

Thanh ghi TMOD

Bảng 1.9 Thanh ghi chức năng TMOD

Bit Tên Timer Mô tả

7 GATE1 1 Bit mở cổng cho timer 1, khi được đặt bằng 1 thì Timer 1 chỉ chạy khi chân INT1 ở mức cao

6 C/#T1 1 Bit chọn chế độ Counter/Timer 1 1=bộ đếm sự kiện

0=bộ định khoảng thời gian 5 M1 1 Bit 1 chọn chế độ của Timer 1 4 M0 1 Bit 0 chọn chế độ của Timer 1

00: chế độ 0-Timer 13 bit 01: chế độ 1-Timer 16 bit

10: chế độ 2-8 bit tự động nạp lại 11: chế độ 3-tách Timer

3 GATE0 0 Bit mở cổng Timer 0, khi được đặt bằng 1 thì Timer 0 chỉ chạy khi chân INT0 ở mức cao

2 C/#T0 0 Bit chọn chế độ Counter/Timer của Timer 0

1 M1 0 Bit 1 chọn chế độ của Timer 0 0 M0 0 Bit 0 chọn chế độ của Timer 0

(28)

TMOD không có bit định vị, nó thường load một lần bởi phần mềm ở đầu chương trình để khởi động mode Timer. Sau đó sự định giờ có thể dừng lại, được khởi động lại như thế bởi truy xuất của các thanh ghi chức năng đặc biệt của Timer khác.

-Thanh ghi điều khiển Timer (TCON)

Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển Timer 0 và Timer 1. Bốn bit cao trong TCON ( TCON.4-TCON.7 ) được dùng để điều khiển các bộ định thời hoạt động hoặc ngưng ( TR0, TR1) hoặc để báo các bộ định thời tràn (TF0, TF1).

Bốn bit thấp của TCON ( TCON.0-TCON.3 ) không dùng để điều khiển các bộ định thời, chúng được dùng để phát hiện và khởi động các ngắt ngoài.

TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 TF1 TR1 TF0 TR0 IT1 IE1 IT0 IE0

Thanh ghi TCON

Bảng 1.10 Thanh ghi chức năng TCON

Bit Kí hiệu Địa chỉ Mô tả

TCON.7 TF1 8F Cờ báo tràn của T1, được đặt bởi phần cứng khi có tràn, được xóa bởi phần mềm hoặc bởi phần cứng khi bộ VXL chỉ đến chương trình phục vụ ngắt

TCON.6 TR1 8EH Bit điều khiển T1 hoạt động được đặt xóa bởi phần mềm để điều khiển cho Timer chạy/dừng

TCON.5 TF0 8DH Cờ báo tràn T0

TCON.4 TR0 8CH Bit điều khiển T0 hoạt động TCON.3 IT1 8BH Cờ ngắt do T1

TCON.2 IE1 8AH Cờ ngắt ngoài 1 TCON.1 IT0 89H Cờ ngắt do T0 TCON.0 IE0 88H Cờ ngắt ngoài 0

(29)

- Các thanh ghi chứa giá trị của các bộ định thời.

Các Timer 0 và Timer 1 đều là các Timer 16 bit, mỗi Timer có thanh ghi 8 bit dùng để chứa giá trị khởi tạo hoặc giá trị hiện thời của các Timer.

Cụ thể như sau :

Timer 0 có TH0 và TL0, Timer 1 có TH1 và TL1. * Các thanh ghi này không được định địa chỉ bit. Timer 1

TH1(8bit) TL1(8bit)

Timer 0 TH0(8bit) TL0(8bit)

1.7.2.2 Các thanh ghi của Timer 2

- Thanh ghi T2CON

T2CON.7 T2CON.6 T2CON.5 T2CON.4 T2CON.3 T2CON.2 T2CON.1 T2CON.0 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/#T2 CP/#RL2

(30)

Bảng 1.11 Thanh ghi chức năng T2CON

Bit Kí hiệu Địa chỉ Mô tả

T2CON.7 TF2 CFH Cờ báo tràn của Timer 2, TF2 được đặt khi Timer 2 tràn và được xóa bằng phần mềm, TF2 không được thiết lập khi TCLK và RCLK được đặt bằng 1

T2CON.6 EXF2 CEH Cờ ngắt ngoài Timer 2, TXF2=1 khi xảy ra sự nạp lại hoặc thu nhận, EXF2=1 cũng gây ra ngắt do Timer 2 nếu như ngắt này được lập trình cho phép, EXF2 được xóa bởi phần mềm

T2CON.5 RCLK CDH Bit chọn Timer cung cấp xung nhịp cho đường nhận của cổng nối tiếp

- RCLK=1 thì Timer 2 sẽ cung cấp tốc độ baud cho cổng nối tiếp (ở chế độ 1 và 3).

- RCLK=0 thì Timer 1 sẽ cung cấp tốc độ baud cho cổng nối tiếp (ở chế độ 1 và 3).

T2CON.4 TCLK CCH Bit chọn Timer cung cấp xung nhịp cho đường truyền của cổng nối tiếp

- TCLK=1 thì Timer 2 sẽ cung cấp tốc độ baud cho cổng nối tiếp ở đường truyền.

- TCLK=0 thì Timer 1 sẽ cung cấp tốc độ baud cho cổng nối tiếp ở đường truyền.

T2CON.3 EXEN2 CBH Bit điều khiển hoạt động của Timer 2, khi EXEN2=1 việc nạp lại hoặc thu nhận (capture) diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở chân T2EX nếu T2 không sử dụng để cung cấp tốc độ baud cho cổng nối tiếp

(31)

TR0,TR1)

T2CON.1 C/#T2 C9H Bit chọn chế độ đếm hoặc định thời của Timer 2 T2CON.0 CP/#RL2 C8H Bit chọn chế độ thu nhận hay nạp lại của Timer

2.

- Khi CP/#RL2=1, việc thu nhận được thực hiện khi có sườn xuống ở chân T2EX và bit EXEN2=1.

- Khi CP/#RL2=0, việc nạp lại được thực hiện khi Timer 2 tràn hoặc là khi có sườn xuống ở chân T2EX và bit EXEN2=1. Nếu RCLK (TCLK) bằng 1, bit này được bỏ qua, Timer 2 tự nạp lại khi tràn

- Thanh ghi T2MOD T2MOD có địa chỉ 0C9H.

Bảng 1.12 Thanh ghi chức năng T2MOD

Bit Kí hiệu Mô tả T2MOD.7 Không sử dụng T2MOD.6 Không sử dụng T2MOD.5 Không sử dụng T2MOD.4 Không sử dụng T2MOD.3 Không sử dụng T2MOD.2 Không sử dụng

T2MOD.1 T2OE Cho phép đầu ra khi sử dụng Timer 2 để tạo xung T2MOD.0 DCEN Bit cho phép Timer 2 hoạt động như bộ đếm tiến/lùi * Thanh ghi này không định địa chỉ bit .

- Thanh ghi TH2 và TL2, RCAP2H và RCAP2L.

Cũng giống như TH0, TH1 và TL0, TL1, TH2 và TL2 chứa giá trị đếm của Timer 2, tuy nhiên khác nhau là Timer 0, Timer 1 có thể dùng THx để chứa giá trị nạp lại còn Timer 2 dùng RCAP2H và RCAP2L để chứa giá trị cần nạp lại.

(32)

1.7.3 Các chế độ của bộ định thời

- Chế độ 0

Hình 1.3 Hoạt động của Timer 0 và Timer 1 ở chế độ 0

Chế độ 0 là chế độ định thời 13 bit, chế độ này tương thích với các bộ vi điều khiển trước đó, trong các ứng dụng hiện nay chế độ này không còn thích hợp.

- Chế độ 1

Trong chế độ 1, bộ Timer dùng cả hai thanh ghi TH và TL để chứa giá trị đếm, vì vậy chế độ này còn được gọi là chế độ định thời 16 bit. Bit MSB sẽ là bit D7 của TH còn bit LSB là D0 của TL.

Hình 1.4 Hoạt động của Timer0 và Timer1 ở chế độ 1

Hình 1.4 mô tả hoạt động của các Timer ở chế độ 1: Nguồn xung clock được đưa tới Timer từ một trong cách phụ thuộc vào bit C/#T trong thanh ghi TMOD.

+ Nếu C/#T=1, xung clock sẽ được lấy từ bên ngoài qua chân Tx (T0, T1, T2). + Nếu C/#T=0, xung clock sẽ được lấy từ bộ chia tần trong chip, tần số của xung ở đây là 1/12 tần số của dao động thạch anh.

(33)

Nguồn xung clock trên sẽ được điều khiển để đưa tới các Timer bằng các bit: TR, GATE và mức logic trên các chân INTx.

+ Nếu TRx= 0, các Timer sẽ bị cấm mà không cần quan tâm tới GATE và mức logic trên các chân INTx (thể hiện bằng cổng “AND”).

+ Nếu TRx= 1, các Timer sẽ hoạt động khi hoặc là bit GATE=0 hoặc là bit GATE=1 và trên chân /INTx có mức logic 1.

Với chế độ 1, giá trị lớn nhất mà các Timer chứa được là 65535, khi đếm quá giá trị này sẽ xảy ra tràn, khi cờ tràn TF sẽ được đặt =1. Sau khi xảy ra tràn, nếu muốn Timer tiếp tục đếm, chương trình phải có câu lệnh nạp lại giá trị khởi tạo sau khi đã dừng Timer bằng cách xóa bit TR.

- Chế độ 2

Trong chế độ 2, bộ Timer dùng TL để chứa giá trị đếm và TH để chứa giá trị nạp lại vì vậy chế độ này được gọi là chế độ tự nạp lại 8 bit. Sau khi đếm quá 255 sẽ xảy ra tràn, khi đó TF được đặt bằng 1 đồng thời giá trị của Timer tự động được nạp lại bằng nội dung của TH.

(34)

- Chế độ 3

Hình 1.6 Hoạt động của Timer0 ở chế độ 3

Trong chế độ 3, Timer 0 được tách thành hai bộ Timer hoạt động độc lập (Hình 1.6), chế độ này sẽ cung cấp cho bộ vi điều khiển thêm bộ Timer nữa.

Bộ Timer thứ nhất với nguồn xung clock được lấy từ bộ chia tần trên chip hoặc từ bộ tạo xung bên ngoài qua chân T0 tùy thuộc vào giá trị của bit C-/T0. Việc điều khiển hoạt động của bộ thứ nhất do bit GATE, bit TR0 và mức logic trên chân INT0 ( giống chế độ 0, 1, 2).

Giá trị đếm của Timer được chứa trong TL0, khi xảy ra tràn, cờ TF0=1 và gây ra ngắt do Timer 0 (nếu được đặt).

Bộ Timer thứ hai với nguồn xung clock được lấy từ bộ chia tần trên chip. Việc điều khiển hoạt động của bộ thứ hai chỉ là việc đặt giá trị của bit TR0. Giá trị đếm của Timer được chứa trong TH0, khi xảy ra tràn, cờ TF1=1 và gây ra ngắt do Timer 1 ( nếu được đặt).

Khi Timer 0 được tách thành hai Timer 8 bit thì Timer 1 vẫn có thể hoạt động bình thường ở các chế độ 0, 1, 2, tuy nhiên khi xảy ra tràn cờ TF1 không được thiết lập bằng 1. Như vậy trong trường hợp này Timer 1 chỉ có thể sử dụng cho các ứng dụng không cần đến ngắt (TF1=1), chẳng hạn như tạo tốc độ baud cho port nối tiếp.

(35)

1.7.4 Các nguồn xung Clock

Có hai nguồn xung clock có thể đếm giờ là sự đếm giờ bên trong và sự đếm sự kiện bên ngoài. Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer khởi động. - Sự bấm giờ bên trong

Nếu bit C/T = 0 thì hoạt động của Timer liên tục được chọn vào bộ Timer được ghi giờ từ dao động trên chip. Một bộ chia 12 được thêm vào để giảm tần số clock đến một giá trị phù hợp hầu hết các ứng dụng. Các thanh ghi THx và TLx tăng tốc độ 1/12 lần tần số dao động trên chip. Nếu dùng thạch anh 12MHz thì đưa đến tốc độ clock là 1MHz.

Các sự tràn Timer sinh ra sau khi con số cố định của những xung clock, nó phụ thuộc vào giá trị khởi tạo được load vào các thanh ghi THx và TLx.

- Sự đếm các sự kiện

Nếu bit C/T = 1 thì bộ Timer được ghi giờ từ bộ nguồn bên ngoài trong nhiều ứng dụng, bộ nguồn bên ngoài này cung cấp 1 sự định giờ với 1 xung trên sự xảy ra của sự kiện. Sự định giờ là sự đếm sự kiện. Con số sự kiện được xác định trong phần mềm bởi việc đọc các thanh ghi Timer TLx/THx, bởi vì giá trị 16 bit trong các thanh ghi này tăng lên cho mỗi sự kiện.

Nguồn xung clock bên ngoài đưa chân P3.4 là ngõ nhập của xung clock bởi Timer 0 (T0) và P3.5 là ngõ nhập của xung clock bởi Timer 1 (T1).

Trong các ứng dụng đếm, các thanh ghi Timer được tăng trong đáp ứng của sự chuyển trạng thái từ 1 sang 0 ở ngõ nhập Tx. Ngõ nhập bên ngoài được thử trong suốt S5P2 của mọi chu kì máy. Do đó khi ngõ nhập đưa tới mức cao trong một chu kì và mức thấp trong một chu kì kế tiếp thì bộ đếm tăng lên 1. Giá trị mới xuất hiện trong các thanh ghi Timer trong suốt S5P1 của chu kì theo sau một sự chuyển được khám thấy. Bởi vì nó chiếm 2 chu kì máy (2µs) để nhận ra sự chuyển đổi từ 1 sang 0, nên tần số bên ngoài lớn nhất là 500kHz nếu dao động thạch anh 12MHz.

(36)

1.8 Cổng nối tiếp 1.8.1 Giới thiệu

AT89S52 có một cổng nối tiếp trên chíp có thể hoạt động ở nhiều chế độ khác nhau với các tốc độ khác nhau. Chức năng chủ yếu của cổng nối tiếp là thực hiện chuyển đổi song song sang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp sang song song với dữ liệu nhập để có thể giao tiếp với máy tính.

Phần cứng truy xuất tới Port nối tiếp qua các chân TXD (P3.1) và RXD (P3.0) Cổng nối tiếp có thể hoạt động song công (full duplex:thu và phát đồng thời) và đệm lúc thu ( receiver buffering ) cho phép một kí tự sẽ được thu và được giữ trong khi kí tự thứ hai được nhận. Nếu CPU đọc kí tự thứ nhất trước khi kí tự thứ hai được thu đầy đủ thì dữ liệu sẽ không bị mất.

Hai thanh ghi chức năng đặc biệt cung cấp cho phần mềm truy xuất đến Port nối tiếp là SBUF và SCON. Sự đệm Port nối tiếp ( SBUF ) ở địa chỉ 99H là hai sự đệm thực sự: ghi lên SBUF load dữ liệu phát và đọc SBUF truy xuất dữ liệu đã nhận. Đây là hai thanh ghi riêng biệt và rõ rệt, mà thanh ghi phát chỉ ghi còn thanh ghi thu chỉ đọc. Thanh ghi Port nối tiếp SCON (98H) là thanh ghi được được định vị bit bao gồm các trạng thái và các bit điều khiển. Các bit điều khiển Set Mode của Port nối tiếp, còn các bit trạng thái cho biết sự kết thúc việc thu phát 1 kí tự. Các bit trạng thái có thể được kiểm tra trong phần mềm hoặc có thể lập trình để sinh ra sự ngắt.

Tần số hoạt động của Port nối tiếp hoặc tốc độ Baud có thể được lấy dao động trên chip 8051 hoặc thay đổi.

(37)

Sơ đồ của Port nối tiếp như sau:

Hình 1.7 Sơ đồ khối cổng nối tiếp của 8051 1.8.2 Các thanh ghi của cổng nối tiếp

Có hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến cổng nối tiếp là SBUF và SCON.

- Thanh ghi điều khiển cổng nối tiếp ( SCON-Serial Controller ).

Thanh ghi điều khiển cổng nối tiếp (SCON) ở địa chỉ 98H là thanh ghi 8 bit được dùng để lập trình việc đóng khung bit bắt đầu Start, bit dừng Stop, các bit dữ liệu cùng với việc khác và chứa các bit trạng thái và các bit điều khiển liên quan tới cổng nối tiếp. Các bit điều khiển đặt chế độ hoạt động cho cổng nối tiếp, các bit trạng thái báo cáo kết thúc việc phát hoặc thu một kí tự. Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặc có thể được lập trình để tạo ngắt.

(38)

Bảng 1.13 Vị trí và ý nghĩa các bit của thanh ghi SCON

SM0 SM1 SM2 REN TB8 RB8 TI RI

Bit Ý nghĩa

REN Bit cho phép cổng được phép nhận dữ liệu

TB8 Bit dữ liệu truyền thứ 9 khi cổng làm việc ở chế độ truyền và nhận 9 bit

RB8 Bit dữ liệu nhận thứ 9 khi cổng làm việc ở chế độ truyền và nhận 9 bit

TI Cờ báo ngắt khi hoàn thành quá trình truyền 1 byte dữ liệu, cờ phải được xóa bởi phần mềm

RI Cờ báo ngắt khi 1 byte dữ liệu được nhận về đầy đủ, cờ phải được xóa bởi phần mềm

SM2 Bit cho phép chế độ truyền thông giữa nhiều vi điều khiển với nhau (Mode2 và 3)

Bảng 1.14 Các chế độ của cổng nối tiếp phụ thuộc SM1, SM0

* Trước khi sử dụng cổng, phải khởi động SCON để chọn chế độ hoạt động cho cổng nối tiếp.

* Thanh ghi này được định địa chỉ theo bit.

- Thanh ghi đệm truyền nhận ở cổng nối tiếp (SBUF-Serial Buffer).

SBUF là thanh ghi 8 bit được dùng riêng cho truyền thông nối tiếp của 8051. Thanh ghi này có chức năng đệm các kí tự khi chúng được nhận về từ cổng nối tiếp hoặc được truyền đi từ cổng nối tiếp, việc truyền nhận qua cổng nối tiếp thực chất là việc truy xuất thanh ghi này.

(39)

1.8.3 Các chế độ hoạt động

- Chế độ 0

Chế độ 0 là chế độ mà cổng nối tiếp được dùng như một thanh ghi dịch 8 bit. Dữ liệu được truyền/nhận nối tiếp trên chân RXD, chân TXD được dùng để phát xung clock dịch bit. Khi truyền/nhận các byte dữ liệu 8bit,bit có giá trị thấp nhất(LSB) được truyền/nhận trước tiên và bit MSB được truyền/nhận sau cùng.Việc truyền dữ liệu được bắt đầu bằng việc ghi một byte dữ liệu vào SBUF còn việc nhận dữ liệu được bắt đầu khi bit REN đã được đặt ở mức 1 và cờ thu RI= 0. Tốc độ baud ở chế độ 0 cố định bằng Fosc/12.

Hình 1.8 Giản đồ truyền nhận dữ liệu ở chế độ 0

Tốc độ baud của chế độ 0:

Hình 1.9 Tốc độ baud ở chế độ 0

- Chế độ 1

Trong chế độ 1, cổng nối tiếp hoạt động như một bộ UART 8 bit có tốc độ thay đổi.

Dữ liệu được truyền nối tiếp trên chân TXD và nhận nối tiếp trên chân RXD, chế độ này cung cấp cho AT89S52 một công cụ giao tiếp với máy tính qua cổng Com.

(40)

Hình 1.10 Giản đồ truyền nhận dữ liệu của chế độ 1

Với chế độ 1, 1 khung truyền sẽ gồm 10 bit, ngoài 8 bit dữ liệu ra còn một bit start (ở mức thấp) và 1 bit stop (ở mức cao), LSB cũng được truyền trước, MSB được truyền sau.

Tốc độ baud của cổng nối tiếp trong chế độ 1 có thể được cung cấp bởi Timer 1 và Timer 2 hoặc đồng thời cả hai nếu muốn tốc độ truyền và nhận khác nhau.

AT89S52 truyền và nhận dữ liệu nối tiếp theo nhiều tốc độ khác nhau. Tốc độ truyền của nó có thể lập trình được. Khi sử dụng các bộ Timer cung cấp tốc độ baud cho cổng nối tiếp thì thạch anh có tần số 11,0592 MHz được khuyến cáo nên dùng vì với tần số này sẽ tạo được tốc độ baud chuẩn sai số 0%.

Bảng 1.15 Bảng tốc độ baud khác nhau

(41)

Trên hình 1.11, khi TCLK= RCLK= 1 tốc độ baud của cổng nối tiếp được cung cấp bởi Timer 2. Khác với Timer 1, Timer 2 được cung cấp xung clock có tần số ½ tần số của bộ dao động thạch anh.

Khi cần tốc độ baud khác nhau cho đường truyền và được nhận thì có thể sử dụng cả hai bộ Timer. Nếu đặt TCLK= 1 và RCLK=0 thì tốc độ baud của đường truyền sẽ được cung cấp bởi Timer 2, tốc độ baud của đường nhận sẽ được cung cấp bởi Timer 1.

Nếu đặt TCLK=0 và RCLK=1 thì tốc độ baud của đường truyền sẽ được cung cấp bởi Timer 1, tốc độ baud của đường nhận sẽ được cung cấp bởi Timer 2.

Tốc độ baud của chế độ 1:

Hình 1.12 Tốc độ baud ở chế độ 1

- Chế độ 2

Chế độ này, cổng nối tiếp hoạt động như một bộ UART 9 bit, một khung truyền gồm 11 bit, trong đó bắt đầu bằng bit Start, tiếp theo là 8 bit dữ liệu, tiếp theo là bit dữ liệu thứ 9 ( là bit TB8 nếu là khung truyền, là bit RB8 nếu là khung nhận ), cuối cùng là bit Stop. Chế độ này thường được dùng khi cần chèn thêm bit kiểm tra chẵn lẻ vào trong khung truyền để giảm bớt bit lỗi đường truyền.

Tốc độ baud trong chế độ 2 :

(42)

- Chế độ 3

Chế độ 3 là sự kết hợp của chế độ 1 và chế độ 2, nghĩa là cổng nối tiếp hoạt động như 1 bộ UART 9 bit và tốc độ baud của UART thay đổi giống như chế độ 1 ( được cung cấp bởi Timer1 và Timer2).

Tốc độ baud của chế độ 3:

Hình 1.14 Tốc độ baud ở chế độ 3 1.8.4 Tốc độ baud của Port nối tiếp

- Dùng Timer 1 làm xung clock tạo tốc độ baud.

Thông thường khởi động thanh ghi TMOD ở chế độ tự động nạp lại 8 bit (mode 2) và đặt giá trị nạp lại thích hợp vào thanh ghi TH1 để có tốc độ tràn đúng, từ đó tạo ra tốc độ baud

TMOD=0x20;

Baud rate=Timer1 overflow/32 hay /16 tùy theo giá trị bit SMOD

- Tính toán các giá trị nạp lại cho thanh ghi TH1 đối với các tốc độ baud 9600, 4800, 2400, 1200 (XTAL=11.0592MHz)

(43)

Bảng 1.16 Các giá trị của thanh ghi TH1 tạo tốc độ baud

1.9 Ngắt và xử lý ngắt 1.9.1 Giới thiệu

Interrupt là một sự cố có điều kiện mà nó gây ra sự ngưng lại tạm thời của chương trình để phục vụ một chương trình khác. Các Interrupt vận hành một Relay rất quan trọng trong thiết bị và sự cung cấp đầy đủ các ứng dụng vi điều khiển. Chúng cho phép một hệ thống đáp ứng đồng bộ đến sự kiện quan trọng và giải quyết sự kiện đó trong khi chương trình khác đang thực thi. Một hệ thống được lái bởi Interrupt cho một kĩ xảo làm nhiều công việc cùng một lúc. Tất nhiên CPU không thể thực thi nhiều lệnh tại một thời điểm, nhưng nó có thể tạm thời treo công việc thực thi của chương trình chính để thực thi chương trình khác và sau đó quay lại chương trình chính.

Khi chương trình chính đang thực thi mà có một sự ngắt xảy đến thì chương trình chính ngưng thực thi và rẽ nhánh đến thủ tục phục vụ ngắt ISR. ISR thực thi để thực hiện hoạt động và kết thúc với lệnh “trở lại từ sự ngắt”. Chương trình tiếp tục nơi mà nó dừng lại.

(44)

Hình 1.15 Chương trình trước (a) và sau (b) khi có ngắt xảy ra 1.9.2 Tổ chức ngắt AT89S52 có 6 nguồn ngắt: - Ngắt ngoài đến từ chân #INT0. - Ngắt ngoài đến từ chân #INT1. - Ngắt do bộ Timer 0. - Ngắt do bộ Timer 1. - Ngắt do bộ Timer 2. - Ngắt do Port nối tiếp.

6 nguồn ngắt này được xóa khi reset và được đặt riêng bằng phần mềm bởi các bit trong thanh ghi cho phép ngắt (IE), thanh ghi ưu tiên ngắt (IP).

* Thanh ghi cho phép ngắt IE (Interrupt Enable):

(45)

Bảng 1.17 Vị trí và công dụng các bit của thanh ghi IE

* Thanh ghi ưu tiên ngắt IP:

Mỗi nguồn ngắt được lập trình riêng để đặt vào một trong hai mức ưu tiên qua thanh ghi chức năng đặc biệt được địa chỉ bit IP ở địa chỉ B8H.

- - PT2 PS PT1 PX1 PT0 PX0

(46)

1.9.3 Xử lý ngắt

- Khi có một ngắt xuất hiện và được CPU chấp nhậncó các thao tác sau: + Hoàn tất lệnh thực thi hiện hành.

+ PC được cất vào Stack.

+ (Trạng thái của ngắt hiện hành được lưu giữ lại) + Các ngắt được chặn lại ở mức ngắt.

+ PC nạp địa chỉ vector ngắt của ISR. + Thực thi ISR.

- Các cờ gây ngắt.

Bảng 1.19 Các cờ gây ngắt

(47)

Bảng 1.20 Các Vector ngắt

- Các ngắt do Port nối tiếp.

+ Các ngắt này xuất hiện khi cờ ngắt phát TI hoặc cờ ngắt thu RI được set bằng 1. + Cờ gây ra ngắt ở port nối tiếp không được xóa bởi phần cứng khi CPU trỏ tới ISR.

- Các ngắt ngoài.

+ Xảy ra khi có mức thấp hoặc có cạnh âm trên chân /INT0 và /INT1. + Các cờ gây ra ngắt này là các bit IE0, IE1 của TCON.

+ Việc chọn các ngắt loại tác động mức hay cạnh được lập trình thông qua các bit IT0 và IT1 của TCON.

(48)

CHƯƠNG 2. CÁC LINH KIỆN LIÊN QUAN

2.1 Tìm hiểu về IC thời gian thực DS1307 2.1.1 Giới thiệu

DS1307 là chip đồng hồ thời gian thực ( RTC: Real-time clock ), khái niệm thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử dụng tính bằng giây, phút, giờ… DS1307 là sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products ). Chip này có 7 thanh ghi 8 bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm. Ngoài ra chip này còn có một thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như Ram. DS1307 được đọc và ghi thông qua giao tiếp nối tiếp I2C nên cấu tạo bên ngoài rất đơn giản. DS1307 xuất hiện ở hai gói SIOC và DIP có 8 chân.

Hình 2.1 Các dạng đóng gói của chip DS1307 2.1.2 Sơ đồ và chức năng các chân

Hình 2.2 Sơ đồ chân của DS1307

- X1 và X2: là hai ngõ kết nối với 1 thạch anh 32.768kHz làm nguồn tạo dao động cho chip.

(49)

- GND: chân mass chung cho cả Pin 3V và Vcc.

- Vcc: nguồn cho giao diện I2C, thường là 5V dùng chung với vi điều khiển.

- SQW/OUT: một ngõ phụ tạo xung vuông ( Square Ware / Output Driver ), tần số của xung được tạo có thể được lập trình. Chân này có thể phát đi 1 trong 4 tần số (1Hz, 4kHz , 8kHz, 32kHz). Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, có thể bỏ trống chân này khi nối mạch. - SCL và SDA : là hai đường giao xung nhịp và dữ liệu của giao diện I2C.

* Nếu Vcc không được cấp nguồn nhưng Vbat được cấp thì DS1307 vẫn hoạt động (nhưng không ghi và đọc được).

* Chân SQW/OUT hoạt động được khi cả Vcc và Vbat được cấp. Có thể kết nối DS1307 bằng một mạch điện đơn giản như sau:

Hình 2.3 Sơ đồ mắc cơ bản của DS1307 2.1.3 Tài nguyên và cách xuất nhập dữ liệu vào DS1307

Cấu tạo bên trong của DS1307 bao gồm một số thành phần như mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ địa chỉ và các thanh ghi (hay Ram ). Do đa số các thành phần bên trong DS1307 là thành phần cứng nên chúng ta không có quá nhiều việc khi sử dụng DS1307. Sử dụng DS1307 chủ yếu là việc đọc và ghi các thanh ghi của chip này. Vì thế cần hiểu rõ hai vấn đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thông qua giao diện I2C.

Bộ nhớ DS1307 có tất cả 64 thanh ghi 8 bit được đánh địa chỉ từ 0 đến 63 ( từ 0x00 đến 0x3f). Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” ( RTC ) còn lại 56 thanh ghi bỏ trống có thể được dùng chứa biến tạm như Ram nếu muốn. Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm

(50)

giây (SECONDS), phút (MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH), Năm (YEAR). Việc ghi giá trị vào 7 thanh ghi này tương đương với việc “cài đặt” thời gian khởi động cho RTC. Việc đọc giá trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra.

Tổ chức bộ nhớ của DS1307 được trình bày như sau:

Hình 2.4 Sơ đồ cấu trúc của các thanh ghi trong DS1307

Vì 7 thanh ghi đầu tiên quan trọng nhất trong hoạt động của DS1307, nên khảo sát các thanh ghi này một cách chi tiết.

Điều đầu tiên cần chú ý là giá trị thời gian lưu trong các thanh ghi theo dạng BCD. BCD là viết tắt của cụm từ Binary-Coded Decimal, tạm dịch là các số thập phân theo mã nhị phân.

Ví dụ: muốn cài đặt cho thanh ghi MINUTES giá trị 42. Nếu quy đổi 42 sang mã thập lục phân thì thu được 42= 0x2A . Theo cách hiểu thông thường thì cần gán giá trị MINUTES= 42. Nhưng vì các thanh ghi này chứa các giá trị BCD lên mọi chuyện sẽ khác .

(51)

Hình 2.5 Cách cập nhật dữ liệu cho DS1307

Với số 42, trước hết nó tách thành hai chữ số 4 và 2. Mỗi chữ số sau đó được đổi thành mã nhị phân 4 bit. Chữ số 4 được đổi thành mã nhị phân 4 bit là 0100 trong khi 2 đổi thành 0010. Ghép mã nhị phân của hai chữ số lại thu được một số 8 bit, đó là số BCD. Với trường hợp này, số BCD thu được là 01000010 ( nhị phân )=66. Như vậy, để đặt số phút 42 cho DS1307 cần ghi vào thanh ghi MINUTES giá trị 66 ( mã BCD của 42 ). Tất cả các phần mềm lập trình hay các thanh ghi của chip điều khiển đều sử dụng mã nhị phân thông thường, không phải mã BCD, do đó cần phải viết các chương trình con để quy đổi từ số thập lục phân (hoặc thập phân thường) sang BCD.

Hình 2.6 Tổ chức theo bit của các thanh ghi

(52)

Tổ chức các thanh ghi thời gian:

- Thanh ghi giây ( SECONDS ): thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của DS1307, địa chỉ của nó là 0x00. Bốn bit thấp của thanh ghi này chứa mã BCD 4-bit của chữ số hàng đơn vị của giá trị giây. Do giá trị cao nhất của chữ số hàng chục là 5 (không có giây 60) nên chỉ cần 3 bit (các bit SECONDS 6:4) là có thể mã hóa được (số 5 =101, 3 bit). Bit cao nhất, bit 7, trong thanh ghi này là 1 điều khiển có tên CH (Clock halt – treo đồng hồ ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động. Vậy, nhất thiết phải reset bit này xuống 0 ngay từ đầu.

- Thanh ghi phút (MINUTES): có địa chỉ 01H, chứa giá trị phút của đồng hồ. Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã BCD của phút, bit 7 luôn luôn bằng 0.

- Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất trong DS1307. Thanh ghi này có địa chỉ 02H. Trước hết 4-bit thấp của thanh ghi này được dùng cho chữ số hàng đơn vị của giờ. Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ (gọi là mode) là 12h (1h đến 12h) và 24h (1h đến 24h), bit 6 (hình 2.6) xác lập hệ thống giờ. Nếu bit 6= 0 thì hệ thống 24h được chọn, khi đó 2 bit cao 5 và 4 dùng mã hóa chữ số hàng chục của giá trị giờ. Do giá trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 ( = 10, nhị phân) nên 2 bit 5 và 4 là đủ để mã hóa. Nếu bit 6= 1 thì hệ thống 12h được chọn, với trường hợp này chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 (màu orange trong hình 2.6) chỉ buổi trong ngày, AM hoặc PM. Bit 5=0 là AM và bit 5=1 là PM. Bit 7 luôn bằng 0.

- Thanh ghi thứ ( DAY – ngày trong tuần ): nằm ở địa chỉ 03H. Thanh ghi DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong 1 tuần. Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa.

- Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong tháng (1 đến 31), MONTH chứa tháng (1 đến 12) và YEAR chứa năm (00 đến 99). Chú ý, DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số , phần đầu của năm do người dùng tự thêm vào (ví dụ 20xx). Ngoài các thanh ghi trong bộ nhớ, DS1307 còn có một thanh ghi khác nằm riêng gọi là con trỏ địa chỉ hay thanh ghi địa chỉ

(53)

(Address Register). Giá trị của thanh ghi này là địa chỉ của thanh ghi trong bộ nhớ mà người dùng muốn truy cập.

Cấu trúc của DS1307 như sau:

Hình 2.7 Sơ đồ cấu trúc bên trong của DS1307

2.1.4 Thuật toán giao tiếp I2C với Vi điều khiển AT89S52 2.1.4.1 Điều kiện Start và Stop

Điều kiện START và STOP START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết lập giao tiếp với một thiết bị nào đó trong mạng I2C. START là điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn STOP báo hiệu kết thúc một giao tiếp. Hình 2.8 mô tả điều kiện START và điều kiện STOP khi giao tiếp I2C giữa DS1307 với Vi điều khiển.

Referências

Documentos relacionados

O objetivo do presente trabalho foi analisar a diversidade genética, por meio de marcadores molecu- lares ISSR, entre 20 genótipos do gênero Citrus, repre- sentados

Essa patologia demanda vários tipos de cuidado e o enfermeiro como o responsável pelo processo do cuidar dos pacientes, deve estar capacitado para realizar o planejamento

Este seguro tem por objetivo garantir, nos termos destas Condições Gerais e das demais condições contratuais, até o limite do capital segurado estabelecido para cada

Após a divulgação dos resultados da primeira fase de seleção, os candidatos têm um prazo de 10 dias úteis, após a divulgação, para se pronunciarem, querendo, em sede de

As operações de licenciamento (e respectivas receitas) para parceiros internacionais tendem a ser mais lucrativas que as operações de produção e venda no exterior? Haveria

O setor calçadista está em expansão no Brasil, principalmente no que se refere a sua importação, o que leva as empresas a investirem em tecnologias diferenciadas para apresentar um

Ao argumentar sobre a acessibilidade de pessoas com deficiência visual às plataformas audiovisuais, o artigo tem como objetivo apresentar meios de facilitar aos

Com base nos resultados da campanha de testes da bancada e piloto, já descritos, para o projeto de expansão da capacidade instalada de li ,O para 16,3 MTPA,