Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
LỜI NÓI ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của
chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Sự phát triển của
kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự
chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt
động của con người đạt hiệu quả cao.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử
dụng được lại là một điều rất phức tạp. Các bộ vi điều khiển theo thời gian cùng với
sự phát triển của công nghệ bán dẫn đã tiến triển rất nhanh, từ các bộ vi điều khiển 4
bit đơn giản đến các bộ vi điều khiển 32 bit, rồi sau này là 64 bit. Điện tử đang trở
thành một ngành khoa học đa nhiệm vụ. Điện tử đã đáp ứng được những đòi hỏi
không ngừng từ các lĩnh vực công – nông – lâm – ngư nghiệp cho đến các nhu cầu
cần thiết trong hoạt động đời sống hằng ngày.
Có thể nói sự phát triển của vi điều khiển từ thủa sơ khai cho tới ngày nay là cả
một chặng đường lớn của nghành điện tử. Một trong những ứng dụng thiết thựccủa vi
điều khiển là ứng dụng vi điều khiển thiết kế đồng hồ hiện thị thời gian. Đây là một
ứng dụng thường thấy nhất trong cuộc sống,
Là những sinh viên trẻ đam mê điện tử, để thỏa mãn nhu cầu tìm tòi và nghiên
cứu của mình trong việc hoc tập. Đây chính là động lực và lý do thúc đẩy em chọn đề
tài thiết kế đồng hồ hiện thị thời gian thực bằng AT89C51 sử dụng led 7 đoạn để hiển
thị giờ, phút, giây, ngày, tháng, năm làm đồ án học phần Đồ án vi xử lý.
Bố cục đồ án gồm có 2 chương:
Chương I: Sơ lược về Chíp và các linh kiện điện
Chương II: Quy trình làm mạch đồng hồ thực tế dung IC AT89c51 và DS1307
hiện thị trên led 7 đoạn.
Trong quá trình thực hiện sẽ không tránh khỏi những thiếu sót. Rất mong nhận
được sự góp ý của thầy cô và các bạn.
Em xin chân thành cảm ơn thầy ………… đã tận tình hướng dẫn em trong suốt
quá trình làm bài!
GVHD:……………… Trang i
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
MỤC LỤC
LỜI NÓI ĐẦU i
MỤC LỤC ii
DANH MỤC BẢNG ii
DANH MỤC HÌNH iii
CHƯƠNG I: SƠ LƯỢC VỀ CHÍP VÀ CÁC LINH ĐIỆN TỬ 1
1.1. Giới thiệu chíp và cấu tạo chíp điện tử 1
1.1.1 Định nghĩa 1
1.1.2 Cấu tạo 1
1.2 Các nhóm chíp điện tử chính 2
1.2.1 Nhóm ATMEL 2
1.2.1.1 AT89C51 2
1.2.1.2 AT89C52 3
1.2.2 Nhóm ATMEGA 4
1.2.2.1 ATMEGA16 4
1.2.2.2 ATMEGA32 6
1.2.3 PIC 7
1.2.3.1 PIC 16F877A 7
CHƯƠNG II: QUY TRÌNH LÀM MẠCH ĐỒNG HỒ THỰC TẾ DÙNG IC
AT89C51 VÀ DS 1307 HIỂN THỊ TRÊN LED 7 ĐOẠN 8
2.1 Giới thiệu linh kiện 8
2.1.1 Khái niệm về I2C 8
2.1.2 Giao tiếp DS1307 – DS 1308 10
2.1.3 LED 7 đoạn 14
2.1.4 IC 89C51S31 15
2.1.4.1 Khảo sát sơ đồ chân 89C51, chức năng từng chân: 15
2.1.4.2 Hoạt động của RESET 17
2.2 Sơ đồ nguyên lý, mạch in của mạch đồng hồ 19
2.2.1 Sơ đồ nguyên lý của mạch 19
2.2.2 Sơ đồ mạch in: 19
2.2.3 Sơ đồ thuật toán 20
KẾT LUẬN 22
DANH MỤC BẢNG
Bảng 2.1: Thanh ghi điều khiển SQW/OUT: 13
Bảng 2.2: Sự phụ thuộc của tần số sóng vuông với Bit RS0 và RS1 14
Bảng 2.3 Trạng thái của tất cả các thanh ghi trong 89C51 sau khi reset hệ thống:
18
GVHD: Trần Trung Tín Trang ii
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
DANH MỤC HÌNH
Hình 1.1 Các loại chíp điện tử 1
Hình 1.2 Sơ đồ khối của AT89C51 3
Hình 1.3 Sơ đồ chân 89C51 3
Hình 1.4 Sơ đồ chân IC AT89C52 4
Hình 1.5 Sơ đồ chân ATMEGA16 6
Hình 1.6 Sơ đồ chân ATMEGA32 7
Hình 1.7 Sơ đồ chân PIC 16F877A 8
Hình 2.1 Sơ đồ chân DS1307 10
Hình 2.2 Mạch điện đơn giản sử dụng DS1307 11
Hình 2.3 Thanh ghi DS1307 12
Hình 2.4 Sơ đồ định địa chỉ các thanh ghi trong DS1307 12
Hình 2.5 Led 7 đoạn 14
Hình 2.6 Led Anode chung 15
Hình 2.7 Led Cathode chung 15
Hình 2.8 Sơ đồ chân 89C51 15
Hình 2.9 Mạch dao động 17
Hình 2.10 Mạch reset tự động 18
Hình 2.11 Mạch reset bằng tay 18
Hình 2.12 Sơ đồ nguyên lý mạch đồng hồ 19
Hình 2.13 Sơ đồ mạch in 20
Hình 2.14 Lưu đồ thuật toán 21
GVHD: Trần Trung Tín Trang iii
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
CHƯƠNG I: SƠ LƯỢC VỀ CHÍP VÀ CÁC LINH ĐIỆN TỬ
1.1. Giới thiệu chíp và cấu tạo chíp điện tử.
1.1.1 Định nghĩa.
Vi mạch tích hợp, hay vi mạch, hay mạch tích hợp (integrated circuit), gọi tắt
IC, hay chip là các mạch điện chứa các linh kiện bán dẫn (như transistor) và linh kiện
điện tử thụ động (như điện trở) được kết nối với nhau, kích thước cỡ micrômét (hoặc
nhỏ hơn) chế tạo bởi công nghệ silicon cho lĩnh vực điện tử học.
1.1.2 Cấu tạo.
Một IC thường có kích thước dài rộng cỡ vài trăm đến vài ngàn micron, dày cỡ
vài trăm micron được đựng trong một vỏ bằng kim lọai hoặc bằng plastic. Những IC
như vậy thường là một bộ phận chức năng (function device) tức là một bộ phận có khả
năng thể hiện một chức năng điện tử nào đó. Sự kết tụ (integration) các thành phần của
mạch điện tử cũng như các bộ phận cấu thành của một hệ thống điện tử vẫn là hướng
tìm tòi và theo đuổi từ lâu trong ngành điện tử. Nhu cầu của sự kết tụ phát minh từ sự
kết tụ tất nhiên của các mạch và hệ thống điện tử theo chiều hướng từ đơn giản đến
phức tạp, từ nhỏ đến lớn, từ tần số thấp (tốc độ chậm) đến tần số cao (tốc độ nhanh).
Sự tiến triển này là hậu quả tất yếu của nhu cầu ngày càng tăng trong việc xử lý lượng
tin tức (information) ngày càng nhiều của xã hội phát triển.
Hình 1.1 Các loại chíp điện tử
GVHD:……………… Trang 1
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
1.2 Các nhóm chíp điện tử chính.
1.2.1 Nhóm ATMEL
1.2.1.1 AT89C51
* Giới thiệu
MCS -51 là họ IC (integrated circuit) vi điều khiển (Microcontroller) do hãng
Intel sản xuất. Các IC tiêu biểu cho họ MSC -51 là: 8051, 8031, 89C51, 892051,
8751, Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu được thực hiện
bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội. Tập lệnh cung cấp một
bảng tiện dụng của những lệnh số học 8Bit gồm cả tập lệnh cộng, trừ, nhân, chia. Nó
cung cấp những hỗ trợ mở rộng trên Chip dùng cho những biến một Bit như là kiểu
dữ liệu riêng biệt cho phép quản lý và kiểm tra Bit trực tiếp trong điều khiển.
89C51 là một vi điều khiển 8 bit, chế tạo theo công nghệ CMOS chất lượng
cao, với 4 KB EEPROM (Flash Programmable and erasable read only memory). Thiết
bị này được chế tạo bằng cách sử dụng bộ nhớ không bốc hơi mật độ cao của
ATMEL và tương thích với chuẩn công nghiệp MCS -51 về tập lệnh và các chân ra.
ATMEL AT89C51 là một vi điều khiển mạnh (có công suất lớn) mà nó cung cấp một
sự linh động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển.
Các đặc điểm của 89C51 được tóm tắt như sau:
+ 4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xóa
+ Tần số hoạt động từ: 0 Hz đến 24 MHz.
+ 3 mức khóa bộ nhớ lập trình
+ 2 bộ Timer/counter 16 Bit
+ 128 Byte Ram nội.
+ 4 port xuất/ nhập I/O 8 bit.
+ Giao tiếp nối tiếp
+ 64 KB vùng nhớ mã ngoài
+ 64 KB vùng nhớ dữ liệu ngoại
+ Xử lý Boolean (hoạt động trên bit đơn).
+ 210 vị trí nhớ có thể định vị bit.
+ 4 µs cho hoạt động nhân hoặc chia.
GVHD: Trần Trung Tín Trang 2
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
* Sơ đồ cấu hình AT89C51
Hình 1.2 Sơ đồ khối của AT89C51
Hình 1.3 Sơ đồ chân 89C51
1.2.1.2 AT89C52
* Giới thiệu
AT89C52 có công suất thấp, hiệu năng cao, CMOS 8 bit với 8K byte trong hệ
thống lập trình lại bộ nhớ Flash và chỉ xóa được bộ nhớ (PEROM). Thiết bị được sản
xuất bằng cách sử sụng công nghệ bộ nhớ mật độ cao của Atmel và tương thích tiêu
chuẩn công nghiệp 80C51 và 80C52 có hướng dẫn thiết lập và sơ đồ chân. . Flash trên
GVHD: Trần Trung Tín Trang 3
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
chíp cho phép bộ nhớ chương trình được lập trình lại trong hệ thống hay một lập trình
bộ nhớ thông thường. Bằng cách kết hợp một CPU 8 bít linh hoạt với Flash trên chíp
khối. Atmel AT89C52 là một chíp có công suất lớn cung cấp giải pháp mềm dẻo và
hiệu quả cho nhiều ứng dụng điều khiển.
* Tính năng cơ bản.
- Tương thích với chuẩn MCS-51 ™
- Có 4K Byte trong hệ thống lập trình lại bộ nhớ Flash
+ Độ bền: có thể ghi và xóa dữ liệu 1000 lần trong 1 chu kỳ
- Khóa bộ nhớ chương trình 3 cấp độ
- 256 x 8 bit RAM nội bộ
- Có thể lập trình được 32 dòng I/O
- Có 3 bộ định thời / vòng quay 16 bít
- 8 ngắt nguồn
- Lập trình nối tiếp kênh
- Công suất thấp và chế độ công suất tần xuống rỗi.
* Sơ đồ cấu hình AT89C52
Hình 1.4 Sơ đồ chân IC AT89C52
1.2.2 Nhóm ATMEGA
1.2.2.1 ATMEGA16
* Tính năng cơ bản:
- AVR ® là vi điều khiển 8 bít với hiệu suất cao nhưng công suất thấp
- Kiến trúc RISC (bộ lệnh rút gọn) nâng cao
GVHD: Trần Trung Tín Trang 4
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
+ Với 131 lệnh – Với khả năng thực hiện mỗi lệnh trong vong một chu kỳ xung
clock
+ 32 x 8 thanh ghi đa dụng
+ Full static operation
+ Tốc độ làm việc 16MPIS, với thạch anh 16MHz
+ On – chip 2 cycle multipler
- Bộ nhớ:
+ ISP Flash với khả năng 10.000 lần ghi xóa
+ EEROM
+ RAM
- Giao tiếp JTAG:
+ Khả năng quét toàn diện theo chuẩn JTAG
+ Hổ trợ khả năng Debug onchip
+ Hỗ trợ lập trình Flash, EEROM, fuse…
+ Lock bít qua giao tiếp JTAG
- Ngoại vi :
+ Timer / Counter 8 bít với các chế độ: so sánh và chia tần số
+ Timer / Counter 16 bit với các chế độ: so sánh, chia tần số, capture, PWM
+ Timer thời gian thực (Real time Clock) với bộ dao động riêng biệt.
+ Các kênh PWM
+ Kênh biến đổi ADC 10 bít
+ Hỗ trợ giao tiếp I2C
+ Bộ giao tiếp nối tiếp lập trình được USART
+ Giao tiếp SPI
+ Watch_dog timer với bộ dao động on_chip riêng biệt
- Những thuộc tính đặc biệt:
+ Power on reset và Brown – out detection
+ Chế độ hiệu chỉnh bộ sai số cho bộ dao động RC on chíp
+ Các chế độ ngắt ngoài và trong đa dạng
+ 6 model sleep: Idle, ADC noise reduction, tiết kiệm năng lượng, power –
down, standby, extended standby
GVHD: Trần Trung Tín Trang 5
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
* Sơ đồ cấu hình ATMEGA16:
Hình 1.5 Sơ đồ chân ATMEGA16
1.2.2.2 ATMEGA32
* Giới thiệu:
ATMEGA32 là board mạch phát triển giao tiếp Ethernet hoàn chỉnh về phần
cứng, giúp những người lập trình AVR có một thiết bị tốt để thỏa mãn đam mê lập
trình giao tiếp Ethernet. Tiết kiệm thời gian và chi phí. Soucer code có sẵn, giúp bạn
dễ dàng phát triển ứng dụng theo nhu cầu. ATMEGA32 là giải pháp giá rẻ và tiện lợi
cho mọi nhu cầu trong ứng dụng của mọi người dùng.
* Tính năng cơ bản:
- Microcontroller sử dụng chíp ATMega32 của Atmel, tần số thạch anh 16MHz
- RJ45 socket sử dụng lọai tích hợp biến áp, chất lượng cao.
- Giao tiếp Ethernet sử dụng chip ENC28J60 MAC/PHY của Microchip,
provides 10Base-T Ethernet
- AVR và Chip Ethernet giao tiếp qua giao thức SPI. Giao diện ethernet có thể
gửi và nhận bất kỳ gói thông tin nào TCP/UDP/IP, Appletalk, NetBIOS, v.v
- Các thông tin và cấu hình có thể được thiết lập qua cổng COM, 115200 baud
8n1 như IP ADDRESS, NETMASK, GATEWAY
- Nguồn cung cấp sử dụng DC Adaptor 7 đến 12V DC
- Các OI không sử dụng của ATMega32 được đưa ra ngoài, sẵn sàng kết nối với
thiết bị ngoại vi khác. ngoài ra còn cung cấp sẵn ngõ ISP để nạp chương trình chip MCU
- Đa số linh kiện SMD được sử dụng cho kích thước nhỏ gọn và chất lượng cao
GVHD: Trần Trung Tín Trang 6
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
- Led báo nguồn và Led chỉ báo Ethernet tích hợp sẵn rất tiện lợi theo dõi
- Board mạch xuyên lớp chất lượng cao, dễ dàng thích nghi với vỏ hộp.
* Sơ đồ cấu hình:
Hình 1.6 Sơ đồ
chân ATMEGA32
1.2.3 PIC
1.2.3.1 PIC
16F877A
Đây là vi điều
khiển thuộc họ
PIC16Fxxx với tập
lệnh gồm 35 lệnh co độ dài 14 bit. Mỗi lệnh đều được thực thi trong một chu kì xung
clock. Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ
nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu
EEPROM với dung lượng 256x8 byte. Số PORT I/O lầ 5 với 33 pin I/O.
* Tính năng cơ bản
- Timer 0: Bộ đếm 8 bít với bộ chia tần số 8 bit.
- Timer 1: Bộ đếm 16 bít với bộ chia tần số, có thể thực hiện chức năng đếm dựa
vào xung clock ngoại vi ngay khi điều khiển hoạt động ở chế độ sleep.
- Timer 2: Bộ đếm 8 bít và bộ chia tần số, bộ postcaler
- Hai bộ Capture/ So sánh/ điều chế độ rộng xung
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
- Chuẩn giao tiếp nối tiếp USATR với 9 bít địa chỉ.
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD,
WR, CS ở bên ngoài.
- Các đặc tính ANALOG:
+ 8 kênh chuyển đổi ADC 10 bít
+ Hai bộ so sánh
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ Flash với khả năng ghi xóa 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
GVHD: Trần Trung Tín Trang 7
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm
- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming)
thông qua 2 chân
- Watchdog Timer với bộ dao động trong
- Chức năng bảo mật mã chương trình
- Chế độ Sleep
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
* Sơ đồ cấu hình:
Hình 1.7 Sơ đồ chân PIC 16F877A
CHƯƠNG II: QUY TRÌNH LÀM MẠCH ĐỒNG HỒ THỰC TẾ
DÙNG IC AT89C51 VÀ DS 1307 HIỂN THỊ TRÊN LED 7 ĐOẠN
2.1 Giới thiệu linh kiện
2.1.1 Khái niệm về I2C
GVHD: Trần Trung Tín Trang 8
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
Giao thức ưu tiên truyền thông nối tiếp được phát triển bởi Philips
Semiconductor và được gọi là bus I2C. Vì nguồn gốc nó được thiết kế là để điều khiển
liên thông IC (Inter-Intergrated Circuit) nên nó được đặt tên là I2C. Tất cả các chip có
tích hợp và tương thích với I2C đều có thêm một giao diện tích hợp trên Chip để
truyền thông trực tiếp với các thiết bị tương thích I2C khác.
Việc truyền dữ liệu nối tiếp theo hai hướng 8 bit được thực thi theo 3 chế độ
sau: Chuẩn (Standard)-100 Kbits/sec Nhanh (Fast)- 400 Kbits/sec Tốc độ cao (High
speed)- 3.4 Mbits/sec. Đường bus thực hiện truyền thông nối tiếp I2C gồm hai đường
là đường truyền dữ liệu nối tiếp SDA và đường truyền nhịp xung đồng hồ nối tiếp
SCL. Vì cơ chế hoạt động là đồng bộ nên nó cần có một nhịp xung tín hiệu đồng bộ.
Các thiết bị hỗ trợ I2C đều có một địa chỉ định nghĩa trước, trong đó một số bit địa chỉ
là thấp có thể cấu hình. Đơn vị hoặc thiết bị khởi tạo quá trình truyền thông là đơn vị
Chủ và cũng là đơn vị tạo xung nhịp đồng bộ, điều khiển cho phép kết thúc quá trình
truyền. Nếu đơn vị Chủ muốn truyền thông với đơn vị khác nó sẽ gửi kèm thông tin
địa chỉ của đơn vị mà nó muốn truyền trong dữ liệu truyền. Đơn vị Tớ đều được gán
và đánh địa chỉ thông qua đó đơn vị Chủ có thể thiết lập truyền thông và trao đổi dữ
liệu. Bus dữ liệu được thiết kế để cho phép thực hiện nhiều đơn vị Chủ và Tớ ở trên
cùng Bus.
Quá trình truyền thông I2C được bắt đầu bằng tín hiệu start tạo ra bởi đơn vị
Chủ. Sau đó đơn vị Chủ sẽ truyền đi dữ liệu 7 bit chứa địa chỉ của đơn vị Tớ mà nó
muốn truyền thông, theo thứ tự là các bit có trọng số lớn nhất MSB sẽ được truyền
trước. Bit thứ tám tiếp theo sẽ chứa thông tin để xác định đơn vị Tớ sẽ thực hiện vai
trò nhận (0) hay gửi (1) dữ liệu. Tiếp theo sẽ là một bit ACK xác nhận bởi đơn vị nhận
đã nhận được 1 byte trước đó hay không. Đơn vị truyền (gửi) sẽ truyền đi 1 byte dữ
liệu bắt đầu bởi MSB. Tại điểm cuối của byte truyền, đơn vị nhận sẽ tạo ra một bit xác
nhận ACK mới. Khuôn mẫu 9 bit này (gồm 8 bit dữ liệu và 1 bit xác nhận) sẽ được lặp
lại nếu cần truyền tiếp byte nữa. Khi đơn vị Chủ đã trao đổi xong dữ liệu cần nó sẽ
quan sát bit xác nhận ACK cuối cùng rồi sau đó sẽ tạo ra một tín hiệu dừng STOP để
kết thúc quá trình truyền thông. I2C là một giao diện truyền thông đặc biệt thích hợp
cho các ứng dụng truyền thông giữa các đơn vị trên cùng một bo mạch với khoảng
cách ngắn và tốc độ thấp.
GVHD: Trần Trung Tín Trang 9
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
Ví dụ như truyền thông giữa CPU với các khối chức năng trên cùng một bo
mạch như EEPROM, cảm biến, đồng hồ tạo thời gian thực… Hầu hết các thiết bị hỗ
trợ I2C hoạt động ở tốc độ 400Kbps, một số cho phép hoạt động ở tốc độ cao vài
Mbps. I2C khá đơn giản để thực thi kết nối nhiều đơn vị vì nó hỗ trợ cơ chế xác định
địa chỉ.
2.1.2 Giao tiếp DS1307 – DS 1308
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à một 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 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
xuất hiện ở 2 gói SOIC và DIP có 8 chân
Hình 2.1 Sơ đồ chân 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.
• VBAT: 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: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển.
Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang
hoạt động (nhưng không ghi và đọc được).
• SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần
số của xung được tạo có thể được lập trình. 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.
GVHD: Trần Trung Tín Trang 10
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
• SCL (Serial Clock) và SDA (Serial Data): Là 2 đường giao xung nhịp và dữ
liệu của giao diện I2C.
Mỗi dây SDA hay SCL đều được nối với điện áp dương cử nguồn cấp thông
qua 1 điện trở kéo lên (Pull-Up Resistor). Sự cần thiết của các điện trở kéo lên này là
vì chân giao tiếp I2C của các thiết bị ngoại vi thường là dạng cực máng hở (Open -
Drain or Open - Collector). Giá trị của các điện trở này khác nhau tùy vào từng thiết bị
và chuẩn giao tiếp, thường giao động trong khoảng 1KΩ đến 4.7KΩ.
Có thể kết nối DS1307 bằng một mạch điện đơn giản như sau:
Hình 2.2 Mạch điện đơn giản sử dụng 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 diện I2C, con trỏ địa chỉ và các thanh ghi
(hay RAM). Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này.
Vì thế có 2 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. Như đã trình bày, bộ nhớ DS1307 có tất cả 64
thanh ghi 8-bit được đánh địa chỉ từ 0 đến 63 (từ 00H đến 3FH theo hệ HexaDecimal).
Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu (00H – 07H) 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. 7 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á trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo
ra.
GVHD: Trần Trung Tín Trang 11
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
Thanh ghi thứ 8 (CONTROL) là thanh ghi điều khiển xung ngõ ra SQW/OUT
(chân 6). Tuy nhiên, do chúng ta không dùng chân SQW/OUT nên có thề bỏ qua thanh
ghi thứ 8.
7 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307, chúng ta
sẽ khảo sát các thanh ghi này một cách chi tiết. Trước hết hãy quan sát tổ chức theo
từng bit của các thanh ghi này như trong hình:
Hình 2.3 Thanh ghi DS1307
Địa chỉ các thanh ghi trong DS1307
Hình 2.4 Sơ đồ định địa chỉ các thanh ghi trong DS1307
Thanh ghi giây (SECONDS): Là thanh ghi đầu tiên trong bộ nhớ của DS1307,
địa chỉ của nó là 0×00. 4 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ó
GVHD: Trần Trung Tín Trang 12
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
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 là bit 7, trong thanh ghi này là 1 thanh ghi đ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.
Thanh ghi phút (MINUTES): đị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. Có địa chỉ 02H. 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ờ, Bit 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 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)
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ỉ (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.
Bảng 2.1: Thanh ghi điều khiển SQW/OUT:
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
OUT 0 0 SQWE 0 0 RS1 RS0
GVHD: Trần Trung Tín Trang 13
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
OUT (Output control): Đây là Bit điều khiển đầu ra của Pin 7 (SQW/OUT)
dưới dạng sóng vuông. Mặc định là Disable
Nếu OUT = 0 thì đầu ra Pin 7 (SQW) được đặt lên mức Logic 0
Nếu OUT = 1 thì đầu ra Pin 7 (SQW) được đặt lên mức Logic 1
SQWE (Square Wave Enable): Khi thiết lập để logic 1, sẽ cho phép đầu ra
dao động. Các tần số Sóng vuông ở đầu ra dao động phụ thuộc vào 2 Bit RS0 & RS1
theo bảng dưới
RS (Rate Select): Đây là Bit điều khiển tần số dao động sóng vuông cho đầu ra SQW
(Pin 7) như bảng sau đây có thể chọn các tần số thích hợp
Bảng 2.2: Sự phụ thuộc của tần số sóng vuông với Bit RS0 và RS1
RS1 RS0 SQW OUTPUT FREQUENCY
0 0 1Hz
0 1 4.096 kHz
1 0 8.192 kHz
1 1 32.768 kHz
2.1.3 LED 7 đoạn
Cấu trúc và mã hiển thị dữ liệu trên Led 7 đoạn
- Dạng Led:
Hình 2.5 Led 7 đoạn
GVHD: Trần Trung Tín Trang 14
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
- Led Anode chung:
Hình 2.6 Led Anode chung
Đối với dạng Led anode chung, chân COM phải có mức logic 1 và muốn
sáng Led thì tương ứng các chân a – f, dp sẽ ở mức logic 0.
- Led Cathode chung:
Hình 2.7 Led Cathode chung
Đối với dạng Led Cathode chung, chân COM phải có mức logic 0 và
muốn sáng Led thì tương ứng các chân a – f, dp sẽ ở mức logic 1.
2.1.4 IC 89C51S31
2.1.4.1 Khảo sát sơ đồ chân 89C51, chức năng từng chân:
- Sơ đồ chân 89C51:
Hình 2.8 Sơ đồ chân 89C51.
GVHD: Trần Trung Tín Trang 15
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
- Chức năng các chân của 89C51:
+ VCC: chân cung cấp điện
+ GND: chân nối đất.
+ Port 0: gồm 8 chân 32-39 (P0.0 P0.7)
Port 0 là port có 2 chức năng. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ
mở rộng nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở
rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
• Port 1: chân 1-8 (P1.0 P1.7)
Port 1 là port IO. Có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần.
Port 1 là không có chức năng khác, vì vậy chúng chỉ được dùng cho giao
tiếp với các thiết bị bên ngoài.
• Port 2: chân 21-28 (P2.0 P2.7)
Port 2 là port có tác dụng kép. Được dùng như các đường xuất nhập hoặc
byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.
• Port 3: chân 10-17 (P3.0 P3.7)
Port 3 là port xuất nhập 8 bit 2 chiều có các điện trở kéo lên bên trong.
Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với
các đặc tính đặc biệt của 89C51
• RST:
Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao
động đang hoạt động sẽ reset AT89C51.
• ALE/ PROG
Xung của ngõ ra cho phép chốt địa chỉ ALE (address latch enable) cho phép
chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân này cũng được
dùng làm ngõ vào xung lập trình (PROG) trong thời gian lập trình Flash.
Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số bằng 1/6
tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời
từ bên ngoài và tạo xung clock. Tuy nhiên cần lưu ý là một xung ALE sẽ bị bỏ qua
trong mỗi chu kỳ truy xuất bộ nhớ dữ liệu ngoài.
Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu hóa
bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là 8EH. Khi bit
này được set, ALE chỉ tích cực tron thời gian thực thi lệnh MOVX hoặc MOVC.
GVHD: Trần Trung Tín Trang 16
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
Ngược lại chân này sẽ được kéo lên mức cao. Việc set bit không cho phép hoạt động
chốt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang chế độ thực
thi chương trình ngoài.
• PSEN:
Chân cho phép bộ nhớ chương trình PSEN (program store enable) điều khiển
truy xuất bộ nhớ chương trinhg ngoài. Khi AT89C51 đang thực thi chương trình trong
bộ nhớ chương trình ngoài, PSEN tích cực 2 lần cho mooic chu ký máy, ngoại trừ
trường hợp 2 tác động của PSEN bị bỏ qua cho mỗi truy xuất bộ nhớ dữ liệu ngoài.
• EA/ Vpp:
Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable) phải được
nối với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí nhớ của bộ nhớ
chương trình ngoài, bắt đầu từ địa chỉ 0000H cho đến FFFFH. Tuy nhiên cần lưu ý là
nếu có bit khóa (clock bit 1) được lập trình, EA sẽ được chốt bên trong khi reset
EA nên nối với Vcc để thực thi chương trình trong chip.
Chân EA/Vcc còn nhận điện áp cho phép lập trình Vpp trong thời gian lập trình
cho Flash, điện áp này cấp cho các bộ phận có yêu cầu điện áp 12V.
• XTAL 1:
Ngõ vào đến mạch khuếch đại đảo dao động và ngõ vào đến mạch tạo xung
clock bên trong chip.
• XTAL 2:
Ngõ ra từ mạch khuếch đại đảo của mạch dao động.
Hình 2.9 Mạch dao động
2.1.4.2 Hoạt động của RESET
89C51 có 2 cách thực hiện reset: reset bằng tay hoặc reset tự động
GVHD: Trần Trung Tín Trang 17
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
• Reset tự động:
Hình 2.10 Mạch reset tự động
• Mạch Autoreset thường được dùng để xác định trạng thái đầu tiên của mạch
ngay khi vừa cấp nguồn để mạch luôn luôn hoạt động đúng như yêu cầu thiết kế.
Khi chưa cấp nguồn điện áp trên tụ bằng 0V, nên khi vừa cấp điện tụ nạp từ 0V
– Vcc, do đó khi cấp điện thì điện áp đưa vào chân Reset là Vcc, nên mạch tự động hệ
thống
Reset bằng tay:
Hình 2.11 Mạch reset bằng tay
• Thường trong hệ thống rất cần động tác Reset khi mạch đang hoạt động,
do đó chỉ có mạch Reset khi vừa bật máy là chưa đủ. Việc thiết kế mạch Reset bằng
tay rất đơn giản chỉ việc thêm vào mạch Reset tự động một SW và điện trở như hình.
Nguyên lý mạch giống như Reset tự động.
Bảng 2.3 Trạng thái của tất cả các thanh ghi trong 89C51 sau khi reset hệ thống:
Thanh ghi Nội dung
Đếm chương trình PC 0000H
Thanh ghi tích lũy A 00H
Thanh ghi B 00H
Thanh ghi thái PSW 00H
SP 07H
DPRT 0000H
Port 0 đến port 3 FFH
IP XXX0 0000 B
IE 0X0X 0000 B
Các thanh ghi định thời 00H
GVHD: Trần Trung Tín Trang 18
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
SCON SBUF 00H
PCON (HMOS) 0XXX XXXXH
PCON (SMOS) 0XXX 0000 B
• Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được reset tại
địa chỉ 0000H. Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa
chỉ 0000H của bộ nhớ chương trình. Nội dung của RAM trên chip không bị thay đổi
bởi tác động của ngõ vào reset.
2.2 Sơ đồ nguyên lý, mạch in của mạch đồng hồ
2.2.1 Sơ đồ nguyên lý của mạch
Hình 2.12 Sơ đồ nguyên lý mạch đồng hồ
2.2.2 Sơ đồ mạch in:
GVHD: Trần Trung Tín Trang 19
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
Hình 2.13 Sơ đồ mạch in
2.2.3 Sơ đồ thuật toán
GVHD: Trần Trung Tín Trang 20
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
Hình 2.14 Lưu đồ thuật toán
GVHD: Trần Trung Tín Trang 21
Đồ án vi xử lý Đồng hồ hiện thị thời gian thực trên Led 7 đoạn
KẾT LUẬN
- Ưu điểm: mạch mô phỏng gần như đầy đủ chức năng của đồng hồ vạn niên
- Khuyết điểm: thiết kế mạch to, nhiều jum.
- Ứng dụng: có thể thay thế cho đồng hồ đang sử dụng
- Hướng phát triển: Thiết kế mạch 2 lớp để giảm nhỏ diện tích mạch van tăng
tính thẩm mĩ, dùng hiển thị ngày giờ trên bảng led điển tử được láp đặt trong công ty
hay nơi công cộng, thời gian thực còn sử dụng trong các cột đèn tín hiệu giao thông….
Hướng dẫn sử dụng sản phẩm:
- 2 hàng led 7 đoạn hiển thị bao gồm:
+ Hàng thứ 1 là: giờ:phút:giây
+ Hàng thứ 2 là: ngày:tháng:năm
4 nút nhấn:
- Nút “mode”:
+ Nhấn lần 1 vào chế độ tăng giảm giờ
+ Nhấn lần 2 vào chế độ tăng giảm phút
+ Nhấn lần 3 vào chế độ tăng giảm giây
+ Nhấn lần 4 vào chế độ tăng giảm ngày
+ Nhấn lần 5 vào chế độ tăng giảm tháng
+ Nhấn lần 6 vào chế độ tăng giảm năm
+ Nhấn lần 7 trở về trạng thi chạy bình thường.
+ Nút “up”: tăng chỉ số hiện tại trong chế độ cài đặt.
+ Nút “down”: giảm chỉ số hiện trong chế độ cài đặt.
+ Nút “reset”: đưa vi xử lý trở về trạng thái ban đầu trước khi chạy
GVHD: Trần Trung Tín Trang 22