intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

tai lieu pic- Kết nối PIC với EEPROM, DS1307 dùng I2C - vuson.tk

Chia sẻ: Vu Son | Ngày: | Loại File: PDF | Số trang:9

488
lượt xem
182
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trang cá nhân : http://vn.360plus.yahoo.com/vuvanson_bk/ or vuson.tk Viết tắt của Universal Asynchronous Receiver – Transmitter – thường là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và thiết bị ngoại vi thông qua cổng nối tiếp. Rất nhiều vi điều khiển hiện nay đã tích hợp UART. Để bắt đầu việc truyền dữ liệu bằng UART, một start bit được gửi đi, sau đó là 5‐8...

Chủ đề:
Lưu

Nội dung Text: tai lieu pic- Kết nối PIC với EEPROM, DS1307 dùng I2C - vuson.tk

  1. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  1/9  Tutorial no 03.02    Gửi đến:  picvietnam@googlegroups.com   Nội dung:  Kết nối PIC với EEPROM, DS1307 dùng I2C    MICROSOFT WORD   Tóm tắt:  Trong  Tutorial  của  bạn  Ngô  Hải  Bắc  đã  có  phần  hướng  dẫn  về  cách  lập  trình  giao  tiếp  cổng  Com  trong PC dùng VC++6.0. Hôm nay mình sẽ giới thiệu cho các bạn cách thức lập trình giao tiếp nối  tiếp UART trên PIC:  1. Giao tiếp nối tiếp dùng UART  Viết  tắt  của  Universal  Asynchronous  Receiver  –  Transmitter  –  thường  là  một  mạch  tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và thiết bị  ngoại vi thông qua cổng nối tiếp. Rất nhiều vi điều khiển hiện nay đã tích hợp UART. Để  bắt  đầu  việc  truyền dữ  liệu  bằng  UART,  một  start  bit  được  gửi  đi,  sau  đó  là  5‐8  bit  dữ  liệu, sau đó là stop bit. Start bit có trạng thái ngược với trạng thái bình thường của đường  truyền dữ liệu. Stop bit có cùng trạng thái với trạng thái bình thường của đường truyền  dữ  liệu.  Tốc  độ  của  UART  được  quy  định  bởi  tốc  độ  baud.  Một  số  interface  chuẩn  của  UART là EIA, RS 232, RS 422 và RS 485.   Như vậy để làm việc với UART chúng ta phải quan tâm đến các thông số sau:  • Tốc độ Baud: thường là 9600  • Số bít được dùng để truyền Data: từ 5 đến 8 ( thường là 8 )  • Bít Stop  1, hay 2  thường chọn 1  • Bit chẵn lẻ   2.  Giao tiếp UART trong PIC16F877A  2.1. Các thanh ghi được sử dụng trong PIC16F877A  Trong PIC16F877A có tất cả 5 thanh ghi cho qua trình điều khiển UART: Trong đó có  2  thanh  ghi  chức  năng  TXSTA,  RCSTA,  2  thanh  ghi  dữ  liệu  RCREG,  TXREG.,  và  thanh  ghi tốc độ Baud: SPBRG. 
  2. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  2/9  Thanh ghi TXSTA    CSRC:   TX9    :  chọn chế độ chuyền 9 bit: ( =1:  9 bit, =0: 8 bit )  TXEN   :  Cho phép truyền  SYNC   :    Chọn  chế  độ  truyền  đồng  bộ  hay  không  đồng  bộ:  (  =1:  đồng  bộ,  =0:  không đồng bộ )  BRGH  :  chọn chế dộ truyền cao hay thấp ( =1 HIGH,  =0:  LOW )  TRMT  :   bít báo trạng thái của  bộ đệm: =1:  TSR rỗng(  dữ  liệu đã đựoc  truyền  xong ),  =0: TSR đầy (  dữ liệu còn trong bộ đệm của UART )  TX9D   :  giá trị của bít thứ 9 trong chế độ truyền 9 bit. Bit này có thể dùng để  lưu bit Parity;  Thanh ghi RCSTA      SPEN    :   cho phép sử dụng bộ UART  RX9    :   chấp nhận chế độ nhận 9 bit   SREN   :   không dùng với trường hợp Asychoronous   CREN    :   tiếp tục nhận dữ liệu   ADDEN  :   dùng trong chế độ chọn 9 bit: ( master , slave ) 
  3. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  3/9  FERR    :   bít báo hiệu lỗi đường truyền  OERR    :   báo hiệu lỗi đường truyền  RX9D    :   giá trị bít thứ 9 trong quá trình Receive được lưu tại đây.  Thanh ghi TXREG: dùng để chứa dữ liệu truyền đi trong quá trình Transmit  Thanh ghi RCREG: dùng để lưu dữ liệu từ ngoài vào trong quá trình Receive  Thanh ghi: SPBRG là thanh ghi  thiết lập  tốc độ baud của PIC  Trong PIC16F877A có hai chế độ truyền High speed, và Low speed được quy định bởi  bit BRGH của thanh ghi TXSTA. Việc phân chia hai mức tốc độ này để có sự chọn lựa cho  trường hợp sai số với tốc độ baud chuẩn của PC:  Mà trong PC có các mức chuẩn: 300,  2400, 9600, 19200, 28800.  Các bạn có thể tham khảo bảng 10‐3 ở trang 114 để biêt được các  mức tốc độ :        Hình 1: BAUD RATE FOR ASYNCHORONOUS MODE  ( BRGH=0 ) 
  4. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  4/9    Hình 2: BAUD RATE FOR ASYNCHRONOUS MODE ( BRGH=1 )  Thông qua bảng trên ta thấy ứng với tần số thạch anh là 4M để chọn cho tốc độ baud  là 9600 ta có thể chọn  hai giá trị của thanh ghi SPBRG ở hai trường hợp : SPBRG = 25 ứng  với BRGH =1 cói sai số là 0.15 và  SPBRG = 6 ứng với BRGH =0 có sai số 6.99. Rõ ràng là ta  chọn gia trị nào có sai số bế nhất và ứng với VD trên ta nên chọn  SPBRG = 25 , BRGH= 1  vì nó có sai số nhỏ hơn trường hợp kia. Như vậy ứng với trường hợp nào có sai số nhỏ  hơn trong hai giá trị thì ta sẽ chọn cái đó.    2.2. Quá trình truyền và nhận của PIC với PC  Trong PIC16F877A có nhiều chế độ truyền nhận khác nhau: chế độ truyền nhận dùng  bit  9  để  định  chẵn  lẻ,  hay  cho  mạng  VĐK  1  master  và  nhiều  slave.    Và  chế  độ  chuyền  đồng bộ ứng dụng cho việc giao tiếp với A/D, D/A hay với các EEPRO. Và tất nhiên các  chế dộ này sẽ được thiết lập bởi  các bit trong thanh ghi TXSTA, và TCSTA.  Tuy nhiên  trong  tutorial  này  chỉ  xin  giới  thiệu  chế  độ  truyền  và  nhận    8  bit  giao  tiếp  với  PC  một  trong các chức năng của bộ AUSART của PIC  Quá trình nhận dữ liệu       Trong  PIC16F877A  để  nhận  biết  được  dữ  liệu  truyền  tới  người  ta  dùng  bit  cờ  RCIF   trong thanh ghi PIR1. Như vậy khi thanh ghi đệm dữ liệu chứa dữ liệu thì RCIF sẽ được  đưa  lên  1. Và  chính  cờ  này  cho  phép  PIC16F877A  có hai  phương  thức  để  nhận  biết  lúc  nào có dữ liệu truyền tới. Sử dụng ngắt và sử dụng kiểu Polling ( quay vòng )  
  5. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  5/9  • Kiểu Polling: liên tục kiểm tra cờ RCIF nếu =1 thì đọc dữ liệu: Phương thức này có ưu  điểm  dẽ lâp trình , phù hợp với những ứng dụng nhỏ.   • Kiểu dùng ngăt: được thiết lập bằng cách cho RCIE= 1 để cho phép ngắt. Tức là mỗi  khi có dữ liệu truyền tới RCREG thì sinh ra một ngắt và PIC sẽ tạm dừng chương trình  hiện thời để xử lý dữ liệu vừa nhận được. Cách này chủ yếu được sử dụng  Như vậy các bước cho quá trình nhận dữ liệu của quá trình sử dụng INTERUPT bao  gồm:  ‐ 1. Khởi tạo tốc độ baud: ở thanh ghi SPBRG. Cho SPBRG = 25, BRGH =1 ứng với tốc   độ 9600 ( thạch anh 4M)  ‐ 2. Cho phép quá trình truyền không đồng bộ bắng cách thiết lập SPEN = 1, SYNC= 0;  ‐ 3. Cho phép ngắt quá trình nhận dữ liệu: RCIE=1  ‐ 4  Cho phép nhận dữ liệu : CREN = 1  ‐ 5. Cho phép ngắt toàn cục băng việc GIE =1, PEIE = 1 ( GIE, PEIE trong thanh ghi  INTCON )  ‐ 6. Xử lý các phần khác chương trình khi có ngắt xảy ra thì xử lý dữ liệu   VD  : nhận dữ liệu từ PC với tốc độ baud: 96000 sử dụng ngắt                       BSF    TXSTA, BRGH  ;  Cho BRGH =1            MOVLW     Dʹ25ʹ                 ; Chon che do 9.600            MOVWF     SPBRG       BSF    RCSTA, SPEN ; SPEN = 1               BCF    TXSTA, SYNC   ; SYNC = 0    BSF    TXSTA, CREN    BSF    PIE, RCIE    ; RCIE = 1    BSF    INTCON, GIE    BSF    INTCON, PEIE               ........................  ; Hàm ngắt xử lý dữ liệu:            MOVF      RCREG,W  ; Nhan du lieu tu RCREG chuyen cho thanh ghi W    MOVWF  PORTB      ; Dua du lieu ra PORTB                                 ......................     
  6. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  6/9  2.2.2. Quá trình  truyền dữ liệu   Trong  quá  trình  truyền    dữ  liệu  cũng  có  hai  chế  độ  sử  dụng  ngắt  và  Polling  ,  tuy  nhiên  quá  trình  truyền  dữ  liệu  lên  PC  không  phải  là  thời  diểm  bất  kỳ  mà  dặt  dưới  sự  kiểm soát của chương trình cho nên người ta thưòng sử dụng kiểu polling khi cần truyền  thì truyền đi.  Như vậy các bước cho quá trình thiết lập ngắt:  ‐ 1. Khởi tạo tốc độ baud: ở thanh ghi SPBRG. Cho SPBRG = 25, BRGH =1 ứng với tốc  độ 9600 ( thạch anh 4M)  ‐ 2. Cho phép quá trình truyền không đồng bộ bắng cách thiết lập SPEN = 1, SYNC= 0;  ‐ 3. Cho phép truyền dữ liệu bằng cách thiết lập bít TXEN = 1;   ‐ 4. Khi cần truyền dữ liệu chỉ cần Load dữ liệu đó lên  TXREG    VD:                  BSF               TXSTA, BRGH  ;  Cho BRGH =1               MOVLW     Dʹ25ʹ                 ; Chon che do 9.600               MOVWF     SPBRG       BSF    RCSTA, SPEN ;    BCF    TXSTA, SYNC   ;    BSF    TXSTA, TXEN ; TXEN = 1    .................      MOVF                DATA, W      ; Chuyen du lieu tu DATA qua W    MOVWF  TXREG    ; Truyen du lieu bang cach load du lieu len TXREG    .............       Lưu ý: trư khi cho quá trình truyền và nhận dữ liệu ta phải thiết lập trạng thái chân  của RC7, RC6 cho hợp lý. Cho RC7 là dạng in , RC6 là dạng out  3. Một vi dụ đơn giản       Đây là một VD về quá trình truyền và nhận dữ liệu từ PC. PIC nhận dữ liệu tù PC  chuyển qua PORTB ( hiển thị qua led ) rồi truyền trở lại PC   
  7. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  7/9  list    p=16f877A      #include         __CONFIG    0x393A  errorlevel    ‐302       w_temp          EQU     0x71          status_temp     EQU     0x72          pclath_temp   EQU     0x73          ACC             EQU     0x74  R2              EQU     0x7A  R3              EQU     0x7B  R4              EQU     0x7C    ;**********************************************************************        ORG       0x000                 ; processor reset vector        goto      main                  ; go to beginning of program        ORG       0x004                 ; interrupt vector location        movwf     w_temp                             ; save off current W register contents        movf                STATUS,w            ; move STATUS register into W register        movwf  status_temp          ; save off contents of STATUS register        movf                PCLATH,W          ; move PCLATH register into W register        movwf  pclath_temp         ; save off contents of PCLATH register  ;=============================================================================            BANKSEL   RCREG            MOVF      RCREG,W    ;  Nhan  du  lieu  tu  RCREG  chuyen  cho  thanh  ghi W    MOVWF  PORTB        ; Dua du lieu ra PORTB    BANKSEL  TXREG                 MOVWF  TXREG   ; Truyen du lieu do len PC  ;==============================================================================        movf      pclath_temp,w       ; retrieve copy of PCLATH register        movwf  PCLATH               ; restore pre‐isr PCLATH register contents        movf      status_temp,w       ; retrieve copy of STATUS register        movwf  STATUS                ; restore pre‐isr STATUS register contents        swapf     w_temp,f          swapf     w_temp,w            ; restore pre‐isr W register contents        retfie      main    BANKSEL   ADCON1            MOVLW     0x06            MOVWF     ADCON1    ; Chọn chế độ Digital ở cac chan            CALL      Init_serialport            BANKSEL   TRISB    CLRF    TRISB        ; Cho dang PORTB la dang out            BSF                      INTCON,GIE                   ; Cho phep ngat             BSF                      INTCON,PEIE    GOTO    $    Init_serialport            BANKSEL   TXSTA 
  8. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  8/9            BSF                      TRISC,7             ; Chon chan rb2 la dang in    BCF    TRISC,6            MOVLW     Bʹ00100100ʹ         ; Chon che do 8 bit, Hightbaudrate            MOVWF     TXSTA            MOVLW     Dʹ25ʹ                 ; Chon che do 9.600            MOVWF     SPBRG            BSF       PIE1,RCIE          ; Cho phep ngat ( receive )            BANKSEL   RCSTA            MOVLW     Bʹ10010000ʹ         ;             MOVWF     RCSTA            RETURN                END           Với sơ đồ kêt nối như hình vẽ:   +5V Mach TEST USART dung  PIC16F877A 16 MAX232 2 1 VCC V+ C1+ 6 3 U1 V- C1 1 4 2 MCLR/VPP 33 C2+ 3 RA0/AN0 RB0/INT 34 P1 4 RA1/AN1 RB1 35 U5 1 5 5 RA2/AN2 RB2 36 U6 6 C2- 6 RA3/AN3/VREF+ RB3 37 U7 2 14 11 7 RA4/TOCKI RB4 38 U8 7 T1out T1in RA5/AN4 RB5 39 U9 3 7 10 15 RB6 40 8 T2out T2in 16 RC0 RB7 4 17 RC1 19 9 13 12 18 RC2 RD0 20 5 R1in R1out 23 RC3/SCL RD1 21 GND 8 9 24 RC4/SDA RD2 22 R2in R2out 25 RC5 RD3 27 CONNECTOR DB9 26 RC6/TX RD4 28 RC7/RX RD5 15 29 RD6 30 13 RD7 OSC1/CLK1 8 RE0 9 14 RE1 10 +5V OSC2/CLK0 RE2 11 12 32 VDD VSS 31 VDD VSS PIC16F877A Hình 3: Mạch test USART dung PIC16F877A Lưu ý: ở sơ đồ trên sử dụng Max232 kết nối máy tính vì mức điện áp của PC và PIC là khác  nhau và Max232 ở đây có tác dụng làm bộ chuyển đổi trung gian giữa PC và PIC  ‐ Cách thức test 
  9. Người báo cáo:  Phạm Đức Mạnh  Tài liệu:  TUT03.01  Ngày:  2/9/2006  Trang:  9/9  ‐ Sử dụng chương trình giao tiếp máy tính bất kỳ có chế độ truyền và nhận dữ liệu. (  dùng chương trình MSCOM của Ngohaibac )  ‐ Soạn thảo code chương trình như trên tạo file Hex rồi nạp vào PIC16F877A.   ‐ Thiết lập phần cứng như trong hình vẽ.  ‐ Kết nối PIC với cổng com của máy tính như sơ đồ trên.   ‐ Mở chương trình giao tiếp máy tính qua cổng Com rồi chọn chế độ truyền 8 bit, tốc  độ BAUD 9600.    ‐ Chọn connect rồi chuyền dữ liệu. Các bạn sẽ thấy dữ liệu nhận được sẽ như khi ta  nối tắt hai chân 2, 3 của cổng com và bạn sẽ thấy dữ liệu hiển thị qua LED> VD  truyền chữ ʺTʺ ứng với 0x54 hay 01010100 các bạn sẽ thấy có ba led sáng: led 6 và  led 4 , led 2  sáng còn các Led còn lại tối  ‐ ( lưu ý là dữ liệu hiển thị ra led là dữ liệu cuối cùng của đoạn text, vì các dữ liệu kia  chỉ xuất hiện trong thời gian rất ngắn nên không thể nhận ra được )      Hình 4: Giao diện mẫu  4. Kết luận   Trong tutorial này chỉ hướng dãn về cách thức truyền và nhận dữ liệu không đồng bộ   qua PC  cơ chế sử dụng 8 bit. Để tìm hiểu thêm về cơ chế USART trong PIC các bạn có thể  tham khảo Datasheet của PIC16F877A ( trang 111 )  Qua tutorial này các bạn sẽ biết được cách lập trình truyền nhận dữ liệu một cách đơn  giản, cách sử dung chương trình kết nối máy tính hay sơ đô sử dụng Max232 kết nối máy  tính.                                                                                                                                                          
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2