当前位置:首页 > MCU > CT107D > 正文内容

CT107D DAC 电压模拟输出

chanra1n4年前 (2020-10-16)CT107D3500
/*
  程序说明: IIC总线驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台 8051,12MHz
  日    期: 2011-8-9
*/

#include "reg52.h"
#include "intrins.h"

#define DELAY_TIME 5

#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1

//总线引脚定义
sbit SDA = P2^1;  /* 数据线 */
sbit SCL = P2^0;  /* 时钟线 */

void IIC_Delay(unsigned char i)
{
    do{_nop_();}
    while(i--);        
}
//总线启动条件
void IIC_Start(void)
{
    SDA = 1;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 0;
    IIC_Delay(DELAY_TIME);
    SCL = 0;	
}

//总线停止条件
void IIC_Stop(void)
{
    SDA = 0;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//发送应答
void IIC_SendAck(bit ackbit)
{
    SCL = 0;
    SDA = ackbit;  					// 0:应答,1:非应答
    IIC_Delay(DELAY_TIME);
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SCL = 0; 
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//等待应答
bit IIC_WaitAck(void)
{
    bit ackbit;
	
    SCL  = 1;
    IIC_Delay(DELAY_TIME);
    ackbit = SDA;
    SCL = 0;
    IIC_Delay(DELAY_TIME);
    return ackbit;
}

//通过I2C总线发送数据
void IIC_SendByte(unsigned char byt)
{
    unsigned char i;

    for(i=0; i<8; i++)
    {
        SCL  = 0;
        IIC_Delay(DELAY_TIME);
        if(byt & 0x80) SDA  = 1;
        else SDA  = 0;
        IIC_Delay(DELAY_TIME);
        SCL = 1;
        byt <<= 1;
        IIC_Delay(DELAY_TIME);
    }
    SCL  = 0;  
}

//从I2C总线上接收数据
unsigned char IIC_RecByte(void)
{
    unsigned char i, da;
    for(i=0; i<8; i++)
    {   
    	SCL = 1;
	IIC_Delay(DELAY_TIME);
	da <<= 1;
	if(SDA) da |= 1;
	SCL = 0;
	IIC_Delay(DELAY_TIME);
    }
    return da;    
}
void adc_set(unsigned char dat)
{
	IIC_Start(); 
	IIC_SendByte(0x90); // 地址+写
	IIC_WaitAck();
	IIC_SendByte(0x40);// DAC输出模式
	IIC_WaitAck();
	
	IIC_SendByte(dat);  ;//DAC写入数据
	IIC_WaitAck();
	IIC_Stop();
}


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:http://myfpga.cn/index.php/post/153.html

分享给朋友:

“CT107D DAC 电压模拟输出” 的相关文章

CT107D 你好!

CT107D 你好!

照片里面的这个单片机开发板是以 IAP15F2K61S2 为核心的开发板,是北京国信长天科技有限公司开发的板子,板子采用的很棒的PCB制作技术,美中不足就是没有用“黑胶”,板子大方美观,算了,不瞎掰了。这个是从CSDN上面“借来的MCU原理图”,LQFP44封装,看着这么漂亮的板子,我已经忍不住“蹂...

CT107D-按键的使用(查询法)

CT107D-按键的使用(查询法)

#include <reg52.h> sbit S4=P3^3; sbit S5=P3^2; sbit S6=P3^1; sbit S7=P3^0; sbit buzzer=P0^6;  //蜂鸣器...

CT107D-串口通信

CT107D-串口通信

串口通信能用到的寄存器:SCON PCON TMODSCON Serial Control Register 串口控制寄存器 0x98HSCON的各位定义及作用SM0    SM1    SM2 &n...

CT107D 数码管动态显示

CT107D 数码管动态显示

#include<reg52.h> #include<intrins.h> void hdw_init(); void smg_refresh(); void Delay1ms(); unsigned char nu...

CT107D ADC 光敏电阻

CT107D ADC 光敏电阻

#include<iic.h> #include "reg52.h" #include "intrins.h" typedef unsigned char BYTE; typedef&nbs...