ATmage128 操作16位AD芯片MAX1168的完整程序

发布者:bonbono最新更新时间:2016-07-28 来源: eefocus关键字:ATmage128  MAX1168 手机看文章 扫描二维码
随时随地手机看文章

/****************引脚定义*********************************
接口:硬件SPI
PB.1(SCK)    SCLK   方向:1
PB.2(MOSI)   DIN    方向:1
PB.3(MISO)   DOUT   方向:0
PB.4         CS     方向:1
PB.5         EOC    方向:0   DRRB="0x06"

MCU:ATmage128
AD:MAX1168(16bit)
晶振:11.0592M
编写:Jesse Rei
**********************************************************/
#include
#include
#include"lcd.c"

#define uchar unsigned char
#define uint  unsigned int

#define Command_H 0x01     //000 00 00 1 通道0,单通道转换,无节电模式,内部时钟
#define Command_L 0x00     //命令低八位为任意数

#define CS_L   PORTB&=~(1<<4) //PB.4
#define CS_H   PORTB|=(1<<4)  
#define READY  PINB&0x20     //PB.5

uchar tab[10]={'0','1','2','3','4','5','6','7','8','9'};

/**************全局变量*****************************/
uchar buffer[5]={1,1,1,1,1};
uchar count="0";
uint sum="0";
/***************************************************/
/******************端口初始化***********************/
void port_init(void)
{
 PORTA = 0xff;
 DDRA  = 0xff;
 
 PORTB = 0x06;
 DDRB  = 0xff;
 
 PORTC = 0x00; //m103 output only
 DDRC  = 0x00;
 
 PORTD = 0xff;
 DDRD  = 0xff;
 
 PORTE = 0x00;
 DDRE  = 0x00;
 
 PORTF = 0x00;
 DDRF  = 0x00;
 
 PORTG = 0x00;
 DDRG  = 0x00;
}
/*********************************************************/
/*********************SPI初始化***************************/
void spi_init(void)

  SPCR="0x5d";   //SPI允许,主机模式,高字节在前,工作模式3,Fck/128
               //SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
      //  0         1    0        1         1         0      1       1
  SPSR = 0x00; //setup SPI,主机倍频     
}
/*********************************************************/
/*********************启动AD转换***************************/
void start(uchar Com_H,uchar Com_L)
{
  CS_L;
  SPDR="Com"_H;
  while(!(SPSR&(1<   SPDR="Com"_L;
  while(!(SPSR&(1< }
/*********************************************************/
/******************拆数,用以显示*************************/
void data_to_buffer(uint a)
{
  uchar i;
  for(i=0;i<=4;i++)
  {
    buffer[i]=a%10;
 a=a/10;
  }
}
/**********************************************************/
/******************拆数,用以显示*************************/
void getdata(void)
{
  uchar data_l=0,data_h=0;
  uint ad_data=0,ad_data1=0,ad_data2;
  uint ad_dat=0;

  SPDR = 0xff;               //发送数据,给max1168提供脉冲
  while (!(SPSR &(1<   data_h=SPDR;               //得到高八位
  
  SPDR = 0xff;               //发送数据,给max1168提供脉冲
  while (!(SPSR &(1<   data_l=SPDR;               //得到低八位
  
  ad_data=(unsigned int)data_h*256+data_l;//高低八位合并
  ad_dat=ad_data/16;  //转换成电压值 
  
  sum+=ad_dat;        //十六次采样结果累加和
  count++;
  if(count>15)
  {
    count="0";
 ad_data1=sum/16;       //sum除以16得平均值
    ad_data2=ad_data1*3;
    data_to_buffer(ad_data2);  
 sum=0;   
  }

  CS_H;
}
/**********************************************************/
/*************************延时1ms**************************
void delay1ms(uint t)
{
 uint i; 
 for(;t>0;t--)
  for(i=0;i<1106;i++)
   ;       
}
**********************************************************/
/*************************主程序***************************/
void main()
{
  port_init();
  init_lcd();
  lat_disp (0x00,0x00);
  chn_disp (tab1);
  delay1ms(5500);
  chn_disp (tab2);

  spi_init();

  start(Command_H,Command_L);
  while(1)
  {
 while(READY);  //等待转换结束
    getdata();
    disp_two_char(0x8a,tab[buffer[4]],tab[buffer[3]]); 
    disp_two_char(0x8b,tab[buffer[2]],tab[buffer[1]]); 
    disp_two_char(0x8c,tab[buffer[0]],'V');

    start(Command_H,Command_L);
  }
}

关键字:ATmage128  MAX1168 引用地址:ATmage128 操作16位AD芯片MAX1168的完整程序

上一篇:ATmega128型号标识说明
下一篇:avr内部EEPROM实验

推荐阅读最新更新时间:2024-03-16 15:02

嵌入Linux的ARM9处理器LPC3250与16位AD采样芯片
本文针对数据采集与处理系统的应用需求,设计了嵌入Linux的ARM9处理器LPC3250与16位AD采样芯片MAX1303的硬件接口和驱动程序。首先,描述了LPC3250和MAX1303的性能、特点以及硬件接口电路设计方案。然后,在硬件平台的基础上,详细地阐述了嵌入式Linux下MAXl303驱动程序的组成模块和具体实现方法,并给出了部分源代码以及对设备驱动的测试方法。测试结果表明,系统工作正常、稳定,采样结果正确,具有实际工程应用价值。 在数据采集系统中,通常是通过传感器将自然世界的物理量转化成电量,电量是模拟量,必须经过模/数转换才能被系统的处理器读取。现在的很多微处理器都有片内AD,但这些AD多数是8位、10位或者1
[单片机]
嵌入Linux的ARM9处理器LPC3250与<font color='red'>16位</font><font color='red'>AD</font>采样<font color='red'>芯片</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved