Báo cáo quá trình thiết kế và thi công Đồng hồ thời gian thực RTC (Real Time Clock)
lượt xem 224
download
Đây là ứng dụng sử dụng vi điều khiển PIC để thiết kế một đồng hồ điện tử treo tường hoặc để bàn. Sau đây là một vài điểm giới thiệu sơ lược: - Sử dụng LED 7 đoạn để hiển thị. Thiết bị này thích hợp hơn cho mục đích hiển thị của RTC khi dùng làm động hồ treo tường hoặc để bàn. - Sử dụng IC thời gian thực DS12C887. IC này có tác dụng tạo ra thời gian thực chính xác tuyệt đối, bao gồm giờ, phút, giây, thứ, ngày, tháng, năm. Bên cạnh đó là các ngắt lập trình được phục...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Báo cáo quá trình thiết kế và thi công Đồng hồ thời gian thực RTC (Real Time Clock)
- Báo cáo: Quá trình thiết kế và thi công Đồng hồ thời gian thực RTC (Real Time Clock)
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 1/42 Report no 03.01 Gửi đến: picvietnam@googlegroups.com Nội dung: Real Time Clock Version 1.0 MICROSOFT WORD Tóm tắt: Báo cáo quá trình thiết kế và thi công Đồng hồ thời gian thực RTC (Real Time Clock) với các nội dung: - Sơ lược về RTC (các chức năng và ứng dụng). - Sơ đồ nguyên lí RTC. - Cấu tạo và chức năng các linh kiện sử dụng cho RTC. - Giải thuật và chương trình ứng dụng viết cho RTC. Các file đính kèm: File chương trình, sơ đồ nguyên lí và sơ đồ mạch in của RTC. 1. Sơ lược về RTC Đây là ứng dụng sử dụng vi điều khiển PIC để thiết kế một đồng hồ điện tử treo tường hoặc để bàn. Sau đây là một vài điểm giới thiệu sơ lược: - Sử dụng LED 7 đoạn để hiển thị. Thiết bị này thích hợp hơn cho mục đích hiển thị của RTC khi dùng làm động hồ treo tường hoặc để bàn. - Sử dụng IC thời gian thực DS12C887. IC này có tác dụng tạo ra thời gian thực chính xác tuyệt đối, bao gồm giờ, phút, giây, thứ, ngày, tháng, năm. Bên cạnh đó là các ngắt lập trình được phục vụ cho việc cập nhật thời gian thực và hẹn giờ. - Sử dụng IC ghi dịch 74HC595 để tăng số lượng chân điều khiển cho vi điều khiển. - Sử dụng vi điều khiển PIC16F877A cho các thao tác truy cập thời gian thực, hiển thị giờ và chỉnh giờ. Thực chất việc sử dụng PIC16F877A cho ứng dụng này là phí phạm, vì ứng dụng không yêu cầu thêm một chức năng phụ nào của vi điều khiển ngoài chức năng I/O. RTC Version 1.0 là bản “nháp” và bao gồm các chức năng cụ thể sau: - Hiển thị giờ, phút, giây, ngày, tháng, năm. Không hiển thị thứ (quên mất tiêu ☺ ). - Điều chỉnh được giờ, phút, giây.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 2/42 2. Sơ đồ nguyên lí mạch RTC Để thuận tiện cho việc bố trí góc nhìn, thiết kế mẫu mã sản phẩm và mục đích sử dụng, ứng dụng RTC sẽ bao gồm 3 mạch: mạch điều khiển, mạch hiển thị và mạch cho các nút bấm. 2.1. Sơ đồ nguyên lí mạch điều khiển Mạch điều khiển bao gồm các thành phần điều khiển chính như: - Vi điều khiển PIC16F877A và các bộ phận hỗ trợ (thạch anh, reset, nạp chương trình dùng Tiny Bootloader, các Jumper cho các chân còn dư). - IC thời gian thực DS12C887 và các thành phận hỗ trợ (điện trở kéo lên cho chân IRQ, reset). - IC ghi dịch 74HC595. - Các khóa điện tử dùng Transistor A1015 phục vụ cho việc quét LED. - Các Bus điều khiển và Bus dữ liệu nối sang các Board hiển thị và Board nút bấm. - Nguồn cung cấp cho toàn bộ các Board. Điện áp đưa vào nguồn là điện áp 9V lấy từ Adapter loại 9V/500mA. Sau đây là sơ đồ nguyên lí cụ thể cho Board điều khiển:
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 3/42 Hình 1: Sơ đồ nguyên lí Board điều khiển.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 4/42 2.2. Sơ đồ nguyên lí Board hiển thị Board hiển thị bao gồm các LED 7 đoạn. Sơ đồ nguyên lí cụ thể như sau: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 NTC1 NTC2 NTC3 NTC4 NTC5 NTC6 NTC7 NTC8 NTC9 NTC10 NTC11 NTC12 NTC13 NTC14 J2 A B A B A B A B A B A B A B A B A B A B A B A B A B A B G F G F G F G F G F G F G F G F G F G F G F G F G F G F VCC VCC VCC VCC VCC VCC VCC VCC VCC VCC VCC VCC VCC VCC 8 7 6 5 4 3 2 1 CON8 VC C VC C VC C VC C VC C VC C VC C VC C VC C VC C VC C VC C VC C VC C DP DP DP DP DP DP DP DP DP DP DP DP DP DP D C D C D C D C D C D C D C D C D C D C D C D C D C D C E E E E E E E E E E E E E E 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 9 8 7 6 J7 1 2 3 4 5 6 J6 1 2 3 4 5 6 7 8 Hình 2: Sơ đồ nguyên lí Board hiển thị. Các giá trị giờ, phút, giây, ngày, tháng dùng 2 LED để hiển thị. Giá trị năm dùng 4 LED để hiển thị. Tổng cộng ta cần sử dụng 14 LED. 2.3. Sơ đồ nguyên lí Board nút bấm Board nút bấm gồm 3 nút dùng để chỉnh giờ. Sơ đồ nguyên lí như sau: HI HI HI R27 R28 R29 J2 HI R R R 1 2 3 4 SW2 SW3 SW4 5 TIMESET ALARMSET INC 6 0 CON6 0 0 0 Hình 3: Sơ đồ nguyên lí Board nút bấm. 3. Cấu tạo và chức năng các linh kiện sử dụng trong RTC Phần này sẽ đi sâu vào cấu tạo bên trong của các linh kiện sử dụng cho RTC và cách điều khiển chúng sử dụng vi điều khiển PIC.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 5/42 3.1. LED 7 đoạn 3.1.1 Cấu tạo của LED 7 đoạn LED 7 đoạn là một công cụ thông dụng được dùng để hiển thị các thông số dưới dạng các số từ 0 đến 9. Mặc dù công cụ LCD giúp ta thể hiện các thông số một cách linh động hơn nhưng LED 7 đoạn vẫn được sử dụng nhiều trong công nghiệp do các ưu thế của nó như: ít chịu ảnh hưởng của nhiệt độ, dễ tạo sự chú ý và góc nhìn rộng. LED 7 đoạn bao gồm 7 đoạn LED được đánh dấu là các kí tự a, b, c, d, e, f, g và một dấu chấm thập phân kí hiệu là dp. Ta có thể xem LED 7 đoạn là một tổ hợp gồm 8 LED. 8 LED này có một đầu (Anode hoặc Cathode) được nối chung và được bố trí theo một qui tắc nhất định dùng để hiển thị các chữ số thập phân. Có hai loại LED 7 đoạn, đó là loại Anode chung (cực Anode của các LED được nối chung với nhau) và loại Cathode chung (cực Cathode của các LED được nối chung với nhau). Tùy theo từng loại LED mà ta có các phương pháp điều khiển các LED trong tổ hợp đó sáng tắt một cách thích hợp. Đối với loại Anode chung, một LED sẽ được bật sáng nếu mức logic đưa vào chân điều khiển đoạn LED đó là mức logic 0. Đối với loại Cathode chung, một LED sẽ được bật sáng nếu mức logic đưa vào chân điều khiển đoạn LED đó là mức logic 1. Hình 4: LED 7 đoạn Hình vẽ trên là một LED 7 đoạn loại Cathode chung. Thực ra cấu trúc các chân của LED 7 đoạn có thể thay đổi chứ không cố định. Một phương pháp để xác định chính xác các chân điều khiển của LED 7 đoạn là kiểm tra từng chân của LED đó. Dựa vào hình vẽ ta có thể hiểu được một phần nào phương pháp hiển thị của một LED 7 đoạn. Ví dụ, muốn hiển thị số “6”, ta sẽ điều khiển các đoạn LED a, c, d, e, g, f sáng lên. Việc điều khiển sáng tắt được thực hiện bằng cách đưa dữ liệu thích hợp vào các chân a-g và dp (tạm gọi là các chân dữ liệu) của LED 7 đoạn. Đó là cách hiển thị theo từng LED. Tuy nhiên, trong thực tế, để tiết kiệm số chân cần thiết để điều khiển cùng một lúc nhiều LED 7 đoạn, các chân dữ liệu của các LED sẽ được nối song song với nhau, các chân anode chung
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 6/42 (hoặc cathode chung) được dùng để cho phép LED đó sáng hay tắt (tạm gọi là các chân điều khiển). Phương pháp hiển thị sẽ dựa trên nguyên lí lưu ảnh của mắt. 3.1.2 Xây dựng module hiển thị trên LED 7 đoạn Module ứng dụng sau đây được xây dựng dùng để hiển thị 2 chữ số thập phân trên 2 LED 7 đoạn sử dụng loại LED 7 đoạn Anode chung. Trước hết ta sẽ tiến hành kết nối phần cứng giữa vi điều khiển và LED 7 đoạn để từ đó xác định được dữ liệu cần đưa vào LED 7 đoạn để hiển thị một chữ số thập phân nào đó. Thứ tự kết nối các chân như sau: - Chân dp nối vào chân RD7. - Chân g nối vào chân RD6. - Chân f nối vào chân RD5. - Chân e nối vào chân RD4. - Chân d nối vào chân RD3. - Chân c nối vào chân RD2. - Chân b nối vào chân RD1. - Chân a nối vào chân RD0. Muốn điều khiển một đoạn LED nào đó sáng lên, ta đưa vào chân điều khiển LED đó về mức logic 0. Với cách nối chân như vậy, ta có bảng dữ liệu tương ứng với các chữ số cần hiển thị trên LED 7 đoạn như sau: Chữ RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Mã số (dp) (g) (f) (e) (d) (c) (b) (a) HEX 0 1 1 0 0 0 0 0 0 C0h 1 1 1 1 1 1 0 0 1 F9h 2 1 0 1 0 0 1 0 0 A4h 3 1 0 1 1 0 0 0 0 B0h 4 1 0 0 1 1 0 0 1 99h 5 1 0 0 1 0 0 1 0 92h 6 1 0 0 0 0 0 1 0 82h 7 1 1 1 1 1 0 0 0 F8h 8 1 0 0 0 0 0 0 0 80h 9 1 0 0 1 0 0 0 0 90h
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 7/42 Dựa vào bảng dữ liệu trên, muốn hiển thị một chữ số lên LED 7 đoạn, ta chỉ việc đưa mã HEX tương ứng với chữ số đó ra PORT D của vi điều khiển. Bảng mã trên không cố định mà có thể thay đổi tùy thuộc vào cấu trúc phần cứng của mạch điều khiển. Tùy theo cách kết nối mà ta có thể xây dựng bảng mã tương ứng. Để điều khiển việc cho phép một LED nào đó tắt hoặc sáng. Ta nối các chân RB0 và RB1 với các chân điều khiển của LED thông qua các “công tắc”. “Công tắc” này là các Transistor và có cấu trúc mạch như hình 5. Khi chân điều khiển ở mức logic 1, transistor ngưng dẫn và không có dòng vào LED 7 đoạn. Khi chân diều khiển ở mức logic 0, transistor dẫn bão hòa và xuất hiện dòng điện đi qua các LED. Ta sẽ sử dụng chân RB0 để điều khiển LED hàng đơn vị và chân RB1 để điều khiển LED hàng chục. 5V HI 10 K RBx LO A Hình 5: Sơ đồ nguyên lí công tắc điều khiển Sau đây là sơ đồ mạch cụ thể:
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 8/42 HI R13 R NTC3 HI 1 40 HI MCLR/VPP RB7/PGD 39 SW1 2 RB6/PGC 38 3 RA0/AN0 RB5 37 4 RA1/AN1 RB4 36 5 RA2/AN2/VREF-/CVREF RB3/PGM 35 6 RA3/AN3/VREF+ RB2 34 R1 R2 7 RA4/TOCKI/C1OUT RB1 33 10 K 10K RA5/AN4/SS/C2OUT RB0/INT A1015 A1015 0 8 9 RE0/RD/AN5 30 330 DP B 10 RE1/WR/AN6 RD7/PSP7 29 330 G A RE2/CS/AN7 RD6/PSP6 28 330 F F 15 RD5/PSP5 27 330 E G 16 RC0/T1OSO/T1CKI RD4/PSP4 22 330 D E 17 RC1/T1OSI/CCP2 RD3/PSP3 21 330 C D 18 RC2/CCP1 RD2/PSP2 20 330 B C 23 RC3/SCK/SCL RD1/PSP1 19 330 A DP NTC1 NTC2 RC4/SDI/SDA RD0/PSP0 1 2 3 4 5 1 2 3 4 5 24 25 RC5/SD0 A B A B G G F F VC C VC C 26 RC6/TX/CK 11 HI 30 pF RC7/RX/DT VDD 32 14 VDD OSC2/CLKO 4 MHz 31 VSS 12 13 VSS OSC1/CLKI 30 pF PIC16F877A 0 0 VC C VC C DP DP D C D C E E 10 10 9 8 7 6 9 8 7 6 Hình 6 : Sơ đồ nguyên lí module hiển thị cho LED 7 đoạn Chương trình viết cho ứng dụng trải qua các bước sau: - Đưa dữ liệu của LED 1 vào - Bật LED 1 - Delay - Đưa dữ liệu của LED 2 vào - Bật LED 2 - Delay - Lặp lại bước 1 Sau đây là chương trình cụ thể:
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 9/42 Chương trình 1: ;======================================================================== title “chuongtrinh1.asm” processor 16f877a include __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ;======================================================================== ;------------------------------------------------------------------ ; Khai báo biến ;------------------------------------------------------------------ count1 EQU 0x20 counta EQU 0x21 countb EQU 0x22 ;========================================================================= ; Chương trình chính ORG 0x000 GOTO start ;========================================================================= start ;----------------------------------------------------------------------------------- ; Khởi tạo các PORT ;----------------------------------------------------------------------------------- BCF STATUS, RP1 BSF STATUS,RP0 ; BANK1 CLRF TRISD ; PORTD
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 10/42 MOVLW 0x92 ; hiển thị số 5 MOVWF PORTD MOVLW b'11111110' ; bật LED hàng đơn vị MOVWF PORTB CALL delay_1ms ; delay_1ms GOTO loop ;========================================================================= ; Chương trình con ;========================================================================= ;-------------------------------------------------------------- ; Chương trình con tạo thời gian delay 1 ms ;-------------------------------------------------------------- delay_1ms MOVLW d'1' MOVWF count1 d1 MOVLW 0xC7 MOVWF counta MOVLW 0x01 MOVWF countb delay_0 DECFSZ counta,1 GOTO $+2 DECFSZ countb,1 GOTO delay_0 DECFSZ count1,1 GOTO d1 RETURN END ;======================================================================== Trong chương trình trên, mỗi LED sẽ được bật sáng trong một khoảng thời gian 1 ms, sau đó tắt LED đó và bật LED khác lên. Do thời gian bật tắt quá nhanh nên mắt sẽ bị đánh lừa là LED sáng liên tuc. Hiện tượng này có thể quan sát rõ hơn bằng cách tăng thời gian delay lên, khi đó ta sẽ thấy từng LED được bật tắt một cách tuần tự. Tương tự ta có thể mở rộng số lượng LED bằng cách nối song song tất cả chúng lại với nhau và áp dụng giải thuật trên để hiển thị.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 11/42 3.2. IC ghi dịch 74HC595 Đây là IC ghi dịch nối tiếp sang song song. IC được ứng dụng để tăng số lượng chân output cho vi điều khiển. Có nhiều phương pháp để tăng số lượng chân , ví dụ như dùng IC giải mã, tuy nhiên IC ghi dịch 74HC595 được lựa chọn như là một giải pháp vì các nguyên nhân sau: - Số lượng chân điều khiển luôn cố định là 4 chân: nếu dùng giải mã thì số lựong chân điều khiển sẽ tăng theo số lượng chân ngõ ra (khi phải ghép nhiều IC lại với nhau). Trong khi dùng ghi dịch thì số lượng chân điều khiển luôn là cố định ngay cả khi cần ghép nhiều IC lại với nhau. - Cho phép điều khiển linh họat và ổn định hơn: giữa các thanh ghi dịch và ngõ ra có một “chốt”. Điều này cho phép thay đổi linh hoạt dữ liệu trong các thanh ghi dịch và ổn định trạng thái logic ngõ ra. 3.2.1 Cấu tạo của 74HC595 74HC595 là IC ghi dịch nối tiếp sang song với 8 ngõ ra QH:QA và bộ chốt dữ liệu 8 bit. Dữ liệu được đưa vào các thanh ghi dịch bên trong IC thông qua 1 chân SER (chân 14) và các chân điều khiển RCK (chân 12, điều khiển chốt dữ liệu), chân SCK (chân 11, điều khiển quá trình dịch dữ liệu), chân (chân 10, dùng để tác động lên quá trình xóa dữ liệu) chân Q’H (chân 9, chân đưa dữ liệu nối tiếp ra ngoài dùng để ghép nhiều IC lại với nhau) và chân dùng để cho phép các ngõ ra. Hình 7: Sơ đồ chân là bảng sự thật của 74HC595.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 12/42 Hình 8: Sơ đồ khối 74HC595. Ta có thể điều khiển được một hoặc nhiều IC 74HC595 ghép với nhau thông qua 4 chân SER, RCK, SCK và . Điều này cho phép mở rộng một cách vô hạn số lượng chân ngõ ra của vi điều khiển. Tuy nhiên nhược điểm của nó là thời gian truy xuất các ngõ ra chậm
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 13/42 hơn so với việ truy xuất trực tiếp, vì dữ liệu phải được đưa từng bỉt vào IC trước khi cho xuất ra ngoài. Hình sau thể hiện cách nối nhiều IC ghi dịch lại với nhau. Các chân điều khiển (RCK, SCK và ) được nối chung lại với nhau, chân dữ liệu nối tiếp ngõ ra (chân 9) của IC này được nối với chân dữ liệu nối tiếp ngõ vào của IC tiếp theo. Ta có thể mở rộng số lương IC ghép với nhau theo cách tương tự mà số lượng chân điều khiển vẫn không đổi. DATA IN RCK SCK CLR 13 10 11 12 14 13 10 11 12 14 HI HI SRCLK SRCLK RCLK RCLK CLR CLR G G SDI SDI 16 16 VCC VCC 8 74HC595 8 74HC595 GND GND SDO SDO 0 QG QG QH QD QC QH QD QC QE QB QA QE QB QA QF QF 0 0 15 15 7 6 5 4 3 2 1 9 7 6 5 4 3 2 1 9 DATA OUT Hình 9: Nối nhiều IC 74HC595 với nhau. 3.2.2 Xây dựng module điều khiển IC 74HC595 Cách điều khiển IC được thể hiện thông qua bảng sự thật ở hình 7. Trước tiên đưa 1 bit dữ liệu vào chân SDI, sau đó tạo ra một xung dương ở chân SCK để dịch bit dữ liệu đó vào. Trạng thái logic của chân SDI khi kích xung dương quyết định mức logic của bit được dịch vào. Quá trình này được lặp đi lặp lại liên tục cho đến khi toàn bộ dữ liệu được dịch vào trong IC. IC tiếp theo sẽ tiếp tục dịch dữ liệu vào từ chân SDO của của IC trước đó. Khi quá trình dịch dữ liệu hoàn tất, ta tạo một xung dương ở chân RCK để đưa dữ liệu ra ngoài các chân ngõ ra QH:QA. Ứng dụng sau được dùng để đưa một byte dữ liệu ra IC ghi dịch 74HC595. Kết quả được kiểm định thông qua các LED được nối vào các chân QH:QA của IC. Các chân điều khiển sẽ được nối vào các chân RB3:RB0 của PORT B. Cụ thể như sau: - Chân RB0 nối với chân SDI. - Chân RB1 nối với chân SCK. - Chân RB2 nối với chân .
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 14/42 - Chân RB3 nối với chân RCK. Các thứ tự này không bắt buộc phải tuân thủ một cách tuyệt đối. Sau đây là sơ đồ nguyên lí mạch ứng dụng: HI 10 K NTC1 1 40 MCLR/VPP RB7/PGD 39 SW1 2 RB6/PGC 38 3 RA0/AN0 RB5 37 4 RA1/AN1 RB4 36 RCK 5 RA2/AN2/VREF-/CVREF RB3/PGM 35 CLR HI 6 RA3/AN3/VREF+ RB2 34 SCK 0 7 RA4/TOCKI/C1OUT RB1 33 SDI RA5/AN4/SS/C2OUT RB0/INT 8 16 9 RE0/RD/AN5 30 U2 10 RE1/WR/AN6 RD7/PSP7 29 15 330 D1 VCC RE2/CS/AN7 RD6/PSP6 28 QA 1 330 D2 15 RD5/PSP5 27 QB 2 330 D3 16 RC0/T1OSO/T1CKI RD4/PSP4 22 SDI 14 QC 3 330 D4 17 RC1/T1OSI/CCP2 RD3/PSP3 21 RCK 12 SER QD 4 330 D5 18 RC2/CCP1 RD2/PSP2 20 SCK 11 RCK QE 5 330 D6 23 RC3/SCK/SCL RD1/PSP1 19 CLR 10 SRCK QF 6 330 D7 24 RC4/SDI/SDA RD0/PSP0 SRCLR QG 7 330 D8 25 RC5/SD0 HI 13 QH 26 RC6/TX/CK 11 8 G 9 30 pF RC7/RX/DT VDD 32 GND QHP 14 VDD 74HC595 0 OSC2/CLKO 0 4 MHz 31 30 pF VSS 12 13 VSS OSC1/CLKI 0 0 PIC16F877A Hình 10: Sơ đồ nguyên lí mạch ứng dụng điều khiển IC 74HC595. Sau đây là chương trình viết cho ứng dụng: Chương trình 2: ;======================================================================== title “chuongtrinh2.asm” processor 16f877a include __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ;======================================================================== ;--------------------------------------------------------- ; Khai báo biến ;--------------------------------------------------------- sendreg EQU 0X20 ; chứa dữ liệu cần xuất ra count EQU 0X21 ; dùng để kiểm soát số lượng bit ; đã gửi ra ;---------------------------------------------------------- ;Khai báo phần cứng
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 15/42 ;---------------------------------------------------------- #define data PORTB,0 #define clock PORTB,1 #define clear PORTB,2 #define latch PORTB,3 ;======================================================================== ; Chương trình chính ORG 0x000 GOTO start ;======================================================================== start ;------------------------------------------------------ ; Khởi tạo các PORT điều khiển ;------------------------------------------------------- BCF STATUS,RP1 BSF STATUS,RP0 ; BANK1 MOVLW 0xF0 ; các chân RB3:RB0 là output MOVWF TRISB ; các chân RB7:RB4 là input BCF STATUS,RP0 ; BANK0 ;--------------------------------------------------------------------- ; Khởi tạo IC 74HC595 ;--------------------------------------------------------------------- BCF clear ; reset dữ liệu trong IC 74HC595 NOP ; clear tác động cạnh xuống BSF clear ; đưa chân trở về mức logic cao ;---------------------------------------------------------------------- ; Đoạn chương trình xuất dữ liệu ra 74HC595 ;---------------------------------------------------------------------- MOVLW 0xCA ; dữ liệu cần đưa ra IC 74HC595 CALL serout ; chương trình con “serout” BSF latch ; tạo cạnh dương tại chân RCK để đưa NOP ; dữ liệu ra ngõ ra IC 74HC595 BCF latch ; đưa chân RCK trở về mức logic thấp ;-------------------------------------------------------- ; Vòng lặp chính của chương trình ;-------------------------------------------------------- GOTO $ ;======================================================================== ; Chương trình con ;========================================================================
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 16/42 ;----------------------------------------------------------------------------------------- ; Chương trình con “serout” ; Dùng để đưa dữ liệu vào các thanh ghi dịch của IC 74HC595 ;----------------------------------------------------------------------------------------- serout MOVWF sendreg ; đưa dữ liệu vào thanh ghi sendreg MOVLW 0x08 ; đếm 8 bit dữ liệu MOVWF count testbit BCF data ; dữ liệu mặc định bằng 0 BTFSC sendreg,7 ; sendreg,7 == 0 ?? BSF data ; nếu không bằng 0, set dữ liệu từ 0 -> 1 BSF clock NOP ; tạo cạnh dương tại chân SCK để đưa ; dữ liệu vào IC BCF clock ; đưa chân SCK về lại mức logic thấp RLF sendreg,0 ; dịch trái thanh ghi sendreg MOVWF sendreg DECFSZ count,1 ; giảm biến count 1 đơn vị GOTO testbit ; nếu biến “count” chưa bằng 0, tiếp tục ; quá trình dịch dữ liệu RETURN ; trở về chương trình chính nếu count = 0 ;======================================================================== END Thuật toán cụ thể của ứng dụng trên như sau: ban đầu dữ liệu được mặc định mang mức logic 0, sau đó ta kiểm tra từng bit dữ liệu một ( bit thứ 7 trong thanh ghi “sendreg”) xem có thực sự bằng 0 hay không. Nếu bằng 1, ta set đường dữ liệu lên mức logic 1. Sau đó tạo xung dương tại chân “SCK” để đưa dữ liệu vào IC. Dữ liệu trên thanh ghi “sendreg” sau đó được dịch trái và quá trình trên tiếp tục cho đến khi 8 bit dữ liệu được dịch xong. Cần chú ý khởi tạo 74HC595 bằng cách xóa các ngõ ra và đưa chân lên mức logic cao (do chân tác động cạnh thấp). Nếu không các ngõ ra sẽ luôn ở trạng thái logic 0 (bị xóa). Trong trường hợp nối nhiều IC lại với nhau ta chỉ việc lần lựot đưa dữ liệu vào thanh ghi “sendreg” và gọi chương trình con “serout” cho đến khi tất cả các dữ liệu được gửi ra hết.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 17/42 3.3. IC thời gian thực DS12C887 Đây là IC thời gian thực được sản xuất bởi hãng Dallas với một vài đặc tính sơ lược sau: - Chứa các giá trị thời gian giây, phút, giờ, thứ, ngày, tháng, năm với thời gian hoạt động đúng đến năm 2100. - Bộ đếm hoạt động với thời gian 10 năm nếu không có nguồn điện ngoài cung cấp. - Các hệ thống bên trong bao gồm hệ thống thời gian thực, nguồn nội bằng Lithium và bộ tạo dao động với bộ chia tần số đính kèm cho phép lập trình được. Ngoài ra còn hỗ trợ các ngắt phục vụ cho quá trình xử lí thông tin của hệ thống bên ngoài. - Cho phép hai dạng dữ liệu BCD và Binary. - Cho phép chế độ hiển thị giờ 24 giờ hoặc 12 giờ (với AM và PM). - Cho phép lựa chọn các chế độ giao tiếp BUS của Intel hoặc Motorola. - Bộ nhớ RAM 128 byte. Trong đó gồm 15 byte chứa các giá trị thời gian và điều khiển, 113 byte còn lại được phép tùy ý sử dụng. - Các cờ ngắt hỗ trợ bao gồm: ngắt toàn cục, ngẳt báo giờ, ngắt báo hiệu cho phép/ không cho phép truy xuất giá trị thời gian thực. Sau đây là phần cấu tạo và xây dựng module điều khiển IC DS12C887. 3.3.1 Cấu tạo DS12C887 Sơ đồ chân: NTC1 1 24 2 MOT VCC 23 3 NC SQW 22 4 NC NC 21 5 AD0 NC 20 6 AD1 NC 19 7 AD2 IRQ 18 8 AD3 RESET 17 9 AD4 DS 16 10 AD5 NC 15 11 AD6 R/W 14 12 AD7 AS 13 GND CS DS12C887 Hình 11: Sơ đồ chân DS12C887 DS12C887 gồm 24 chân và có thể được chia làm 3 nhóm như sau:
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 18/42 - Nhóm chân DATA: bao gồm các chân AD7:AD0. Đây là các chân mà DS12C887 dùng để đưa dữ liệu ra hay nhận dữ liệu vào. - Nhóm chân điều khiển giao tiếp BUS: bao gồm các chân MOT, AS, DS, R/W với các chức năng phụ thuộc vào việc lựa chọn chế độ giao tiếp BUS theo chuẩn của Intel (MOT =1) hay Motorola (MOT = 0). - Nhóm chân chức năng: bao gồm các chân RESET (dùng để reset IC), IRQ (chân tác dộng của các ngắt trong DS12C887) và chân SQW (chân tạo sóng vuông ngõ ra). - Ngoài ra còn có các chân dùng để cấp nguồn cho IC và các chân không cần thiết (NC). Các thanh ghi chức năng: Thanh ghi Địa chỉ Chức năng SECONDS 00h Chứa giá trị giây của thời gian thực SECOND 01h Chứa giá trị giây của thời gian hẹn giờ ALARM MINUTES 02h Chứa giá trị phút của thời gian thực MINUTES 03h Chứa giá trị phút của thời gian hẹn giờ ALARM HOUR 04h Chứa giá trị giờ của thời gian thực HOUR ALARM 05h Chứa giá trị giờ của thời gian hẹn giờ DAY OF THE 06h Chứa giá trị thứ của thời gian thực WEEK DAY OF THE 07h Chứa giá trị ngày thong tháng MONTH MONTH 08h Chứa giá trị tháng YEAR 09h Chứa giá trị năm REGISTER A 10h Thanh ghi điều khiển REGISTER B 11h Thanh ghi điều khiển REGISTER C 12h Thanh ghi điều khiển REGISTER D 13h Thanh ghi điều khiển CENTURY 50h Thanh ghi chứa giá trị thế kỉ của thời gian thực Còn lại 14h->4Dh Thanh ghi mục đích chung Ngoại trừ các thanh ghi “REGISTER A, B, C, D” dùng để điều khiển, các thanh ghi còn lại đều đựoc dùng để truy xuất dữ liệu. Sau đây là chức năng của từng bit trong các thanh ghi điều khiển.
- Người báo cáo: Nguyễn Trung Chính Tài liệu: REP03.01 Ngày: 9/5/2006 Trang: 19/42 THANH GHI REGISTER A Bit 7 UIP Chỉ thị trạng thái dữ liệu của các thanh ghi chứa giá trị thời gian thực. Bit này chỉ đọc UIP = 1: dữ liệu chưa sẵn sàng để truy xuất. UIP = 0: dữ liệu đã sẵn sàng cho quá trình truy xuất Bit 6-4 DV2- Lựa chọn trạng thái hoạt động của IC. Chỉ có giá trị 010 là DV0 cho phép IC hoạt động theo chế độ thời gian thực. Bit 3-0 RS3-RS0 Xác định tỉ số chia tần số của bộ tạo dao động THANH GHI REGISTER B Bit 7 SET SET = 0: cho phép cập nhật thời gian vào các thanh ghi SET = 1: không cập nhật thời gian vào các thanh ghi Bit 6 PIE Cho phép tạo ngắt định kì tại chân IRQ và cho phép cờ ngắt PF. Thời gian định kì được quyết định bởi các bit RS3-RS0. PIE =1: cho phép PIE = 0: không cho phép Bit 5 AIE Cho phép ngắt báo giờ tại chân IRQ và cho phép cờ ngắt AF AIE = 1 : cho phép AIE = 0 : không cho phép Bit 4 UIE Cho phép tạo ngắt khi quá trình cập nhật thời gian hoàn tẩt và cho phép cờ ngắt UF. UIE = 1 : cho phép UIE = 0 : không cho phép Bit 3 SQWE SQWE = 1 : cho phép tạo sóng vuông tại chân SQW (tần số được quyết định bởi các bit RS3:RS0. SQWE = 0 : không cho phép, chân SQW luôn ở mức 0. Bit 2 DM Chọn dạng dữ liệu ở các thanh ghi chứa thời gina thực DM = 1 : dang dữ liệu là Binary DM = 0 : dạng dữ liệu là BCD Bit 1 24/12 Định dạng dữ liệu giờ 24/12 = 1 : dạng 24 giờ 24/12 = 0 : dạng 12 giờ Bit 0 DSE Daylight Saving Enable. THANH GHI REGISTER C Bit 7 IRQF Interrupt Request Flag: cờ chỉ thị trạng thái ngắt IRQF = 1 : có ngắt xảy ra IRQF = 0 : không có ngắt xảy ra Bit 6 PF Periodic Interrupt Flag bit: cờ chỉ thị trạng thái của ngắt định kì.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Báo cáo Phân tích thiết kế hệ thống thông tin: Quản lý bán hàng trong siêu thị
51 p | 849 | 128
-
Báo cáo quá trình thiết kế và thi công Đồng hồ thời gian thực RTC
42 p | 389 | 111
-
Báo cáo: Nghiên cứu thiết kế, chế tạo bộ khuôn đúc thân bơm BRA50 dùng trên máy đúc áp lực 420T
44 p | 310 | 102
-
Báo cáo: CIP trong sản xuất sữa
50 p | 721 | 96
-
Một số sai sót thường gặp trong tính toán thiết kế kết cấu công trình.
7 p | 305 | 80
-
Đồ án quá trình thiết bị: Thiết kế hệ thống hấp thụ để làm sạch khí
42 p | 282 | 74
-
Báo cáo luận văn: Thiết kế hệ thống xử lý nước thải, giấy tái sinh Công ty Giấy Tiến Phát công suất 450 m3/ngày đêm
84 p | 283 | 70
-
BÁO CÁO KHOA HỌC " THIẾT KẾ HỆ THỐNG SCADA CHO NHÀ MÁY VÀNG BỒNG MIÊU TRÊN NỀN PCS7 "
7 p | 296 | 64
-
Báo cáo Quá trình xử lý nước thải GREE- Chương 1
0 p | 177 | 39
-
Báo cáo khoa học: "THIẾT KẾ NÚT GIAO THÔNG CÙNG MỨC DỰA TRÊN MÔ HÌNH 3 CHIỀU"
4 p | 302 | 38
-
Báo cáo khoa học: "TỔ CHỨC CÔNG TÁC KIỂM TOÁN BÁO CÁO TÀI CHÍNH VÀ KẾ TOÁN QUẢN TRỊ Ở CÁC DOANH NGHIỆP"
3 p | 162 | 27
-
Báo cáo khoa học: "THIẾT KẾ, CHẾ TẠO HỆ THỐNG GIÁM SÁT, ĐO LƯỜNG VÀ ĐIỀU KHIỂN CHO MÁY CNC QUẤN DÂY TRÊN CƠ SỞ VI ĐIỀU KHIỂN CÔNG NGHỆ PSoC"
8 p | 152 | 20
-
Báo cáo nông nghiệp: " THIếT Kế Hệ Hỗ TRợ RA QUYếT ĐịNH PHụC Vụ QUY HOạCH Sử DụNG ĐấT SảN XUấT NÔNG NGHIệP"
13 p | 132 | 19
-
Báo cáo môn Quá trình thiết bị 2: Tính toán quá trình cháy của nhiên liệu than và thiết kế cấp phối trong sản xuất xi măng năng suất 1triệu tấn/năm
31 p | 110 | 18
-
Báo cáo khoa học: "Thiết kế bộ điều khiển phản hồi đầu ra cho cầu trục"
8 p | 101 | 14
-
Báo cáo khoa học: "BÀN VỀ MỘT SỐ VẤN ĐỀ THIẾT KẾ CÁNH TUYẾN THẲNG TRÊN BÌNH ĐỒ TUYẾN ĐƯỜNG ÔTÔ"
5 p | 85 | 11
-
Báo cáo khoa học: "THIẾT KẾ BỘ KIT VI XỬ LÝ ĐA NĂNG PHỤC VỤ GIẢNG DẠY VÀ NGHIÊN CỨU KHOA HỌC"
8 p | 97 | 7
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn