MỤC LỤC 2
LỜI NÓI ĐẦU 3
CHƯƠNG 1 . PHÂN TÍCH BÀI TOÁN 4
1.1.Khảo sát và phân tích bài toán 4
1.2. Lựa chọn giải pháp 7
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 8
2.1. Sơ đồ tổng quát 8
2.2. Sơ đồ CallGraph 9
2.3. Sơ đồ đặc tả 9
2.4. Sơ đồ thuật toán 10
2.5.Các module trong hệ thống 12
2.6.Lựa chọn linh kiện 14
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG 35
3.1.Thiết kế phần cứng 35
3.2.Thiết kế phần mềm 37
3.3.Kết quả mô phỏng 47
3.4.Mạch thi công thực tế 47
KẾT LUẬN 48
Danh mục tài liệu tham khảo 48
50 trang |
Chia sẻ: lethao | Lượt xem: 3766 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Môn học hệ thống nhúng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iây , thứ, ngày , tháng, năm. Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày,bao gồm cả việc tự động nhảy năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM.
Để không phải điều chình lại thời gian vào những lúc bị mất nguồn, có thể nối thêm 1pin 3V vào chân số 3 của IC DS1307 (sao cho chân(+) của pin nối vào IC và chân (–) của pin nối xuống đất). Hai chân 1 và 2 của DS1307 được nối vào bộ dao động thạch anh có tần số 32,768KHz để tạo dao động cho IC hoạt động.
2.5.4.Khối hiển thị
Sử dụng LCD 16x2, hiển thị thời gian linh hoạt, hiển thị được nhiều ký tự, giúp cho việc quan sát thời gian khi đồng hồ chạy bình thường cũng như lúc cài đặt trực quan và linh hoạt hơn.
2.5.5.Khối giao tiếp phím bấm
Gồm 3 nút ấn, hoạt động tương tự nút Reset. Khi ấn nút thì các chân vi điều khiển được nối với phím bấm đưa điện áp xuống đất lúc này điện áp tại các chân vi điều khiển bằng 0 làm cho vi điều khiển nhận biết được sự thay đổi này và thực hiện lệnh cần điều khiển. Nút thứ ba có tác dụng thiết đặt chế độ cho vi điều khiển làm việc.
2.6.Lựa chọn linh kiện
2.6.1.Vi điều khiển AT89C51
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương tự như nhau. Ở đây giới thiệu IC AT89C51 là một họ IC vi điều khiển do hãng Intel của Mỹ sản xuất. Chúng có các đặc điểm chung như sau:
+ 4K Bytes Flash rom.
+ 128 Bytes Ram.
+ 4 port 8 bit.
+ 2 bộ định thời 16 bit.
+ Có port nối tiếp.
+ Có thể mở rộng bộ nhớ chương trình ngoài 64 K Byte.
+ Bộ xử lý bit.
AT89C51 là một bộ vi xử lý 8 bit, loại CMOS, có tốc độ cao và công suất thấp với bộ nhớ Flash có thể lập trình được. Nó được sản xuất với công nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel, và tương thích với họ MCS-51TM về chân ra và tập lệnh.
AT89C51 có các đặc trưng cơ bản như sau: 4 K byte Flash, 128 byte RAM, 32 đường xuất nhập, hai bộ định thời/đếm 16-bit, một cấu trúc ngắt hai mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip.
AT89C51 được thiết kế với logic tĩnh cho hoạt động có tần số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo.
Hình ảnh AT89C51
Sơ đồ khối của AT89C51
2.6.1.1. Mô tả các chân
Sơ đồ các chân
AT89C51 có tất cả 40 chân với các chức năng như sau:
Vcc (40): Chân cung cấp điện (5V).
GND (20): Chân nối đất (0V).
Port 0 (32-39):
Port 0 là port xuất nhập 8-bit hai chiều.
Port 0 còn được cấu hình làm bus địa chỉ (byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài.
Port 0 cũng nhận các byte mã trong khi lập trình cho Flash và xuất các byte mã trong khi kiểm tra chương trình (Các điện trở kéo lên bên ngoài được cần đến trong khi kiểm tra chương trình).
Port 1(1-8) :
Port 1 là port xuất nhập 8-bit hai chiều. Port 1 cũng nhận byte địa chỉ thấp trong thời gian lập trình cho Flash.
Port 2 (21-28):
Port 2 là port xuất nhập 8-bit hai chiều.
Port 2 tạo ra các byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16-bit. Trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8-bit, Port 2 phát các nội dung của thanh ghi chức năng đặc biệt P2. Port 2 cũng nhận các bít địa chỉ cao và vài tín hiệu điều khiển trong thời gian lập trình cho Flash và kiểm tra chương trình.
Port 3 (10-17) :
Port 3 là Port xuất nhập 8-bit hai chiều. Port 3 cũng còn làm các chức năng khác của AT89C51. Các chức năng này được liệt kê như sau:
Chân
Tên
Chức năng
3.0
RxD
Ngõ vào Port nối tiếp
3.1
TxD
Ngõ ra Port nối tiếp
3.2
Ngõ vào ngắt ngoài 0
3.3
Ngõ vào ngắt ngoài 1
3.4
T0
Ngõ vào bên ngoài của bộ định thời 1
3.5
T1
Ngõ vào bên ngoài của bộ định thời 0
3.6
Điều khiển ghi bộ nhớ dữ liệu ngoài
3.7
Điều khiển đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và kiểm tra chương trình.
RST (9):
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 hoat động sẽ reset AT89C51.
RST
Mạch reset tác động bằng tay và tự động reset khi khởi động máy
ALE/ (30):
ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy xuất bộ nhớ ngoài. Chân này cũng làm ngõ vào xung lập trình () trong thời gian lập trình cho Flash.
Khi hoạt động bình thường, xung ngõ ra ALE luôn có tần số không đổi là 1/6 tần số của mạch dao động, có thể được dùng cho các mụch đích định thời từ bên ngoài vµ tạo xung clock. Tuy nhiên, lưu ý là một xung ALE sẽ bị bỏ qua trong mỗi một chu kỳ truy xuất bộ nhớ dữ liệu ngoài.
Khi cần, hoạt động ALE có thể được vô hiệu hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ 8Eh. Khi bit này được set, ALE chỉ tích cực trong thời gan thực hiện lệnh MOVX hoặc MOVC. Ngược lại, chân này sẽ được kéo lên 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.
(29):
(Program Store Enable) là xung điều khiển truy xuất bộ nhớ chương trình ngoài. Khi AT89C52 đang thực thi chương trình từ bộ nhớ chương trình ngoài, được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài.
/Vpp (31):
(External Access Enable) là chân cho phép truy xuất bộ nhớ chương trình ngoài (bắt đầu từ địa chỉ từ 0000H đến FFFFH).
= 0 cho phép truy xuất bộ nhớ chương trình ngoài, ngược lại =1 sẽ thực thi chương trình bên trong chip.
Tuy nhiên, lưu ý rằng nếu bit khoá 1 (lock-bit 1) được lập trình, sẽ được chốt bên trong khi reset.
Chân này cũng nhận điện áp cho phép lập trình Vpp=12V khi lập trình Flash (khi đó điện áp lập trình 12V được chọn).
XTAL1 và XTAL2:
XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại đảo của mạch dao động, được cấu hình để dùng như một bộ dao động trên chip.
Hình 8: Xung clock
Không có yêu cầu nào về chu kỳ nhiệm vụ của tín hiệu xung clock bên ngoài do tín hiệu này phải qua một flip-flop chia hai trước khi đến mạch tạo xung clock bên trong, tuy nhiên các chi tiết kỹ thuật về thời gian mức thấp và mức cao, điện áp cực tiểu và cực đại cần phải được xem xét.
2.6.1.2. Các chế độ đặc biệt
2.6.1.2.1.Chế độ nghỉ
Trong chế độ nghỉ, CPU tự đi vào trạng thái ngủ trong khi tất cả các ngoại vi bên trong chip vẫn tích cực. Chế độ này được điều khiển bởi phần mềm. Nội dung của RAM trên chip và của tất cả các thanh ghi chức năng đặc biệt vẫn không đổi trong khi thời gian tồn tại chế độ này. Chế độ nghỉ có thể được kết thúc bởi một ngắt bất kỳ nào được phép hoặc bằng cách reset cứng.
Ta cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, chip vi điều khiển sẽ tiếp tục bình thường việc thực thi chương trình từ nơi chương trình bị tạm dừng, trong vòng 2 chu kỳ máy trước khi giải thuật reset mềm nắm quyền điều khiển.
Ở chế độ nghỉ, phần cứng trên chip cẫm truy xuất RAM nội nhưng cho phép truy xuất các chân của các port. Để tránh khả năng có một thao tác ghi không mong muốn đến một chân port khi chế độ nghỉ kết thúc bằng reset, lệnh tiếp theo yêu cầu chế độ nghỉ không nên là lệnh ghi đến chân port hoặc đến bộ nhớ ngoài.
2.6.1.2.2. Chế độ nguồn giảm
Trong chế độ này, mạch dao động ngừng hoạt động và lệnh yêu cầu chế độ nguồn giảm là lệnh sau cùng được thực thi. RAM trên chip và các thanh ghi chức năng đặc biệt vẫn duy trì các giá trị của chúng cho đến khi chế độ nguồn giảm kết thúc. Chỉ có một cách ra khỏi chế độ nguồn giảm, đó là reset cứng.
Việc reset sẽ xác định lại các thanh ghi chức năng đặc biệt nhưng không làm thay đổi RAM trên chip. Việc reset không nên xảy ra (chân reset ở mức tích cực) trước khi Vcc được khôi phục lại mức điện áp bình thường và phải kéo dài trạng thái tích cực của chân reset đủ lâu để cho phép mạch dao động hoạt động trở lại và đạt trạng thái ổn định.
Trạng thái của các chân trong thời gian tồn tại chế độ nghỉ va chế độ nguồn giảm được cho trong bảng sau:
Chế độ
Bộ nhớ chương trình
ALE
PSEN
PORT 0
PORT 1
PORT 2
PORT 3
Nghỉ
Bên trong
1
1
Dữ liệu
Dữ liệu
Dữ liệu
Dữ liệu
Nghỉ
Bên ngoài
1
1
Thả nổi
Dữ liệu
Dữ liệu
Dữ liệu
Nguồn giảm
Bên trong
0
0
Dữ liệu
Dữ liệu
Dữ liệu
Dữ liệu
Bên ngoài
0
0
Thả nổi
Dữ liệu
Dữ liệu
Dữ liệu
2.6.1.3. Các bít khoá bộ nhớ chương trình
Trên chip có ba bit khoá, các bít này có thể không cho phép lập trình hoặc cho phép lập trình, các bit này cho ta thêm một số đặc trưng nữa của AT89C51 như sau.Khi bit khoá 1 LB1 được lập trình, mức logic ở chân được lấy mẫu và được chốt trong khi reset. Nếu việc cấp nguồn cho chip không có công dụng reset, mạch chốt được khởi động bằng một giá trị ngẫu nhiên và giá trị này được duy trì cho đến khi có tác động reset. Điều cần thiết là giá trị được chốt của phải phù hợp vơi mức logic hiện hành ở chân này.
Các bit khóa chương trình
Loại bảo vệ
Chế độ
LB1
LB2
LB3
1
U
U
U
Không có đặc trưng khóa chương trình
2
P
U
U
Các lệnh MOVC được thực thi từ bộ nhớ chương trình ngoài không được phép tìm nạp lệnh từ bộ nhớ nội, được lấy mẫu và được chốt khi reset, hơn nữa việc lập trình trên Flash bị cấm
3
P
P
U
Như chế độ 2, cấm thêm việc kiểm tra chương trình
4
P
P
P
Như chế độ 3, cấm thêm việc thực thi chương trình ngoài
2.6.2.IC thời gian thực DS1307
2.6.2.1.Giới thiệu chung về DS1307:
IC thời gian thực là họ vi điều khiển của hãng dalat. DS1307 có một số đặc trưng cơ bản sau:
DS1307 là IC thời gian thực với nguồn cung cấp nhỏ dùng để cập nhật thời gian và ngày tháng . - SRAM : 56 bytes. - Địa chỉ và dữ liệu được truyền nối tiếp qua 2 đường bus 2 chiều. - DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng ngắt với nguồn pin cung cấp 3V: + DS1307 có 7 bytes dữ liệu nằm từ địa chỉ 0x00 tới 0x06, 1 byte điểu khiển, và 56 bytes lưu trữ ( dành cho người sủ dụng ). + Khi xử lý dữ liệu từ DS1307, họ đã tự chuyển cho ta về dạng số BCD, ví dụ như ta đọc được dữ liệu từ địa chỉ 0x04 (tương ứng với Day- ngày trong tháng) và tại 0x05 (tháng) là 0x15, 0x11. + Lưu ý đến vai trò của chân SQW/OUT. Đây là chân cho xung ra của DS1307 có 4 chế độ 1Hz, 4.096HZ, 8.192Hz, 32.768Hz... các chế độ này đuợc quy định bởi các bít của thanh ghi Control Register (địa chỉ 0x07 ). + Địa chỉ của DS1307là 0xD0.
Cơ chế hoạt động : DS1307 hoạt động với vai trò slave trên đường bus nối tiếp.Việc truy cập được thi hành với chỉ thị start và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị stop đươc thực thi.
IC thời gian thực DS1307
2.6.2.2.Cơ chế hoạt động và chức năng của DS1307:
Vcc: nối với nguồn , GND: đất X1,X2: nối với thạch anh 32,768 kHz Vbat: đầu vào pin 3V SDA: chuỗi data , SCL: dãy xung clock SQW/OUT: xung vuông/đầu ra driver
DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian và ngày tháng với 56 bytes SRAM. Địa chỉ và dữ liệu được truyền nối tiếp qua 2 đường bus 2 chiều. Nó cung cấp thông tin về giờ, phút, giây, thứ, ngày, tháng, năm. Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày, bao gồm cả việc tự động nhảy năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM. DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng ngắt với nguồn pin cung cấp.
DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập được thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi.
Sơ đồ khối của DS1307:
*Mô tả hoạt động của các chân:
Vcc, GND: nguồn một chiều được cung cấp tới các chân này. Vcc là đầu vào 5V. Khi 5V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu có thể đọc và viết. Khi pin 3 V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbat thì quá trình đọc và viết không được thực thi, tuy nhiên chức năng timekeeping không bị ảnh hưởng bởi điện áp vào thấp. Khi Vcc nhỏ hơn Vbat thì RAM và timekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều 3V).
Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V. Điện áp pin phải được giữ trong khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị.
SCL(serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trên đường dây nối tiếp.
SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp. Chân SDA thiết kế theo kiểu cực máng hở, đòi hỏi phải có một điện trở kéo trong khi hoạt động.
SQW/OUT(square wave/output driver) - khi được kích hoạt thì bit SQWE được thiết lập 1 chân SQW/OUT phát đi 1 trong 4 tần số (1Hz, 4kHz, 8kHz, 32kHz). Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có một điện trở kéo trong. Chân này sẽ hoạt động khi cả Vcc và Vbat được cấp.
X1,X2: được nối với một thạch anh tần số 32,768kHz. Là một mạch tạo dao động ngoài, để hoạt động ổn định thì phải nối thêm 2 tụ 33pF .
Cũng có DS1307 với bộ tạo dao động trong tần số 32,768kHz, với cấu hình này thì chân X1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở.
2.6.2.3.Sơ đồ địa chỉ RAM và RTC:
Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte thanh ghi thích hợp. Thời gian và ngày tháng được thiết lập cũng thông qua các byte thanh ghi này bằng cách viết vào đó những giá trị thích hợp. Nội dung của các thanh ghi dưới dạng mã BCD (binary coded decreaseimal). Bit 7 của thanh ghi seconds là bit clock halt (CH), khi bit này được thiết lập 1 thì dao động disable, khi nó được xoá về 0 thì
dao động được enable. Chú ý: enable dao động trong suốt quá trình cấu hình thiết lập (CH=0).Thanh ghi thời gian thực được mô tả như sau:
DS1307 có thể chạy ở chế độ 24h cũng như 12h. Bit thứ 6 của thanh ghi hours là bit chọn chế độ 24h hoặc 12h, khi bit này ở mức cao thì chế độ 12h được chọn. Ở chế độ 12h thì bit 5 là bit AM/PM với mức cao là là PM. Ở chế độ 24h thì bit 5 là bit chỉ 20h (từ 20h đến 23h).
Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì dòng thời gian được truyền tới một thanh ghi thứ 2, thông tin thời gian sẽ được đọc từ thanh ghi thứ cấp này, trong khi đó đồng hồ vẫn tiếp tục chạy. Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của chân SQW/OUT :
OUT(output control): bit này điều khiển mức ra của chân SQW/OUT khi đầu ra xung vuông là disable. Nếu SQWE = 0 thì mức logic ở chân SQW/OUT sẽ là 1 nếu OUT=1 và OUT = 0 nếu OUT = 0 .
SQWE(square wave enable): bit này được thiết lập 1 sẽ enable đầu ra của bộ tạo dao động. Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1 và RS0.
DS1307 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu, thiết bị gửi dữ liệu lên bus được gọi là bộ phát và thiết bị nhận gọi là bộ thu, thiết bị điều khiển quá trình này gọi là master, thiết bị nhận sự điều khiển của master gọi là slave. Các bus nhận sự điều khiển của master, là thiết bị phát ra chuỗi xung clock(SCL),master sẽ điều khiển sự truy cập bus, tạo ra các chỉ thị START và STOP.
2.6.2.4.Sự truyền nhận dữ liệu trên chuỗi bus 2 dây :
Tuỳ thuộc vào bit R/ w mà 2 loại truyền dữ liệu sẽ được thực thi:
Truyền dữ liệu từ master truyền và slave nhận: Master sẽ truyền byte đầu tiên là địa chỉ của slave. Tiếp sau đó là các byte dữ liệu, slave sẽ gửi lại bit thông báo đã nhận được (bit acknowledge) sau mỗi byte dữ liệu nhận được, dữ liệu sẽ truyền từ bit có giá trị nhất (MSB).
Truyền dữ liệu từ slave và master nhận: byte đầu tiên (địa chỉ của slave) được truyền tới slave bởi master. Sau đó slave sẽ gửi lại master bit acknowledge, tiếp theo đó slave sẽ gửi các byte dữ liệu tới master. Master sẽ gửi cho slave các bit acknowledge sau mỗi byte nhận được trừ byte cuối cùng, sau khi nhận được byte cuối cùng thì bit acknowledge sẽ không được gửi. Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP. sự truyền sẽ kết thúc với chỉ thị STOP hoặc chỉ thị quay vòng START. Khi chỉ thị START quay vòng thì sự truyền chuỗi dữ liệu tiếp theo được thực thi và các bus vẫn chưa được giải phóng. Dữ
liệu truyền luôn bắt đầu bằng bit MSB.
DS1307 có thể hoạt động ở 2 chế độ sau:
Chế độ slave nhận( chế độ DS1307 ghi): chuỗi dữ liệu và chuỗi xung clock sẽ được nhận thông qua SDA và SCL. Sau mỗi byte được nhận thì 1 bit acknowledge sẽ được truyền, các điều kiện START và STOP sẽ được nhận dạng khi bắt đầu và kết thúc một truyền 1 chuỗi, nhận dạng địa chỉ được thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit chiều. Byte địa chỉ là byte đầu tiên nhận được sau khi điều kiện START được phát ra từ master. Byte địa chỉ có chứa 7 bit địa chỉ của DS1307, là 1101000, tiếp theo đó là bit chiều (R/ w) cho phép ghi khi nó bằng 0, sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ phát đi 1 tín hiệu acknowledge lên đường SDA. Sau khi DS1307 nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tới DS1307, tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được, sau đó master sẽ truyền điều kiện STOP khi việc ghi hoàn thành.
Chế độ slave phát ( chế độ DS1307 đọc): byte đầu tiên slave nhận được tương tự như chế độ slave ghi. Tuy nhiên trong chế độ này thì bit chiều lại chỉ chiều truyền ngược lại. Chuỗi dữ liệu được phát đi trên SDA bởi DS 1307 trong khi chuỗi xung clock vào chân SCL. Các điều kiện START và STOP được nhận dạng khi bắt đầu hoặc kết thúc truyền một chuỗi. byte địa chỉ nhận được đầu tiên khi master phát đi điều kiện START. Byte địa chỉ chứa 7 bit địa chỉ của slave và 1 bit chiều cho phép đọc là 1. Sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ nhận 1 bit acknowledge trên đường SDA. Sau đó DS1307 bắt đầu gửi dữ liệu tới địa chỉ con trỏ thanh ghi thông qua con trỏ thanh ghi. Nếu con trỏ thanh ghi không được viết vào trước khi chế độ đọc được thiết lập thì địa chỉ đầu tiên được đọc sẽ là địa chỉ cuối cùng chứa trong con trỏ thanh ghi . DS1307 sẽ nhận được một tín hiệu Not Acknowledge khi kết thúc quá trình đọc. Đọc dữ liệu - chế độ slave phát.
• Thời gian thực hiện việc đọc, ghi dữ liệu của DS1307: sơ đồ đồng bộ:
2.6.3. LCD 16x2
Giống như led 7 thanh, LCD là một thiết bị ngoại vi dùng để giao tiếp với người dùng, so với led 7 thanh thì LCD có ưu điểm là hiển thị được tất cả các kí tự trong bảng mã ascci, trong khi đó led 7 thanh chỉ hiển thị được một số kí tự, nhưng LCD lại có nhược điểm là giá thành cao và khoảng cách nhìn gần.
Hình ảnh LCD 16x2
Chức năng của các chân LCD :
Chân
Kí Hiệu
Mức Logic
I/O
Chức Năng
1
Vss
-
-
Nguồn (GND)
2
Vcc
-
-
Nguồn (+5V)
3
Vee
-
-
Chỉnh độ tương phản
4
RS
0/1
I
0=Nhập lệnh
1=Nhập dữ liệu
5
R/W
0/1
I
0=Ghi dữ liệu
1=Đọc dữ liệu
6
E
1,1 0
I
Tín hiệu cho phép
7
DB0
0/1
I/O
Bít dữ liệu 0
8
DB1
0/1
I/O
Bít dữ liệu 1
9
DB2
0/1
I/O
Bít dữ liệu 2
10
DB3
0/1
I/O
Bít dữ liệu 3
11
DB4
0/1
I/O
Bít dữ liệu 4
12
DB5
0/1
I/O
Bít dữ liệu 5
13
DB6
0/1
I/O
Bít dữ liệu 6
14
DB7
0/1
I/O
Bít dữ liệu 7
15
Lamp-
-
-
Đèn LCD
16
Lamp+
-
-
Đèn LCD
Các chân Vcc, Vss và Vee:
Chân Vcc cấp dương nguồn 5V, chân Vss nối đất, chân Vee được dùng để điều khiển độ tương phản của màn hình LCD.
RS ( Register select):
Khi ở mức thấp, chỉ thị được truyền đến LCD như xoá màn hình ,vị trí con trỏ ….Khi ở mức cao, kí tự được truyền đến LCD.
R/W (Read/Write):
Dùng để xác định hướng của dữ liệu được truyền giữa LCD và vi điều khiển. Khi nó ở mức thấp dữ liệu được ghi đến LCD và khi ở mức cao, dữ liệu được đọc từ LCD. Nếu chúng ta chỉ cần ghi dữ liệu lên LCD thì chúng ta có thể nối chân này xuống GND để tiết kiệm chân.
E (Enable):
Cho phép ta truy cập/xuất đến LCD thông qua chân RS và R/W. Khi chân E ở mức cao (1) LCD sẽ kiểm tra trạng thái của 2 chân RS và R/W và đáp ứng cho phù hợp. Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liêu. Xung này phải rộng tối thiểu là 450ns. Còn khi chân E ở mức thấp (0), LCD sẽ bị vô hiệu hoá hoặc bỏ qua tín hiệu của 2 chân RS và R/W.
Các chân D0 - D7:
Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD. Các kí tự được truyền theo mã tương ứng trong bảng mã ascii. Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ.
LCD có 2 chế độ giao tiếp:
Chế độ 4 bit (chỉ dùng 4 chân D4 đến D7 để truyền dữ liệu) và chế độ 8 bit (dùng cả 8 chân dữ liệu từ D0 đến D7), ở chế độ 4 bit, khi truyền 1 byte, chúng ta sẽ truyền nửa cao của byte trước, sau đó mới truyền nửa thấp của byte.
Trước khi truyền các kí tự ra màn hình LCD ta cần thiết lập cho LCD như chọn chế độ 4 bit hoặc 8 bit, 1 dòng hay 2 dòng ,bật/tắt con trỏ… Dưới đây là bảng tập lệnh của LCD :
Bảng Tập Lệnh Của LCD
Mã (Hex)
Lệnh đến thanh ghi của LCD
1
Xóa màn hình hiển thị
2
Trở về đầu dòng
4
Giả con trỏ (dịch con trỏ sang trái)
5
Tăng con trỏ (dịch con trỏ sang phải)
6
Dịch hiển thị sang trái
7
Dịch hiển thị sang phải
8
Tắt con trỏ, tắt hiển thị
A
Tắt hiển thị, bật con trỏ
C
Bật hiển thị, tắt con trỏ
E
Bật hiển thị, nhấp nháy con trỏ
F
Tắt con trỏ, nhấp nháy con trỏ
10
Dịch vị trí con trỏ sang trái
14
Dịch vị trí con trỏ sang phải
18
Dịch toàn bộ vị trí hiển thị sang trái
1C
Dịch toàn bộ vị trí hiển thị sang phải
80
Ép con trỏ về đầu dòng thứ nhất
C0
Ép con trỏ về đầu dòng thứ hai
38
Hai dòng và ma trận 5x7
Để đọc thanh ghi lệnh,ta phải đặt RS=0 và R/W =1 và xung cao xuống thấp cho bít E. Sau khi đọc thanh ghi lệnh,nếu bit D7(cờ bận ) ở mức cao thì LCD bận, không có thông tin hay lệnh nào được xuất đến nó. Khi D7=0 mới có thể gửi lệnh hay dữ liệu đến LCD. Chúng ta nên kiểm tra bit cờ bận trước khi ghi thông tin lên LCD.
2.6.4.IC ổn áp 7805
Với những mạch điện không đòi hỏi độ ổn định của điện áp quá cao, sử dụng IC ổn áp thường được người thiết kế sử dụng vì mạch điện khá đơn giản. Các loại ổn áp thường được sử dụng là IC 78xx, với xx là điện áp cần ổn áp. Ví dụ 7805 ổn áp 5V, 7812 ổn áp 12V. Việc dùng các loại IC ổn áp 78xx tương tự nhau, dưới đây là minh họa cho IC ổn áp 7805:
Sơ đồ phía dưới IC 7805 có 3 chân: * Chân số 1 là chân IN. * Chân số 2 là chân GND.
* Chân số 3 là chân OUT.
Ngõ ra OUT luôn ổn định ở 5V dù điện áp từ nguồn cung cấp thay đổi. Mạch này dùng để bảo vệ những mạch điện chỉ hoạt động ở điện áp 5V (các loại IC thường hoạt động ở điện áp này). Nếu nguồn điện có sự cố đột ngột: điện áp tăng cao thì mạch điện vẫn hoạt động ổn định nhờ có IC 7805 vẫn giữ được điện áp ở ngõ ra OUT 5V không đổi.
Mạch trên lấy nguồn một chiều từ một máy biến áp với điện áp từ 7V đến 9V để đưa vào ngõ IN. Khi kết nối mạch điện, do nhiều nguyên nhân, người dùng dễ nhầm lẫn cực tính của nguồn cung cấp khi đấu nối vào mạch, trong trường hợp này rất dễ ảnh hưởng đến các linh kiện trên board mạch. Vì lí do đó một diode được lắp thêm vào mạch, diode đảm bảo cực tính của nguồn cấp cho mạch theo một chiều duy nhất, và nguời dùng cũng không cần quan tâm đến cực tính của nguồn khi nối vào ngõ IN nữa.
2.6.5. Tụ điện
Tụ điện là linh kiện điện tử thụ động được sử dụng rất rộng rãi trong các mạch điện tử, chúng được sử dụng trong các mạch lọc nguồn, lọc nhiễu, mạch truyền tín hiệu xoay chiều, mạch tạo dao động.Trong mạch này ta sẽ sử dụng một tụ hóa cho khối reset, và hai tụ gốm cho khối dao động.
Tụ gốm Tụ hóa
2.6.6.Điện trở
Trong thiết bị điện tử điện trở là một linh kiện quan trọng, chúng được làm từ hợp chất cacbon và kim loại tuỳ theo tỷ lệ pha trộn mà người ta tạo ra được các loại điện trở có trị số khác nhau.
Hình dạng của điện trở trong thiết bị điện tử.
2.6.7.Nút bấm button
Trong mạch này ta sử dụng 3 nút bấm để điều khiển menu, tăng , giảm cho việc cài đặt giờ , ngày, tháng, năm.
Nút bấm
2.6.8.Biến trở
Trong mạch ta sẽ sử dụng một biến trở 10k để điểu chỉnh độ tương phản của LCD.
Biến trở
2.6.9.Thạch anh
Trong mạch ta sẽ sử dụng hai thạch anh, một loại 12Mhz để tạo dao động cho AT89C51, một loại 32,768 Mhz để tạo dao động cho DS1307.
Thạch anh 12 Mhz Thạch anh 32,768 Mhz
2.6.10.Pin CMOS 3V
Ta sẽ sử dụng một đế và pin CMOS 3V để làm nguồn nuôi cho DS1307 để nó có thể lưu được giờ khi mất điện nguồn cung cấp cho mạch.
Pin CMOS
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG
3.1.Thiết kế phần cứng
Hệ thống sẽ gồm 5 khối như đã phân tích ở chương hai, ta sẽ có sơ đồ nguyên lý như sau:
Trên cơ sở sơ đồ nguyên lý, vẽ mạch in trên Orcad và có kết quả như sau:
Mạch vẽ trên orcad
Mạch in một lớp
3.2.Thiết kế phần mềm
Phần mềm cần thực hiện các chức năng chính như sau :
Hiển thị thời gian bình thường: khi khởi tạo,
Các file đính kèm theo tài liệu này:
- Bao cao Do an He Thong Nhung.doc