THIẾT kế ĐỒNG hồ điện tử dùng AT89C52 (có code và sơ đồ mạch) THIẾT kế ĐỒNG hồ điện tử dùng AT89C52 (có code và sơ đồ mạch) THIẾT kế ĐỒNG hồ điện tử dùng AT89C52 (có code và sơ đồ mạch) THIẾT kế ĐỒNG hồ điện tử dùng AT89C52 (có code và sơ đồ mạch) THIẾT kế ĐỒNG hồ điện tử dùng AT89C52 (có code và sơ đồ mạch)
Trang 1THIẾT KẾ ĐỒNG HỒ ĐIỆN TỬ
Trang 2M C L C ỤC LỤC ỤC LỤC
LỜI MỞ ĐẦU 5
CHƯƠNG 1: GIỚI THIỆU CHUNG 6
1.1 Giới thiệu sơ lược về đồ án 6
1.2 Mục đích thực hiện 6
1.3 Sơ đồ khối 6
1.4.Sơ đồ thuật toán 7
CHƯƠNG 2: GIỚI THIỆU LINH KIỆN 8
2.1 Vi điều khiển AT89C52 8
2.1.1Giới thiệu chung 8
2.1.2 Sơ đồ chân AT89C52 8
2.1.3Các ngõ tín hiệu điều khiển 10
2.1.4Tổ chức bộ nhớ 11
2.1.5Bộ nhớ dữ liệu 12
2.1.6Các chế độ hoạt động: 12
2.2 IC thời gian thực DS1307 13
2.2.1Giới thiệu chung 13
2.2.2 Sơ đồ chân DS1307 13
2.2.3 Tổ chức bộ nhớ của DS1307 và chi tiết các thanh ghi 14
2.3 LCD 15
2.3.1 Giới thiệu chung 15
2.3.2 Sơ đồ chân LCD 15
2.4 Chuẩn giao tiếp I2C 16
2.4.1 Giới thiệu chung 16
2.4.2 Đặc điểm giao tiếp I2C 17
2.4.3 START and STOP conditions 18
2.4.4 Định dạng địa chỉ thiết bị 20
Trang 32.4.5 Truyền dữ liệu trên bus I2C, chế độ Master-Slaver 21
CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG MẠCH 22
3.1 Sơ đồ nguyên lý 22
3.2Kết quả mô phỏng 22
CHƯƠNG 4: KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 24
PHỤ LỤC A 25
Trang 4DANH M C CÁC HÌNH VẼ ỤC LỤC
Hình 1-1 Hình 1-1: Sơ đồ khối hệ thống 6
Hình 1-2: Sơ đồ thuật toán 7
Hình 2-1: Sơ đồ chân AT89C52 9
Hình 2-2: Tóm tắt các vùng bộ nhớ của 8952 12
Hình 2-3: Sơ đồ chân DS1307 13
Hình 2-4: Tổ chức bộ nhớ DS1307 14
Hình 2-5: Chi tiết các thanh ghi 14
Hình 2-6: Sơ đồ chân LCD 15
Hình 2-7:Sơ đồ kết nối 17
Hình 2-8 Quá trình truyền/ nhận dữ liệu giữa chủ/ tớ 18
Hình 2-9: Điều kiện START/STOP của I2C 18
Hình 2-10: Định dạng dữ liệu truyền 19
Hình 2-11: Lưu đồ thuật toán quá trình truyền/ nhận dữ liệu 20
Hình 2-12: hướng truyền dữ liệu trên bus I2C 21
Hình 3-1: Sơ đồ nguyên lý 22
Hình 3-2: Kết quả mô phỏng 22
Trang 5LỜI MỞ ĐẦU
Hiện nay, các thiết bị điện tử ngày càng đóng vai trò quan trọng trong cuộc sống của conngười, góp phần làm cho cuộc sống trở nên tiện nghi, dễ dàng hơn Cùng với sự tiến bộcủa khoa học- kỹ thuật và sự ra đời của vi điều khiển,chúng ta có thể chế tạo ra nhiềuthiết bị nhỏ gọn hơn, chính xác hơn và mang lại hiệu quả kinh tế cao trong cuộc sống.Các thiết bị điện tử ngày nay ngày càng “ thông minh” hơn, thực hiện được đồng thờinhiều công việc hơn và tốc độ xử lý nhanh hơn một phần là nhờ vào việc ứng dụng viđiều khiển để chế tạo thiết bị
Với mong muốn ứng dụng vi điều khiển vào đời sống, em thực hiện đồ án về đề tài Thiết
kế đồng hồ thời gian thực dùng vi điều khiển, đây là đề tài mang tính ứng dụng cao trongthực tiễn đời sống hằng ngày cũng như khoa học, kỹ thuật vì tính chính xác về thời gianluôn là vấn đề quan trọng với cuộc sống loài người
Trang 6CHƯƠNG 1: GIỚI THIỆU CHUNG
1.1 Giới thiệu sơ lược về đồ án
Thiết kế đồng hồ điện tử
-Tìm hiểu về vi điều khiển và IC thời gian thực
-Thiết kế dồng hồ hiển thị ngày, tháng, năm, giờ, phút, giây, hẹn giờ
Khối Xử Lý: Dùng vi điều khiển AT89C52 lấy dữ liệu từ khối thời gian thực, lưu trữ vàxuất ra khối hiển thị, nhận tín hiệu điều khiển từ khối giao tiếp
Khối thời gian thực: Lưu trữ thời gian
Khối Hiển Thị: Hiển thị kết quả được xuất ra từ khối xử lý
Khối Giao Tiếp Phím Bấm
Khối Xử Lý
Khối Thời
Gian Thực
Khối Hiển Thị
Khối Nguồn
Trang 7Có ngắt ngoài 0
Cài đặt, hiển thị lên LCD
Cập nhật thời gian vào RTC
Khối giao tiếp phím bấm: Thực hiện việc cài đặt ngày, giờ, báo thức thông qua khối xử lý1.4.Sơ đồ thuật toán
Trang 8CHƯƠNG 2: GIỚI THIỆU LINH KIỆN
2.1 Vi điều khiển AT89C52
2.1.1Giới thiệu chung
AT89C52 là vi điều khiển do hãng Atmel sản xuất dùng cho việc điều khiển Nó đượcchế tạo theo công nghệ CMOS AT89C52 được chế tạo bằng cách sử dụng kỹ thuật bộnhớ không bốc hơi mật độ cao của hãng và tương thích với chuẩn công nghiệp MCS-51TM
về tập lệnh và các chân ra.Việc xử lý trên byte và các toán số học ở cấu trúc dữ liệu đượcthực hiện bằng chế độ truy xuất dữ liệu nhanh trên RAM nội Nó cung cấp, hỗ trợ mởrộng trên chip dùng cho những biến 1 bit như kiểu dữ liệu riêng cho phép quản lý, kiểmtra bit trực tiếp trong hệ thống điều khiển
Đặc điểm:
-Tương thích với họ MCS-51TM của Intel
- Bộ nhớ: 8Kb Flash, 256 Bytes RAM
-Độ bền:1000 lần ghi/ xóa
-Hoạt động ở tần số: 0Hz-24Mhz
- 3 chế độ khóa bộ nhớ
- Timer/ Counter: 3 bộ 16 bit
- 4 port, 32 chân I/O lập trình được
- 8 nguồn ngắt
-Kiểu chân: PDIP40
2.1.2 Sơ đồ chân AT89C52
Trang 9Hình 2-1: Sơ đồ chân AT89C52
*Vcc(40): Cung cấp nguồn điện
*GND(20): Nối đất
*Port0(32-39): Trong các thiết kế cỡ nhỏ, có chức năng như các đường I/O Trong cácthiết kễ cỡ lớn, nó dùng để kết hợp Bus địa chỉ và Bus dữ liệu
*Port1(1-8): Là port I/O dùng cho giao tiếp với các thiết bị bên ngoài( nếu cần)
*Port2(21-28): Được dùng như các đường xuất/ nhập hoặc là byte cao của bus địa chỉ đốivới các thiết kế dùng bộ nhớ mở rộng
Trang 10*Port3(10-17): Các chân của port này có nhiều chức năng như bảng sau:
P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu xuất cho port nối tiếp
P3.2 INTO\ Ngắt ngoài 0
P3.3 INT1\ Ngắt ngoài 1
P3.4 T0 Ngõ vào Timer/Counter 0
P3.5 T1 Ngõ vào Timer/Counter 1
P3.6 WR\ Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD\ Xung đọc bộ nhớ dữ liệu ngoài
2.1.3Các ngõ tín hiệu điều khiển
AT89C52 có 4 tín hiệu điều khiển:
a/ PSEN\( Program Store Enable):
PSEN\ là tín hiệu ra trên chân 29 là tín hiệu điều khiển cho phép bộ nhớ chương trình mởrộng.PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trìnhđược đọc từ EPROM qua bus dữ liệu và chốt vào thanh ghi của 8952 để giải mã PSEN\
sẽ ở mức cao nếu thực hiện chương trình trong ROM nội
b/ ALE( Address Latch Enable):
ALE là tín hiệu trên chân 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địachỉ và dữ liệu khi kết nối với IC chốt
Khi port 0 dùng trong chế độ chuyển đổi, ALE là tín hiệu được dùng để chốt byte thấpđịa chỉ vào một thanh ghi bên ngoài trong nửa đầu chu kỳ bộ nhớ Các port 0 dùng đểxuất/ nhập dữ liệu trong nửa sau chu kỳ bộ nhớ
Xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể dùng làmtín hiệu clock cho hệ thống Chân ALE dùng làm ngõ vào xung lập trình cho Eprom trong8952
c/ EA\( External Access):
Trang 11EA\ trên chân 31 có thể mắc lên mức cao hoặc thấp Nếu ở mức cao, 8952 thực hiệchương trình từ ROM nội ở địa chỉ thấp Nếu ở mức thấp, chương trình chỉ được thựchiện từ bộ nhớ mở rộng.
d/ RST( Reset):
Nằm trên chân 9 lầ ngõ Reset của 8952 Khi tín hiệu đưa lên mức cao( Ít nhất 2 chu kỳmáy), các thanh ghi trong 8952 được tải những giá trị thích hợp để khởi động hệ thốnge/ Các ngõ vào bộ dao động:
Thường được nối với một thanh anh 12Mhz và các tụ giữ như sơ đồ ở giữa hai chân 18
ROM và RAM trên chip bao gồm nhiều thành phần: Lưu trữ đa dụng, lưu trữ địa chỉ hóatừng bit, các bank thanh ghi, các thanh ghi chức năng đặc biệt
Trang 12Hình 2-2: Tóm tắt các vùng bộ nhớ của 8952
Ta cần lưu ý hai đặc tính sau:
- Các thanh ghi và các port đã được xếp trong bộ nhớ, có thể truy xuất trực tiếp giống nhưcác địa chỉ bộ nhớ khác
- Bên trong RAM nội ngăn xếp nhỏ hơn bên trong RAM ngoại so với các bộ xử lý khác2.1.5Bộ nhớ dữ liệu
AT89C52 có 256 byte bộ nhớ RAM on chip, trong đó 128 byte có cùng địa chỉ với thanhghi chức năng nhưng có cấu tạo riêng biệt
2.1.6Các chế độ hoạt động:
-Chế độ lười: CPU rơi vào trạng thái “ ngủ” trong khi các thiết bị ngoại vi vẫn hoạt độngtích cực Nội dung của RAM và vai trò của các SFR vẫn được giữ nguyên Kết thúc chế
độ lười bằng cách kích hoạt một ngắt hoặc reset phần cứng
-Chế độ hạ nguồn: Bộ dao động ngừng, lệnh hạ nguồn là lệnh cuối cùng được thực thi.RAM và SFR duy trì giá trị của nó cho đến khi hạ nguồn Kết thúc chế độ hạ nguồn bằngcách reset phần cứng, reset sẽ tạo lại giá trị cho SFR nhưng không thay đổi nội dung của
Trang 13RAM Không nên reset trước khi Vcc phục hồi mức điện áp thông thường của nó và phảigiữ đủ lâu để bộ dao động phục hồi ổn định.
2.2 IC thời gian thực DS1307
2.2.1Giới thiệu chung
DS1307 là chip đồng hồ thời gian thực, là ý nghĩa thời gian tuyệt đối mà con người đang
sử dụng, được tính bằng giờ, phút, giây DS1307 được sản xuất bởi hãng DallasSemiconducter Chip có 7 thanh ghi 8 bit chứa giá trị thời gian là thứ, ngày, tháng, năm,giờ, phút, giây DS1307 có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống đượcdùng như RAM DS1307 được đọc và ghi thông qua chuẩn giao tiếp I2C nên cấu tạo bênngoài rất đơn giản
2.2.2 Sơ đồ chân DS1307
Hình 2-3: Sơ đồ chân DS1307
1 X1 Kết nối đến thạch anh 32.768Khz làm nguồn dao động cho chip
3 VBAT Kết nối đến cực dương của pin nuôi chip có điện áp khoảng 3v
5 SDA Chân dữ liệu khi kết nối đến bus I2C
6 SCL Chân nhận xung clock đồng bộ khi kết nối đến bus I2C
Trang 142.2.3 Tổ chức bộ nhớ của DS1307 và chi tiết các thanh ghi
Hình 2-4: Tổ chức bộ nhớ DS1307
Hình 2-5: Chi tiết các thanh ghi
Trang 15Tên thanh ghi Địa chỉ thanh ghi Chức năng
Bit7(CH)=1 vô hiệu hóa bộ dao động trong DS1307
Bit6=1: Chế độ 12h; Bit6=0: chế độ 24h24h: bit5-4 chứa giá trị chục của giờ12h: Bit 4 chứa giá trị chục của giờ;
Bit5=0 AM;Bit5=1 PM
2.3 LCD
2.3.1 Giới thiệu chung
LCD là một thiết bị ngoại vi dùng để giao tiếp với người dùng Nó có khả năng hiển thịtất cả các ký tự trong bảng mã ASCII , dễ dàng đưa vào mạch ứng dụng nhiều giao thứcgiao tiếp khác nhau, tốn ít tài nguyên và giá không quá cao Do vậy, ngày nay LCD đượcdùng rất nhiều trong các ứng dụng của vi điều khiển
2.3.2 Sơ đồ chân LCD
Hình 2-6: Sơ đồ chân LCDChân Ký hiệu Mô tả
Trang 161 VSS Chân nối đất cho LCD
4 RS Chân chọn thanh ghi.Nối chân RS với logic 0 hoặc logic 1 để chọn thanh
ghi-Logic0: Bus D0-D7 sẽ nối với thanh ghi lệnh IR của LCD hoặc nối với
bộ đếm địa chỉ của LCD-Logic1: Bus D0-D7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
5 RW Chân chọn chế độ đọc/ghi Nối với logic 0 để LCD hoạt động ở chế độ
ghi; logic 1 để LCD hoạt động ở chế độ đọc
6 E Chân cho phép Sau khi các tín hiệu được đặt lên bus D0-D7, các lệnh chỉ
được chấp nhận khi có xung cho phép của E-Chế độ ghi: Dữ liệu được LCD chuyển vào thanh ghi bên trong nó khiphát hiện xung của tín hiệu chân E
-Chế độ đọc: Dữ liệu được LCD xuất ra D0-D7 khi phát hiện cạnh lên ởchân E và được LCD giữ ở bus cho đến khi chân E xuống thấp
7-14 D0-D7 Dùng để trao đổi thông tin Có hai chế độ được sử dụng:
8bit: Dữ liệu truyền trên cả đường, bit MSB là D74bit: Dữ liệu truyền trên 4 đường D4-D7, bit MSB là D7
2.4 Chuẩn giao tiếp I2C
2.4.1 Giới thiệu chung
Ngày nay, trong các hệ thống điện tử hiện đại, rất nhiều các thiết bị ngoại vi cần phải giaotiếp với các thiết bị khác- giao tiếp với người dùng Để đạt được hiệu quả cao cho phầncứng với mạch điện đơn giản, Phillips phát triển một hệ thống giao tiếp nối tiếp 2 dâyI2C(Inter-Intergrated Circuit-Bus) giao tiếp giữa các IC với nhau
I2C được rất nhiều nhà sản xuất IC trên thế giới sử dụng I2C trở thành chuẩn cho cácgiao tiếp điều khiển Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại
IC khác nhau như 8051, PIC, AVR,IC điều khiển LCD, LED
Trang 172.4.2 Đặc điểm giao tiếp I2C
Gồm 2 dây: SDA và SCL.SDA là đường truyền dữ liệu hai hướng, SCL là đường truyềnxung đồng hồ và chỉ theo một hướng Khi một thiết bị kết nối vào I2C thì chân SDA của
nó sẽ nối với SDA của bus, chân SCL nối với chân SCL
Dây SDA và SCL đều được nối với điện áp dương của nguồn thông qua một điện trở kéo.Điện trở kéo này là cần thiết 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ở Giá trị trở dao động từ 1KΩ-4.7KΩ
Hình 2-7: Sơ đồ kết nối-Các chế độ hoạt động của I2C:
Dựa vào tốc độ, ta chia làm 2 loại:
-Chế độ chuẩn hoạt động ở tốc độ 100Kbit/s
Trang 18Dù ở chế độ nào, giao tiếp I2C đều dựa vào mối quan hệ chủ/ tớ
Hình 2-8 Quá trình truyền/ nhận dữ liệu giữa chủ/ tớThiết bị chủ xác định địa chỉ của thiết bị tớ, thiết bị chủ sẽ quyết định đọc hay ghi vàothiết bị tớ
Thiết bị chủ gửi dữ liệu đến thiết bị tớ
Thiết bị chủ kết thúc quá trình truyền dữ liệu
Khi thiết bị chủ muốn nhận dữ liệu từ thiết bị tớ, quá trình diễn ra tương tự, chỉ khác làthiết bị chủ sẽ nhận dữ liệu từ thiết bị tớ
2.4.3 START and STOP conditions
Đây là điều kiện bắt buộc phải có khi thiết bị chủ muốn thiết lập giao tiếp với thiết bịkhác trong mạng I2C START là điều kiện khởi đầu, còn STOP báo hiệu kết thúc mộtgiao tiếp Điều kiện START và STOP của I2C được mô tả như sau:
Hình 2-9: Điều kiện START/STOP của I2C
Trang 19Khi chưa thực hiện việc giao tiếp, SDA và SCL đều ở mức cao Lúc này bus I2C đượccoi là rỗi, sẵn sàng cho việc giao tiếp
Điều kiện START: Chuyển đổi trạng thái từ high xuống low trên đường SDA khi SCL ởmức cao
Điều kiện STOP: Chuyển đổi trạng thái từ low lên high trên đường SDA khi SCL ở mứccao
Hai điều kiện trên được tạo bởi thiết bị chủ, sau tín hiệu START, bus I2C sẽ được coinhư đang ở trạng thái làm việc BUS I2C sẽ rỗi sau khi nhận tín hiệu STOP từ thiết bị chủ2.4.4 Định dạng dữ liệu truyền
Dữ liệu được truyền theo từng bit,bit dữ liệu được truyền tại phần dương của xung đồng
hồ trên dây SCL, quá trình thay đổi bit dữ liệu xảy ra khi SCL ở mức thấp
Hình 2-10: Định dạng dữ liệu truyềnMỗi byte dữ liệu được truyền có độ dài 8bits Số lượng byte có thể truyền trong một lần
là không hạn chế Mỗi byte được truyền sẽ chờ tín hiệu phản hồi là một bit ACK để báohiệu nhận dữ liệu.Mỗi lần I2C sẽ truyền đi 8 bits và nhận lại 1 bit, bit có trọng số cao nhất
sẽ truyền đi đầu tiên, các bit được truyền đi lần lượt Sau 8 xung clock trên SCL, 8 bits dữliệu đã được truyền đi Sau khi thiết bị nhận đủ 8 bit dữ liệu sẽ kéo SDA xuống mức thấptạo xung ACK ứng với xung clock thứ 9 trên SDA để báo hiệu nhận đủ 8 bits Thiết bịtruyền khi nhận bit ACK sẽ tiếp tục quá trình truyền dữ liệu hoặc kết thúc
Trang 20Buffer=data bit SDA=data bit
Buffer full
Send ACK
Read Buffer Next byte or stop
Hình 2-11: Lưu đồ thuật toán quá trình truyền/ nhận dữ liệu
Một byte truyền đi có kèm theo ACK là điều kiện bắt buộc, nhằm đảm bảo cho quá trìnhtruyền nhận được diễn ra chính xác Khi không nhận đúng địa chỉ hay muốn kết thúc quátrình giao tiếp, thiết bị gửi xung Not-ACK( SDA mức cao)
Clock=8
ACK
Trang 212.4.4 Định dạng địa chỉ thiết bị
Mỗi thiết bị tham gia vào chuẩn giao tiếp I2C đều có một giá trị riêng có độ dài 7 bit,Trên một bit I2C ta có thể phân biệt 128 thiết bị Khi thiết bị chủ muốn giao tiếp với cácthiết bị khác trên bus I2C, nó sẽ gửi 7 bit địa chỉ của thiết bị đó ra bus ngay sau xungSTART Byte đầu tiên được gửi sẽ gồm 7 bit địa chỉ và bit thứ 8 điều khiển hướngtruyền Mỗi thiết bị ngoại vi có một địa chỉ riêng do nhà sản xuất quy định, địa chỉ đó cóthể cố định hoặc thay đổi Bit điều khiển hướng sẽ quy định chiều truyền dữ liệu.Bit=0,byte dữ liệu tiếp theo được truyền từ chủ đến tớ Bit=0, byte dữ liệu tiếp theo được truyền
từ tớ đến chủ Việc thiết lập giá trị bit do thiết bị chủ thực hiện, thiết bị tớ sẽ tùy theo giátrị đó mà có sự phản hồi tương ứng
2.4.5 Truyền dữ liệu trên bus I2C, chế độ Master-Slaver
Việc truyền dữ liệu diễn ra giữa hai thiết bị chủ-tớ; Dữ liệu truyền có thể theo hai hướngkhác nhau Hướng truyền được quy định bởi bit thứ 8 trong byte đầu tiên được truyền đi
Hình 2-12: hướng truyền dữ liệu trên bus I2CChế độ giao tiếp Master-Slaver là một chế độ cơ bản trong bus I2C, toàn bộ bus đượcquản lý bởi một Master duy nhất để không xảy ra tình trạng xung đột bus hay mất đồng
bộ xung clock
Trang 22CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG MẠCH
3.1 Sơ đồ nguyên lý
Hình 3-1: Sơ đồ nguyên lý
Trang 23Hình 3-2: Kết quả mô phỏng
CHƯƠNG 4: KẾT LUẬN
Kết luận và hướng phát triển đề tài:
Đồng hồ điện tử có nhiều ứng dụng thực tế trong cuộc sống và được dùng để hiển thị thứ,ngày, tháng, năm, giờ phút giây một cách chính xác, trực quan phục vụ đời sống con người
Hướng phát triển đề tài: Từ đồng hồ điện tử, ta có thể phát triển lên thành lịch vạn niên đểhiển thị thêm lịch âm dương, đo nhiệt độ, độ ẩm cũng như báo thức để phục vụ tốt hơn cho cuộc sống con người Đây là một ứng dụng cần thiết và không thể thiếu trong cuộc sống
Trang 24TÀI LI U THAM KH O ỆU THAM KHẢO ẢO
[1] Giáo trình họ vi điều khiển 8051- Tống Văn On
[2]Bài giảng vi xử lý, vi điều khiển- Đại học Kỹ Thuật Công Nghiệp