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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 05-01-2007, 10:10 AM   #9
Sangcao
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 25
:
Anh Nam a , day la ctr cua em, em hien thi tren led 7 doan, phan hien thi ko co gi , chan cua ad7715 em noi chan nhu trong huong dan. day la code:
Code:
#include <16f877.h>
#include <defs_16f877A.h>
//#include <AD7715.c>
//#device *=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT//HS,NOWDT,NOLVP,NOPUT, NOCPD, NOWRT, NOBROWNOUT, NOPROTECT  //NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=11059200)  // Su dung Fuse nay thi co nhieu , ko biet tai sao?
#use fast_io(b)
#use fast_io(d)
#use fast_io(c)

int8 const  BCD2LED[]={ 0x41, 0xED, 0x54, 0xC4, 0xE8,\
							0xC2, 0x42, 0xE5, 0x40, 0xC0, };
int8      COUNT1 ,COUNT2;

int16     COUNTX,T1,T2;          // Bien trong ngat
int16      BUFF[4], Y0, Y1;        // Bo dem de hien thi so tat hay khong
int8      BCD[4];
 int16 value;
//-------------------------------------------------------------//
#define LED1 RB4              // =0 thi LED sang
#define LED2 RB5
#define LED3 RB6
#define LED4 RB7
//-----------
#define ADC_CS    RC7  // Noi dat GND
#define ADC_RESET RC6   // Noi VCC
#define ADC_DRDY  RC2
#define ADC_DI    RC4
#define ADC_DO    RC5
#define ADC_CLK   RC3



 Void LamTuoi()

   {
       if(COUNT1 >=4)   {COUNT1 = 0;     }
		     PORTB = 0xf0;
           PORTD = BCD2LED[BCD[COUNT1]];  // CHOT*/

              switch (COUNT1) {
               case 0: LED1 =0; //bat led1
                       break;
               case 1: LED2 =0; //bat led2
                       break;
               case 2: LED3 =0; //bat led3
                       break;
               case 3: LED4 =0; //bat led4
                       break;

                       }
              COUNT1 ++;
 }
#int_timer0
void ngat()
   {
       Set_timer0(0);
             COUNT2 ++;
       if (Count2 == 10){
                        Count2 = 0;
                        LamTuoi();
                        //COUNTX = read_adc();
                        }
   }
void InBCD(int8 value4,int8 value3,int8 value2,int8 value1)
     {
          BCD[0]= value4;
          BCD[1]= value3;
          BCD[2]= value2;
          BCD[3]= value1;
     }


void LedView( int16 Value) // DUA SO VAO DE HIEN THI
   {
          BUFF[3]  = Value/1000;
          Y0       = Value%1000;
          BUFF[2]  = Y0/100;
          Y1       = Y0%100;
          BUFF[1]  = Y1/10;
          BUFF[0]  = Y1%10;

          InBCD(BUFF[3],BUFF[2],BUFF[1],BUFF[0]);
   }

void write_adc_byte(Byte data);

adc_init()
{
	ADC_RESET = 0;
   ADC_CLK =1;
	ADC_CS =1;	//Set low to AD7715 chip select low pin
	ADC_RESET =1;	//Set high to AD7715 reset low pin
	delay_ms(30);

	write_adc_byte( 0x12 );			//Communications Register
	write_adc_byte( 0x62 );			//Setup Register info here
}

void write_adc_byte(BYTE data) {
     int8 i;

     ADC_CS =0;
   for(i=1;i<=8;++i) {
      ADC_CLK =0;
     output_bit(PIN_C4,shift_left(&data,1,0));  // Output the MSB of data to

    // DI and at the same time  shift 0 into the LSB of data

      ADC_CLK =1;
                      }
   ADC_CS =1;
}


 int16 read_adc_word() {
   int8 i;
   BYTE data;

   ADC_CS =0;
   for(i=1;i<=16;++i) {
      ADC_CLK =0;
      ADC_CLK =1;
      shift_left(&data,2,input(PIN_C5));
   }
   ADC_CS =1;
   return data;
}



 int16 read_adc_value() {
        int16 value;  //long mac dinh kieu int16

	while ( input(PIN_C2) );
	while ( !input(PIN_C2) );
	while ( input(PIN_C2) );

	write_adc_byte(0x3a);
	value=read_adc_word();

//	return value;
}



void KhoiTao()
{
     set_tris_b(0b00001111);           // 1 Dau vao =0 la dau ra
     set_tris_d(0);                     // ra
     set_tris_c(0b11111111);
     enable_interrupts(global);
     //enable_interrupts(int_ext);
     enable_interrupts(int_timer0);
     Setup_timer_0(RTCC_INTERNAL| RTCC_DIV_4);
     Set_timer0(0) ;              //vao
     Value=0;
     Delay_ms(10);

}
     //-------------------------------------------------------------


void main()
 {    Khoitao();
     adc_init();
       ledview(Value);
       Lamtuoi();

   while (1) {

      read_adc_value() ;

      ledview(Value);
      Lamtuoi();

   }


 }

thay đổi nội dung bởi: namqn, 05-01-2007 lúc 09:34 PM.
Sangcao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 11:04 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