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

MẠCH ĐỒNG hồ DÙNG VI xử lý AT89C51

59 558 0

Đ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 59
Dung lượng 2,12 MB

Nội dung

MẠCH ĐỒNG hồ DÙNG VI xử lý AT89C51 ................................................ MẠCH ĐỒNG hồ DÙNG VI xử lý AT89C51 ................................................ MẠCH ĐỒNG hồ DÙNG VI xử lý AT89C51 ................................................ MẠCH ĐỒNG hồ DÙNG VI xử lý AT89C51 ................................................

Trang 1

Hình 2- 1: Sơ đồ hệ thống

Hình 2- 2: Khối nguồn

Hình 2- 3: Khối nguồn hoàn chỉnh

Hình 2- 4: Khối vi điều khiển

Hình 2- 5: Khối hiển thị

Hình 2- 6: Khối hiển thị hoàn chỉnh

Hình 2- 7: Sơ đồ mạch điều khiển

Hình 2- 8: Khối điều khiển hoàn chỉnh.

Hình 2- 9: DS1307

Hình 2- 10: Mạch nguyên lý khối điều khiển

Hình 2- 11: Mạch nguyên lý khối hiện thị

Hình 2- 12: PCB mạch nguồn

Hình 2- 13: PCB mạch 6 led hiển thị

Hình 2- 14: PCB Mạch điều khiển trung tâm

Trang 5

ở đây luôn hiển thị chính xác như thời gian thực mà chúng ta đang sử dụng kể cảkhi mất nguồn chính.

1.2 Mô tả chức năng hoạt động của mạch

Thời gian sẽ tự động lưu vào bộ nhớ ta chỉ cần cài đặt thời gian một lần.

Đề chỉnh Giờ ta nhấn nút Cài Đặt lần thứ nhất, nhấn nút Tăng để chỉnh giờ lên, nhấn nút Giảm để giảm giờ xuống, sau đó nhấn nút Ok

để hoàn tất phần cài đặt giờ.

Tiếp đến để chỉnh Phút, nhấn nút Tăng để chỉnh phút lên, nhấn nút Giảm để giảm phút xuống, sau đó nhấn nút Ok để hoàn tất phần cài đặt phút.

Tiếp đến để chỉnh Giây, nhấn nút Tăng để chỉnh giây lên, nhấn nút Giảm để giảm giây xuống, sau đó nhấn nút Ok để hoàn tất phần cài đặt giây.

Nhấn nút Cài Đặt lần thứ hai , để quá trình cài đặt thời gian hoàn tất.

Để cài đặt báo thức , ta nhấn nút Báo Thức.

Tiếp đến nhấn nút Tăng để chỉnh giờ lên, nhấn nút Giảm để giảm giờ xuống, nhấn nút Ok để hoàn tất phần cài đặt giờ báo thức.

Trang 6

Tiếp đến nhấn nút Tăng để chỉnh phút lên, nhấn nút Giảm để giảm phút xuống, sau đó nhấn nút Ok để hoàn tất phần cài đặt phút báo thức.

Tiếp đến nhấn nút Cài Đặt để chọn lựa chế độ hoạt động của báo thức , nhấn Tăng hoặc Giảm để chọn ON “ đồng ý báo thức” OFF “ hủy báo thức” , sau đó nhấn nút Ok để hoàn tất quá trình cài đặt báo thức.

Để tắt chuông báo thức.

Nhấn giữ nút Báo Thức trong 3s , để tắt chuông báo thức.

Nhấn nút Cài Đặt , sau đó nhấn nút Tăng hoặc Giảm để lựa chọn chế

độ ON/OFF của báo thức, ta chọn OFF

Nhấn nút Ok để hoàn tất quá trình tắt báo thức.

1.3 Nguyên lý chung

1.3.1 Nguyên Lý Quét LED 7 Thanh

Để hiển thị 1 led 7 thanh, ta cần 8 chân để gởi dữ liệu cho nó Dựa trên hiện tượnglưu ảnh nên khi ta đóng và mở các led với tần số cao sẽ làm cho ta thấy như ledkhông bị tắt mà sẽ thấy led sáng liên tục

Với phương pháp quét led 7 thanh ta mắc trực tiếp các chân A,B,C,D,E,F,G,DPcủa các led 7 thanh lại với nhau và điều khiển thông qua các chân nguồn

Trang 7

Hình 1- 1:Sơ đồ quét LED

1.3.2 Giao tiếp I2C

1.3.2.1 Giới thiệu

Vào những năm 1980 Phillips đã phát triển ra một chuẩn giao tiếp nối tiếp 2 dâyđược gọi là I2C (Inter-Intergrated Circuit)

Trang 8

Hình 1- 2:Bus I2C và các thiết bị ngoại vi

1.3.2.2 Đặc Điểm Giao Tiếp I2C

Một giao tiếp I2C gồm có 2 dây: SDA (Serial Data) và SCL (Serial Clock) SDA làđường truyền dữ liệu 2 hướng, còn SCL là đường xung đồng hồ và chỉ theo 1hướng

Hình 1- 3:Kết nối thiết bị vào bus I2C

Trong một giao tiếp I2C thì hoạt động truyền hay nhận còn tùy thuộc vào thiết bị

đó là Master( thiết bị chủ ) hay Slave (thiết bị tớ) Trong đó quyền điều khiểnthuộc về thiết bị chủ Thiết bị chủ có vai trò tạo xung clock cho toàn hệ thống vàquản lí địa chỉ của thiết bị tớ

Dựa vào hình có thể thấy dữ liệu có thể truyền từ thiết bị chủ sang thiết bị tớ hayngược lại, nhưng xung clock chỉ truyền theo 1 hướng từ thiết bị chủ sang thiết bịtớ

1.3.2.3 Các Chế Độ Truyền Dữ Liệu Của I2C:

Standard mode : Chế độ chuẩn

Fast mode : Chế độ nhanh

High-Speed mode : Chế độ cao tốc

Trang 9

Quá trình truyền dữ liệu trong giao tiếp I2C: bao gồm hai quá trình là đọc và ghi

Hình 1- 4: Quá trình Start / Stop trong I2C

Hình 1- 5: Quá trình truyền dữ liệu I2C

Trang 10

Hình 1- 6: Truyền từ Master sang Slave (Ghi dữ liệu)

Hình 1- 7: Truyền từ Slave sang Master (Đọc dữ liệu)

Hình 1- 8: Quá trình đọc dữ liệu

1.4 Giới thiệu về linh kiện

1.4.1 IC vi điều khiển AT89C51

1.4.1.1 Giới thiệu chung IC vi điều khiển AT89C51

Intel công bố chip 8051 là bộ điều khiển đầu tiên của họ vi điều khiển MCS-51.Hiện nay Intel không còn cung cấp các loại vi điều khiển họ MCS-51 thay vào đó

là hãng Atmel sản xuất cung cấp các chip vi điều khiển có tính năng tương tự nhưchip vi điều khiển của Intel Mã 8051 của Intel chuyển thành 8951 của Atmel IC

vi điều khiển AT89C51 gồm:

Dung lượng ROM 4KbyteDung lượng RAM 128 byte

4 port xuất nhập (I/O port ) 8 bit

Trang 11

1 bộ định thời 16 bitMạch giao tiếp truyền dữ liệu nối tiếp

Có thể mở rộng không gian nhớ chương trình ngoài 64Kbyte

Có thể mở rộng không gian nhớ dữ liệu ngoài 64 KByte

Bộ xử lý bit ( thao tác trên các bit riêng rẽ)

210 bit có thể truy xuất đến từng bit

Hình 1- 9: Sơ đồ khối IC vi xử lý AT89C51

Interrupt control : điều khiển ngắt

Other registers : các thanh ghi khác

128 bytes RAM : RA.M 128 byte

Timer 2, 1, 0 : bộ định thời 2, 1, 0

CPU : đơn vị diều khiển trung tâm

Oscillator : mạch dao động

Bus control : điều khiển bus

I/O ports : các po.rt xuất/nhập

Serial port : port nối tiếp

Address/data : địa chỉ/dữ liệu

Trang 12

1.4.1.2 Sơ đồ chân và chức năng từng chân IC vi điều khiển AT89C51

Hình 1- 10: Sơ đồ chân IC vi xử lý AT89C51

Chân VCC: Chân số 40 là VCC cấp điện áp nguồn cho vi điều khiển Nguồn điện

cấp là +5V

Chân GND: Chân số 20 nối GND.

Port 0 (P0): Port 0 gồm 8 chân ( từ chân 32 đến 39 ) có hai chức năng xuất /

nhập : Các chân này dùng để nhận tín hiệu từ bên ngoài để xử lý hoặc dùng đểxuất tín hiệu ra bên ngoài Port 0 còn làm nhiệm vụ lấy dữ liệu từ ROM hoặcRAM ngoại, đồng thời Port 0 còn dùng để định địa chỉ của bộ nhớ ngoài

Port 1 (P1): Gồm 8 chân ( từ chân 1 đến chân 8) chỉ có chức năng làm đường xuất

nhập

Port 2 (P2): Gồm 8 chân ( từ chân 21 đến chân 28) có 2 chức năng: Chức năng

xuất/nhập ; Chức năng là bus địa chỉ cao

Port 3(P3): Gồm 8 chân (từ chân 10 đến chân 17) có chức năng xuất/nhập và với

mỗi chân có một chức năng riêng thứ hai trong bảng sau :

Trang 13

Bit Tên Chức năng

P3.0 RxD Ngõ vào nhận dữ liệu nối tiếp

P3.1 TxD Ngõ xuất dữ liệu nối tiếp

P3.2 INT0 Ngõ vào ngắt cứng thứ 0

P3.3 INT1 Ngõ vào ngắt cứng thứ 1

P3.4 T0 Ngõ vào của Timer/Counter thứ 0

P3.5 T1 Ngõ vào của Timer/Counter thứ 1

P3.6 WR Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài

P3.7 RD Ngõ điều khiển đọc dữ liệu từ bộ nhớ ngoài

Bảng 1- 1: Chức năng Port 3

Chân RESET (RST): ở chân số 9 dùng để thiết lập trạng thái ban đầu cho vi điều

khiển

Chân XTAL1 và XTAL2: hai chân này ở vị trí chân số 18 và 19 Được sử dụng

đề nhận nguồn xung clock từ bên ngoài để hoạt động

1.4.2 Đồng hồ thời gian thực DS1307

1.4.2.1 Giới thiệu

DS1307 là chip đồng hồ thời gian thực (RTC : Real-ime clock), khái niệm thờigian 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ờ 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 DS1307 còn có 1thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM

1.4.2.2 Sơ đồ chân DS1307

Trang 14

Các chân DS1307 được mô tả như sau:

X1 và X2 là 2 ngõ kết nối với thạch anh 32.768KHz -> tạo dao động cho chip

VBAT kết nối với cực dương của pin dự phòng ở đây ta dùng Pin CMOS 3V

GND nối đất

VCC nối với nguồn chính 5VDC.SQW/OUT ngõ xuất xung vuông

SCL chân nhận xung clock đồng bộ khi két nối bus I2C

SDA chân dữ liệu khi kết nối với I2C

1.4.2.3 Bộ nhớ DS1307

IC DS1307 có 56 Bytes RAM và 8 Bytes của thanh ghi RTC (00-07H)

Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ

Nội dung của các thanh ghi được lưu dưới dạng mã BCD

Hình 1- 12: Tổ chức bộ nhớ của DS1307

1.4.2.4 Các thanh ghi của DS1307

Việc lấy thời gian chỉ đơn giản là đọc dữ liệu từ các thanh ghi thích hợp

Trang 15

Bảng 1- 2: Tổ chức các thanh ghi thời gian

Thanh ghi giây (SECONDS) có địa chỉ là 0x00

Thanh ghi phút (MINUTES) có địa chỉ là 0x01

Thanh ghi giờ ( HOURS) có địa chỉ 0x02 Thanh ghi giờ có 2 chế độ hoạt động là hiển thị chế độ 12h (Từ 1h đến 12h) và hiển thị chế độ 24h (Từ 1h đến 24h) giờ Bit thứ 6 của thanh ghi giờ quyết định chế độ 12 hay 24 Nếu bit6 = 0 chế độ 24h hoạt động, bit6 = 1 chế độ 12h hoạt động

Trang 16

1.4.3.3 Sơ đồ chân LED

Hình 1- 13: Sơ đồ chân led 7 thanh 3x4

Chân 1 và chân 5 là hai chân chung

1.4.3.4 Bàng mã hiển thị LED 7 thanh từ 0 đến 9

Bảng 1- 3: Bảng mã loại Anode chung

Trang 17

1.4.4 IC ổng áp 7805

7805 là loại IC dùng để ổn định điện áp dương đầu ra, với điều kiện đầu vào luônluôn > đầu ra 2V

Hình 1- 14: IC 7805

Cấu tạo IC 78xx gồm có 3 chân :

Chân 1 (Vin): Chân nguồn đầu vào, điện áp cấp vào chân từ 7V đến 20V Chân 2 (GND): Chân nối đất

Chân 3 (Vout): Chân nguồn đầu ra, điện áp ngõ ra ổn định là 5V

Điện áp ra tương ứng với dòng là 1.5A

1.4.5 Transistor

1.4.5.1 Giới thiệu

Transistor là một loại linh kiện bán dẫn chủ động thường được sử dụng như mộtphần tử khuyếch đại hoặc một khóa điện tử

Trang 18

Hình 1- 15: Các dạng Transistor

1.4.5.2 Cấu Tạo

Transistor gồm 3 lớp bán dẫn loại P và loại N ghép lại với nhau Do đó có 2 loạitransistor là NPN và PNP tương ứng với 2 cách sắp xếp 3 lớp bán dẫn như sau:

Hình 1- 16: Sơ đồ chân Transistor

Như hình vẽ, transistor có 3 cực, cực giữa gọi là cực gốc B (Base); cực thu hay cực góp (Collector) viết tắt là C và E (Emitter) được gọi là cực phát tương ứng với 3 lớp bán dẫn Sự phân hóa thành 3 cực này là do đặc tính vật lí của 3 lớp bán dẫn là khác nhau

Trang 19

1.4.7.2 Cấu Tạo

Bên trong tụ điện là 2 bản cực kim loại được đặt cách điện với nhau, môi trườnggiữa 2 bản tụ này được gọi là điện môi (môi trường không dẫn điện) Điện môi cóthể là: không khí, giấy, mica, dầu nhờn, nhựa, cao su, gốm, thuỷ tinh Tùy theolớp cách điện ở giữa hai bản cực là gì thì tụ có tên gọi tương ứng

1.4.7.3 Phân Loại Tụ Điện

Tụ điện có hai loại: tụ phân cực và tụ không phần cực

Tụ điện phân cực: thường là tụ hóa, tụ hóa là tụ phân cực âm dương có trị số lớn

và giá trị từ 0.47uF đến khoảng 4.700uF, tụ hóa thường được sử dụng trong cácmạch có tần số thấp hoặc dùng để lọc nguồn, tụ hóa luôn luôn có hình trụ

Ký hiệu:

Trang 20

Hình 1- 18: Tụ điện hóa

Tụ không phân cực: thường là tụ gốm, tụ giấy, tụ mica Các loại tụ này thường

không phân biệt âm dương và thường thì có điện dung nhỏ từ vài 0.47uF trở xuống Các tụ này thường dược sử dụng trong các mạch điện có tần số cao hay mạch lọc nhiễu

Có rất nhiều loại điện trở, như:

Trang 22

CHƯƠNG 2 THIẾT KẾ VÀ THI CÔNG HOÀN THIỆN MẠCH

Trang 23

Tác dụng của tụ điện: Dùng để lọc phẳng các tín hiệu điện.

Hình 2- 3: Khối nguồn hoàn chỉnh

Trang 24

2.2.2 Khối Vi Điều Khiển

Hình 2- 4: Khối vi điều khiển

Dùng vi điều khiển IC AT89C51 nhận dữ liệu thời gian từ IC thời gian thựcDS1307 thông qua 2 chân SCL và SDA thông qua giao tiếp I2C, sau đó lựa chọnchế độ hiển thị thông qua khối điều khiển ( các nút nhấn ) và hiển thị giá trị lênLED 7 thanh thông qua Port 0 & Port 2

Trang 25

2.2.3 Khối Hiển Thị

Hình 2- 5: Khối hiển thị

Khối hiển thị dùng 6 LED 7 thanh loại Anode chung để hiển thị thời gian Giờ/Phút/ Giây

Khi hiển thị thời gian:

LED1 & LED2: hiển thị Giờ

LED3 & LED4: hiển thị Phút

LED5 & LED6: hiển thị Giây

4 LED đơn luôn sáng để năn cách Giờ/ Phút/ Giây

Các LED được cấp nguồn từ VCC thông qua Transistor PNP (A1015), vì dòng từchân vi điều khiển không đủ để cấp cho led 7 thanh

Khi ngõ ra của vi điều khiển ở mức 0 kích cho chân B của Transistor làm cho Transistor hoạt động dòng đi từ chân E (VCC) chạy sang C (chân nguồn của Led 7

Trang 26

thanh loại Anode chung).

Hình 2- 6: Khối hiển thị hoàn chỉnh

Trang 27

2.2.4 Khối Điều Khiển

Hình 2- 7: Sơ đồ mạch điều khiển

Trang 28

Hình 2- 8: Khối điều khiển hoàn chỉnh.

2.2.5 DS 1307

Hình 2- 9: DS1307

DS 1307 được dùng để cung cấp dữ liệu thời gian cho vi điều khiển, 2 chân SCL

và SDA được dùng để tạo 2 bus dữ liệu theo chuẩn I2C để truyền dữ liệu và nhận

dữ liệu điều khiển từ vi điều khiển AT89C51 ở Port 1

DS 1307 cần một nguồn nuôi 3V, ở đây sử dụng Pin CMOS 3V Để cho DS 1307 lưu giữ thời gian khi nguồn chính 5VDC không hoạt động

Trang 29

2.3 Thiết kế mạch nguyên lý

Hình 2- 10: Mạch nguyên lý khối điều khiển

Hình 2- 11: Mạch nguyên lý khối hiện thị

Trang 32

2.6 Mạch hoàn chỉnh

Hình 2- 15: Đồng hồ đã hoàn thiện

Trang 33

CHƯƠNG 3 GIẢI THUẬT VÀ ĐIỀU KHIỂN

3.1 Lưu Đồ Giải Thuật

Hình 3- 1: Nạp dữ liệu thời gian vào DS

Ở lần đầu tiên cấp nguồn cho mạch ta phải tiến hành nạp dữ liệu thời gian vàođồng hồ thời gian thực DS 1307

Trang 34

3.1.1 Cài Đặt Thời Gian

3.1.1.1 Chỉnh Giờ

Hình 3- 2: Cài đặt giờ

Trang 35

3.1.1.2 Chỉnh Phút

Hình 3- 3: Cài đặt phút

Trang 36

3.1.1.3 Chỉnh Giây

Hình 3- 4: Cài đặt giây

Trang 37

3.1.2 Cài Đặt Báo Thức

3.1.2.1 Báo Thức Giờ

Hình 3- 5:Cài đặt báo thức giá trị giờ

Trang 38

3.1.2.2 Báo Thức Phút

Hình 3- 6: Cài đặt báo thức giá trị phút

3.2 Code chương trình

#include <REGX51.H>

Trang 39

// Cac lenh dinh nghia so thu tu led ///

// Khai bao ma led 7 //

unsigned char so[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};/* -*/

Trang 40

char gioBaoThuc,phutBaoThuc,baoThuc; // Khai baobien thuc hien bao thuc thoi gian

// - Tao do tre Delay //

void delay_ms(unsigned int t)

Trang 41

delay_ms(1); // delay 1 khoang thoi gian ngan

Trang 42

void I2C_KetThuc()

{

SDA=0; // cho SDA xuong 0 de chuan bi dua len 1

SDA=1; // SDA duoc dua len muc 1 Qua trinh Stophoan tat

}

/* -*/

/* Mô ta :

Viet du lieu trong chuan I2C

Nhiem vu : VDK truyen du lieu vao slaver ( o day la DS1307)

Tham bien truyen vao : dat

Tra ve : 0 hoac 1 ( khong nhat thiet phai tra ve, muc dich la lay bit ack de kiem tra quatrinh truyen du lieu da ok chua)

bang cach goi ham va nhap vao 1 byte du lieu can truyen ta se truyen duoc duoc dulieu do vao slaver

*/

bit I2C_Viet(unsigned char dat) // khai bao ham truyen du lieu va biendat

{

unsigned char i; // khai bao bien i

for(i=1;i<=8;i++) //vong lap for lap 8 lan tuong duong 8bit ( 1 byte)

Trang 43

dat = dat <<1; // dich trai 1 lanSCL = 1;

SCL = 0; // tao 1 xung clock tren chan SCL

de dich gia tri 1 hoac 0 tren chan SDA vao slaver

}

SDA = 1;

chuan bi doc bit ack

}

/* giai thich dong 100 > 116

De co the truyen 1 byte ( vi du 0xBA) vao slaver ta tien hanh tach 1 byte do ra thành 8bit do do can co vong lap for 8 lan ( moi lan truyen 1 bit)

Dau tien i=1

truyen bit thu nhat : ta co 0xBA = 1 0 1 1 1 0 1 0 Bit dau tien la bit so 1 ( bentay trai, truyen tu trai sang phai)

TA có : 0xBA & 0x80 = 10111010 & 10000000 =

10000000

Doket qua nhan dc la 10000000 khac 0 ma outbit chi nhan 2 gia tri 1 hoac 0 , Cho nenoutbit = 1

Nhuvay, ta da truyen dc bit dau tien la 1 vao I2C

Sau

do dich 0xBA sang 1 : 0xBA <<1 = 01110100

Trang 44

Cu nhu vay 8 lan byte 0xBA se duoc truyen sang slaver

/* -end I2C Viet -*/

SCL = 1; // cho SCL len =1 , slaver se gui

1 bit vao chan SDA

inbit = SDA; // lay gia tri cua chan SDA gán vao inbitdat = dat << 1; // dich byte data sang trái 1 landat = dat | inbit; // muc dich la gán giá tri cua bit inbitvao byte dat

SCL = 0; // cho SLC xuong muc 0 sansang cho lan doc bit tiep thep

Trang 45

I2C_Viet(0xd0); //0xd0 la dia chi cua ds1307

I2C_Viet(add); // gia tri can ghi

I2C_Viet(((dat/10)<<4)|(dat%10)); // do du lieu trong ds la BCD nen tacan chuyen ca gia tri sang BCD ( day cau lenh chuyen du lieu sang BCD)

I2C_KetThuc(); // ket thuc qua trinh truyen du lieu

unsigned char dat;

I2C_Viet(0xd0); // dau tien gui lenh ghi du lieu(ghi diachi can lay du lieu trong DS1307)

Trang 46

I2C_BatDau(); // bat dau doc du lieu

I2C_Viet(0xd1); // gui ma lenh doc du lieu tu diachi(add)

dat = I2C_Doc(0); // doc xong thi luu gia tri da doc dc vao datI2C_KetThuc(); // ket thuc qua trinh doc du lieu

dat = (dat & 0x0f) + (dat>>4)*10; // du lieu doc ra o dang BCD nenchuyen sang he 10

return(dat); // tra ve gia tri da doc duoc

Ngày đăng: 21/01/2018, 16:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w