当前位置:首页 > 单片机 > 单片机
[导读]working on a SPI based ADC MCP3202, using Atmel 89C51ED2 micro controller#include #include #include #include"display.h" sbit CS = P1^0; unsigned int call_adc(unsigned char Channel);

working on a SPI based ADC MCP3202, using Atmel 89C51ED2 micro controller

#include
#include
#include
#include"display.h"

sbit CS = P1^0;


unsigned int call_adc(unsigned char Channel);


unsigned int call_adc(unsigned char Ch)
{

unsigned int Data1,Data2;
unsigned char Channel;

CS=0; /* Chip Select for ADC Active State */

if(Ch==0) /* Channel Select */
Channel=0x0D; /* Channel -1 */
else
Channel=0x0F; /* Channel -2 */

SPDAT=Channel; /* Channel i/p for SPI */
while(!(SPSTA&0x80));
Data1=SPDAT; /* Higher 8bit of ADC value */
SPSTA|=0x7F; /* Clear Trasmit Flag */
Data1=Data1<<8;
SPDAT=0x00;
while(!(SPSTA&0x80));
SPSTA|=0x7F; /* Clear Trasmit Flag */
Data2=SPDAT; /* Lower 8bit of ADC value */
Data1|=Data2; /* 12 Bit ADC Value */

CS=1; /* Chip Select for ADC off State*/

return (Data1>>4); /* 12 Bit ADC Data */

}



void main()
{
unsigned int Adc_Data=0;
static unsigned char Buffer[10];

SPCON |= 0x10; /* Master mode */
SPCON |= 0x82; /* Fclk Periph/128 */
SPCON &= ~0x08; /* CPOL=0; transmit mode example */
SPCON |= 0x04; /* CPHA=1; transmit mode example */
SPCON |= 0x40; /* run spi */
SPSTA |= 0x7F; /* Clear Trasmit Flag */


Initlcd();

while(1)
{
Adc_Data=call_adc(0);
sprintf(Buffer,"%d",(unsigned int)Adc_Data);
display(Buffer,0x80);
}


}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭