PIC Vietnam

Go Back   PIC Vietnam > Các Đề Tài > PIC Việt Nam - Chuyên nghiệp

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC Việt Nam - Chuyên nghiệp Chúng ta sẽ thảo luận ở đây nhưng vấn đề về phương pháp nghiên cứu, cách làm việc và tổ chức công việc...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 22-12-2011, 11:15 PM   #1
k_no1
Nhập môn đệ tử
 
Tham gia ngày: Dec 2011
Bài gửi: 7
:
Unhappy Cần giúp đỡ về đồng hồ thời gian thực kết nỗi với LCD 16x2

Hiện tại là E đang có 1 bài tập là:

Xây dựng đồng hồ thời gian thực kết nỗi với LCD 16x2 (I2C). Dùng PIC 18F242+ DS1302.

Mấy anh trong diễn đàn giúp em viết code ( lập trình C ) và mạch mô phỏng cho đề tài sau với ạ.
hoặc có đề tài nào về cái này rồi thì các anh cho e tham khảo với ạ
Em mới làm quen với pic , mong mọi người giúp đỡ nhiều.
Xin chân thành Cảm ơn ạ.
k_no1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2011, 12:40 PM   #2
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
Cần giúp đỡ về đồng hồ thời gian thực kết nỗi với LCD 16x2

Chac K_no1 mới giải quyết bài tập thiết kế lần đầu, nên mình góp ý K_no1 thế này:
1. Hiểu rõ yêu cầu
2. Tìm hiểu tài liệu liên quan: tài liệu vô số trên internet..., chia nhỏ yêu cầu ra thành nhiều vấn đề, tìm hiểu kỹ từng vấn đề để hiểu rõ.
Vi dụ:
- Yêu cấu sử dụng PIC 18F242: tìm hiểu để hiểu rõ PIC này về bộ nhớ, vê số chân giao tiếp, thạch anh tối đa có thể sử dụng, kết nối phần cứng tối thiểu để PIC hoạt động, lựa chọn phần mềm compiler.
- Sử dụng DS1302: Down datasheet về, dọc kỹ datasheet, tìm hiểu cách giao tiếp với PIC...
- LCD 16x2: Tìm hiểu về Text LCD, cách giao tiếp với PIC(4 đường, 8 đường)...

3. Hỏi người khác: Sau khi tìm hiểu kỹ bước 1 và 2 mới đến bước thứ 3 khi mình không hiểu rõ vấn đề nào, phần nào...

4. Lên kế hoạch: thời gian thực hiện, các bước thực hiện ...

Một số ý chia sẽ cùng bạn như trên.

Trở lại với bài tập của bạn:
- Bạn sử dụng CCS compiler thì đã có sẵn ví dụ: DS1302.C(Real time clock functions). Bạn xem ví dụ này đi nhé.
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".
longtu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2011, 12:40 PM   #3
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
Code: DS1302.c

Code:
//////////////////////////////////////////////////////////////////////////
////                               DS1302.C                           ////
////                     Driver for Real Time Clock                   ////
////                                                                  ////
////  rtc_init()                                   Call after power up////
////                                                                  ////
////  rtc_set_datetime(day,mth,year,dow,hour,min)  Set the date/time  ////
////                                                                  ////
////  rtc_get_date(day,mth,year,dow)               Get the date       ////
////                                                                  ////
////  rtc_get_time(hr,min,sec)                     Get the time       ////
////                                                                  ////
////  rtc_write_nvr(address,data)                  Write to NVR       ////
////                                                                  ////
////  data = rtc_read_nvr(address)                 Read from NVR      ////
////                                                                  ////
////  get_bcd(data)                              Convert data to BCD  ////
////                                                                  ////
////  rm_bcd(data)                               Convert data to int  ////
////                                                                  ////
//////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services          ////
//// This source code may only be used by licensed users of the CCS C ////
//// compiler.  This source code may only be distributed to other     ////
//// licensed users of the CCS C compiler.  No other use, reproduction////
//// or distribution is permitted without written permission.         ////
//// Derivative programs created using this software in object code   ////
//// form are not restricted in any way.                              ////
//////////////////////////////////////////////////////////////////////////

#ifndef RTC_SCLK

#define RTC_SCLK PIN_B1
#define RTC_IO   PIN_B3
#define RTC_RST  PIN_B2

#endif

void write_ds1302_byte(BYTE cmd) {
   BYTE i;

   for(i=0;i<=7;++i) {
      output_bit(RTC_IO, shift_right(&cmd,1,0) );
      output_high(RTC_SCLK);
      output_low(RTC_SCLK);
   }
}

void write_ds1302(BYTE cmd, BYTE data) {

   output_high(RTC_RST);
   write_ds1302_byte(cmd);
   write_ds1302_byte(data);
   output_low(RTC_RST);
}

BYTE read_ds1302(BYTE cmd) {
   BYTE i,data;

   output_high(RTC_RST);
   write_ds1302_byte(cmd);

   for(i=0;i<=7;++i) {
      shift_right(&data,1,input(RTC_IO));
      output_high(RTC_SCLK);
      delay_us(2);
      output_low(RTC_SCLK);
      delay_us(2);
   }
   output_low(RTC_RST);

   return(data);
}

void rtc_init() {
   BYTE x;
   output_low(RTC_RST);
   delay_us(2);
   output_low(RTC_SCLK);
   write_ds1302(0x8e,0);
   write_ds1302(0x90,0xa4);
   x=read_ds1302(0x81);
   if((x & 0x80)!=0)
     write_ds1302(0x80,0);
}

int get_bcd(BYTE data)
{
   int nibh;
   int nibl;

   nibh=data/10;
   nibl=data-(nibh*10);

   return((nibh<<4)|nibl);
}

int rm_bcd(BYTE data)
{
   int i;

   i=data;
   data=(i>>4)*10;
   data=data+(i<<4>>4);

   return data;
}

void rtc_set_datetime(BYTE day, BYTE mth, BYTE year, BYTE dow, BYTE hr, BYTE min) {

   write_ds1302(0x86,get_bcd(day));
   write_ds1302(0x88,get_bcd(mth));
   write_ds1302(0x8c,get_bcd(year));
   write_ds1302(0x8a,get_bcd(dow));
   write_ds1302(0x84,get_bcd(hr));
   write_ds1302(0x82,get_bcd(min));
   write_ds1302(0x80,get_bcd(0));
}

void rtc_get_date(BYTE& day, BYTE& mth, BYTE& year, BYTE& dow) {
   day = rm_bcd(read_ds1302(0x87));
   mth = rm_bcd(read_ds1302(0x89));
   year = rm_bcd(read_ds1302(0x8d));
   dow = rm_bcd(read_ds1302(0x8b));
}

void rtc_get_time(BYTE& hr, BYTE& min, BYTE& sec) {
   hr = rm_bcd(read_ds1302(0x85));
   min = rm_bcd(read_ds1302(0x83));
   sec = rm_bcd(read_ds1302(0x81));
}

void rtc_write_nvr(BYTE address, BYTE data) {
   write_ds1302(address|0xc0,data);
}

BYTE rtc_read_nvr(BYTE address) {
    return(read_ds1302(address|0xc1));
}
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".
longtu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2011, 09:24 PM   #4
k_no1
Nhập môn đệ tử
 
Tham gia ngày: Dec 2011
Bài gửi: 7
:
ko biết longtu là boy hay girl. Nhưng em xin chân thành cảm ơn những ý kiến đóng góp của anh. Em sẽ xem xét kỹ. Nếu phần nào ko hiểu xin được a chỉ giáo cho ạ.
k_no1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-12-2011, 01:02 PM   #5
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
Cần giúp đỡ về đồng hồ thời gian thực kết nỗi với LCD 16x2

Tên minh là Minh Tuân, chắc bạn cũng đoán được không có bạn gái nào tên như thế đúng không.

Bạn cứ đặt câu hỏi, mọi người trên diễn đàn sẽ giúp bạn.
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".
longtu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-12-2011, 12:57 PM   #6
k_no1
Nhập môn đệ tử
 
Tham gia ngày: Dec 2011
Bài gửi: 7
:
Ai có thể cho e tài liệu về con Pic 18F242-I/SP ko?
E tìm mãi mà ko thấy.
Thank
k_no1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-01-2012, 09:09 PM   #7
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
ko có đâu bạn àh.... bạn viết bằng ccs thì chả nên quan tâm nó làm gì .từ khi bạn viết bằng mplab thì phải đọc datasheet....tiếng anh kém thì mệt lắm mấy cái này.
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-01-2012, 12:26 PM   #8
phatcddt08a
Đệ tử 5 túi
 
phatcddt08a's Avatar
 
Tham gia ngày: Dec 2010
Bài gửi: 101
:
Mình chưa tìm hiểu qua ds1302 nhưng mình viết thử dùng drivers ds1302.c có sẳn đã thành công ...thực sự mình cũng chưa đọc qua dataheet ko có thời gian làm chơi ai ngờ chạy.NẾU THẤY HAY THÌ THANHK NHÉ CÓ TINH THẦN POST TIẾP
File Kèm Theo
File Type: rar ds1302 pic16f877a.rar (42.5 KB, 88 lần tải)
phatcddt08a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:12 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam