新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ATmega128(SPI通信)

        ATmega128(SPI通信)

        作者: 時間:2016-11-10 來源:網絡 收藏
        //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
        //***********************************************************************
        //包含文件
        //***********************************************************************

        本文引用地址:http://www.104case.com/article/201611/317439.htm

        #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; //關閉使能
        }
        }
        }



        關鍵詞: ATmega128SPI通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宜兰市| 黄冈市| 道真| 棋牌| 合山市| 鄯善县| 六安市| 古交市| 梅州市| 千阳县| 商南县| 五大连池市| 蓬莱市| 建德市| 山阴县| 锡林郭勒盟| 红原县| 南陵县| 阜新市| 汉沽区| 沙田区| 监利县| 绥宁县| 淳安县| 金沙县| 宜都市| 白河县| 洛阳市| 和田市| 玉山县| 玉溪市| 克山县| 廉江市| 陇南市| 卢湾区| 沂水县| 大新县| 怀化市| 昌宁县| 金川县| 会理县|