¸¶ÇÏÀüÀÚ±â¼ú¿¬±¸¼Ò LOGO

Á¦Ç°°Ë»ö °í°´¼¾ÅÍ053-604-2355
±â¼úÀÚ·á½Ç

Home > ±â¼úÀÚ·á½Ç ±â¼úÀÚ·á½Ç

Á¦ ¸ñ 4. A/Dº¯È¯ÀÇ »ç¿ë¹ý
÷ºÎÆÄÀÏ


PIC16F87xÀÇ A/Dº¯È¯ÀÇ »ç¿ë¹ý


(2002/8/8)

¡¼°³¿ä¡½

¸¶ÀÌÅ©·ÎĨ»çÀÇ ÃֽŠÆÁÀÎ, PIC16F87x ½Ã¸®Áî¿¡´Â, ±â´Ù¸®±â ¾î·Á¿ö
ÀÖ´ø 10ºñÆ®ÀÇ A/Dº¯È¯ ¸ðµâÀÌ ³»ÀåµÇ¾ú½À´Ï´Ù.
¿©±â¿¡¼­´Â, ÀÌ 10ºñÆ® A/Dº¯È¯ ¸ðµâÀÇ »ç¿ë¹ýÀ» ÁÖ·Î CÄÄÆÄÀÏ·¯¸¦
º£À̽º·Î ÇØ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù.

¡¼10ºñÆ® A/Dº¯È¯ÀÇ °³¿ä¡½

PIC16F87x ½Ã¸®ÁîÀÇ 10ºñÆ® A/Dº¯È¯Àº, ¼ø¼­´ë·Î º¯È¯ ¹æ½Ä¿¡¼­, ºÐÇØ°¡´ÉÀÌ
1024 ´Ü°è°¡ µÈ °ÍÀÌ µË´Ï´Ù.
Áö±Ý±îÁö°¡ 8ºñÆ®·Î 256 ´Ü°è ¹Û¿¡ ¾ø¾ú±â ¶§¹®¿¡, ÃøÁ¤¿¡´Â ºÐÇØ°¡´É ºÎÁ·ÇØ
»ç¿ëÇÒ ¼ö ÀÖÁö ¾Ê¾Ò½À´Ï´Ù¸¸, À̹øÀº ²Ï ÀÀ¿ë¹üÀ§¸¦ ÆîÄ¥ ¼ö°¡ ÀÖ½À´Ï´Ù.
1024ÀÇ ºÐÇØ°¡´ÉÀÌ ÀÖ´Ù°í ÇÏ´Â °ÍÀº, 1 VÀÇ Àü¾ÐÀ» ÃøÁ¤ÇÒ ¶§´Â 1 mV´ÜÀ§
±×¸®°í °èÃø ÇÒ ¼ö ÀÖ´Ù°í ÇÏ´Â °ÍÀÌ µÇ±â ¶§¹®ÀÔ´Ï´Ù.

¡¼A/Dº¯È¯¿¡ ÇÊ¿äÇÑ º¯È¯ ½Ã°£¡½

PIC¿¡¼­´Â, A/Dº¯È¯À» Çϱâ À§Çؼ­, ¿ì¼± ¾Æ³¯·Î±× ½ÅÈ£¸¦ ÀÏ´Ü ³»ºÎÀÇ Äܵ§¼­
¿¡ ÀúÃàÇÕ´Ï´Ù. ±× ÈÄ, ÂüÁ¶°¡ µÇ´Â ÀÏÁ¤ÇÑ Àü¾ÐÀ» °¡»êÇØ ºñ±³Çϸ鼭 °èÃø ÇÑ´Ù
±×·¸´Ù°í ÇÏ´Â ¿ø¸®À̱â (À§ÇØ)¶§¹®¿¡, A/Dº¯È¯À» Á¤È®ÇÏ°Ô ½Ç½ÃÇϱâ À§Çؼ­(¶§¹®¿¡)´Â, ÃàÀûÇÒ ¶§±îÁöÀÇ ½Ã°£
(¿Í)°ú °èÃø ÇÒ ½Ã°£ÀÇ ¾çÂÊ ¸ðµÎ¸¦ È®º¸ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.
Á¾·¡ÀÇ PICÀÇ °æ¿ì¿Í ºñ±³ÇØ, ÀÌ ½Ã°£ÀÌ ¾î´À Á¤µµÀϱîÇÏ°í ¸»Çϸé(ÀÚ)

ÃàÀû ½Ã°££«°èÃø ½Ã°£=
¡¡(Á¾·¡ 8ºñÆ®)
¡¡¡¡¡¡¡¡12¥ìsec£«1.6¥ìsec¡¿9.5¡¡=ÃÖ¼Ò 28¥ìsec
¡¡(À̹ø 10ºñÆ®)
¡¡¡¡¡¡¡¡20¥ìsec£«1.6¥ìsec¡¿12¡¡=ÃÖ¼Ò 39¥ìsec
µË´Ï´Ù. (Ŭ¶ô 20 MHz¶§)

¡¼·¹Áö½ºÅÍÀÇ »ó¼¼ ³»¿ë¡½

A/Dº¯È¯ Á¦¾î¿ëÀ¸·Î´Â 3 Á¾·ùÀÇ ·¹Áö½ºÅÍ°¡ ÀÖ½À´Ï´Ù¸¸, »ó¼¼ ³»¿ë°ú ¼³Á¤ ³»¿ë
(Àº)´Â ¹Ø±×¸²°ú °°ÀÌ µÇ¾î ÀÖ½À´Ï´Ù.
PIC16F87xÀÇ Á¾·ù¿¡ ÀÇÇØ Ã¤³Î¼ö°¡ ´Ù¸¨´Ï´Ù¸¸, ¹Ø±×¸²Àº PIC16F877
ÀÇ ¿¹ÀÔ´Ï´Ù.




A/Dº¯È¯ Ŭ¶ô(Tad)ÀÇ ¼³Á¤ ¹æ¹ý¹ýÀº ¾Æ·¡ Ç¥·Î ÇÕ´Ï´Ù.

¼³Á¤

ADCS1, 0

PICÀÇ Å¬·° ÁÖÆļö

20MHz

10MHz

4MHZ

1MHz

Fosc/2

00

¡¡

¡¡

¡¡

2.0

Fosc/8

01

¡¡

¡¡

2.0

8.0

Fosc/32

10

1.6¡¡

3.2

8.0

¡¡

Frc

11

2~ 6¡¡

¡¡»óÇ¥¿Í °°ÀÌ Å¬·° ÁÖÆļö¿¡ ÀÇÇØ °¡´ÉÇÑ ¼³Á¤Àº Ȳ»öÀÇ ¼³Á¤
¡¡¸¸µË´Ï´Ù. ´Ù¸¥ ¼³Á¤À¸·Î ÇßÀ» °æ¿ì¿¡´Â, Á¤¹Ðµµ°¡ º¸ÁõµÇÁö ¾Ê½À´Ï´Ù.
¡¡¿Ö³ÄÇϸé A/D¿ë Ŭ¶ôÀ¸·Î¼­´Â 1.6¥ìsec ÀÌ»ó ÇÊ¿äÇÑ ¶§¹®ÀÔ´Ï´Ù.




¿©±â¿¡¼­´Â ƯÈ÷ ADFM ºñÆ®ÀÇ »ç¿ë¹ýÀÌ Áö±Ý±îÁö ¾ø¾ú´ø °ÍÀÌ µÇ¾î, ¹Ø±×¸²ÀÇ
°°Àº ÁöÁ¤ÀÌ µË´Ï´Ù.



¾Æ³¯·Î±× ÀÔ·Â Æ÷ÅäÀÇ »ç¿ë¹ýÀÇ ¼³Á¤Àº ¾Æ·¡ Ç¥¿Í °°ÀÌ µË´Ï´Ù

PCFG3£­0

RE2

RE1

RE0

RA5

RA3

RA2

RA1

RA0

0000

A

A

A

A

A

A

A

A

0001

A

A

A

A

Vref+

A

A

A

0010

D

D

D

A

A

A

A

A

0011

D

D

D

A

Vref+

A

A

A

0100

D

D

D

D

A

D

A

A

0101

D

D

D

D

Vref+

D

A

A

011x

D

D

D

D

D

D

D

D

1000

A

A

A

A

Vref+

Vref-

A

A

1001

D

D

A

A

A

A

A

A

1010

D

D

A

A

Vref+

A

A

A

1011

D

D

A

A

Vref+

Vref-

A

A

1100

D

D

D

A

Vref+

Vref-

A

A

1101

D

D

D

D

Vref+

Vref-

A

A

1110

D

D

D

D

D

D

D

A

1111

D

D

D

D

Vref+

Vref-

D

A

¡¡A´Â ¾Æ³¯·Î±× ÀԷ¡¡D´Â µðÁöÅ» ÀÔÃâ·Â¡¡Vref+¡¡Vref-´Â ±âÁØ Àü¾Ð ÀÔ·Â
¡¡±âÁØ Àü¾Ð ÀÔ·ÂÀÇ ÁöÁ¤ÀÌ ¾øÀ» ¶§´Â, Àü¿ø Àü¾ÐÀÌ ±âÁØÀÌ µÈ´Ù.



¡¼CÄÄÆÄÀÏ·¯¿¡¼­ÀÇ »ç¿ë¹ý¡½

CCS»ç CÄÄÆÄÀÏ·¯·Î, 10ºñÆ® A/Dº¯È¯À» Á¤»óÀûÀ¸·Î µ¿ÀÛ½ÃÅ°·Á¸é , µ¶ ºÕºñ´Â º¯¼ö
(À»)¸¦ longÇüÀ̳ª floatÇüÀ¸·Î ÇÏ´Â °Í¸¸À¸·Î 10ºñÆ®ÀÇ µ¥ÀÌÅͷμ­ µ¶ ºÕºô ¼ö°¡ ÀÖ½À´Ï´Ù.

(2001/1/12)
¡¡8ºñÆ®¿Í 10ºñÆ® °Ô´Ù°¡ right justify¿Í ÁÂÈú ÀÌ·¯ÇÑ ÀüºÎ¸¦ Ãë±ÞÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) Çϱâ À§ÇÑ(ÇØ)
¡¡Ver2. 732·Î ÀÇ»ç ¸í·ÉÀÌ Ãß°¡µÇ¾ú½À´Ï´Ù.
¡¡Ãß°¡µÈ ÀÇ»ç ¸í·ÉÀº ¾Æ·¡¿Í °°ÀÌ°¡ µÇ°í ÀÖ¾î, ÀÌ°ÍÀ»¡¡#include ¡¡¡¡<16 F877>ÀÇ
¡¡°ð ´ÙÀ½¿¡ ¾î¶² °ÍÀ̳ª Çϳª¸¦ ÁöÁ¤ Ãß°¡ÇÏ°Ô µÇ¾ú½À´Ï´Ù.

¡¡¡¡¡¡¡¶Ãß°¡ ÀÇ»ç ¸í·É¡·
¡¡¡¡¡¡¡¡¡¡#DEVICE¡¡¡¡ADC=8¡¡¡¡¡¡//Á¾·¡¿Í °°ÀÌ 8ºñÆ®·Î¼­ ÀÐÈù´Ù
¡¡¡¡¡¡¡¡¡¡#DEVICE¡¡¡¡ADC=10¡¡¡¡//10ºñÆ®·Î right justify·Î ÀÐÈù´Ù
¡¡¡¡¡¡¡¡¡¡#DEVICE¡¡¡¡ADC=16¡¡¡¡//10ºñÆ®ÀÌÁö¸¸, ¿ÞÂÊ Ã¤¿ì±â·Î ÀÐÈù´Ù.



¡¡½ÇÁ¦ÀÇ ¿¹·Î ¼³¸íÇϸé(ÀÚ), ¿ì¼± ¹Ø±×¸²ÀÇ È¸·Îµµ¸¦ ¹ÙÅÁÀ¸·Î ÇØ ¾Æ³¯·Î±× ½ÅÈ£ÀÌ´Ù
Analog0¿Í Analog1ÀÇ ÀÔ·ÂÀ» µðÁöÅ» µ¥ÀÌÅÍ·Î º¯È¯ÇÏ´Â ¿¹¸¦ »ý°¢ÇØ º¾´Ï´Ù.
Vref+¿¡ °¡¼¼ÇÏ´Â ·¹ÆÛ·±½º Àü¾ÐÀ» Á¤È®È÷ 2. 047 V·Î Çϸé, Àü¸éÀûÀÌ
0 V~2.047 VÀÇ ¹üÀ§°¡ µÇ¾î, 10ºñÆ®ÀÇ A/Dº¯È¯ ´ÙÀ½¿¡ »ý°¢Çϸé(ÀÚ), 1ºñÆ® ´ç 2mV
ÀÇ ºÐÇØ°¡´ÉÀÌ µË´Ï´Ù.
¶Ç, ·¹ÆÛ·±½º Àü¾ÐÀ» 1. 023 V ±×·¸´Ù¸é, 1ºñÆ® ¸Â¾Æ Á¤È®È÷ 1 mVÀÇ ºÐÇØ
³ë¿ì·Î ÇÒ ¼öµµ Àֱ⠶§¹®¿¡, ¸Å¿ì Ãë±ÞÇϱ⠽¬¿öÁý´Ï´Ù.






¡ì¿¹ 1¡í¡¡longÇüÀ¸·Î ¹ÙÀ̳ʸ® µ¥ÀÌÅͷμ­ Ãë±ÞÇÏ´Â °æ¿ì
¡¡¡¡¡¡ÀÌ ¿¹¿¡¼­´Â ¾×Á¤ Ç¥½Ã±â¿¡ÀÇ Ç¥½Ã ³»¿ëÀº ¾Æ·¡¿Í °°ÀÌ°¡ µË´Ï´Ù.

¡¡¡¡¡¡¡¡¡¡¡¡CH=2¡¡03EF

¡¡¡¡¡¡¾×Á¤ Ç¥½Ã±â¿¡ÀÇ Ç¥½Ã Ãâ·Â¿¡µµ¡±printf¹®"°¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °£´ÜÇÏ°Ô
¡¡¡¡¡¡Èñ¸ÁÇÏ´Â Æ÷¸ËÀ¸·Î Ç¥½Ã Ãâ·ÂÀ» ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


///////////////////////////////////////////
// A/D Converter test program for PIC16F877
// This A/D is 10bit mode
// LCD is SC1602BSLB or SC1602BS*B
//////////////////////////////////////////
#include <16f877.h>
#device¡¡ADC=10
#use delay(CLOCK=10000000)
#use fast_io(D)
#byte porta = 5
#byte portb = 6
#byte portc = 7
//////// Port define and link LCD library
#byte port = 8¡¡¡¡¡¡¡¡¡¡ //define port D
#define rs PIN_D0¡¡¡¡¡¡¡¡//chip select
#define rw PIN_D1¡¡¡¡¡¡ //read/write
#define stb PIN_D2¡¡¡¡¡¡ //strobe
#include

///////////////////////////////////////////////
// LCD test program main routine
// Display several message on LCD
// with some interval.
// Constant Message is send by lcd_data()
///////////////////////////////////////////////

main(){
¡¡¡¡int¡¡¡¡ch;¡¡¡¡¡¡¡¡¡¡¡¡//cahnnel number
¡¡¡¡long¡¡data;¡¡¡¡¡¡¡¡¡¡ //analog data

¡¡¡¡lcd_init();¡¡¡¡¡¡¡¡¡¡ //initialize LCD

¡¡¡¡setup_adc_ports(ANALOG_RA3_REF);¡¡//RA3 is Ref+ others A/D
¡¡¡¡setup_adc(ADC_CLOCK_DIV_32);¡¡¡¡¡¡//Fosc/32 full speed

¡¡¡¡do {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//endless loop
¡¡¡¡¡¡for (ch=0;ch<7;ch++){
¡¡¡¡¡¡lcd_clear();¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//clear display
¡¡¡¡¡¡set_adc_channel(ch);¡¡¡¡¡¡¡¡¡¡¡¡//set channel
¡¡¡¡¡¡delay_us(50);
¡¡¡¡¡¡data=read_adc();¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//get data 10 bits
¡¡¡¡¡¡printf(lcd_data, "CH=%1U %4LX", ch, data);
¡¡¡¡¡¡delay_ms(1000);
¡¡¡¡}
¡¡}while(1);
}



¡ì¿¹ 2¡í¡¡floatÇüÀ¸·Î 10Áø¼Ò¼ö·Î¼­ Ãë±ÞÇÏ´Â °æ¿ì
¡¡¡¡ÀÌ ¿¹·Î ¸»Çϸé(ÀÚ) ¾×Á¤ Ç¥½Ã±âÀÇ Ç¥½Ã´Â ¾Æ·¡¿Í °°ÀÌ°¡ µÇ¾î, Á÷Á¢ ÀÔ·Â Àü¾ÐÄ¡¸¦
¡¡¡¡Ç¥½Ã½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù.

¡¡¡¡¡¡¡¡¡¡¡¡CH=0¡¡1.002 Volt

¡¡¡¡¡¡¾×Á¤ Ç¥½Ã±â¿¡ÀÇ Ç¥½Ã Ãâ·Â¿¡µµ¡±printf¹®"°¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °£´ÜÇÏ°Ô
¡¡¡¡¡¡Èñ¸ÁÇÏ´Â Æ÷¸ËÀ¸·Î Ç¥½Ã Ãâ·ÂÀ» ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


///////////////////////////////////////////
// A/D Converter test program for PIC16F877
// This A/D is 10bit mode
// LCD is SC1602BSLB or SC1602BS*B
//////////////////////////////////////////
#include <16f877.h>
#device¡¡ADC=10
#use delay(CLOCK=10000000)
#use fast_io(D)
#byte porta = 5
#byte portb = 6
#byte portc = 7
//////// Port define and link LCD library
#byte¡¡port = 8¡¡¡¡¡¡¡¡¡¡¡¡//define port D
#define¡¡rs PIN_D0¡¡¡¡¡¡¡¡//chip select
#define rw PIN_D1 ¡¡¡¡¡¡¡¡//read/write
#define stb PIN_D2 ¡¡¡¡¡¡¡¡//strobe
#include

///////////////////////////////////////////////
// LCD test program main routine
// Display several message on LCD
// with some interval.
// Constant Message is send by lcd_data()
///////////////////////////////////////////////

main(){
¡¡¡¡int¡¡¡¡ch;¡¡¡¡¡¡¡¡¡¡¡¡¡¡//cahnnel number
¡¡¡¡float¡¡data;¡¡¡¡¡¡¡¡¡¡¡¡//analog data

¡¡¡¡lcd_init();¡¡¡¡¡¡¡¡¡¡¡¡ //initialize LCD

¡¡¡¡setup_adc_ports(ANALOG_RA3_REF);¡¡//RA3 is Ref+ others A/D
¡¡¡¡setup_adc(ADC_CLOCK_DIV_32);¡¡¡¡¡¡//Fosc/32 full speed

¡¡¡¡do {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//endless loop
¡¡¡¡¡¡for (ch=0;ch<7;ch++){
¡¡¡¡¡¡¡¡lcd_clear();¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//clear display
¡¡¡¡¡¡¡¡set_adc_channel(ch);¡¡¡¡¡¡¡¡¡¡//set channel
¡¡¡¡¡¡¡¡delay_us(50);
¡¡¡¡¡¡¡¡data=read_adc();¡¡¡¡¡¡¡¡¡¡¡¡¡¡//get data 10 bits
¡¡¡¡¡¡¡¡printf(lcd_data, "CH=%1U %1. 3f Volt", ch, data/500);
¡¡¡¡¡¡¡¡delay_ms(1000);
¡¡¡¡¡¡}
¡¡¡¡}while(1);
}




(±¸ÆÇ º¸Á¸)

¡¼CÄÄÆÄÀÏ·¯ÀÇ ¹Ìºñ ¼öÁ¤¡½

CCS»çÀÇ CÄÄÆÄÀÏ·¯¿¡¼­´Â, Ver2. 660ÀÌÈÄÀÇ ¹öÁ¯¿¡ ´ëÇؼ­´Â PIC16F87x
½Ã¸®Á ¼­Æ÷Æ®ÇÏ°í ÀÖ½À´Ï´Ù.
±×·¯³ª, ¿À¸®Áö³¯ÀÇ Çì´õ ÆÄÀÏ¿¡´Â ÀϺΠ¹Ìºñ°¡ ÀÖ´Â °Í °°¾Æ, A/Dº¯È¯ÀÇ
¼³Á¤ÀÌ ÀϺο¡¼­ ¿ÀÁö ¾Ê½À´Ï´Ù.

°Å±â¼­ ¿ì¼± Çì´õ ÆÄÀÏÀÇ ¼öÁ¤À» ½Ç½ÃÇÕ´Ï´Ù. ¼öÁ¤À̶ó°í Çصµ °£´ÜÇØ, MPLAB
ÀÇ µð·ºÅ丮ÇÏ¿¡ ÀÖ´Â PIC16C74ÀÇ Çì´õ ÆÄÀÏ(16c74.h)ÀÇ ¸¶Áö¸· ¸î ÁÙ±âÀÇ
¾Æ·¡¿Í °°ÀÌ ºÎºÐÀ» Ä«ÇÇÇØ, PIC16F877ÀÇ Çì´õ ÆÄÀÏ(16f877.h)ÀÇ ¸¶Áö¸·¿¡ ÃÄ
ºÙÀÎ µÚ, µ¡¾²±â º¸Á¸ÇÕ´Ï´Ù.
ÀÌ°ÍÀ¸·Î SETUP_ADC( ) ÇÔ¼öµµ Á¤»óÀûÀ¸·Î ÄÄÆÄÀÏ µÇ°Ô µË´Ï´Ù.


////////////////////////// Constants used for SETUP_ADC()
#define ADC_OFF¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡0
#define ADC_CLOCK_DIV_2¡¡¡¡¡¡¡¡1
#define ADC_CLOCK_DIV_8¡¡¡¡ 0x41
#define ADC_CLOCK_DIV_32¡¡¡¡0x81
#define ADC_CLOCK_INTERNAL¡¡0xc1

#define ADC_DONE¡¡0x8C40¡¡// Used for ENABLE/DISABLE INTERRUPTS
#define INT_ADC¡¡ 0x8C40¡¡// Used for ENABLE/DISABLE INTERRUPTS



(2001/1/12)
ÀÌ ºÒÆíµµ Ver2. 7ÀÌÈÄ´Â ¼öÁ¤µÇ°í Àֱ⠶§¹®¿¡, ÃÖ½ÅÀÇ Example¸¦ ´Ù¿ì ·Îµå
ÇØ Àü°³ÇÏ¸é ¸ðµç Çì´õ ÆÄÀÏÀÌ ÃÖ½ÅÀÇ °Í¿¡ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ Example´Â ´©±¸¶óµµ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸ñ·Ïº¸±â

www.1chip.com, www.1chip.co.kr
www.micom114.com
ÀÚ·á½Ç¹Ù·Î°¡±â

´ë±¸±¤¿ª½Ã ºÏ±¸ »ê°Ý2µ¿ 1629 »ê¾÷¿ëÀç°ü 10µ¿ 13È£ (2Ãþ) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com