1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế đồng hồ vạn niên điện tử

76 30 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

Tiêu đề Thiết Kế Đồng Hồ Vạn Niên Điện Tử
Tác giả Bùi Văn Thuyên
Người hướng dẫn THS. Đặng Thái Sơn
Trường học Trường Đại Học Vinh
Chuyên ngành Điện Tử - Viễn Thông
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2012
Thành phố Nghệ An
Định dạng
Số trang 76
Dung lượng 1,4 MB

Cấu trúc

  • CHƯƠNG I: MỞ ĐẦU (7)
    • 1.1 Khái quát vấn đề (7)
    • 1.2 Lịch sử giải quyết vấn đề (0)
    • 1.3 Mục đích yêu cầu của đề tài (7)
  • CHƯƠNG II: CƠ SỞ LÝ THUYẾT (9)
    • A. ĐO NHIỆT ĐỘ (0)
      • 2.1 Giới thiệu về vi điều khiển 89s52 (9)
        • 2.1.1 Tổng quan về 89S52 (9)
        • 2.1.2 Mô tả chân 89S52 (11)
          • 2.1.2.1. Sơ đồ chân 89S52 (11)
          • 2.1.2.2. Chức năng của các chân 89S52 (11)
        • 2.1.3. Tổ chức bộ nhớ bên trong 89S52 (13)
          • 2.1.3.1. RAM đa dụng (15)
          • 2.1.3.2. RAM có thể định địa chỉ bit (0)
          • 2.1.3.3. Các bank thanh ghi (15)
          • 2.1.3.4. Các thanh ghi có chức năng đặc biệt (15)
      • 2.2 Sơ lược về cảm biến nhiệt lm35 (0)
      • 2.3 Khái quát về ADC0804 (23)
        • 2.3.1. Mô tả chân ADC0804 (23)
        • 2.3.2 Tổ chức bên trong ADC0804 (26)
          • 2.3.2.1. Quá trình chuyển đổi của chip ADC0804 (0)
          • 2.3.2.2 Quá trình đọc dữ liệu từ chip ADC0804 (0)
    • B. ĐỒNG HỒ THỜI GIAN THỰC (28)
      • 2.4 Tổng quan về DS1307 (28)
        • 2.4.2 Cấu tạo bên trong DS1307 (29)
      • 2.5 Khái quát giao diện I2C (33)
      • 2.6 Mode truyền dữ liệu giữa DS1307 và AT89S52 (37)
        • 2.6.1 Mode Data Write (chế độ ghi dữ liệu) (37)
        • 2.6.2 Mode Data Read (chế độ dọc dữ liệu) (38)
  • CHƯƠNG III: THIẾT KẾ PHẦN CỨNG (0)
    • 3.1 Sơ đồ và chức năng từng khối (40)
      • 3.1.1 Sơ đồ khối (40)
      • 3.1.2 Chức năng của từng khối (40)
        • 3.1.2.1 Cảm biến nhiệt và khuếch đại (40)
        • 3.1.2.2 Biến đổi ADC và khối xử lý trung tâm (CPU_1) (40)
        • 3.1.2.3 Khối hiển thị thứ 1 sử dụng LED 7 đoạn (0)
    • 3.2 Sơ đồ chi tiết và nguyên tắt hoạt động (41)
      • 3.2.1 Sơ đồ chi tiết (41)
        • 3.2.1.1 Cảm biến nhiệt và bộ khuếch đại (41)
        • 3.2.1.2 Biến đổi ADC và khối xử lý trung tâm (CPU_1) (43)
        • 3.2.1.3 Khối hiển thị thứ 1 sử dụng LED 7 đoạn (0)
      • 3.2.2 Nguyên tắt hoạt động (44)
    • 3.3 Sơ đồ và chức năng từng khối (45)
      • 3.3.1 Sơ đồ khối (45)
      • 3.3.2 Chức năng của từng khối (45)
        • 3.3.2.1 Khối thời gian thực (45)
        • 3.3.2.2 Khối xử lý trung tâm (CPU) (45)
        • 3.3.2.3 Khối âm thanh và hiển thị thứ 2 (0)
    • 3.4 Sơ đồ chi tiết và nguyên tắt hoạt động (46)
      • 3.4.1 Sơ đồ chi tiết (46)
        • 3.4.1.1. Khối thời gian thực (DS1307) (0)
        • 3.4.1.2 Khối xử lý trung tâm (CPU_2) (47)
        • 3.4.1.4 Khối âm thanh (48)
      • 3.4.2 Nguyên tắt hoạt động (48)
  • CHƯƠNG IV: THIẾT KẾ PHẦN MỀM (0)
    • 4.1.1.1. Giải thuật chương trình chính (0)
    • 4.1.1.2 Giải thuật chương trình con “ TRUY_CAP_ADC” (0)
    • 4.1.2 Lưu đồ (49)
      • 4.1.2.1 Lưu đồ chương trình chính (0)
      • 4.1.2.2 Lưu đồ chương trình con (0)
    • 4.2 Phần mềm do nhiệt độ (code_1) (51)
    • 4.3 Lưu đồ và giải thuật chương trình (0)
      • 4.3.1 Giải thuật (52)
        • 4.3.1.1 Giải thuật chương trình chính (0)
        • 4.3.1.2 Giải thuật chương trình con “WRITE_CLOCK” (0)
        • 4.3.1.3 Giải thuật chương trình con “READ_CLOCK” (0)
      • 4.3.2 Lưu đồ (53)
        • 4.3.2.1 Lưu đồ chương trình chính (0)
        • 4.3.2.2 Lưu đồ chương trình con (0)
  • CHƯƠNG V: KẾT LUẬN VÀ ĐỀ NGHỊ (0)
    • 5.1 Kết luận (62)
    • 5.2 Đề nghị (62)

Nội dung

CƠ SỞ LÝ THUYẾT

ĐỒNG HỒ THỜI GIAN THỰC

DS1307 là chip đồng hồ thời gian thực (RTC) được sản xuất bởi Dallas Semiconductor, thuộc Maxim Integrated Products Chip này chứa 7 thanh ghi 8-bit để lưu trữ thông tin về giây, phút, giờ, thứ trong tuần, ngày, tháng và năm Bên cạnh đó, DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể sử dụng như RAM Giao tiếp với DS1307 được thực hiện qua giao diện I2C, giúp cấu trúc bên ngoài của chip trở nên đơn giản DS1307 có sẵn trong 2 dạng gói SOIC và DIP với 8 chân.

Hình 2.11Hai gói cấu tạo của chip DS1307

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

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

- V BAT : cực dương của một nguồn pin 3V nuôi chip

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

Vcc là nguồn cung cấp cho giao diện I2C, thường là 5V và được sử dụng chung với vi điều khiển Cần lưu ý rằng nếu Vcc không được cấp nguồn nhưng VBAT vẫn được cấp, thì DS1307 vẫn hoạt động, tuy nhiên không thể thực hiện việc ghi và đọc dữ liệu DS1307 hỗ trợ các tần số như 1Hz, 4.096Hz, 8.192Hz và 32.768Hz, các chế độ này được xác định bởi các bit trong thanh ghi Control Register (địa chỉ 0x07).

- SCL và SDA là đường giữ xung nhịp và đường dữ liệu của giao diện I2C mà chúng ta sẽ tìm hiểu sau

2.4.2 Cấu tạo bên trong DS1307

Hình 2.12 Sơ đồ khối bên trong chip DS1307

DS1307 được cấu tạo từ nhiều thành phần quan trọng như mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao tiếp I2C, con trỏ địa chỉ và các thanh ghi Vì phần lớn các thành phần bên trong là "cứng", việc sử dụng DS1307 chủ yếu tập trung vào việc ghi và đọc các thanh ghi của chip Do đó, hiểu rõ cấu trúc các thanh ghi và cách thức hoạt động của chúng là rất cần thiết khi làm việc với DS1307.

Bộ nhớ DS1307 có 64 thanh ghi 8-bit, từ 0 đến 63, nhưng chỉ 8 thanh ghi đầu được sử dụng cho chức năng đồng hồ, trong khi 56 thanh ghi còn lại có thể dùng làm RAM tạm Bảy thanh ghi đầu tiên chứa thông tin thời gian, bao gồm giây, phút, giờ, thứ, ngày, tháng và năm 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, trong khi việc đọc giá trị từ chúng là quá trình lấy thời gian thực mà RTC cung cấp.

Bảng 2.10 Tổ chức bộ nhớ trong DS1307

Các thanh ghi đầu tiên của DS1307 đóng vai trò quan trọng trong hoạt động của nó, vì vậy chúng ta sẽ xem xét chi tiết từng thanh ghi Để hiểu rõ hơn, hãy quan sát cấu trúc từng bit của các thanh ghi này trong hình minh họa sau.

Bảng 2.11 Tổ chức dạng bit của DS1307

Chú ý là tất cả các giá trị thời gian lưu trong các thanh ghi theo dạng BCD (Binary-Coded Decimal)

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

Thanh ghi phút (MINUTES) có địa chỉ 0x01h và lưu trữ giá trị phút của đồng hồ Giống như thanh ghi SECONDS, chỉ 7 bit của thanh ghi này được sử dụng để lưu mã BCD của phút, trong khi bit thứ 7 luôn có giá trị bằng 0.

Thanh ghi giờ (HOURS) trong chip DS1307, có địa chỉ 0x02h, là thanh ghi phức tạp nhất Bốn bit thấp của thanh ghi này biểu thị chữ số hàng đơn vị của giờ DS1307 hỗ trợ hai hệ thống hiển thị giờ: 12h và 24h Bit thứ 6 được sử dụng để xác định hệ thống giờ; nếu bit này bằng 0, hệ thống 24h được chọn Hai bit thứ 5 và thứ 4 sẽ mã hóa chữ số hàng chục của giá trị giờ.

Bit thứ 4 trong mã hóa thời gian đại diện cho chữ số hàng chục của giờ, trong khi bit thứ 5 xác định buổi trong ngày, với bit 5 = 0 tương ứng với AM và bit 5 = 1 tương ứng với PM Lưu ý rằng bit thứ 7 luôn có giá trị bằng 0.

Thanh ghi DAY (0x03h) chỉ định ngày trong tuần, với giá trị từ 1 đến 7 tương ứng với Chủ nhật đến thứ 7 Do đó, chỉ 3 bit thấp trong thanh ghi này có ý nghĩa, trong khi các bit còn lại luôn có giá trị bằng 0.

Thanh ghi ngày (DATE – ngày trong tháng): nằm ở địa chỉ 0x04h

Thanh ghi DATE mang giá trị từ 1 đến 31, chỉ có 5 bit đầu tiên là có nghĩa Các bit còn lại luôn bằng 0

Thanh ghi tháng (MONTH): nằm ở địa chỉ 0x05h Thanh ghi

MONTH mang giá trị từ 1 đến 12, chỉ có 4 bit đầu tiên là có nghĩa Các bit còn lại bằng 0

Thanh ghi năm (YEAR) nằm tại địa chỉ 0x06h và chứa giá trị từ 0 đến 99 Chip DS1307 chỉ hỗ trợ 100 năm, do đó giá trị năm được biểu thị bằng 2 chữ số, với phần đầu của năm do người dùng tự thêm vào.

Thanh ghi điều khiển (CONTROL REGISTER) có địa chỉ 0x07h, được sử dụng để điều chỉnh tần số xung vuông tại ngõ ra SQW/OUT Các giá trị của các bít trong thanh ghi CONTROL REGISTER được biểu diễn cụ thể để thực hiện chức năng điều khiển này.

Bảng 2.12 Thanh ghi điều khiển của DS1307

Bit 7_Output Control (OUT): dùng để kiểm soát mức logic tại

Bit 4_Square-Wave Enable (SQWE): bit này được set lên bằng 1 để tạo dao động ở đầu ra

Bảng 2.13 Cấu trúc bit thanh ghi điều khiển DS1307

I2C, viết tắt của Inter-Integrated Circuit, là một chuẩn truyền thông nối tiếp đồng bộ được phát triển bởi hãng điện tử Philips Semiconductor và chính thức ra mắt vào năm 1990.

 Các khái niệm cơ bản trong giao diện I2C:

Chip Master (chip chủ) là thiết bị khởi động quá trình truyền nhận dữ liệu, có nhiệm vụ phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL.

 Slave (chip tớ): là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu từ Master

SDA (Serial Data) là đường dữ liệu nối tiếp, nơi tất cả thông tin về địa chỉ và dữ liệu được truyền theo thứ tự từng bit một Trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền đi trước tiên.

THIẾT KẾ PHẦN CỨNG

Sơ đồ và chức năng từng khối

Hình 3.1 Sơ đồ khối mạch đo nhiệt độ

3.1.2 Chức năng của từng khối

3.1.2.1 Cảm biến nhiệt và khuếch đại

Trong phần đo nhiệt độ, khối này tạo ra sự thay đổi điện thế từ 0V đến 1.97V, tương ứng với sự thay đổi nhiệt độ từ 0°C đến 100°C.

3.1.2.2 Biến đổi ADC và khối xử lý trung tâm (CPU_1) Đây là khối quang trọng dùng để điều khiển mọi hoạt động của mạch Khối này thực hiện quá trình biến tín hiệu tương tự sang tín hiệu số thông qua bộ biến đổi ADC, sau đó xuất dữ liệu này ra khối hiển thị thứ nhất Các quá trình này được điều khiển bởi vi xử lý AT89S52

Cảm biến nhiệt và khuếch đại

Biến đổi ADC và khối xử lýtrung tâm (CPU_1)

Hiển thị thứ 1 (LED 7 đoạn)

Hiệu ứng dùng LED đơn

3.1.2.3 Khối hiển thị thứ 1 sử dụng LED 7 đoạn Đây là khối giao diện với người sử dụng, dùng để chốt lại dữ liệu cho người dùng quan sát.

Sơ đồ chi tiết và nguyên tắt hoạt động

3.2.1.1 Cảm biến nhiệt và bộ khuếch đại

Hình 3.2 Sơ đồ chi tiết mạch cảm biến nhiệt độ

Cảm biến nhiệt LM35D có độ phân giải 10mV/10°C, trong khi độ phân giải của ADC0804 là 19.53mV/10°C Do đó, cần thiết kế một bộ khuếch đại với hệ số khuếch đại (K) là 1.97, được tính toán dựa trên sự chênh lệch giữa hai độ phân giải này.

+ Xét tại 2 điểm A và B: Điện thế tại 2 điểm A và B được tính như sau:

+ Quan sát sơ đồ mạch ta thấy:

Dòng điện đi vào từ V out1 qua R I1 sẽ đi qua R F1 , R F2 nên:

Thay giá trị của VA vào biểu thức 2 ta tìm được:

+ Với cách tính tương tự như vậy ta có:

.V in (5) Thay các giá trị điện trở vào (5) ta có:

3.2.1.2 Biến đổi ADC và khối xử lý trung tâm (CPU_1)

P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Hình 3.3 Sơ đồ mạch chi tiết bộ biến đổi ADC và CPU

Chọn độ phân giải cho ADC0804 là 19.53mV (tương ứng với chân VREF/2 để hở)

Chọn điện trở R1 và tụ C2 cho bộ dao động của ADC0804:

Ta có tần số dao đông được xác định bằng công thức:

Ta chọn R1 = 10k và C2 = 150pf f RC

Số mức đầu ra là: N 5

Vin 100 với K = 1.97 là hệ số của bộ khuếch đại dùng IC LM358

3.2.1.3 Khối hiển thị thứ 1 sử dụng LED 7 đoạn

Led 7 đoạn có cấu tạo gồm 8 led đơn, để thấp sáng 1 led 7 đoạn thì phải có dòng điện chạy qua mỗi led đơn này, dòng điện này phải có độ lớn từ 10mA–15mA để led sáng vừa và không bị đứt Vậy dòng điện qua led được tính như sau:

Khi hệ thống được cấp nguồn 5V, các linh kiện trong mạch hoạt động Chip AT89S52 (CPU_1) kích hoạt bộ biến đổi ADC0804, sau khi hoàn tất quá trình biến đổi, CPU_1 đọc dữ liệu từ ADC0804 và hiển thị kết quả trên led 7 đoạn bằng kỹ thuật chốt Tiếp theo, CPU_1 chạy chương trình tạo hiệu ứng bên ngoài với led đơn, và khi chương trình kết thúc, CPU_1 quay lại thực hiện quá trình ban đầu.

B ĐỒNG HỒ THỜI GIAN THỰC

Sơ đồ và chức năng từng khối

Hình 3.4 Sơ đồ khối thời gian thực

3.3.2 Chức năng của từng khối

Trong hệ thống đồng hồ thời gian thực, khối này đóng vai trò quan trọng quyết định độ chính xác của sản phẩm, vì nó tạo ra thời gian thực cho toàn bộ hệ thống.

3.3.2.2 Khối xử lý trung tâm (CPU) Đây được xem là khối quang trong nhất Chức năng là đọc/ghi dữ liệu vào chip thời gian thực (DS1307 Cuối cùng là xuất tất cả các dữ liệu đã được xử lý ra bên ngoài thông qua khối hiển thị thứ 2 và khối âm thanh

3.3.2.3 Khối âm thanh và hiển thị thứ 2 Đây là 2 khối giao diện cho người dùng, dùng để xuất dữ liệu ra bên ngoài

3.3.2.4 Khối phím bấm Đây là khối giao tiếp giửa người sử dụng và thiết bị, dùng để đặt thời gian ban đầu cho đồng hồ và khởi tạo các chức năng của mạch.

Sơ đồ chi tiết và nguyên tắt hoạt động

3.4 1.1 Khối thời gian thực (DS1307)

Hình 3.5 Sơ đồ chi tiết khối thời gian thực

Dòng điện chạy qua 4 led là:

Do 4 led được mắc song song với nhau nên dòng điện chạy qua mỗi led là như nhau:

Chú ý rằng ngõ ra SCL và SDA được thiết kế với cấu trúc cực thu hở, tương tự như port_0 của vi điều khiển Do đó, cần sử dụng điện trở kéo lên với giá trị R = 10 KΩ để đảm bảo hoạt động ổn định.

3.4.1.2 Khối xử lý trung tâm (CPU_2) dis4

P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

Hình 3.6 Sơ đồ chi tiết khối CPU_2

Hình 3.7 Sơ đồ chi tiết khối âm thanh

IC UM66 là một loại IC nhạc phổ biến nhờ vào tính dễ sử dụng, giá cả phải chăng và chất lượng âm thanh tốt Loại IC này thường được ứng dụng trong các đồng hồ báo thức và thiết bị đồ chơi điện tử.

Khi hệ thống được cấp nguồn, chip AT89S52 (CPU_2) bắt đầu đọc thời gian thực từ RTC Sau khi đọc thời gian, CPU_2 kiểm tra xem thời gian đó có trùng với thời gian báo thức hay không; nếu có, CPU_2 sẽ kích hoạt hệ thống âm thanh Sau khi hoàn thành quá trình xử lý, CPU_2 xuất dữ liệu ra màn hình LED 7 đoạn và sau đó quay lại thực hiện quy trình từ đầu.

CHƯƠNG IV: THIẾT KẾ PHẦN MỀM

Phần mềm phục vụ cho hệ thống của tôi được phát triển với quan điểm tối ưu hóa hiệu suất Để điều khiển hệ thống, tôi đã sử dụng ngôn ngữ lập trình assembler (ASM) cho mạch đo và hiển thị nhiệt độ, đồng thời sử dụng ngôn ngữ C cho mạch đồng hồ thời gian thực Hệ thống này hoạt động trên nền tảng 8 bit với chip AT89S52, đảm bảo tính chính xác và hiệu quả trong việc quản lý thông tin.

4.1 Lưu đồ và giải thuật chương trình

4.1.1.1 Giải thuật chương trình chính

 Bước 1:Truy xuất dữ liệu từ bộ biến đổi ADC

 Bước 2: Hiển thị kết quả

 Bước 3: Tạo hiệu ứng cho led đơn, sau đó quay lại bước 1

4.1.1.2 Giải thuật chương trình con “ TRUY_CAP_ADC”

 Tạo một xung từ thấp lên cao áp đến chân WR để ADC0804 bắt đầu quá trình chuyển đổi

 Chờ cho quá trình biến đổi được thực hiên xong (chân INTR xuống mức thấp)

 Tạo một xung từ cao xuống thấp áp đến chân RD để đọc dữ liệu ra từ chip ADC0804

 Đưa đữ liệu vào thanh ghi R0 và thoát khỏi chương trình

4.1.2.1 Lưu đồ chương trình chính

4.1.2.2 Lưu đồ chương trình con

4.1.2.2.1 Lưu đồ chương trình con “ TRUY_CAP_ADC”

Kích hoạt bộ biến đổi ADC0804

Chờ quá trình biến đổi hoàn thành INTR = = 0?

Dưa dữ liệu vào thanh ghi R0 Đọc dữ liệu từ chip ADC0804

Hình 4.2 Lưu đồ chương trình con truy cập ADC

4.2 Phần mềm do nhiệt độ (code_1)

Phần mềm đo nhiệt độ (Code_1) được phát triển bằng ngôn ngữ lập trình Assembler (ASM) và được soạn thảo, biên dịch thông qua chương trình Reads 51 Nội dung của Code_1 có thể tìm thấy trong thư mục phụ lục.

Xuất ra led thứ 2 P_Nguyên

Xuất ra led thứ 1 Lấy A chia B P_Dư

Hình 4.3 Lưu đồ chương trình con truy cập hien_thi_1

B ĐỒNG HỒ THỜI GIAN THỰC

4.3 Lưu đồ và giải thuật chương trình

4.3.1.1 Giải thuật chương trình chính

 Bước 1: Đọc thời gian thực từ RTC (chip DS1307)

 Bước 2: Hiển thị thời gian vừa đọc ra led 7 đoạn

 Bước 3: Kiểm tra thời gian báo thức

 Bước 4: Kiểm tra chế độ chuông báo theo từng giờ

 Bước 5: Tạo hiệu ứng chỉnh khi cài đặt giờ, sau đó quay lại bước 1

4.3.1.2 Giải thuật chương trình con “WRITE_CLOCK”

 Gởi điều kiện START đến RTC

 Gởi tiếp địa chỉ Slave + W (0D0h)

 Gởi địa chỉ thanh ghi đầu tiên được chọn để ghi (00h: địa chỉ thanh ghi SECOND)

Ghi lại tất cả các byte dữ liệu vào RTC, bao gồm giây, phút, giờ, thứ, ngày, tháng, năm, giá trị thanh ghi điều khiển và thời gian báo thức.

 Gởi điều kiên STOP và thoát

Lưu ý rằng nếu không phải là lần ghi hoặc đọc cuối cùng, hãy hạ biến LAST xuống mức thấp để gửi bit ACK Ngược lại, nếu là lần cuối, hãy nâng biến LAST lên cao để gửi bit Not_ACK (NACK).

4.3.1.3 Giải thuật chương trình con “READ_CLOCK”

 Gởi điều kiện START đến RTC

 Gởi tiếp địa chỉ Slave + W (0D0h)

 Gởi địa chỉ thanh ghi đầu tiên được chọn để ghi (00h: địa chỉ thanh ghi SECOND)

 Gởi lại điều kiện START

Bắt đầu quá trình đọc dữ liệu từ RTC theo thứ tự từng byte, bắt đầu từ giây, phút, giờ, thứ, ngày, tháng, năm, tiếp theo là giá trị thanh ghi điều khiển và cuối cùng là thời gian báo thức.

 Gởi điều kiện STOP và thoát

4.3.2.1 Lưu đồ chương trình chính

Khởi tạo giá trị ban đầu Đọc thời gian thực từ RTC

Hiển thị thời gian ra led 7 đoạn Thời gian báo thức

Mở/tắt chuông theo từng giờ

4.3.2.2 Lưu đồ chương trình con

4.3.2.2.1 Lưu đồ chương trình con “WRITE_CLOCK”

Gởi 1 byte địa chỉ con trở (00h)

Ghi tất cả byte dữ liệu như: giây, phút, ,thời gian báo thức vào RTC

Hình 4.4 Lưu đồ chương trình thời gian thực

4.3.2.3.2 Lưu đồ chương trình con “READ_CLOCK”

Gởi 1 byte địa chỉ con trở (00h) Đọc tất cả byte dữ liệu như: giây, phút, ,thời gian báo thức từ RTC

Hình 4.6 Lưu đồ chương trình con Read_clọck

4.3.2.3.3 Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE”

Tạo một xung nhip tại chân SCL

Gởi bit NACK Gởi bit ACK

4.3.2.3.4 Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE”

RET Đưa dữ liệu từ SDA vào cờ C

Quay trái thanh ghi A có cớ nhớ C

Gởi bit NACK Gởi bit ACK

BITCOUNT = = 0 Tạo một xung nhip tại chân SCL

4.3.2.3.5 Lưu đồ chương trình con “ALARM_CLOCK_TEST”

Kích hoạt hệ thống âm thanh

MINUTE = = ALK_MINUTE Đọc thời gian thực từ RTC

Hiển thị ra led 7 đoạn

Dừng kích hoạt hệ thống âm thanh

4.3.2.3.6 Lưu đồ chương trình con “TAT_MO_CHUONG”

Kích hoạt hệ thống âm thanh SECOND = = 0

Dừng kích hoạt hệ thống âm thanh

4.3.2.3.7 Lưu đồ chương trình con “HIEU_UNG_CHINH”

Tạo hiệu ứng chỉnh giờ

Tạo hiệu ứng chỉnh phút

Tạo hiệu ứng chỉnh giây

Tạo hiệu ứng chỉnh giờ báo thức

Tạo hiệu ứng điều phút báo thức

4.3.2.3.8 Lưu đồ chương trình con “HIENTHI_2”

Tách số BCD Đưa nội dung biến HOUR vào thanh ghi A

Tách số BCD Đưa nội dung biến MINUTE vào thanh ghi A

Tách số BCD Đưa nội dung biến ALK_MINUTE vào thanh ghi A

Hình 4.12 Lưu đồ chương trình con hiển thị 2

4.4 Phần mềm đồng hồ thời gian thực (code_2)

Phần mềm đồng hồ thời gian thực, soạn thảo và biên dịch bằng

CHƯƠNG V: KẾT LUẬN VÀ ĐỀ NGHỊ

Sau một thời gian nghiên cứu và tìm hiểu về đề tài này, cùng với sự hướng dẫn tận tình của Thầy Đặng Thái Sơn, tôi đã thiết kế thành công dự án của mình.

Đồng hồ Vạn Niên Điện Tử hoạt động với mạch ổn định, đáp ứng tốt yêu cầu đề tài Tuy nhiên, do thời gian và năng lực hạn chế, sản phẩm vẫn còn một số khuyết điểm như thiết kế hơi thô và chưa thật sự đẹp Mong nhận được sự thông cảm từ quý thầy cô và các bạn.

Sau khi đã thiết kế thành công đề tài này, em có một số đề nghị để khắc phục những khuyết điểm mà em mắc phải

 Thiết kế thêm bộ chuyển đổi từ ngày dương lịch sang ngày âm lịch

 Thay đổi tiếng chuông báo thức bằng một bài nhạc mà bạn yêu thích

 Bổ sung chức năng điều khiển từ xa qua giao tiếp hồng ngoại ĐỀ TÀI: THIẾT KẾ ĐỒNG HỒ VẠN NIÊN ĐIỆN TỬ

[1] Giáo trình Vi Điều Khiển _ Tác giả Th.Phạm Hùng Kim Khánh

[2] Tài liệu hướng dẫn Thực Tập Vi Điều Khiển _ Biên soạn Th.Trần Nhật

Khải Hoàn, KS.Trần Hữu Danh

[3] Giáo trình mạch xung _ Biên soạn Th.Lương Văn Sơn, KS.Nguyễn Khắc Nguyên

[4] Giáo trình mạch số _ Tác giả Th.Nguyễn Trung Lập

[5] Giáo trình mạch tương tự _ Tác giả KS Trương Văn Tám

[7] http://www.dientuvienthong.net/diendan/index.php

[8] http://www.dientuvietnam.net/forums/ trong

PHỤ LỤC 1: Code chương trình thời gian thực

// DO AN TOT NGHIEP DAI HOC

// DE TAI :LICH VAN NIEN DIEN TU

// SINH VIEN THUC HIEN :BUI VAN THUYEN

// KHAI BAO BIEN VA O NHO

#define A_HOUR 0x09 char sec=0,hour=0,min=0,day!,date=2,month=4,year,year_20,a_min,a_hour,a_mi n1,a_hour1,a_min2,a_hour2;

Khai báo chân VDK cho các tín hiệu SDA và SCL được định nghĩa lần lượt là P1^1 và P1^0 Các phím điều khiển bao gồm phím Set (P1^2), phím Tăng (P1^3), phím Giảm (P1^4), và phím OK (P1^5) Loa được gán với chân P1^6 và chân PM với P1^7 Các đèn LED được điều khiển qua các chân P2 và P3, với P2^5 cho LED DV_GIAY, P2^4 cho LED C_GIAY, P2^3 cho LED DV_PHUT, P2^2 cho LED C_PHUT, P2^1 cho LED DV_GIO, P2^0 cho LED C_GIO, P2^7 cho LED DV_NGAY, P3^1 cho LED C_THANG, P3^2 cho LED DV_THANG, P3^3 cho LED 20K NAM, P3^5 cho LED C_NAM, P3^6 cho LED DV_NAM, và P3^7 cho LED THU.

// KHAI BAO BIEN, MANG unsigned char led7_data[10] =

The code snippet represents data for a 7-segment LED display, utilizing unsigned char variables for various functionalities including time, index, and alarm settings Key variables include Data, time, and bat_nhay, which manage the display output, while AM_PM, alarm, and on_off control the alarm states and power settings This structure is essential for implementing a digital clock or timer with alarm features.

Chương trình bao gồm các hàm khởi tạo và xử lý, như hàm `KHOI_TAO_MAIN` để khởi tạo chương trình chính, `KHOI_TAO_BO_DINH_THOI` để thiết lập timer 1 và 0, và hàm `delay` để tạo độ trễ Hàm `Fix_time` được sử dụng để kiểm tra và điều chỉnh giá trị giờ, phút, giây, trong khi hàm `Keypad` đảm nhiệm việc xử lý các phím nhấn Ngoài ra, các hàm ngắt `T1_ISR` và `T0_ISR` phục vụ cho việc điều khiển đèn LED thông qua timer 1 và timer 0 Cuối cùng, hàm `bip` có chức năng phát ra âm thanh.

//****************************************************************** // CAC CHUONG TRINH CON CHO I2C

} bit I2C_write(unsigned char dat)

{ bit rd_bit; unsigned char i, dat; dat = 0x00; for(i=0;i12) Data=hour-12; else

{ if(hour==0) Data; else Data=hour;

P0=0xff; if(set==3 && bat_nhay==1){ index++; index++; } else

} if(index==6) // QUET LED C_GIO

************ if(index==7) // QUET LED THU

P0=0xff; if(set==4 && bat_nhay==1){ index++; } else

************ if(index==8) // QUET LED C_NGAY

P0=0xff; if(set==5 && bat_nhay==1){ index++; index++; } else

} if(index==9) // QUET LED DV_NGAY

************ if(index=) // QUET LED C_THANG

P0=0xff; if(set==6 && bat_nhay==1){ index++; index++; } else

} if(index=) // QUET LED DV_THANG

************ if(index=) // QUET LED C_NAM

P0=0xff; if(set==7 && bat_nhay==1){ index++; index++; index++; index++; } else

} if(index=) // QUET LED DV_NAM

//************ CHUONG TRINH CHINH ************* void main()

KHOI_TAO_MAIN(); year_20 ; time=index=set=read_time=0;

KHOI_TAO_BO_DINH_THOI(); while(1)

Keypad(); if(hour>) PM=1; else PM=0; if((set==0)&&(read_time==1))

} else sec = DS1307_read(SEC); bao_gio();

PHỤ LỤC 2: Code chương trình đo nhiệt độ

THIẾT KẾ PHẦN MỀM

Lưu đồ

4.1.2.1 Lưu đồ chương trình chính

4.1.2.2 Lưu đồ chương trình con

4.1.2.2.1 Lưu đồ chương trình con “ TRUY_CAP_ADC”

Kích hoạt bộ biến đổi ADC0804

Chờ quá trình biến đổi hoàn thành INTR = = 0?

Dưa dữ liệu vào thanh ghi R0 Đọc dữ liệu từ chip ADC0804

Hình 4.2 Lưu đồ chương trình con truy cập ADC

Phần mềm do nhiệt độ (code_1)

Phần mềm đo nhiệt độ (Code_1) được phát triển bằng ngôn ngữ lập trình Assembler (ASM) và được biên dịch thông qua chương trình Reads 51 Nội dung của Code_1 có thể được tìm thấy trong thư mục phụ lục.

Xuất ra led thứ 2 P_Nguyên

Xuất ra led thứ 1 Lấy A chia B P_Dư

Hình 4.3 Lưu đồ chương trình con truy cập hien_thi_1

Lưu đồ và giải thuật chương trình

4.3 Lưu đồ và giải thuật chương trình

4.3.1.1 Giải thuật chương trình chính

 Bước 1: Đọc thời gian thực từ RTC (chip DS1307)

 Bước 2: Hiển thị thời gian vừa đọc ra led 7 đoạn

 Bước 3: Kiểm tra thời gian báo thức

 Bước 4: Kiểm tra chế độ chuông báo theo từng giờ

 Bước 5: Tạo hiệu ứng chỉnh khi cài đặt giờ, sau đó quay lại bước 1

4.3.1.2 Giải thuật chương trình con “WRITE_CLOCK”

 Gởi điều kiện START đến RTC

 Gởi tiếp địa chỉ Slave + W (0D0h)

 Gởi địa chỉ thanh ghi đầu tiên được chọn để ghi (00h: địa chỉ thanh ghi SECOND)

Ghi lại tất cả các byte dữ liệu vào RTC bao gồm giây, phút, giờ, thứ, ngày, tháng, năm, giá trị thanh ghi điều khiển và thời gian báo thức.

 Gởi điều kiên STOP và thoát

Lưu ý rằng nếu không phải là lần ghi hoặc đọc cuối cùng, bạn cần kéo biến LAST xuống mức thấp để gửi bit ACK Ngược lại, nếu đó là lần cuối, hãy nâng biến LAST lên cao để gửi bit Not_ACK (NACK).

4.3.1.3 Giải thuật chương trình con “READ_CLOCK”

 Gởi điều kiện START đến RTC

 Gởi tiếp địa chỉ Slave + W (0D0h)

 Gởi địa chỉ thanh ghi đầu tiên được chọn để ghi (00h: địa chỉ thanh ghi SECOND)

 Gởi lại điều kiện START

Bắt đầu quá trình đọc dữ liệu từ RTC bằng cách lần lượt lấy từng byte, bắt đầu từ giây, phút, giờ, thứ, ngày, tháng, năm, tiếp theo là giá trị thanh ghi điều khiển, và cuối cùng là thời gian báo thức.

 Gởi điều kiện STOP và thoát

4.3.2.1 Lưu đồ chương trình chính

Khởi tạo giá trị ban đầu Đọc thời gian thực từ RTC

Hiển thị thời gian ra led 7 đoạn Thời gian báo thức

Mở/tắt chuông theo từng giờ

4.3.2.2 Lưu đồ chương trình con

4.3.2.2.1 Lưu đồ chương trình con “WRITE_CLOCK”

Gởi 1 byte địa chỉ con trở (00h)

Ghi tất cả byte dữ liệu như: giây, phút, ,thời gian báo thức vào RTC

Hình 4.4 Lưu đồ chương trình thời gian thực

4.3.2.3.2 Lưu đồ chương trình con “READ_CLOCK”

Gởi 1 byte địa chỉ con trở (00h) Đọc tất cả byte dữ liệu như: giây, phút, ,thời gian báo thức từ RTC

Hình 4.6 Lưu đồ chương trình con Read_clọck

4.3.2.3.3 Lưu đồ chương trình con ghi 1 byte vào DS1307“SEND_BYTE”

Tạo một xung nhip tại chân SCL

Gởi bit NACK Gởi bit ACK

4.3.2.3.4 Lưu đồ chương trình con đọc 1 byte từ DS1307“READ_BYTE”

RET Đưa dữ liệu từ SDA vào cờ C

Quay trái thanh ghi A có cớ nhớ C

Gởi bit NACK Gởi bit ACK

BITCOUNT = = 0 Tạo một xung nhip tại chân SCL

4.3.2.3.5 Lưu đồ chương trình con “ALARM_CLOCK_TEST”

Kích hoạt hệ thống âm thanh

MINUTE = = ALK_MINUTE Đọc thời gian thực từ RTC

Hiển thị ra led 7 đoạn

Dừng kích hoạt hệ thống âm thanh

4.3.2.3.6 Lưu đồ chương trình con “TAT_MO_CHUONG”

Kích hoạt hệ thống âm thanh SECOND = = 0

Dừng kích hoạt hệ thống âm thanh

4.3.2.3.7 Lưu đồ chương trình con “HIEU_UNG_CHINH”

Tạo hiệu ứng chỉnh giờ

Tạo hiệu ứng chỉnh phút

Tạo hiệu ứng chỉnh giây

Tạo hiệu ứng chỉnh giờ báo thức

Tạo hiệu ứng điều phút báo thức

4.3.2.3.8 Lưu đồ chương trình con “HIENTHI_2”

Tách số BCD Đưa nội dung biến HOUR vào thanh ghi A

Tách số BCD Đưa nội dung biến MINUTE vào thanh ghi A

Tách số BCD Đưa nội dung biến ALK_MINUTE vào thanh ghi A

Hình 4.12 Lưu đồ chương trình con hiển thị 2

4.4 Phần mềm đồng hồ thời gian thực (code_2)

Phần mềm đồng hồ thời gian thực, soạn thảo và biên dịch bằng

Ngày đăng: 03/10/2021, 12:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Giáo trình Vi Điều Khiển _ Tác giả Th.Phạm Hùng Kim Khánh Sách, tạp chí
Tiêu đề: Giáo trình Vi Điều Khiển
[2] Tài liệu hướng dẫn Thực Tập Vi Điều Khiển _ Biên soạn Th.Trần Nhật Khải Hoàn, KS.Trần Hữu Danh Sách, tạp chí
Tiêu đề: Tài liệu hướng dẫn Thực Tập Vi Điều Khiển
[3] Giáo trình mạch xung _ Biên soạn Th.Lương Văn Sơn, KS.Nguyễn Khắc Nguyên Sách, tạp chí
Tiêu đề: Giáo trình mạch xung
[4] Giáo trình mạch số _ Tác giả Th.Nguyễn Trung Lập Sách, tạp chí
Tiêu đề: Giáo trình mạch số
[5] Giáo trình mạch tương tự _ Tác giả KS. Trương Văn Tám [6] http://alldatasheet.com/ Sách, tạp chí
Tiêu đề: Giáo trình mạch tương tự

HÌNH ẢNH LIÊN QUAN

Bảng 2.2 Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau: - Thiết kế đồng hồ vạn niên điện tử
Bảng 2.2 Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau: (Trang 14)
Hình 2.7 Tổ chức bên trong ADC0804 - Thiết kế đồng hồ vạn niên điện tử
Hình 2.7 Tổ chức bên trong ADC0804 (Trang 26)
Hình 3.4 Sơ đồ khối thời gian thực  3.3.2 Chức năng của từng khối  - Thiết kế đồng hồ vạn niên điện tử
Hình 3.4 Sơ đồ khối thời gian thực 3.3.2 Chức năng của từng khối (Trang 45)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w