新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CEPARK AVR大學(xué)堂----Linglong AVR單片機(jī)之SPI通信

CEPARK AVR大學(xué)堂----Linglong AVR單片機(jī)之SPI通信

作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
#include <avr/io.h>
#include

#define DD_SPI DDRB
#define DD_MOSI PB5
#define DD_SS PB4
#define DD_SCK PB7

unsigned char DispBuff[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //共陽數(shù)碼管字庫

void SPIMasterInit(void ) //SPI初始代函數(shù)
{
DD_SPI = (1 << DD_MOSI)|(1 << DD_SS)|(1 << DD_SCK); // MOSI,SS,SCK 設(shè)置為輸出

SPCR = (1 << SPE)|(1 << MSTR)|(1 << SPR0); //設(shè)置SPI始能,主機(jī)模式,時(shí)鐘速率為fck/16.

}

void SPIDataTrantsmit(unsigned char cData) //SPI傳輸函數(shù)
{
SPDR = cData;
while(!(SPSR&(1 << SPIF))); //這里是判斷SPIF是否為1,為1表示8位數(shù)據(jù)傳完了。這里我們沒有用中斷的方式。
}

int main(void)
{
unsigned char count = 0; //設(shè)制循環(huán)變量
PORTB = 0xff;
// DDRB = 0xff;
SPIMasterInit();

while(1)
{

PORTB &= ~(1 << DD_SS);
SPIDataTrantsmit(DispBuff[count]);
PORTB |= (1 << DD_SS); //上升沿
_delay_ms(500);


count++;
if(count > 9)
{
count = 0;
}
}

}


關(guān)鍵詞: AVR單片機(jī)SPI通

評(píng)論


技術(shù)專區(qū)

關(guān)閉