【STC8G1K08A】ADC采集模块-51单片机程序分析

视频讲解

 

简介

STC8G 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗 为目标的 8051 单片机,在相同的工作频率下,STC8G 系列单片机比传统的 8051 约快 12 倍(速度快 11.2~13.2 倍),依次按顺序执行完全部的 111 条指令,STC8G 系列单片机仅需 147 个时钟,而传统 8051 则需要 1944 个时钟。STC8G 系列单片机是 STC 生产的单时钟/机器周期(1T)的单片机,是宽电压/高速/ 高可靠/低功耗/强抗静电/较强抗干扰的新一代 8051 单片机,超级加密。指令代码完全兼容传统 8051。

 

【STC8G1K08A】ADC采集模块-51单片机程序分析

宽工作电压 :1.9~5.5V(工作电压很宽的)

GPIO四种工作模式:

  • 准双向口/弱上拉(标准 8051 输出口模式)
  • 推挽输出/强上拉
  • 高阻输入(电流既不能流入也不能流出)
  • 开漏输出

ADC采集模块采用的是IIC的通信方式,因此只需要掌握IIC的通信协议即可轻松的使用ADC采集模块,具体的IIC讲解请看【IIC】IIC通信协议-51单片机程序分析 - 电子校园网

软件流程图

【STC8G1K08A】ADC采集模块-51单片机程序分析

程序分析

AD_Converter.c

/**********************************
作者:特纳斯电子
网站:https://www.mcude.com
联系方式:46580829(QQ)
淘宝店铺:特纳斯电子
**********************************/

/**********************************
包含头文件
**********************************/
#include "AD_Converter.h"


/**********************************
函数定义
**********************************/
/****
*******延时函数
*****/
void AD_Delay(void)
{
	uchar i;
	i=10;
	while(i--);
}

static void AD_Delay1(uchar x)
{
	unsigned int i;
	for(i=0;i<x;i++);
}

/****
*******总线初始化,拉高释放总线函数
*****/
void AD_Init(void)
{
    AD_SCL=1; 
    AD_Delay(); 
    AD_SDA=1; 
    AD_Delay();
}

/****
*******开始信号,上升沿
*****/
void AD_Start(void)
{
    AD_SDA=1;	//发送起始条件的数据信号
    AD_Delay(); 
    AD_SCL=1; 	//发送起始条件的时钟信号
    AD_Delay();
    AD_SDA=0;	//发送起始信号
    AD_Delay(); 
    AD_SCL=0;	//钳住IIC总线,准备发送或接收数据 
    AD_Delay();
}

/****
*******结束信号,下降沿
*****/
void AD_Stop(void)
{
    AD_SDA=0;	//发送结束条件的数据信号 
    AD_Delay(); 
    AD_SCL=1;	//发送结束条件的时钟信号 
    AD_Delay(); 
    AD_SDA=1;	//发送结束信号 
    AD_Delay();
}

/****
*******IIC总线时钟或应答信号
*****/
void AD_Clock(void)
{
    uchar i=0;
    AD_SCL=1; 
    AD_Delay();
    while ((AD_SDA==1)&&(i<255))
        i++;
    AD_SCL=0; 
    AD_Delay();
}

/****
*******写一个字节
*****/
void AD_Writex(uchar j)
{  
    uchar i,temp;
    temp=j;
    for (i=0;i<8;i++)
    {
        temp=temp<<1;
        AD_SCL=0; 
        AD_Delay();
        AD_SDA=CY;		//最高位移入PSW寄存器CY位中 
        AD_Delay(); 
        AD_SCL=1; 
        AD_Delay();
    }
    AD_SCL=0; 
    AD_Delay(); 
    AD_SDA=1; 
    AD_Delay();
}

/****
*******读取一个字节
*****/
uchar AD_Readx(void)
{
    uchar i,j,k=0;
    AD_SCL=0; 
    AD_Delay(); 
    AD_SDA=1;
    for (i=0;i<8;i++)
    {  
        AD_Delay(); 
        AD_SCL=1; 
        AD_Delay();
        if (AD_SDA==1) 
            j=1;
        else 
            j=0;
        k=(k<<1)|j;		//将8个独立的位放在一个字节中
        AD_SCL=0;
    }
    AD_Delay(); 
    return(k);
}

/****
*******向地址address中写入一个字节的数据info
*****/
void AD_Write_Add(uchar address,uchar info)
{
    AD_Start(); 
    AD_Writex(0x1a);
    AD_Clock(); 
    AD_Writex(address);
		AD_Clock(); 
    AD_Writex(info);
    AD_Clock(); 
    AD_Stop();
    AD_Delay1(50);
}

/****
*******从地址address中读取一个字节的数据
*****/
uchar AD_Read_Add(uchar address)
{
    uchar i;
    AD_Start(); 
    AD_Writex(0x1a);
    AD_Clock(); 
    AD_Writex(address);
    AD_Clock(); 
    AD_Start();
    AD_Writex(0x1a | 0x01); 
    AD_Clock();
    i=AD_Readx(); 
    AD_Stop();
    AD_Delay1(10);
    return(i);
}

/****
*******从CH通道中读取AD值(10位)
*****/
uint AD_ReadValue(uchar CH)
{
	int AD_Value;
	
	if(CH == 0)
		AD_Value = ((unsigned int)AD_Read_Add(0) << 8) | AD_Read_Add(1);
	else if(CH == 1)
		AD_Value = ((unsigned int)AD_Read_Add(2) << 8) | AD_Read_Add(3);
	
	return AD_Value;
}

AD_Converter.h

/**********************************
作者:特纳斯电子
网站:https://www.mcude.com
联系方式:46580829(QQ)
淘宝店铺:特纳斯电子
**********************************/

#ifndef _AD_CONVERTER_H_
#define _AD_CONVERTER_H_


/**********************************
包含头文件
**********************************/
#include "main.h"


/**********************************
PIN口定义
**********************************/
sbit AD_SCL=P3^6;																//时钟引脚
sbit AD_SDA=P3^7;																//数据引脚


/**********************************
函数声明
**********************************/
void AD_Init(void);  																	//AD初始化函数
void AD_Write_Add(uchar address,uchar info);					//AD写入数据函数
uchar AD_Read_Add(uchar address);											//AD读取数据函数
uint AD_ReadValue(uchar CH);													//AD转换

#endif

数据手册

1733882630-STC8G系列数据手册

下载权限
查看
  • 免费下载
    评论并刷新后下载
    登录后下载
  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索