Port 0 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 thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bu
Trang 1CHƯƠNG DẪN NHẬP 1.1 ĐẶT VẤN ĐỀ
Trong giai đoạn hiện nay với sự vượt bật của công nghệ nano hàng loạt IC mới được chế tạo Những IC này thông minh hơn rất nhiều so với các IC trước
và đặt biệt là chúng ta có thể ghi /xóa dữ liệu một cách dễ dàng Vì thế nó được
sử dụng trong nhiều thiết bi Điện-Điện Tử và ngày càng thể hiện được bản chất
ưu việt của nó Điển hình là dòng IC 8051/8052
Với sự ra đời của dòng IC mới đã làm thúc đẩy sự phát triển của những IC thời gian thực như DS1307,DS12887…nó có chức năng đếm thời gian thực mà con người đang sử dụng,các IC cảm biến nhiệt như lm35,adc 0804 có thể giao tiếp với vi xử lý để đo nhiệt độ
Cùng với sự phát triển của khoa học-kỹ thuật đã góp phần nâng cao đời sống con người.cũng chính vì thế mà cao người phải biết chính xác về thời gian
để sắp xếp công việc một cách hợp lý Xuất phát từ thực tiễn này em đã quyết định chọn đề tài “thiết kế lịch vạn niên” Nhằm đáp ứng nhu cầu học hỏi của bản thân,cũng như góp phần nâng cao những mach điện tử trong đời sống cao người 1.2 GIỚI HẠN CỦA ĐỀ TÀI
Do kiến thức có hạn nên em chỉ có thể thiết kế lich vạn niên chạy với những thông số cài đặt ban đầu cho DS1307 chứ ta không thể hiệu chỉnh thời gian cho nó trong khi nó hoạt động.và cũng không thể cài đặt thời gian báo thức 1.3 MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI
Trong đề tài này em xử dụng một con IC thời gian thực (ds1307 ) kết hợp
Trang 2sang số(ADC0804),dữ liệu được 89C52 đọc từ ADC0804 kết quả được hiển thị
ra led 7 đoạn
Từ đây có thể suy ra mục đích yêu cầu của đề tài:
Mạch hiển thị giờ,phút,giây,thứ,ngày,tháng,năm một cách chính xác
Đo nhiệt độ và hiển thị ra led 7 đoạn
Giá thành sản phẩm không quá đắc
Dựa vào yêu cầu của đề tài tôi đã phân ra làm 2 khối:
Khối A: đo nhiệt độ và hiển thị ra led 7 đoạn
Khối B: đồng hồ thời gian thực và hiển thị ra led 7 đoạn
Trang 3CHƯƠNG II:CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về vi điều khiển 89C52
2.1.1 Tổng quan về 89C52
AT89C52 là họ IC do hãng INTEL sản xuất Các sản phẩm AT89C52 thích hợp cho các ứng dụng điều khiển.Việc xử lý trên byte và các toán số học ở cấu trúc dữ liệu nhỏ đượ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 8 bit gồm cả lệnh nhân và lệnh 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 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 trên hệ thống điều khiển
AT89C52 cung cấp những đặc tính chuẩn như:
-8Kbyte bộ ngớ có thể lập trình,có khả năng tới 1000 chu kỳ ghi/ xóa
-Tần số hoạt động từ 0HZ đến 24HZ
-3 mức khóa bộ nhớ lập trình
-3 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
-64KB vùng nhớ mã ngoài
-4us cho hoạt động nhân chia
2.1.2 Mô tả chân 89C52
2.1.2.1 Sơ đồ chân 89C52
Trang 4AT89C52 9
18 19
29 30
31
1 2 3 4 5 6 7 8
21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
39 38 37 36 35 34 33 32
RST
XTAL2 XTAL1
PSEN ALE/PROG
EA/VPP
P1.0/T2 P1.1/T2-EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 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
các chức năng khác nhau như vào ra I/O,đọc,ghi,địa chỉ dữ
liệu và ngắt, cần phải lưu ý một số hãng cung cấp một
phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho
các ứng dụng yêu cầu thấp hơn.Tuy nhiên hầu hết các nhà
phát triển sử dụng chíp đóng vỏ 40 chân với 2 hàng chân
DIP nên ta chỉ tập trung mô tả phiên bản này
2.1.2.2 Chức năng của chân 89C52
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0
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 thiết kế 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: từ chân 1 đến chân 8 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao tiếp với thiết bị ngoài nếu cần
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng kép dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng kép Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên
hệ đến các đặc tính đặc biệt của 8051 như ở bảng sau :
Trang 5
PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình mở
rộng và thường được nối đến chân OE\ của Eprom cho phép đọc các byte mã
lệnh
PSEN ở mức thấp trong thời gian 8051 lấy lệnh Các mã lệnh của chương
trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong
8051 để giải mã lệnh Khi 8051 thi hành chương trình trong ROM nội PSEN ở
mức cao
ALE (Address Latch Enable):
Khi 8051 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và
dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ
30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi
kết nối chúng với IC chốt
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò
là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động
Bit Tên Chức năng chuyển đổi
WR
RD
Ngõ vào dữ liệu nối tiếp
Ngõ xuất dữ liệu nối tiếp
Ngõ vào ngắt cứng thứ 0
Ngõ vào ngắt cứng thứ 1
Ngõ vào TIMER/ COUNTER thứ 0
Ngõ vào của TIMER/ COUNTER thứ 1
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài
Tín hiệu đọc bộ nhớ dữ liệu ngoài
Trang 6hành chương trình từ ROM nội Nếu ở mức 0, 8051 thi hành chương trình từ bộ nhớ mở rộng Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8051
RST (Reset): Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch phải tự động reset.\
Các giá thị điện trở được chọn là:
Trang 72.1.3 Sơ đồ khối bên trong 89C52
T1 T0
Timer 2 Timer 1 Timer 0
CPU
Oscillator Điều khiển bus Các port I/O Port nối tiếp
Port noái tieáp Timer 0
Timer 1 Timer 2
INT0 INT1
EA RST PSEN
ALE
P0 P2 P1 P3
TxD RxD
T2
Trang 82.1.4 Tổ chức bộ nhớ bên trong
Trang 9RAM bên trong được phân chia như sau
Các Bank thanh ghi có địa chỉ từ 00H đến 1FH
RAM địa chỉ hóa từng bit có dia chỉ từ 20H đến 29H
2.1.4.2 RAM có thể định địa chỉ bit
Vùng địa chỉ 20H-2FH gồm 16 byte có thể thực hiện như vùng RAM đa dụng(truy xuất mỗi lần 8 bit) hay truy xuất mỗi lần 1 bit bằng các lệnh xử lý bit 2.1.4.3 Các bank thanh ghi
Vùng địa chỉ 1Fh được chia làm 4 bank thanh ghi:back 0 từ 07h,bank 1 từ 08h -0Fh,bank 2 từ 10h-17h và bank 3 từ 18h đến 1Fh.các bank thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7.sau khi khởi động thì hệ thống bank 0 được sử dụng
00h-Do có bốn bank thanh ghi nên tại một thời điểm thì chỉ có một bank thanh ghi được truy xuất bởi các thanh ghi R0 đến R7.việc thay đổi bank thanh ghi được thực hiện th6ng qua thanh ghi từ trạng thái chương trình(PSW)
Trang 10
2.1.4.4 Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89C52 được d9ing5 dạng như một phần của RAM trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ(ngoại trừ thanh ghi bộ đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm bị tác đông trực tiếp) Cũng như R0 đến R7,89C52 có 21 thanh ghi có chức năng đặc biệt(SFR:Specil Function Resistor) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH
2.1.4.4.1 Thanh ghi trang thái chương trình(PSW: Program Status Word)
PSW.4 RS1 D4H Bit chọn Bank thanh ghi 1
PSW.3 RS0 D3H Bit chọn bank thanh ghi 0
00=bank0 địa chỉ 00H-07H 01=bank1 dịa chỉ 08H-0FH 01=bank2 dịa chỉ 10H-17H 01=bank3 dịa chỉ 18H-1FH
Chức năng từng bit trang thái chương trình
-Cờ Carry CY(Carry flag );
Cờ nhớ thường được dùng cho các lệnh toán học : C=1 nếu phép toán cộng có sự tràn hoặc phép trừ có sự mượn và ngược lại C=0 nếu phép cộng không tràn và phép trừ không mượn
-Cờ Carry phụ AC (Auxiliary Carry Flag):
Khi cộng những giá tri BCD(Binary Code Decimal),cờ phụ AC được set nếu kết
Trang 11-Cờ 0(Flag):
Cờ 0 (F0) là một bit cờ đa dụng dùng cho các ứng dụng của người dung
-Những bit chọn bank thanh ghi truy xuất :
RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa sau khi reset hệ thống và được thay thế bởi phần mềm khi cần thiết
Tùy theo RS1,RS0 =00,01,10,11 sẽ được chọn bank tích cục tương ứng là Bank0,Bank1,Bank2,Bank3
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối tiếp
để tạo thành bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu
2.1.4.4.2 Thanh ghi Timer
Vi điều khiển 89C52 có 3 timer 16 bit,mỗi tham mơ có bốn cách làm việc
Trang 12-Tạo tốc độ baud cho port nối tiếp
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái ngõ vào hoặc gửi
sự kiện ra các ngõ ra.Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa 2 sự kiện(ví dụ độ rộng xung)
2.1.4.4.3 Thanh ghi ngắt(INTERRUPT)
Một ngắt là sự xảy ra một điều kiện,một sự kiện mà nó gây ra treo tạm thời chương trình chính trong khi điều kiện đó được phục vu bởi một chương trình khác
Các ngắt đóng vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi
- Tổ chức ngắt của 89C52:
Có 6 nguồn ngắt ở 89S52: 2 ngắt ngoài, 3 ngắt timer, và 1 ngắt port nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm Mức độ ưu tiên của các ngắt được lưu trong thanh ghi IP hay nói cách khác thanh ghi IP cho phép chon mức ưu tiên cho các ngắt( giá tri thanh ghi IP khi reset hệ thống là 00h)
Trang 13Bit Ký hiệu Địa chỉ bit Mô tả
IP.5 ET2 BDH Chọn mức ưu tiên cao hay thấp
tại Timer 2
IP.4 ES BCH Chọn mức ưu tiên cao hay thấp
tại Port nối tiếp
IP.3 ET1 BBH Chọn mức ưu tiên cao hay thấp
tại Timer 1 IP.2 EX1 BAH Chọn mức ưu tiên cao hay thấp
tại Ngắt ngoại 1 IP.1 ET0 B9H Chọn mức ưu tiên cao hay thấp
tại Timer 0 IP.0 EX0 B8H Chọn mức ưu tiên cao hay thấp
tại Ngắt ngoại 0 Tóm tắt thanh ghi IP
-Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có mức ưa tiên cao hơn sẽ được phục
vụ trước
-Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự ưu tiên được thực hiện từ cao xuống thấp như sau:ngắt ngoài 0- ngắt timer0- ngắt ngoài 1-ngắt timer 1-ngắt timer 2
-Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà có một ngắt xảy ra với mức ưu tiên cao hơn thì chương trình tạm ngừng để chạy một chương trinh khác có mức ưu tiên cao hơn
-Cho phép và cấm ngắt:
Trang 14Bit Ký hiệu Địa chỉ bit Mô tả
IE.5 ET2 ADH Chọn phép ngắt từ Timer 2
IE.4 ES ACH Chọn phép ngắt từ Port nối tiếp IE.3 ET1 ABH Chọn phép ngắt từ Timer 1
IE.2 EX1 AAH Chọn phép ngắt Ngắt ngoại 1
IE.1 ET0 A9H Chọn phép ngắt từ Timer 0
IE.0 EX0 A8H Chọn phép Ngắt ngoại 0
Tóm tắt thanh ghi IE
- Các cờ ngắt:
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên mức cao để xác nhận ngắt
Trang 15Ngắt Cờ Thanh gh SFR và vi trí bit
Trang 16Cảm biến nhiệt là một mạch tích hợp nhận tín hiệu nhiệt độ
từ môi trường bên ngoài sau đó chuyển thành tín hiệu điện
dưới dạng dòng điện hay điện áp Dựa vào đặc tính rất nhạy của
bán dẫn với nhiệt độ,tạo ra điện áp hoặc dòng diện tỷ lệ thuận
với nhiệt độ.đo giá trị của điện áp ta biết được giá tri của nhiệt độ
Sự tác động của nhiệt độ tạo ra điện áp tự do và các lỗ trống trong
bán dẫn bằng sự phá vỡ của các phân tử,bứt các electrong thàng
dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuất
hiện các lỗ trống làm cho tỉ lệ điện tử tự do và các lỗ trống tăng lên
theo quy luật hàm số mũ với nhiệt độ
Ngõ ra của lm35 là dạng điện áp thay đổi với nhiệt độ bên ngoài với độ nhạy 10mv/1oC
Sai số cực đại 1.5oC khi nhiệt độ lớn hơn 100oC
Phạm vi sử dụng:0oC <=toC<=100oC
2.3 KHÁI QUÁT VỀ ADC 0804
2.3.1 MÔ TẢ CHÂN ADC0804
Chip adc0804 là bộ biến đổi tương tư sang số
thuộc họ
ADC800 của hãng National semiconductor.chip này
Cũng được nhiều hãng khác sản xuất chíp có điện áp
Nuôi +3V và độ phân giải 8 bit Ngoài độ phân giải
Thì thời gian chuyển đổi cũng là thời gian quan trong
của bộ ADC Thời gian chuyển đổi là thời gian mà
Bộ ADC cần để chuyển đổi đầu vào tương tự thành
Trang 17chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK R(chân 19) và CLR IN (pin 4) không bé hơn 110us,các chân khác có các chức năng:
Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dang
số nhi phân 8 bit được đưa tới chân dữ liệu (DB0-DB7)
số được xác định bằng biểu thức:
Trang 18Ở đây R=10K,C=150Pf suy ra tần số f=606Khz và thời gian chuyển đổi là 110us
Ngắt INTR(Interupt):
Chân số 5 là chân tích cực mức thấp,bình thường chân này ở trạng thái cao
và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho vi điều khiển biết là dữ liệu đã chuyển đổi xong và sẵn sang để lấy đi Sau khi INTR xuống thấp,cần đặt CS=0 và gửi một xung cao xuống thấp tới chân RD để lấy dữ liệu ra
Trang 19Chân số 20 là chân cấp nguồn +5V chân này còn được dung làm điện áp tham chiếu khi đầu vàoV ref/2 để hở
V ref/2:
Chân số 9 là chân điện áp đầu vào được dùng làm điện áp tham chiếu Nếu chân này để hở thì điện áp đầu vào tương tự cho ADC nằm trong dải 0 đến +5V chân
V ref/2 được dùng làm điện áp đầu vào khac 0 đến 5V
Chú ý: do tín hiệu của cảm biến nhiệt Lm35 có độ phân giải là 10mV/10C mà độ phân giải của ADC là 19.5mV,nên trước khi đưa dữ liệu vào bộ biến đổi ta phải cho qua bộ khếch đại với hệ số khếch K = 1.95
D0 – D7(chân 8 – chân 11): các chân này được đệm 3 trạng thái và dữ liệu được đưa ra các chân này khi CS = 0 và RD được đưa xuống mức thấp
Trang 20Sơ đồ khối bên trong ADC0804
2.3.2 Quá trình chuyển đổi của ADC0804
Chip ADC0804 bắt đầu quá trinh biến đổi khi có một sự thay đổi mức logic từ cao xuống thấp (cạnh xuống) tai chân WR,trong khi chân CS=0 và chân
RD mức cao Sau khi thực hiện xong quá trình chuyển đồi thì chân INTR được kéo xuống mức thấp toàn bộ quá trinh chuyển đổi được mô tả như sau:
Trang 21Quá trình chuyển đổi của chip ADC0804 2.3.3 Quá trình đọc dữ liệu từ chip ADC0804
Quá trình đọc dữ liệu được thực hiện khi có một sự thay đổi mức logic từ cao xuống thấp (cạnh xuống) tại chân RD,trong khi CS mức thấp và chân WR mức cao Quá trình này cũng được mô tả bằng sơ đồ:
Trang 22 OE: ngõ vào cho phép,để IC hoat động thì
phải clear ngõ vào cho phép này (OE=0)
CP: ngõ vào xung clock tac động ở mức cao
2.4.2.Tổ chức bên trong của IC chốt
74HC
Trang 23Bảng trang thái của IC chốt:
Ngõ vào cho
phép (OE)
Ngõ vào xung Clock(CP)
Data inputs D0 – D7
Data outputs Q0 – Q7
2 gói SOIC và DIP có 8 chân như sau:
Trang 24Cá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
- 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, chúng ta sẽ bỏ trống chân này khi nối mạch
- SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C mà chúng ta đã tìm hiểu trong bài TWI của AVR
Có thể kết nối DS1307 bằng một mạch điện đơn giản như trong hình 2
Mạch ứng dụng đơn giản của DS1307
Trang 25
2.5.2 Cấu trúc bên trong DS 1307
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) Do đa số các thành phần bên trong DS1307 là thành phần “cứng” nên chúng ta không có quá nhiều việc khi sử dụng DS1307 Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này Vì thế cần hiểu
rõ 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
Trang 26thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” (tôi sẽ gọi là RTC) còn lại 56 thanh ghi bỏ trông có thể được dùng chứa biến tạm như RAM nếu muốn Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: 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 Ví dụ, lúc khởi động chương trình, chúng ta ghi vào thanh ghi “giây” giá trị 42, sau đó 12s chúng ta đọc thanh ghi này, chúng ta thu được giá trị 54 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 Tổ chức bộ nhớ của DS1307 được trình bày trong hình 3
Trang 27Tổ chức các thanh ghi thời gian
Chú ý:tất cả các giá trị thời gian lưu trong cac thanh ghi dưới dạng BCD
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-4bit của chữ số hàng đơn vị của giá tri giây.Do giá trị cao thấp của chữ số hàng chục là 5 nên chỉ cần 3 là đủ Bit cao nhất (bit thứ 7) trong thanh ghi này là một bit đ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 bộ không hoạt động vì vậy,nhất thiết phải reset bit này bằng 0 ngay từ đầu
Thanh ghi phút(MINUTES):có địa chỉ 0x01h,chứa giá tri 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 thứ 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 chip DS1307 Thanh ghi này có địa chỉ 0x02h Trước hết 4 bit thấp của thanh ghi
Trang 28dùng mã hóa chữ số hàng chục của giá tri giờ Do giá tri lớn nhất của chữ số hàng chục trong trường hợp này là 2 nên cần 2 bit để mã hóa Nếu bit thứ 6=1 thì hệ thống 12h được chọn với trường hợp này chỉ có một bit thứ 4 dùng mã hóa chữ
số hàng chục của giờ, bit thứ 5 chỉ buổi trong ngày(AM hoặc PM) Bit thứ 5=0
là AM và bit thứ 5=1 là PM Bit thứ 7 luôn bằng không
Thanh ghi thứ(DAY- ngày trong tuần): nằm ở địa chỉ 0x03h.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 bit còn lai luôn bằng 0
Thanh ghi ngày(DATE-ngày trong tháng): nằm ở địa chỉ 0x04h thanh ghi DATE mang giá tri từ 1 đến 31, chỉ có 5 bit đầu tiên là có nghĩa.cac 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 lai bằng 0
Thanh ghi năm(YEAR):nằm ở địa chỉ 0x06h thanh ghi YEAR mang giá trị từ 00h đến 99.chíp ds1307 chỉ dùng cho 100 năm,nên giá tri năm chỉ có 2 chữ số,phần đầu của năm do người dùng tự them vào
Thanh ghi điều khiển(CONTROL RESISTER): có địa chỉ là
0x07h,thanh ghi CONTROL RESISTER được dùng để điều khiển tần số xung vuông ngõ ra SQW/OUT Giá trị các bit trong thanh ghi CONTROL RESISTER được biểu diễn như sau:
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
Trang 29Bit 4_Square-Wave Enable(SQWE):bit này dùng để điều khiển tần số dao động ở ngõ ra
Bit 1 và 0_Rate Selecl(RS[1,0]):2 bit dùng điều khiển tần số dao động ở ngõ ra vớ tần số được chọn như sau:
2.5.3 Khái quát giao diện I2C
I2C là viết tắt của từ Intel-Integrated Circuit là một chuẩn truyền thong nối tiếp đồng bộ do hang điện tử Philips Semiconductor sang lập và xây dựng thành chuẩn năm 1990
Các khái niệm cơ bản trong giao diện I2C
- Master(chip chủ): là chip khởi động quá trình truyền nhận,phát đi địa chi của thiết bi cần giao tiếp và tạo xung dữ 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 yêu cầu từ 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 đi trước nhất
- SCL(Serial Clock): là đường xung giữ nhịp nối tiếp I2C là chuẩn truyền thông
Trang 30ở mức cao(trừ điều kiện START và STOP) Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp
- Một giao diện I2C gồm có 2 dây:Serial data(SDA) và Serial Clock(SCL) SDA
là đường truyền dữ liệu theo 2 hướng (từ master đến slave và ngược lại), còn SCL là đường truyền xung đồng hồ chỉ theo một hướng (tư master đến slave)
Master SDA Slave Master SDA Slave
SCL SCL
- Trong giao diện I2C thì có một thiết bị là chủ(master) và một thiết bị là tớ (slave) và một thiết bị là tớ(slave) Tại sao lại có sự phân biệt này? đó là vì trên giao diện I2C thì quyền điều khiển thuộc về thiết bi chủ Thiết bi chủ nắm vai trò tạo xung đồng bộ cho toàn hệ thống ,khi giữa 2 thiết bị chủ/tớ giao tiếp thì thiết
bị chủ có nhiệm vụ tạo ra xung đồng hồ và quản lý đến thiết bị tớ trong suốt quá trình giao tiếp
- Một giao diện I2C có thể hoạt động ở nhiều chế độ khác nhau:
Một chủ một tớ (one master-one slave)
Một chủ nhiều tớ (one master- multi slave)
Nhiều chủ nhiều tớ(multi master-multi slave)
-Vài điều kiên cần biết khi thiết lập một giao tiếp I2C:
Điền kiện START :được thiết lập khi có một sự chuyển đổi trạng thái từ cao xuống thấp tại SDA,khi SCL dang ở mức cao
Điều kiện STOP:được thiết lập khi có một sự chuyển đổi trạng thái từ thấp lên cao tai SDA,khi SCL đang ở mức cao
Trang 31 Điều kiện REPEAT START(bắt đầu lập lại): khoảng giữa điều kiện
START và STOP là khoảng bận của đường truyền ,các master khác không tác động vào đường truyền trong khoảng này.trường hợp sau khi kết thúc quá trình truyền/ nhận mà master không gửi điều kiện STOP lại gửi thêm điều kiện START 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 slave
Mô tả điền kiện START,STOP vàREPEAT START -Định dạng dữ liệu truyền:
Dữ liệu truyền trên bus I2C theo từng bit,bit dữ liệu được truyền đi tại mỗi sườn lên của xung đồng hồ trên đường dây SCL, quá trình thay đổi dữ liệu xảy ra khi SCL ở mức thấp
Trang 32số lớn nhất MSB sẽ được truyền đi đầu tiên,các bit kế tiếp sẽ được truyền đi lần lượ sau 8 xung clock dữ liệu đã được truyền đi, ở xung clock thứ 9 thì bit ACK được truyền đi báo hiệu đã nhận đủ 8 bits.thiết bị truyền sau khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc
Một byte truyền đi có kèm theo bit ACK là điều kiện bắt buộc,nằm đảm bảo quá trinh truyền nhận được chính xác khi không nhận được đúng địa chỉ hay muốn kết thúc quá thình giao tiếp, thiết bị nhận sẽ gửi một xung
Not_ACK(NACK) để báo cho thiết bị chủ biết thiết bi chủ sẽ tạo ra bit STOP để kết thúc hay lặp lại một xung START để bắt đầu quá trình mới
3.5.4 Mode(chế độ) truyền dữ liệu giữa DS1307 và 89C52
Trong giao tiếp I2C giữa DS1307 và 89C52 thì chip 89C52 đóng vai trò là một master và DS1307 đóng vai trò là slave Do chỉ có một slave và một master giao tiếp với nhau nên chỉ có 2 mode(chế độ) hoạt động giao tiếp giữa 2 chip này: Data Write(từ AT89C52 đến DS1307) và Data Read(từ DS1307 vào
AT89C52)
Trang 33
3.5.4.1 Mode Data Write(chế độ ghi dữ liệu)
Mode Data Write (chế độ truyền dữ liệu từ master đến slave) được dùng khi xác lập giá trị ban đầu cho các thanh ghi thời gian hoặc dùng để canh chỉnh thời gian cho chip DS1307.Cấu trúc truyền dữ liệu trong Mode Data Write được
mô tả như sau:
Trước hết hãy nói về địa chỉ SLA(Slave Address)của chip DS1307 trong mạng I2C,trên mạng I2C mỗi thiết bị sẽ có một địa chỉ riêng gọi là SLA.SLA được tính theo lý thuyết chuẩn I2C sẽ có giá trị tối đa là 128(do có128 thiết bị trong mạng I2C) Chip DS1307 là một slave nên cũng có một địa chỉ SLA,giá trị này được set cố định là 1101000b(68h).Do SLA của DS1307 cố định nên trong mạng I2C sẽ không thể tồn tai cùng lúc 2 chip này
Quan sát hình trên ta thấy,đầu tiên master (AT89c52) sẽ gửi điều kiên Start đến Slave(DS1307),tiếp theo sau master là 7 bit địa chỉ SLA của Slave(cố định là 1101000b).do chế độ này là Data Write nên bit W=0 và sẽ gửi kèm theo SLA.Bit ACK (A) được Slave trả về cho master sau mỗi quá trình giao tiế
Trang 34ghi địa chỉ(hay con trỏ địa chỉ) Vì vậy byte dữ liệu đầu tiên sẽ được chứa tronh thanh ghi địa chỉ của DS1307
sau byte địa chỉ thanh ghi là một dãy các byte dữ liệu được ghi vào bộ nhớ của DS1307 Byte dữ liệu đầu tiên sẽ được ghi vào thanh ghi có dịa chỉ được chỉ định bởi Word Address, sau khi ghi xong 1 byte thì Word Address tự động tăng nên các byte tiếp theo sẽ được ghi liên tiếp vào DS1307 ở các thanh ghi kế sau.số lượng byte dữ liệu cần ghi do master quyết định và không được vượt quá dung lượng bộ nhớ của DS1307 Quá trình ghi kết thúc khi master phát ra điều kiện STOP
Chú ý:sau khi ghi thành công 1 byte trhi2 DS1307 sẽ trả lời bằng một bit ACK Nếu như byte được ghi vào là byte cuối cùng thì DS1307 sẽ trả lời lại bằng
Trang 35Nguyên tắc truyền trong chế độ Data Read cơ bản cũng giống như trong chế độ truyền Data Write Trong chế độ Data Read bit R=1 sẽ được gửi kèm sau
7 bit SLA Sau đó liên tiếpcác byte dữ liệu được truyền từ DS1307 đến
AT89C52 Điểm khác biệt trong cách bố trí dữ liệu chế độ này so với chế độ Data Write là không có byte địa chỉ thanh ghi dữ liệu nào được gửi đến Tất cả các byte theo sau SLA+R đều là dữ liệu đọc từ bộ nhớ của DS1307
Lưu ý: dữ liệu được đọc tại thanh ghi được chỉ định bởi con trỏ địa chỉ ,vì vậy muốn đọc chính xác dữ liệu từ một địa chỉ nào đó, chúng ta cần thực hiện quá trình ghi giá tri cho con trỏ định địa chỉ trước khi thực hiện quá trình đọc Để ghi giá trị vào con trỏ định địa chỉ chúng ta sẽ gọi chương trinh Data Write với chỉ 1byte được ghi sau SLA+W như phần chú ý ở trên
Trang 36CHƯƠNG III: THIẾT KẾ PHẦN CỨNG 2.1 ĐO NHIỆT ĐỘ
2.1.1 Sơ đồ và chức năng từng khối
2.1.1.1 Sơ đồ khối
2.1.1.2 Chức năng của từng khối
2.1.1.2.1 Cảm biến nhiệt và khếch đại
Trong phần đo nhiệt độ thì đây là khối tạo ra sự thay đổi từ 0V đến 1.97V tương ứng với sự thay đổi nhiệt độ bên ngoài 00C đến 1000C
2.1.1.2.2 Biến đổi ADC và khối vi xử lý
Đây là khối quan 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 đổi tín hiệu tương tự thành 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ị Các quá trình này được điều khiển bởi vi xử lý AT89C52
2.1.1.2.3 Khối hiển thị sử dụng led 7 đoạn
Dùng để chốt dữ liệu và hiển thị giá trị nhiệt độ
2.1.2 SƠ ĐỒ CHI TIẾT VÀ NGUYÊN TẮC HOẠT ĐỘNG
2.1.2.1 Cảm biến nhiệt và khếch đại
KHỐI HIỂN THỊ TRÊN LED 7 ĐOẠN
CẢM BIẾN
NHIỆT VÀ
KHẾCH ĐẠI
BỘ BIẾN ĐỔI ADC VÀ KHỐI
VI XỬ LÝ
Trang 37+ Quan sát sơ đồ mach ta thấy:
Dòng điện đi vào từ Vout1 qua RI1 sẽ đi qua RF1,RF2 nên:
RF1 470
+
-U2B
LM358
5 6
7
A -
+
U2A
LM358
3 2