PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 02-02-2007, 11:14 AM   #1
moihocpic1985
Nhập môn đệ tử
 
Tham gia ngày: Aug 2006
Bài gửi: 9
:
Su dung EEPROM voi p16f877a?

Cac ban co the huong dan minh dung CCSC de thuc hien viec nap vao EEPROM gia tri cua lan lay mau ADC dau tien va thu 10! Lam the nao de co the nap va xoa nhung gia tri dinh truoc trong EEPROM? San day, xin hoi cach su dung phan mem Serial port monitor? Cam on!

thay đổi nội dung bởi: namqn, 02-02-2007 lúc 06:12 PM.
moihocpic1985 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-02-2007, 09:02 AM   #2
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi moihocpic1985 View Post
Cac ban co the huong dan minh dung CCSC de thuc hien viec nap vao EEPROM gia tri cua lan lay mau ADC dau tien va thu 10! Lam the nao de co the nap va xoa nhung gia tri dinh truoc trong EEPROM? San day, xin hoi cach su dung phan mem Serial port monitor? Cam on!
Bạn xem ví dụ mẫu của CCS C trong thư mục cài đặ đó, khá đầy đủ giao tiếp với eeprom 24Cxx!
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2007, 02:40 PM   #3
An Hiep
Đệ tử 1 túi
 
An Hiep's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 15
:
Nếu bạn chỉ định lưu các giá trị lấy mẫu ADC vào internal eeprom và sau mỗi lần ghi mới sẽ xóa phần ghi cũ đi thì bạn có thể tham khảo đoạn code dưới đây. Ví dụ đo điện áp <=5V trên kênh AN1 hiển thị lên LCD. Sau mỗi lần lấy mẫu mới sẽ xóa giá trị trước đó đi. Bài tập của bạn MOIHOCPIC1985 cũng tương tự thế thôi.

Code:
/*==============================================================================
* Author          :DRAGON(Hungnv0401@gmail.com)
* File Name       :Do ap va hien thi tren LCD
* Data            :10/5/2007
* Hardware        :PIC16F876A
* Compiler        :CCS C 3.249
* Description     :Voltage Measurement & Display on LCD
*=============================================================================*/

#include <16F876A.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP

#device *=16 ADC=8

#use delay(clock=10000000)
#define RS PIN_C4
#define RW PIN_C5
#define CE PIN_C7

#ifndef INTERNAL_EEPROM_UTINITIES
#define INTERNAL_EEPROM_UTINITIES

#ifndef INT_EEPROM_ADDRESS
#define INT_EEPROM_ADDRESS
#endif



int16 adc;
int16 voltage;
int8 nguyen, phan, i;

//* --------------------- Khoi tao ------------------------------------------*//
void lcd_init()
{
      output_low(RS);
      output_low(RW);
      output_low(CE);

      OUTPUT_b(0x0f);
      delay_ms(10);
      output_high(CE);
      delay_ms(1);
      output_low(CE);
}

//*---------------------- Dua byte ra LCD -----------------------------------*//
void lcd_put(byte data)
{
      output_high(RS);
      output_low(RW);
      output_low(CE);

      OUTPUT_b(data);
      delay_ms(10);
      output_high(CE);
      delay_ms(1);
      output_low(CE);
}

//*-------------------------- Chon 2 dong cho LCD ---------------------------*//
void lcd_2lines()
{
      output_low(RS);
      output_low(RW);
      output_low(CE);

      OUTPUT_b(0x38);
      delay_ms(10);
      output_high(CE);
      delay_ms(1);
      output_low(CE);
}


//*----------------------------- Gui dia chi cho LCD ------------------------*//
void lcd_add(byte add)
{
      byte real_add;
      real_add = 0x80 + add;

      output_low(RS);
      output_low(RW);
      output_low(CE);

      OUTPUT_b(real_add);
      delay_ms(10);
      output_high(CE);
      delay_ms(1);
      output_low(CE);
}


//----------------- Ghi 1 byte vao eeprom ------------------------------------//

void write_byte_eeprom(INT_EEPROM_ADDRESS address, int16 data)
{
   int8 i;

   for(i = 0; i < 2; ++i)
   {
     write_eeprom(address + i, *(&data + i));
   }
}


//*---------------- Doc 1 byte tu eeprom ------------------------------------*//

int16 read_byte_eeprom(INT_EEPROM_ADDRESS address)
{
   int8  i;
   int16 data;

   for(i = 0; i < 2; ++i)
   {
     *(&data + i) = read_eeprom(address + i);
   }

   return(data);
}


//*--------------------------- Chuong trinh chinh ---------------------------*//
void main()
{
   int16 t;
   int8 tr,ch,dv;
   delay_ms(10);
   lcd_init();
   lcd_2lines();



//*----------------- Doc du lieu tu eeprom va ghi ra LCD --------------------*//
   nguyen = read_byte_eeprom(0x110); // Tu d/chi 0x110 tro di la vung nho cua
   phan = read_byte_eeprom(0x111);   // thanh ghi da muc dich
   lcd_add(0x08);
   lcd_put(nguyen); lcd_put('.'); lcd_put(phan); lcd_put('V');
   lcd_put(32); lcd_put(32); lcd_put(32);
   delay_ms(1000);
   delay_ms(100);


   tr = read_byte_eeprom(0x112);
   ch = read_byte_eeprom(0x113);
   dv = read_byte_eeprom(0x114);
   lcd_add(0x08);
   lcd_put(tr); lcd_put(ch); lcd_put(dv);
   lcd_put(32); lcd_put(32); lcd_put(32);
   delay_ms(1000);


//*------------------------Chay chu tieu de ---------------------------------*//
   lcd_add(0x00);
   lcd_put('S'); lcd_put('t'); lcd_put('a'); lcd_put('r'); lcd_put('t');
   lcd_put('e'); lcd_put('d'); lcd_put('.'); lcd_put('.'); lcd_put('.');
   lcd_add(0x0F);lcd_put(32);
   delay_ms(500);

   lcd_add(0x07);
   lcd_put('.'); lcd_put('.'); lcd_put('.');
   lcd_add(0x0F);lcd_put(32);
   delay_ms(1000);

   lcd_add(0x00);
   lcd_put('L'); lcd_put('o'); lcd_put('a');
   lcd_put('d'); lcd_put('i'); lcd_put('n'); lcd_put('g');
   lcd_add(0x0F);lcd_put(32);
   delay_ms(5);




   for (i=1;i<=10;++i)
      {
      lcd_add(0x07);
      lcd_put('.'); lcd_put('.'); lcd_put('.');
      lcd_add(0x0F);
      lcd_put(32);
      delay_ms(100);
      lcd_add(0x07);
      lcd_put(32); lcd_put(32); lcd_put(32);
      lcd_add(0x0F);
      lcd_put(32);
      delay_ms(100);
      }

   lcd_add(0x00);
   lcd_put('V'); lcd_put('_'); lcd_put(32);
   lcd_put('M'); lcd_put('e'); lcd_put('s'); lcd_put('u'); lcd_put('r');
   lcd_put('e'); lcd_put('m'); lcd_put('e'); lcd_put('n'); lcd_put('t');
   lcd_put(32);  lcd_put(32);  lcd_put(32);  lcd_put(32);  lcd_put(32);
   lcd_put(32); lcd_put(32); lcd_put(32);
   delay_ms(1000);

   lcd_add(0x00);
   lcd_put('V'); lcd_put('o'); lcd_put('l'); lcd_put('t'); lcd_put('a');
   lcd_put('g'); lcd_put('e'); lcd_put(':');

   lcd_add(0x42);
   lcd_put('D'); lcd_put('a'); lcd_put('t');lcd_put('e');lcd_put(':');
   lcd_put('1');lcd_put('0');lcd_put('/');lcd_put('5');lcd_put('/');
   lcd_put('0');lcd_put('7');

   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(AN0_AN1_AN3);

   while(1)
   {
   set_timer1(0);
   set_adc_channel(1);
   delay_ms(10);
   adc=read_adc();
   voltage=adc*51/256;
   nguyen = voltage/10;
   phan = (voltage%10);
   nguyen = nguyen +48;
   phan = phan +48;
   lcd_add(0x08);
   lcd_put(nguyen); lcd_put('.'); lcd_put(phan); lcd_put('V');
   lcd_put(32); lcd_put(32); lcd_put(32);

      

   //* -------------- Ghi du lieu tuc thoi vao bo nho eeprom ----------------*//
   write_byte_eeprom(0x110,nguyen);
   write_byte_eeprom(0x111,phan);
   

   delay_ms(200);
   }

} // end.

thay đổi nội dung bởi: falleaf, 18-05-2007 lúc 03:42 PM.
An Hiep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2007, 02:45 PM   #4
An Hiep
Đệ tử 1 túi
 
An Hiep's Avatar
 
Tham gia ngày: May 2007
Bài gửi: 15
:
Bạn MOIHOCPIC có thể lắp mạch đơn giản chạy thử, tôi đã test rồi. Chạy OK.
__________________________________________________ _________________


Chúc bạn thành công!
Hungnv0401@gmail.com
An Hiep 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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Về dung lượng bộ nhớ pic hatuan296 Cơ bản về vi điều khiển và PIC 3 06-07-2010 10:23 PM
Giữ lại nội dung EEPROM khi nạp chương trình mới leduy173 Bootloaders - Programmers - Debuggers - Emulators 4 27-02-2007 07:14 PM
Huong dan su dung PICstart Plus briantk_1988 Bootloaders - Programmers - Debuggers - Emulators 1 29-01-2007 08:02 PM
Làm ơn giúp đỡ lập trình PIC với DS1307, EEPROM enti PIC - Thiết kế và Ứng dụng 1 20-11-2006 06:19 PM
Có ai đã dung 18F2550 bằng CCSC thì giúp em với MoH Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 2 10-07-2006 12:11 AM


Múi giờ GMT. Hiện tại là 08:45 PM.


Đượ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