您的位置 首页 设计

ATmega128(SPI通讯)

atmega128的SPI应用示例程序,采用SPI接口的DAC芯片TLC5615,连续进行电压转换DAC为TI公司的10位串行电压型输出的DAC芯片TLC5615,SPI接

//atmega128的SPI使用示例程序,选用SPI接口的DAC芯片TLC5615,接连进行电压转化

//DAC为TI公司的10位串行电压型输出的DAC芯片TLC5615,SPI接口衔接方法
//驱经过SPI接口,动DAC芯片,使其完结000-FFC(TLC5615后两位的值一向为0)输出的转化
//LED指示灯DS3对应从暗到亮,表明电压逐步增大
//编译环境 AVR Studio 4.17/AVR GCC
//体系时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,发动时刻4.1ms
//***********************************************************************
//包括文件
//***********************************************************************

#include
#include
#define F_CPU7372800// 单片机主频为7.3728MHz,用于延时子程序
#include
#include
#include
#include //中止信号头文件
//***********************************************************************
//界说变量区
//***********************************************************************
#define uchar unsigned char
#define uint unsigned int

#define delay_us(x) _delay_us(x) //AVR GCC延时函数 x(us)
#define delay_ms(x) _delay_ms(x) //AVR GCC延时函数 x(ms)

#define cs0 PORTB &= ~(1 << PB0) //片选信号置低
#define cs1 PORTB |= (1 << PB0) //片选信号置高

uint da_data;
uchar count=0;
uint da_data2;
//*************************************************************************
//初始化子程序
//*************************************************************************
void system_init()
{

PORTB = 0x00; //电平设置
DDRB = 0xFF; //方向输出

}
void SPI_init()
{
SPCR=(1<|(1<|(1<|(1<
}
|(1<|(1<|(1<

//*************************************************************************
//主程序
//*************************************************************************

void main()
{
system_init(); //体系IO口初始化
SPI_init(); //SPI初始化
while(1)
{
for(da_data=0x0000;da_data<0x0ffc;da_data++)
{
cs0; //使能DAC
da_data2=(da_data&0xff00); //提取数据的高8位
da_data2>>=8; //高8位移到低8位,便于赋值
SPDR=da_data2; //写数据的高8位到SPI数据寄存器
SPDR=da_data&&0x00ff; //写数据的低8位到SPI数据寄存器
delay_ms(1);
cs1; //封闭使能
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/276154.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部