⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max1293_1.c

📁 max1293,12Bit,220Ksps,ADC驱动
💻 C
字号:
/*******************************************************

         电压采集(使用MAX1293)液晶(1602)显示
         MAX1293驱动程序


********************************************************/
/********************************************************

        MAX1293驱动程序

********************************************************/
/********************************************************
MAX1293信息:  
              1.使用内部基准(2.5V)
              2.使用单极输入
              3.内部时钟
MAX1293接口信息:
              MAX1293_HBEN---->
              MAX1293_INT----->
              MAX1293_RD------>
              MAX1293_WR------>
              MAX1293_CS------>
              MAX1293_IO------>
 
*********************************************************/
#include<AT89X51.H>
unsigned char code ram1[]="MAX1293 Convert ";
unsigned char code ram2[]="                ";
#define _1602DATAS_
#include <1602Drive.H>


//MAX1293接口信息:
sbit       MAX1293_HBEN    =P1^4;
sbit       MAX1293_INT     =P3^2;
sbit       MAX1293_RD      =P1^2;
sbit       MAX1293_WR      =P1^1;
sbit       MAX1293_CS      =P1^0;
#define    MAX1293_IO      P0
//函数声明表
void MAX1293_Initial(void);
void MAX1293_Delay(unsigned char d);
void MAX1293_Write(unsigned char a);
void MAX1293_Read(void);
void System_Initial(void);
void MAX1293_Disp(void);

bit bdata int_flag,read_flag,time_flag;
unsigned char data lowdata,highdata;
/*********************************************************************
  函数名称: main
  函数功能: 主函数
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void main(void)
{
    System_Initial();
    LCDInitial();
    WriteDatas();
	ClrLCD();
    MAX1293_Initial();			//动作:上电延时,并设置MAX1293控制字为01000000 ??
    MAX1293_Write(0x99);                //使用内部时钟,单端单极输入,通道为CH1
    while(1)
        {
            if(time_flag==1)                  //50ms启动一次转换
                {
                    time_flag=0;
                    
                    MAX1293_Write(0x99);
                }
            MAX1293_Read();
            MAX1293_Disp();
            
        }    
}
/*********************************************************************
  函数名称: MAX1293_Initial
  函数功能: 初始化MAX1293
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void MAX1293_Initial(void)
{
    MAX1293_Delay(20);                         //MAX1293上电复位,至少500us
    MAX1293_Write(0x40);                       //MAX1293处于待机模式,时钟关闭0100 0000
}
/*********************************************************************
  函数名称: MAX1293_Delay
  函数功能: MAX1293延时,延时时间为 2*25*d us
  输入参数: d(延时调节变量)
  输出参数: 无    
  返回值:   无
*********************************************************************/
void MAX1293_Delay(unsigned char d)
{
    unsigned char data t;
    for(;d>0;d--)
       {
            for(t=25;t>0;t--)
                {
                    ;
                }
        }
}
/*********************************************************************
  函数名称: MAX1293_Write
  函数功能: 写控制字给MAX1293
  输入参数: a(控制代码)
  输出参数: 无    
  返回值:   无
*********************************************************************/
void MAX1293_Write(unsigned char a)
{
    MAX1293_CS=0;
    MAX1293_Delay(1);                          //延时50us  
    MAX1293_WR=0;
    MAX1293_Delay(1);                          //延时50us
    MAX1293_IO=a;
    MAX1293_Delay(1);                          //延时50us
    MAX1293_WR=1;                              //当4个内部时钟下降沿后,开始转换
    MAX1293_CS=1;                              
   
}
/*********************************************************************
  函数名称: MAX1293_Read
  函数功能: 读出MAX1293的转换结果
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void MAX1293_Read(void)
{
    if(int_flag==1)
        {
            int_flag=0;
            MAX1293_HBEN=0;
            MAX1293_CS=0;
            MAX1293_Delay(1);                  //延时50us
            MAX1293_RD=0;
            MAX1293_Delay(1);                  //延时50us
            lowdata=MAX1293_IO;
            MAX1293_HBEN=1;
            MAX1293_Delay(1);                  //延时50us
            highdata=MAX1293_IO;
            MAX1293_Delay(1);                  //延时50us
            MAX1293_RD=1;
            MAX1293_CS=1;
            read_flag=1;

			lowdata=0x00;
			highdata=0xf0;
        }
}
/*********************************************************************
  函数名称: MAX1293_Interrupt
  函数功能: 检测转换状况,并给予标志
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void MAX1293_Interrupt(void) interrupt 0 using 1
{
    int_flag=1;
}
void MAX1293_timer(void) interrupt 1  using 2
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    time_flag=1;
}
/*********************************************************************
  函数名称: System_Initial
  函数功能: 系统初始化
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void System_Initial(void)
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    TMOD=0x01;
    ET0=1;
    EX0=1;
    EA=1;
    TR0=1;
    int_flag=0;
    read_flag=0;
    time_flag=0;

}
/*********************************************************************
  函数名称: MAX1293_Disp
  函数功能: 将转换结果显示到1602中
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
unsigned char code address1[]={0x8c,0x8b,0x8a,0x89,0x88,0x87,0x86,0x85};
unsigned char code address2[]={0x83,0x82,0x81,0x80};
void MAX1293_Disp(void)
{
    unsigned char i,addr,dat;
    if(read_flag==1)
        {
            read_flag=0;
            for(i=0;i<8;i++)
                {
                    dat=((lowdata>>i)&0x01)+0x30;
                    addr=address1[i];
                    Writeonedata(addr,dat);
            
                }
            for(i=0;i<4;i++)
                {
                    dat=((highdata>>i)&0x01)+0x30;
                    addr=address2[i];
                    Writeonedata(addr,dat);
                }
        }        
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -