R
Rajeshwariembedded
Guest
Esu naujas PIC valdiklio.
Aš bandymai Integruotą ADC 16f877a.
Aš bandė grandinių metodas naudojant 10Kpot.
Gebu skaityti vertė, tačiau taip, kaip 0V iki 2.5V ir vėl 2.5V iki 0V.
Aš taikant įtampos puodai yra 5V.
Tačiau ji nėra pasiekia didžiausią vertę.
Koks gali būti problema.
Aš pridėti kodavimo, can anyone help me prašome
Parašytas po 4 minučių:
Atsiprašau, pamiršau pridėti kodavimo.
Čia kodavimo taip, kaip/ / LCD konfigūracijos
/ / RS RC6/ / E RC7
#
include <16f877a.h>#
include <string.h>#
include <stdlib.h>
# saugikliai SS, NOWDT, NOLVP, NOPROTECT, NOBROWNOUT, NODEBUG
# naudoti vėlavimą (laikrodis = 20000000)# byte TRISA = 0x85# byte TRISB = 0x86# byte TRISC = 0x87# byte TRISD = 0x88# byte TRISE = 0x89
# byte PORTA = 0x05# byte PORTB = 0x06# byte PORTC = 0x07# byte PORTD = 0x08# byte Porte = 0x09
# byte ADRESH = 0x1E# byte ADRESL = 0x9e# byte ADCON0 = 0x1f# byte ADCON1 = 0x9f
# bit GODONE = ADCON0.2# bit ADON = ADCON0.0
# bit HBLED = PORTB.5# bit HBLEDD = TRISB.5
# bit LCDRS = PORTC.6# bit LCDRSD = TRISC.6
# bit ENB = PORTC.7# bit ENBD = TRISC.7
# define Dataline PORTD
unsigned int ledcount = 0;
unsigned char j = 0;
sąjungos Pulsas(Nepasirašytos ilgai intnum;unsigned char charnum [2]Pulsecount;# INT_TIMER0tuščia Timer0_isr ()(if ( ledcount> 5)(ledcount = 0;HBLED = ~ HBLED)tuščia vėlavimas (unsigned char sec)(unsigned char i, k;
for (k = 0, k <s, k )(for (i = 0; i <200; i ))tuščia delay1 (unsigned int del)(unsigned int i, k;
for (k = 0, k <del, k )(for (i = 0; i <200; i ))tuščia Commandreg (unsigned char komanda)(LCDRS = 0;Dataline = komandą;ENB = 1;vėlavimą (20);ENB = 0
tuščia Datareg (unsigned char Datadis)(LCDRS = 1;Dataline = Datadis;ENB = 1;vėlavimą (20);ENB = 0
tuščia Lcdinitialize (tuščia)(
Commandreg (0x01); / / Cleardisplayvėlavimą (20);
Commandreg (0x0c); / / Parodyti įjungimo / išjungimo kontrolėsvėlavimą (20);
Commandreg (0x3a); / / Pareigos nustatytivėlavimą (20);
Commandreg (0x06); / / Entrymode nustatytivėlavimą (20);
)
tuščia Clearline1 (tuščia)(Commandreg (0x02); / / Grįžti į pagrindinį puslapįvėlavimą (20);
for (j = 0; j <16; j )(Datareg ( '');vėlavimą (20)
Commandreg (0x02); / / Grįžti į pagrindinį puslapįvėlavimą (20)
tuščia Clearline2 (tuščia)(
Commandreg (0xc0); / / Grįžti į pagrindinį puslapįvėlavimą (20);
for (j = 0; j <16; j )(Datareg ( '');vėlavimą (20)
Commandreg (0xc0); / / Grįžti į pagrindinį puslapįvėlavimą (20)
tuščia rightcursorpos (unsigned char POS)(unsigned char j;for (j = 0; j <Pos j )(Commandreg (0x14); / / Grįžti į pagrindinį puslapįvėlavimą (20))tuščia Eiti (unsigned char a unsigned char b)(if (a == 1)Commandreg (0x02); / / Grįžti į pagrindinį puslapįelse if (a == 2)Commandreg (0xc0); / / Grįžti į pagrindinį puslapįvėlavimą (10);rightcursorpos (b);
)
tuščia Displayfun (unsigned char * str)(unsigned char ilgis = 0, patikrinkite = 0;Patikrinti = strlen (str);dėl (ilgis = 0; ilgis <patikrinimą; ilgis )(Datareg (g. [ilgis]);vėlavimą (20))void main ()(
unsigned char String [8] = "Sveiki";unsigned char ADCVal [7] = "0.00V;int Hex1;
float c;int ref;char MSBValue = 0, LSBValue = 0, Printvalue1, Printvalue2, count = 0;
/ / Setup_adc_ports (NO_ANALOGS);/ / Setup_adc (ADC_OFF);setup_psp (PSP_DISABLED);setup_spi (FALSE);setup_timer_0 (RTCC_INTERNAL | RTCC_DIV_256);setup_timer_1 (T1_DISABLED);setup_timer_2 (T2_DISABLED, 0,1);setup_comparator (NC_NC_NC_NC);setup_vref (FALSE);
enable_interrupts (Globalus);enable_interrupts (INT_TIMER0);/ / Enable_interrupts (INT_AD);set_timer0 (0);
HBLEDD = 0; / / Heart Beat LED kryptis KALTAI
TRISD = 0x00; / / Kryptis linijos
LCDRSD = 0; / / LCD - RS kryptis KALTAI
ENBD = 0; / / LCD - Įjungti kryptis KALTAI
Dataline = 0x00;
Lcdinitialize ();vėlavimą (15);
Datareg ( "R");
Clearline1 ();Clearline2 ();
Eiti (1,0);Displayfun (String);
Eiti (2,0);
Displayfun (ADCVal);
uždelsimas (100);
uždelsimas (100);
/ / ADCON0 = 0xc1;/ / ADCON1 = 0x0e;
TRISA = 0xFF;TRISE = 0xFF;
Clearline1 ();Clearline2 ();GODONE = 1;o (1)(
ADON = 1;
jei (GODONE == 0)(Pulsecount.charnum [1] = ADRESH;Pulsecount.charnum [0] = ADRESL;
/************************************************* ** /
Pulsecount.intnum = Pulsecount.intnum>> 6;
/ / C = ((((Pulsecount.intnum) * 5) / 1024) * 100);
c = (Pulsecount.intnum * 0,4882);/ / C = (Pulsecount.intnum * 1,9531);
Hex1 = (int) c;
Eiti (1,10);
Datareg ((Hex1/100) 0x30);
Datareg (((Hex1% 100) / 10) 0x30);
Datareg (((Hex1% 100)% 10) 0x30);
/************************************************* ** /
GODONE = 1;
delay1 (5000);delay1 (5000);Clearline1 ();Clearline2 ();delay1 (5000)
)
)
Aš bandymai Integruotą ADC 16f877a.
Aš bandė grandinių metodas naudojant 10Kpot.
Gebu skaityti vertė, tačiau taip, kaip 0V iki 2.5V ir vėl 2.5V iki 0V.
Aš taikant įtampos puodai yra 5V.
Tačiau ji nėra pasiekia didžiausią vertę.
Koks gali būti problema.
Aš pridėti kodavimo, can anyone help me prašome
Parašytas po 4 minučių:
Atsiprašau, pamiršau pridėti kodavimo.
Čia kodavimo taip, kaip/ / LCD konfigūracijos
/ / RS RC6/ / E RC7
#
include <16f877a.h>#
include <string.h>#
include <stdlib.h>
# saugikliai SS, NOWDT, NOLVP, NOPROTECT, NOBROWNOUT, NODEBUG
# naudoti vėlavimą (laikrodis = 20000000)# byte TRISA = 0x85# byte TRISB = 0x86# byte TRISC = 0x87# byte TRISD = 0x88# byte TRISE = 0x89
# byte PORTA = 0x05# byte PORTB = 0x06# byte PORTC = 0x07# byte PORTD = 0x08# byte Porte = 0x09
# byte ADRESH = 0x1E# byte ADRESL = 0x9e# byte ADCON0 = 0x1f# byte ADCON1 = 0x9f
# bit GODONE = ADCON0.2# bit ADON = ADCON0.0
# bit HBLED = PORTB.5# bit HBLEDD = TRISB.5
# bit LCDRS = PORTC.6# bit LCDRSD = TRISC.6
# bit ENB = PORTC.7# bit ENBD = TRISC.7
# define Dataline PORTD
unsigned int ledcount = 0;
unsigned char j = 0;
sąjungos Pulsas(Nepasirašytos ilgai intnum;unsigned char charnum [2]Pulsecount;# INT_TIMER0tuščia Timer0_isr ()(if ( ledcount> 5)(ledcount = 0;HBLED = ~ HBLED)tuščia vėlavimas (unsigned char sec)(unsigned char i, k;
for (k = 0, k <s, k )(for (i = 0; i <200; i ))tuščia delay1 (unsigned int del)(unsigned int i, k;
for (k = 0, k <del, k )(for (i = 0; i <200; i ))tuščia Commandreg (unsigned char komanda)(LCDRS = 0;Dataline = komandą;ENB = 1;vėlavimą (20);ENB = 0
tuščia Datareg (unsigned char Datadis)(LCDRS = 1;Dataline = Datadis;ENB = 1;vėlavimą (20);ENB = 0
tuščia Lcdinitialize (tuščia)(
Commandreg (0x01); / / Cleardisplayvėlavimą (20);
Commandreg (0x0c); / / Parodyti įjungimo / išjungimo kontrolėsvėlavimą (20);
Commandreg (0x3a); / / Pareigos nustatytivėlavimą (20);
Commandreg (0x06); / / Entrymode nustatytivėlavimą (20);
)
tuščia Clearline1 (tuščia)(Commandreg (0x02); / / Grįžti į pagrindinį puslapįvėlavimą (20);
for (j = 0; j <16; j )(Datareg ( '');vėlavimą (20)
Commandreg (0x02); / / Grįžti į pagrindinį puslapįvėlavimą (20)
tuščia Clearline2 (tuščia)(
Commandreg (0xc0); / / Grįžti į pagrindinį puslapįvėlavimą (20);
for (j = 0; j <16; j )(Datareg ( '');vėlavimą (20)
Commandreg (0xc0); / / Grįžti į pagrindinį puslapįvėlavimą (20)
tuščia rightcursorpos (unsigned char POS)(unsigned char j;for (j = 0; j <Pos j )(Commandreg (0x14); / / Grįžti į pagrindinį puslapįvėlavimą (20))tuščia Eiti (unsigned char a unsigned char b)(if (a == 1)Commandreg (0x02); / / Grįžti į pagrindinį puslapįelse if (a == 2)Commandreg (0xc0); / / Grįžti į pagrindinį puslapįvėlavimą (10);rightcursorpos (b);
)
tuščia Displayfun (unsigned char * str)(unsigned char ilgis = 0, patikrinkite = 0;Patikrinti = strlen (str);dėl (ilgis = 0; ilgis <patikrinimą; ilgis )(Datareg (g. [ilgis]);vėlavimą (20))void main ()(
unsigned char String [8] = "Sveiki";unsigned char ADCVal [7] = "0.00V;int Hex1;
float c;int ref;char MSBValue = 0, LSBValue = 0, Printvalue1, Printvalue2, count = 0;
/ / Setup_adc_ports (NO_ANALOGS);/ / Setup_adc (ADC_OFF);setup_psp (PSP_DISABLED);setup_spi (FALSE);setup_timer_0 (RTCC_INTERNAL | RTCC_DIV_256);setup_timer_1 (T1_DISABLED);setup_timer_2 (T2_DISABLED, 0,1);setup_comparator (NC_NC_NC_NC);setup_vref (FALSE);
enable_interrupts (Globalus);enable_interrupts (INT_TIMER0);/ / Enable_interrupts (INT_AD);set_timer0 (0);
HBLEDD = 0; / / Heart Beat LED kryptis KALTAI
TRISD = 0x00; / / Kryptis linijos
LCDRSD = 0; / / LCD - RS kryptis KALTAI
ENBD = 0; / / LCD - Įjungti kryptis KALTAI
Dataline = 0x00;
Lcdinitialize ();vėlavimą (15);
Datareg ( "R");
Clearline1 ();Clearline2 ();
Eiti (1,0);Displayfun (String);
Eiti (2,0);
Displayfun (ADCVal);
uždelsimas (100);
uždelsimas (100);
/ / ADCON0 = 0xc1;/ / ADCON1 = 0x0e;
TRISA = 0xFF;TRISE = 0xFF;
Clearline1 ();Clearline2 ();GODONE = 1;o (1)(
ADON = 1;
jei (GODONE == 0)(Pulsecount.charnum [1] = ADRESH;Pulsecount.charnum [0] = ADRESL;
/************************************************* ** /
Pulsecount.intnum = Pulsecount.intnum>> 6;
/ / C = ((((Pulsecount.intnum) * 5) / 1024) * 100);
c = (Pulsecount.intnum * 0,4882);/ / C = (Pulsecount.intnum * 1,9531);
Hex1 = (int) c;
Eiti (1,10);
Datareg ((Hex1/100) 0x30);
Datareg (((Hex1% 100) / 10) 0x30);
Datareg (((Hex1% 100)% 10) 0x30);
/************************************************* ** /
GODONE = 1;
delay1 (5000);delay1 (5000);Clearline1 ();Clearline2 ();delay1 (5000)
)
)