1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đồng hồ số sử dụng ds1307 giao tiep 8051

56 599 4

Đ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 56
Dung lượng 1,77 MB

Nội dung

Mục đích nghiên cứu Đề tài: Thiết kế đồng hồ số ứng dụng họ vi điều khiển 8051 giao tiếp với DS1307 hiển thị giờ, phút, giây và thứ, ngày, tháng, năm hiển thị trên Led 7 đoạn Nhằm giú

Trang 1

LỜI MỞ ĐẦU

 Với sự tiến bộ không ngừng của khoa học kỹ thuật, đặc biệt là ngành điện tử

đã ứng dụng rất nhiều trong công nghiệp Trong lĩnh vực điều khiển hiện đại có nhiều ưu điểm so với việc sử dụng các mạch điều khiển được lắp ráp từ những linh kiện rời như kích thước nhỏ gọn, giá thành rẻ, tốc độ làm việc tin cậy và công suất tiêu thụ thấp

Ngày nay lĩnh vực điều khiển đã được ứng dụng rộng rãi trong các thiết bị sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày của con người như: máy giặt,

tủ lạnh, lò vi ba nhằm giúp cho đời sống ngày càng hiện đại và tiện lợi hơn Nhắc đến vi điều khiển họ 8051 thì có lẽ đã quá quen thuộc đối với những người theo ngành điện tử vì những tính năng hay cũng như những ứng dụng thực tế của nó Vì vậy nó ứng dụng

52

người thực hiện đề tài này đã đem tất cả kiến thức và khả năng về lập trình vi điều khiển họ

8051 úng dụng vào trong thực tế do đó đề tài: “Nghiên cứu thiết kế lịch vạn niên sử dụng vi điều khiển” đã ra đời

Lịch vạn niên có những tính năng như hiển thị giờ, phút, giây, thứ, ngày, tháng, năm trên led 7 đoạn

Đề tài trên là sự kết hợp giữa vi điều khiển họ 8051 và IC chuyên dụng (Real time Clock) qua đó nó sẽ giúp những người thực hiện đề tài này hiểu rõ hơn IC đồng hồ thời gian thực DS1307 Do tài liệu tham khảo tiếng Việt còn hạn chế, trình độ và kinh nghiệm thực tế còn non kém nên đề tài còn nhiều thiết sót Rất mong nhận được những ý kiến đóng góp, giúp đỡ chân tình quý báu của các thầy

cô giáo và các bạn

Trang 2

Chương 1 Tổng quan 1.1 Dẫn nhập

1.1.1 Đặt vấn đề

Ngày nay khoa học kỹ thuật phát triển mạnh mẽ, đặc biệt là trong lĩnh vực điện tử đã góp phần nâng cao năng xuất lao động, giảm nhẹ sức lao động chân tay cho con người và góp phần nâng cao đời sống vật chất cũng như tinh thần của con người

Từ xa xưa con người đã biết cách đo đếm thời gian bằng nhiều phương pháp khác nhau như: đồng hồ cót, đồng hồ lên giây cót đến khi kỹ thuật điện tử ra đời

và nhất là khi vi điều khiển ra đời thì việc sản xuất đồng hồ trở lên dễ dàng hơn trước nhiều và còn đạt độ chính xác cao hơn, cùng với các tiện ích khác nhau như báo giờ, cho biết ngày tháng hiện tại

Xuất phát từ nhu cầu phục vụ đời sống con người ngày càng tốt hơn nên em chọn đề tài làm đồ án học phần: Thiết kế đồng hồ số ứng dụng họ vi điều khiển

8051 giao tiếp với DS1307 hiển thị giờ, phút, giây và thứ, ngày, tháng, năm hiển thị trên led 7 đoạn

1.1.2 Tầm quan trọng của đề tài

- Đồng hồ điện tử hiện nay không còn là một vấn đề mới mẻ với mọi người, nhưng với mạch điện tử hiện thị trên led 7 đoạn có những vấn đề quan trọng như sau:

- Thời gian hiển thị trên led 7 đoạn dễ quan sát

- Là cơ sở để những người nghiên cứu khác vận dụng và phát triển thành một sản phẩm hoàn thiện có giá trị sử dụng trong thực tế

- Đề tài cũng là cơ sở đề những người thực hiện đồ án môn học khoá sau tham khảo và phát triển thêm

- Việc thực hiện đề tài cũng giúp người nghiên cứu nắm vững lý thuyết và rèn luyện kĩ năng thi công mạch

1.1.3 Giới hạn của đề tài.

Trong quá trình thực hiện đề tài này, em chỉ tập trung thực hiện giải quyết những vấn đề sau:

+ Khảo sát vi điều khiển AT80C51

Trang 3

+ Ứng dụng vi điều khiển và led 7 đoạn để thiết kể hiển thị giờ, phút, giây - thứ, ngày, tháng, năm

+ Thiết kế mạch hiển thị giờ, phút, giây và thứ, ngày, tháng, năm trên led 7 đoạn

Do còn hạn chế về thời gian thực hiện đề tài cũng như các khó khăn trong việc lập giải thuật nên vẫn còn nhiều thiếu sót

1.2 Cơ sở lý luận

1.2.1 Mục đích nghiên cứu

Đề tài: Thiết kế đồng hồ số ứng dụng họ vi điều khiển 8051 giao tiếp với DS1307 hiển thị giờ, phút, giây và thứ, ngày, tháng, năm hiển thị trên Led 7 đoạn

Nhằm giúp những người thực hiện đề tài nắm được những vấn đề sau:

- Thông qua việc thực hiện đề tài giúp cho những người thực hiện đồ án ôn lại những kiến thức đã học và lĩnh hội thêm được những kiến thức mới từ thầy giáo hướng dẫn, từ các bạn sinh viên và cũng là khoảng thời gian rèn luyện tay nghề, từ

đó hiểu rõ hơn cách viết chương trình cho vi điều khiển

- Qua quá trình thực hiện đồ án đã tạo điều kiện cho em thực hiện có những ý tưởng mới và giải quyết các vấn đề phát sinh một cách có hiệu quả

- Giúp người thực hiện đồ án biết vận dụng việc tính toán mạch điện giữa lý thuyết và thực tế, sao cho mạch hoạt động ổn định, kết cấu đơn giản và chi phí thấp

- Do điều kiện khách quan cũng như chủ quan của mình mà sản phẩm làm ra chưa có tính thực tiễn cao nhưng nếu được nghiên cứu đi sâu hơn thì có thể ứng dụng vào thực tế

1.2.2 Đối tượng nghiên cứu

- Vi điều khiển 80C51

- Ứng dụng IC Realtime Clock DS1307

- Mạch hiển thị trên Led 7 đoạn

1.2.3 Dàn ý nghiên cứu

- Nghiên cứu vi điều khiển 80C51

- Nghiên cứu việc giao tiếp giữa vi điểu khiển và Led 7 đoạn

Trang 4

- Lập trình phần mềm cho vi điều khiển

1.2.4 Phương án thực hiện

Dùng vi mạch điều khiển Realtime Clock DS1307 có nguồn dự phòng phương pháp này có đặc điểm:

* Ưu điểm: - Mạch điện thiết kế đơn giản, độ chính xác cao, giá thành thấp

- Tiêu thụ năng lượng thấp do dùng phương pháp quét

- Chương trình thời gian và lịch đã có sẵn trong Realtime DS107

- Không phải cài đặt lại thời gian khi mất nguồn

* Nhược điểm: Người thiết kế phải biết về vi điều khiển

1.2.5 Phương tiện nghiên cứu

- Máy tính cá nhân

- Bộ thí nghiệm vi điều khiển (board nạp VĐK và board hiển thị)

- Các linh kiện điện tử liên quan đến đề tài

1.2.6 Kết luận chương 1

Xuất phát từ nhu cầu thực tiễn của con người và những ưu điểm của DS1307 giao tiếp với 8051chúng em đã tiến hành nghiên cứu Đề tài: Thiết kế đồng hồ số ứng dụng họ vi điều khiển 8051 giao tiếp với DS1307 hiển thị giờ, phút, giây và thứ, ngày, tháng, năm hiển thị trên Led 7 đoạn, để nghiên cứu đề

tài đầu tiên chúng em đi tìm cơ sở lý thuyết để thực hiện đề tài

Trang 5

Chương 2 CƠ SỞ LÝ THUYẾT 2.1 Họ vi điều khiển 8051

2.1.1 Tổng quan về vi điều khiển

* Sơ đồ khối của bộ VĐK 8051

Các vi mạch VĐK 8051 có sơ đồ khối tổng quát như hình 2.1

Hình 2.1 Sơ đồ khối tổng quát của 8051/8052

Vi điều khiên (VĐK) 8051/52 được chế tạo theo cấu trúc của một hệ vi tính gồm các khối sau:

- Bộ xử lý trung tâm CPU (Central Processorr Unit): Dùng để điều khiển toàn vi mạch trong việc thực hiện lệnh và xử lý số học và logic

- Bộ nhớ dữ liệu (RAM) bên trong: (128 byte cho 8051 và 256 byte cho 8052) dùng làm các thanh ghi thông dụng, thanh ghi đặc biệt SFR và xử lý bit để ghi nhớ dữ liệu cho chương trình

- Bộ nhớ chương trình (ROM) bên trong: (4 Kbyte cho 8051 và 8 Kbyte cho 8052) dùng để ghi nhớ chương trình

- Cổng trao đổi tin vào ra dữ liệu và địa chỉ (P0 - P3): Dùng để trao đổi tin song song về dữ liệu và địa chỉ

Bus điều khiển

4 Cổng vào / ra

Cổng nối tiếp

Địa chỉ / Dữ liệu

TXD RXD

P0 P1 P2 P3

ROM ON- CHIP CHƯƠNG TRÌNH

Trang 6

- Cổng trao đổi tin nối tiếp: Dùng trao đổi tin nối tiếp nhận vào từ chân RXD và đưa ra từ chân TXD

- Khối định thời gian bộ đếm Timer/Couter 0, 1 và 2: Dùng để định thời gian đếm xung ngoài vào các chân T0, T1 và T2

- Khối điều khiển ngắt: Dùng để ngắt chương trình khi có xung ngoài hay khi có đếm tràn

- Khối điều khiển BUS và mạch tạo xung nhịp Giao tiếp giữa CPU với các khối bên trong của 8051 được thực hiện qua các BUS nội bộ gồm BUS dữ liệu 8 bít, BUS địa chỉ và các tín hiệu điều khiển khác

- Giới thiệu một số thông số của 8051

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

Các thành viên của họ 8051 ví dụ như 8751, 89C51, DS500 đều có kiểu đóng vỏ khác nhau, chẳng hạn dạng hai hàng chân DIP, dạng vỏ dẹt vuông QFP và dạng không có chân đỡ LLC, song chúng đều có 40 chân với các chức năng như vào ra I/O, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt Tuy nhiên, vì hầu hết các nhà phát triển chính đều sử dụng chíp đóng vỏ 40 chân kiểu hai hàng chân DIP nên chúng ta chỉ tập

trung mô tả phiên bản này Mô tả chân của 8051 được trình bày như hình 2.2

Trong số 40 chân của 8051 có 32 chân dành cho 4 cổng P0, P1, P2, P3 mỗi cổng có

8 chân Các chân còn lại dành cho nguồn VCC, đất GND, các chân dao động XTAL1

và XTAL2 , khởi động lại RS, cho phép chốt địa chỉ ALE, truy cập được địa chỉ ngoài EA, cho phép cất chương trình PSEN Trong 8 chân này thì 6 chân VCC, GND,

Trang 7

20

P0.0 ( AD0 ) P0.1 ( AD1 )

P0.4 ( AD4 )

EA /CPP ALE / PROGG P2.7 ( A15 ) P2.6 ( A14 ) P2.4 ( A12 ) P2.3 ( A11 )

1 P1.0

2 P1.1

3 P1.2

4 P1.3

5 P1.4

6 P1.5

7 P1.6

8 P1.7

9 RST

10 (RXD) P3.0

1

1

(TXD) P3.1

1 (INT0) P3.2

13 (INT1)

P3.3 (T0) 14 P3.4 15 (T1) P3.5

16 ( WR )

P3.6 ( RD) P3.7 1

18 XTAL2 XTAL1 GN

D

VC

C

P0.2 ( AD2 ) P0.3 ( AD3 ) P0.5 ( AD5 ) P0.6( AD6 )

P0.7 ( AD7 )

PSEN

P2.5 ( A13 )

P2.2 ( A10 ) P2.1 ( A9 )

P2.0 (A8 )

Hình 2.2 Sơ đồ chân của 8051/8052

2.1.2.1 Nhóm chân nguồn, dao động và điều khiển

- VCC: Chân số 40 cung cấp điện áp nguồn nguồn +5V

- GND: Chân số 20 là chân đất (hay chân nối mass)

- XTAL1 và XTAL2: 8051 có một bộ dao động trên chíp nhưng vẫn cần có một bộ dao động đồng hồ bên ngoài để kích hoạt

Bộ dao động thạch anh ngoài thường được nối tới các chân vào XTAL1 (chân 19) và XTAL2 (chân 18) Khi mắc dao động thạch anh, phải có hai tụ điện 30pF, một đầu mỗi tụ nối tới XTAL1 và XTAL2, còn đầu kia nối đất như hình 2.3 Dao động đồng hồ ngoài không nhất thiết là bộ dao động thạch anh mà cũng

có thể dùng bộ dao động TTL Khi XTAL2 để hở như hình 2.4

Trang 8

Hình 2.3 Nối đồng hồ thạch anh Hình 2.4 Nối đồng hồ ngoài

- RST: Khởi động lại (RESET) đó là chân vào số 9, mức tích cực cao, bình thường ở mức thấp Khi có xung cao đặt tới chân này thì bộ VĐK sẽ kết thúc mọi hoạt động hiện tại và tiến hành khởi động lại Quá trình xảy ra hoàn toàn tương tự như khi bật nguồn Khi RESET, mọi giá trị trên các thanh ghi sẽ bị xóa Bảng 2.2 giới thiệu giá trị các thanh ghi khi thực hiện RESET

Bảng 2.2 Giá trị một số thanh ghi sau RESET

Như vậy khi RESET giá trị của bộ đếm chương trình PC bằng 0, CPU nhận

mã lệnh đầu tiên tại địa chỉ 0000h của bộ nhớ ROM Do đó, tại địa chỉ này phải có lệnh đầu tiên chương trình nguồn của ROM Hình 2.5 và hình 2.6 trình bày hai cách nối chân của mạch RESET

31 10F

10F 11.0592 MHz

Trang 9

Hình 2.5 Mạch nối chân RST Hình 2.6 Mạch RESET với phím khởi động lại

Để RESET có hiệu quả chân RST cần duy trì trạng thái tích cực (mức cao) tối thiểu hai chu kì máy Ở 8051 chu kỳ máy bằng 12 chu kì dao động đồng hồ

- EA: Truy cập bộ nhớ ngoài là chân vào số 31 trên vỏ kiểu DIP Đối với các thành viên họ 8051 có ROM chương trình trên chíp thì chân EA được nối tới nguồn VCC

- PSEN: Là chân ra có chức năng cho phép cất chương trình

- ALE: Cho phép chốt địa chỉ, là chân ra có mức tích cực cao

2.1.2.2 Nhóm chân cổng vào ra

Bốn cổng P0, P1, P2 và P3 đều có 8 chân và tạo thành cổng 8 bít Tất cả các cổng khi RESET đều được cấu hình làm cổng ra Để làm đầu vào thì cần được lập trình

- Cổng P0: Cổng P0 có 8 chân (từ chân 32 đến chân 39) Bình thường đây là cổng ra Để có thể vừa làm đầu ra vừa làm đầu vào thì mỗi chân phải được nối tới một điện trở kéo 10K bên ngoài Sở dĩ như vậy vì cổng P0 có dạng cực máng hở đây là điểm khác với các cổng P1, P2, P3

Với các điện trở kéo ngoài, khi khởi động lại, cổng P0 được cấu hình làm cổng

ra, hình 2.7 thể hiện mắc điện trở kéo cổng P0

8051 VCC

Trang 10

- Cổng P1: Cổng P1 cũng có 8 chân từ chân 1 đến chân 8 và có thể sử dụng làm đầu vào hoặc ra Khác với cổng P0, cổng P1 không cần đến điện trở kéo vì nó

đã có các điện trở kéo bên trong Khi RESET cổng P1 được cấu hình làm cổng ra

Cổng P1 làm đầu vào: Để chuyển cổng P1 làm đầu vào cần lập trình bằng cách ghi 1 đến tất cả các bít của cổng

- Cổng P2: Cổng P2 cũng có 8 chân từ chân 21 đến chân 28 và có thể sử dụng làm đầu vào hoặc ra Cũng giống như cổng P1, cổng P2 không cần đến điện trở kéo vì nó đã có các điện trở kéo bên trong Khi RESET cổng P2 được cấu hình làm cổng ra

Để cổng P2 làm đầu vào thì cần được lập trình bằng cách ghi 1 đến tất cả các bít của cổng

- Cổng P3: Cổng P3 chiếm 8 chân từ chân 10 đến chân 17 và có thể sử dụng làm đầu vào hoặc ra Cũng giống như cổng P1và P2, cổng P3 không cần đến điện trở kéo Khi RESET cổng P3 được cấu hình làm cổng ra Tuy nhiên đây không phải là ứng dụng chủ yếu Cổng P3 có thêm 1 chức năng quan trọng khác là cung cấp 1 số tín hiệu đặc biệt, chẳng hạn như ngắt

Để cổng P3 làm đầu vào thì cần được lập trình bằng cách ghi 1 đến tất cả các bít của cổng

Bit Tên Số chân Chức năng

P3.0 RXD 10 Chân nhận dữ liệu truyền thông nối tiếp

P3.1 TXD 11 Chân truyền dữ liệu truyền thông nối tiếp

P3.2 INT0 12 Ngõ vào ngắt ngoài 0

P3.3 INT1 13 Ngõ vào ngắt ngoài 1

P3.4 T0 14 Ngõ vào của bộ counter 0 (đếm sự kiện ngoài 0) P3.5 T1 15 Ngõ vào của bộ counter 1 (đếm sự kiện ngoài 1) P3.6 WR 16 Điều khiển ghi bộ nhớ dữ liệu ngoài

P3.7 RD 17 Điều khiển đọc bộ nhớ dữ liệu ngoài

Bảng 2.3 Giới thiệu các chức năng khác của cổng P3

Trang 11

VD: MOV A, # 57H ; Tức nạp giá trị 57H vào thanh ghi A

Dấu “ # “ là cơ sở để phân biệt chế độ định địa chỉ trực tiếp và chế độ định địa chỉ tức thì 2.1.3.3 Chế độ định địa chỉ thanh ghi

Chế độ định địa chỉ thanh ghi là sử dụng các thanh ghi để lưu dữ liệu cần thao tác VD: MOV A, R0; Sao nội dung thanh ghi R0 vào thanh ghi A

2.1.3.4 Chế độ định địa chỉ gián tiếp thanh ghi

Trong chế độ định địa chỉ gián tiếp thanh ghi địa chỉ của toán hạng được xác định thông qua 1 thanh ghi Các thanh ghi dùng để xác định địa chỉ là thanh ghi R0, R1 của băng thanh ghi hiện hành và thanh ghi DPTR Các thanh ghi có dấu “

@ “ đứng trước

VD: MOV A, @ R0; Chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A

2.1.3.5 Chế độ định địa chỉ chỉ số thanh ghi

Trong chế độ này địa chỉ của toán hạng được xác định bằng tổng nội dung của thanh ghi A và thanh ghi DPTR hoặc thanh ghi PC

VD : MOV A, @ A + DPTR; Hoặc MOV A, @ A + PC;

2.1.4 Tập lệnh của 8051

2.1.4.1 Nhóm lệnh di chuyển dữ liệu

- MOV toán hạng đích, toán hạng nguồn: Di chuyển nội dung của toán hạng nguồn vào toán hạng đích Sau khi thực hiện toán hạng đích có nội dung của toán hạng nguồn, toán hạng nguồn không thay đổi giá trị

VD: MOV A, #5; Di chuyển giá trị 5 vào thanh ghi A khi đó A = 5

Trang 12

- MOVX toán hạng đích, toán hạng nguồn: Di chuyển dữ liệu từ RAM ngoài vào thanh ghi A và ngược lại

VD: MOVX A, @R0; Chuyển ngăn nhớ RAM có địa chỉ ở R0 vào thanh ghi A

- MOVC toán hạng đích, toán hạng nguồn

- Lệnh cộng ADD: Ở 8051 để cộng 2 toán hạng cần phải sử dụng thanh ghi

A Cú pháp lệnh cộng ADD có dạng như sau:

ADD A, nguồn; A = A + nguồn

Lệnh này làm nhiệm vụ cộng nội dung của nguồn với thanh ghi A, kết quả lưu trên thanh ghi A Nếu tổng lớn hơn 255 cờ CY được đặt bằng 1 Nếu tổng nhỏ hơn

255 cờ CY được xóa về 0 Toán hạng đích luôn là thanh ghi A trong khi đó toán hạng nguồn có thể là một thanh ghi dữ liệu tức thời hoặc là bộ nhớ Lệnh này có thể thay đổi một trong các bit AF, CF hoặc PF của thanh ghi cờ phụ thuộc vào các toán hạng liên quan

- Lệnh trừ SUBB:

Cú pháp : SUBB A, nguồn;

Lệnh này làm nhiệm vụ trừ nội dung của thanh ghi A cho nguồn, kết quả lưu trên thanh ghi A Nếu giá trị của thanh ghi A nhỏ hơn nguồn thì cờ CY được đặt bằng 1 Nếu giá trị của thanh ghi A lớn hơn nguồn thì cờ CY được xóa bằng 0 Tương tự như lệnh cộng, ở lệnh trừ toán toán hạng đích cũng là thanh ghi A

và toán hạng nguồn có thể là thanh ghi dữ liệu tức thời hoặc bộ nhớ

Trang 13

- Lệnh nhân MUL: Bộ vi điều khiển chỉ hỗ trợ phép nhân byte với byte Các byte được giả thiết là dữ liệu không dấu

Cấu trúc lệnh như sau: MUL AB ; Là phép nhân A  B và kết quả 16 bit được đặt trong A và B

Khi nhân byte với byte thì một toán hạng ở thanh ghi A và toán hạng thứ hai ở thanh ghi B Kết quả của phép nhân được lưu ở thanh ghi A và B Trong đó byte thấp lưu ở thanh ghi A còn byte cao lưu ở thanh ghi B

Bảng 2.4 Tóm tắt phép nhân hai số không dấu (MUL AB)

- Lệnh chia DIV:

Cú pháp : DIV AB ; Chia A cho B

Khi chia một byte cho một byte thì tử số (số bị chia) phải ở trong thanh ghi A

và mẫu số (số chia) phải ở trong thanh ghi B Sau khi lệnh chia DIV được thực hiện thì thương số được đặt trong A, còn số dư được đặt trong B

Bảng 2.5 Tóm tắt phép chia không dấu

Cú pháp: ANL đích, nguồn; đích = đích Và nguồn (kẻ bảng)

Lệnh này thực hiện một phép Và logic trên hai toán hạng đích và nguồn và đặt kết quả vào đích Đích thường là thanh ghi tổng (tích luỹ) Toán hạng nguồn có thể là thanh ghi, bộ nhớ hoặc giá trị cho sẵn

ANL là lệnh đối với toán hạng dạng byte và không tác động lên các cờ Nó thường được dùng để che (đặt về 0) một số bít của toán hạng

Trang 14

Cú pháp : ORL đích, nguồn ; đích = đích OR nguồn

Lệnh này thực hiện OR toán hạng đích với toán hạng nguồn, kết quả cất vào toán hạng đích Phép Hoặc có thể được dùng để thiết lập những bit nhất định của một toán hạng Toán hạng đích thường là thanh ghi tổng, toán hạng nguồn có thể là thanh ghi, bộ nhớ hoặc giá trị cho sẵn Lệnh ORL dùng cho toán hạng dạng byte

- Lệnh XOR (OR loại trừ)

Cú pháp: XRL đích, nguồn; đích = đích OR loại trừ nguồn

Lệnh này sẽ thực hiện phép XOR trên hai toán hạng và đặt kết quả vào đích Đích thường là thanh ghi tổng Toán hạng nguồn có thể là một thanh ghi, bộ nhớ hoặc giá trị cho sẵn XRL là lệnh dùng với toán hạng dạng byte và sẽ không tác

- Lệnh CPLA (lấy phần bù thanh ghi tích lũy):

Lệnh thực hiện lấy phần bù nội dung của thanh ghi tích lũy A Phép bù là phép đảo các bít 0 thành 1 và 1 thành 0 Phép đảo này còn gọi là phép bù 1

- Lệnh quay phải thanh ghi A

Trang 15

Cú pháp: RR A ; Quay các bit thanh ghi A sang phải

Trong phép quay phải, 8 bit của thanh ghi tổng được quay sang phải một bit

và bit D0 rời từ vị trí bit thấp nhất và chuyển sang bit cao nhất D7

Hình 2.8 Lệnh quay phải

- Lệnh quay trái thanh ghi A

Cú pháp : RL A ; Quay trái các bit của thanh ghi A

Trong phép quay trái thì 8 bit của thanh ghi A được quay sang trái 1 bit và bit D7 rời khỏi vị trí bit cao nhất chuyển sang vị trí bit thấp nhất D0

Hình 2.9 Lệnh quay trái

Lưu ý rằng trong các lệnh RR và RL thì không có cờ nào bị tác động

- Lệnh quay phải thanh ghi A có nhớ

Hình 2.10 Lệnh quay phải thanh ghi A có nhớ

- Lệnh quay trái thanh ghi A có nhớ

Cú pháp : RLC A; Quay trái các bít của thanh ghi A

Trang 16

Hình 2.11 Lệnh quay trái thanh ghi A có nhớ

- Lệnh trao đổi thanh ghi A: SWAP A

Một lệnh hữu ích khác nữa là lệnh trao đổi SWAP Nó chỉ hoạt động trên thanh ghi A, nó trao đổi nửa phần cao của byte và nửa phần thấp của byte với nhau Hay nói cách khác 4 bit cao được chuyển thành 4 bit thấp và 4 bit thấp thành

4 bit cao

2.1.4.4 Nhóm lệnh rẽ nhánh chương trình

 Nhóm lệnh rẽ nhánh không điều kiện

Lệnh nhảy không điều kiện là lệnh nhảy trong đó điều khiển được truyền

không có điều kiện đến địa chỉ đích Ở 8051 có hai lệnh nhảy không điều kiện đó là: Lệnh nhảy dài LJMP và lệnh nhảy ngắn SJMP

- Lệnh nhảy dài LJMP ( long jump ):

- SETB toán hạng bít: Sau lệnh này toán hạng bít có giá trị bằng 1

- CLR toán hạng bít: Sau lệnh này toán hạng bít có giá trị bằng 0

- CPL toán hạng bít (lệnh lấy phần bù): Sau lệnh này toán hạng bít bằng giá trị đảo của nó

D7 - D4 D3 - D0 after: D3 - D0 D7 - D0 before:

Trang 17

- Lệnh di chuyển toán hạng bít:

MOV C, toán hạng bít: Di chuyển toán hạng bít vào cờ C

MOV toán hạng bít, C: Di chuyển cờ C vào toán hạng bít

- ANL C, toán hạng bít: Thực hiện phép AND logic giữa toán hạng bít và

cờ C Kết quả lưu trên cờ C

- ORL C, toán hạng bít: Thực hiện phép ORL giữa toán hạng bít và cờ C

Kết quả lưu trên cờ C

2.1.5 Bộ timer/ Coun ter

8051 có 2 bộ Timer /Counter: Timer/ Counter0, Timer/ Counter1

* Timer/Counter là các bộ đếm:

- Timer: Đếm xung dao động bên trong VĐK, số đếm tăng lên 1 đơn vị tương

ứng với 1

- Counter: Đếm xung dao động bên ngoài, số đếm tăng lên 1 đơn vị tương

ứng với 1 xung dao động bên ngoài đưa dến chân P3.4 (Timer/ Counter0) hoặc

chân P3.5 (Timer/ Counter1)

* Các thanh ghi điều khiển của Timer/ Counter

- Thanh ghi TMOD

- Thanh ghi TCON

- Các thanh ghi chứa số đếm: THx, TLx (x = 0, 1): Là các thanh ghi 8 bít

nằm trong S FRs cho phép truy nhập mức byte

2.1.6 Ngắt

Ngắt là sự kiện xảy ra tại thời điểm bất kỳ làm gián đoạn tiến trình thực hiện

bình thường của chương trình 8051 có 6 nguồn ngắt tương ứng với 5 vectơ ngắt 2

ngắt ngoài INT0 (P3.2) và INT1 (P3.3)

- 2 ngắt Timer/ Counter: Ngắt Timer/ Counter 0 và ngắt Timer/ Counter 1

- 2 nguồn ngắt cổng nối tiếp: Ngắt truyền và ngắt nhận

* Các thanh ghi điều khiển ngắt

Thanh ghi cho phép ngắt IE

Thanh ghi ưu tiên ngắt IP

2.2 Giới thiệu giao tiếp TWI – I 2 C

Trang 18

TWI (Two-Wire Serial Intereafce) là một module truyền thông nối tiếp đồng bộ trên các chip vi điều khiển dựa trên chuẩn truyền thông I2C

TWI (I2C) là một truyền thông nối tiếp đa chip chủ tức là trong cùng một bus

có thể có nhiều hơn một thiết bị làm Master, đồng thời một Slave có thể trở thành một Master nếu nó có khả năng.Trong đồ án này 8051 đóng vai trò là một Master, còn DS1307 là một Slaver TWI (I2C) được thực hiện trên 2 đường SDA (Serial DATA) và SCL (Serial Clock) trong đó SDA là đường truyền/nhận dữ liệu và SCL

là đường xung nhịp Theo chuẩn I2C, các đường SDA và SCL trên các thiết bị có cấu hình “cực góp mở” (open-drain hoặc open-collector), nghĩa là cần có các “điện trở kéo lên” (pull-up resistor) cho các đường này Ở trạng thái nghỉ (Idle), 2 chân SDA và SCL ở mức cao Hình 2.12 mô tả một mô hình mạng TWI (I2C) cơ bản

Hình 2.12 Mạng TWI (I2C) với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL

Master: là chip khởi động quá trình truyền nhận, phát đi địa chỉ, địa chỉ cố định

được gọi bởi Master

SDA- Serial Data: là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ

liệu đều được truyền trên đường này theo thứ tự từng bit một Chú ý là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền trước nhất

SCL - Serial Clock: là đường giữ nhịp nối tiếp TWI (I2C) là chuần truyền thông

nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình truyền/nhận, cứ mỗi xung trên đường giữ nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample) Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ START và STOP condition) Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp

Trang 19

START Condition - Điều kiện bắt đầu: từ trạng thái nghỉ, khi cả SDA và

SCL ở mức cao nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA xuống thấp trong khi SCL vẫn cao Trạng thái này gọi là START Condition

STOP Condition - Điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu,

nếu Master muốn kết thúc quá trình nó sẽ tạo ra một STOP condition STOP condition được Master thực hiện bằng cách kéo chân SDA lên cao khi đường SCL đang ở mức cao STOP condition chỉ được tạo ra sau khi địa chỉ truyền/nhận

REPEAT START – Bắt đầu lặp lại: khoảng giữa START và STOP

condition là khoảng bận của đường truyền, các Master khác không tác động được vào đường truyền trong khoảng này Trường hợp sau khi kết thúc truyền/nhận mà Master không gởi STOP condition lại gởi thêm 1 START condition gọi là REPEAT START Khả năng này thường được dùng khi Master muốn lấy dữ liệu liên tiếp từ các Slaves Hình bên dưới mô tả các Master tạo ra START, STOP và REPEAT START

Address Packet Format – Định dạng gói địa chỉ: trên mạng TWI (I2C),

Trang 20

Phối hợp gói địa chỉ và dữ liệu: một quá trình truyền/nhận TWI (I2C) thường

được bắt đầu từ Master, Master phát đi một START condition sau đó gởi gói địa chỉ SLA+R/W trên đường truyền Tiếp theo nếu có một Slave đáp ứng lại, dữ liệu

có thể truyền/nhận liên tiếp trên đường truyền (1 hoặc nhiều byte liên tiếp) Khung truyền thông thường được mô tả như hình bên dưới

2.3 Khảo sát IC Realtime DS1307

DS1307 là một sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products)

- Chân tương thích với MC146818B và DS107

- Hoạt động hoàn toàn ổn định trong vòng 10 năm khi thiếu hoặc nguồn nuôi không đủ

- Bản thân nó gồm nguồn nuôi Lithium bên trong hệ thống đồng hồ và mạch bảo vệ

- Bộ đếm năm, tháng, ngày, thứ, giờ, phút, giây có thể đảm bảo tới năm 2100

- Đồng hồ và lịch thời gian biểu diễn dưới dạng số nhị phân hay BCD

- Chế độ 12 hay 24 giờ với AM hay PM

- Có chế độ lưu trữ thời gian theo buổi

• 8 byte của thanh ghi Clock và thanh ghi điều khiển

• 56 byte còn lại là RAM đa chức năng

- Có thể lập trình xung out

Trang 21

2.3.1 Khảo sát sơ đồ chân của DS 1307 – Chức năng từng chân

Hình 2.13 Cấu tạo của DS1307

Trên hình 2.13 là dạng cấu tạo của DS1307 chíp này có 8 chân

+ X1 và X2 là đầu vào dao động cho DS1307 Cần dao động thạch anh 32.768Khz + Vbat là nguồn nuôi cho chip Nguồn này từ (2V- 3.5V) ta lấy pin có nguồn 3V

Đây là nguồn cho chip hoạt động liên tục khi không có nguồn Vcc

+ Vcc là nguồn cho giao tiếp I2C Điện áp cung cấp là 5V chuẩn và được dùng

chung với vi xử lý Nếu mà Vcc không có mà Vbat có thì DS1307 vẫn hoạt động bình thường nhưng mà không ghi và đọc được dữ liệu

+ SQW/OUT là một ngõ ra phụ tạo xung dao động (xung vuông)

+ GND là nguồn mass chung cả Vcc và Vbat

+ SCL và SDA là hai bus dữ liệu của DS1307 Thông tin truyền và ghi

Hình 2.14 Mạch ứng dụng của DS1307

2.3.2 Sơ đồ địa chỉ của Realtime Clock DS1307

- Chip này có 7 thanh ghi 8-bit chứa thời gian là: giờ, phút, giây và thứ (trong tuần), ngày, tháng, năm Ngoài ra DS1307 còn có 1 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 diện nối tiếp I2C

2.3.3 Sơ đồ cấu trúc của DS1307

Trang 22

H ình 2.15 Cấu trúc DS1307

Cấu tạo bên trong 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 điện I2C, con trỏ địa chỉ và các thanh ghi (hay RAM) Sử dụng DS1307 là ghi và đọc các thanh ghi của chip này

2.3.4 Vị trí thời gian, lịch của DS1307

Bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ từ 0 đến 63 (từ 0x00 đến 0x3F theo hệ hexadecimal) Tuy nhiên, trong đồ án thì chúng em chỉ sử dụng 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” còn lại 56 thanh ghi bỏ trống có thể được dùng chứa biến tạm như RAM Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây (SECONDS), phút (MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) và 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á 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 trong hình 2.16

Trang 23

Hình 2.17 Tổ chức các thanh ghi thời gian

Điều đầu tiên 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

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 (do không có giây 60 ) nên chỉ cần 3 bit (các bit SECONDS6: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ì vậy, nhất thiết phải reset bit này xuống 0 ngay từ đầu

Trang 24

Thanh ghi phút (MINUTES): có địa chỉ 0x01, 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ỉ 0x02 Trước hết 4-bits 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) giờ, bit6 (màu green trong hình 4) xác lập hệ thống giờ Nếu bit6=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 bit6=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.12)

Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chỉ 0x03 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

Thanh ghi DATE chứa ngày trong tháng (1 đến 31)

Thanh ghi tháng MONTH chứa tháng (1 đến 12)

Thanh ghi năm YEAR chứa năm (00 đến 99) 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ỉ (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

2.4 Giới thiệu IC 74LS247

Đây là IC dùng để chuyển tín hiệu dạng số nhị phân ở ngõ vào sang mã 7 đoạn

IC này hoạt động ở tích cực mức thấp Do đó ta có bảng chân thực sau:

Trang 25

BCD inputs Segment outputs

Để IC hoạt động ta kết nối chân 16 (Vcc) với nguồn 5 V, chân số 8 với đất

Ngõ vào có 4 chân là 1, 2, 6,7 tương ứng với A, B, C, D trong đó mức ý nghĩa giảm dần từ A đến D Kết nối các ngõ ra A, B, C, D của IC với 8051 Các chân

LT, BI/RBO, RBI không cần kết nối Nếu ta dùng Led 7 đoạn kiểu Cathod chung thì mỗi ngõ ra của IC 7447 cần kết nối với các cổng đảo trước khi đến các chân của Led Chúng em có thể sử dụng thêm IC 7404

IC này được tích hợp 6 cổng đảo Do đó ngõ ra tích cực mức thấp, đầu ra của

IC 7447 sẽ chuyển thành mức cao khi qua IC7404 do đó làm cho led 7 đoạn kiểu Cathode chung hoạt động

Nếu sử dụng Led 7 đoạn kiểu Anode không cần dùng IC đảo 7404 mà chỉ cần 1 IC giải mã 74247

2.5 Kết luận chương 2

Sau khi nghiên cứu cơ sở lý thuyết em đã nắm được:

- Về 8051: Hiếu rõ thêm về cấu trúc, chức năng của các chân, các chế độ định địa chỉ, các tập lệnh, chế độ Timer/Count Tuy nhiên 8051 có rất nhiều ứng dụng khác mà bản thân không thể khai thác được

- Về giao tiếp I2C: Nắm được phương thức truyền nối tiếp I2C

Trang 26

- Về DS1307: Nắm được cấu trúc, chức năng của từng chân, phương thức giao tiếp với 8051

Trang 27

Chương 3 THIẾT KẾ VÀ THI CÔNG 3.1 Sơ đồ khối toàn mạch

G

Bộ Nguồn

E

Realtime

B

C

Vi Điều

74247 Led 7 đoạn

D

Trang 28

3.2.1.2 Sơ đồ nguyên lý bộ nguồn như sau

Mạch cung cấp nguồn này chủ yếu dùng để cung cấp cho IC nên đòi hỏi độ

ổn định cao do đó cần phải sử dụng mạch ổn áp Ta có sơ đồ nguyên lý mạch nguồn như sau:

Hình 3.2 Sơ đồ nguyên lý bộ nguồn

3.2.1.3 Nhiệm vụ các thiết bị

- Biến áp : Dùng để biến đổi điện áp xoay chiều U1 thành điện áp xoay chiều U2

có giá trị phù hợp với tải

- Mạch chỉnh lưu: Có nhiệm vụ biến đổi điện áp xoay chiều thành điện áp một chiều nhấp nhô (điện áp một chiều có độ lớn thay đổi theo thời gian)

- Bộ lọc: San bằng điện áp một chiều nhấp nhô thành điện áp một chiều bằng phẳng U4

- Bộ ổn áp ổn dòng: Có nhiệm vụ tạo ra điện áp một chiều ổn định U5 cung cấp cho tải, khi điện áp U4 hoặc trị số tải thay đổi

3.2.2 Khối dao động

3.2.2.1 Sơ đồ nguyên lý

Hình 3.6 Sơ đồ nguyên lý khối dao động

VI ĐIỀU KHIỂN 89C51

33pF

33pF 12MHz

XTAL2 18

XTAL1 19

7805

12 V

~220V

Máy biến áp

103F 50V

+

103F 25V

Ngày đăng: 29/06/2018, 13:29

TỪ KHÓA LIÊN QUAN

w