ATmega128(SPI通信)
//DAC為TI公司的10位串行電壓型輸出的DAC芯片TLC5615,SPI接口連接方式
//驅(qū)通過SPI接口,動DAC芯片,使其完成000-FFC(TLC5615后兩位的值一直為0)輸出的轉(zhuǎn)換
//LED指示燈DS3對應(yīng)從暗到亮,表示電壓逐漸增大
//編譯環(huán)境 AVR Studio 4.17/AVR GCC
//系統(tǒng)時鐘7.3728MHZ,設(shè)置熔絲位為外部高頻石英晶體振蕩,啟動時間4.1ms
//***********************************************************************
//包含文件
//***********************************************************************
#include
#include
#define F_CPU7372800// 單片機主頻為7.3728MHz,用于延時子程序
#include
#include
#include
#include //中斷信號頭文件
//***********************************************************************
//定義變量區(qū)
//***********************************************************************
#define uchar unsigned char
#define uint unsigned int
#define delay_us(x) _delay_us(x) //AVR GCC延時函數(shù) x(us)
#define delay_ms(x) _delay_ms(x) //AVR GCC延時函數(shù) 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; //電平設(shè)置
DDRB = 0xFF; //方向輸出
}
void SPI_init()
{
SPCR=(1<
}
//*************************************************************************
//主程序
//*************************************************************************
void main()
{
system_init(); //系統(tǒng)IO口初始化
SPI_init(); //SPI初始化
while(1)
{
for(da_data=0x0000;da_data<0x0ffc;da_data++)
{
cs0; //使能DAC
da_data2=(da_data&0xff00); //提取數(shù)據(jù)的高8位
da_data2>>=8; //高8位移到低8位,便于賦值
SPDR=da_data2; //寫數(shù)據(jù)的高8位到SPI數(shù)據(jù)寄存器
SPDR=da_data&&0x00ff; //寫數(shù)據(jù)的低8位到SPI數(shù)據(jù)寄存器
delay_ms(1);
cs1; //關(guān)閉使能
}
}
}
評論