ADS_LPC2103开发板SPI 4位数码管测试试验

3463阅读 0评论2010-11-09 hnrainll
分类:嵌入式


#include "config.h"

#define HC595_CS (1 << 7)
#define NixieTube_CS (1 << 11)


void DelayMS(uint32 dly)
{
    uint32 i;
    for(; dly > 0; dly--)
    {
        for(i = 0; i < 50000; i++);
    }
}

void MSPI_Init(void)
{
    PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00001500;

    SPCCR = 0x52;         // 设置SPI时钟分频

     SPCR = (0 << 3) |                // CPHA = 0, 数据在SCK 的第一个时钟沿采样

             (1 << 4) |                // CPOL = 1, SCK 为低有效

             (1 << 5) |                // MSTR = 1, SPI 处于主模式

             (0 << 6) |                // LSBF = 0, SPI 数据传输MSB (位7)在先

             (0 << 7);                // SPIE = 0, SPI 中断被禁止

}

void MSPI_SendData(uint8 data)
{
    IOCLR = HC595_CS;             // 片选74HC595

   
    SPI_SPDR = data;
    while( 0 == (SPI_SPSR & 0x80));        // 等待SPIF置位,即等待数据发送完毕

   
    IOSET = HC595_CS;

}


/* 此表为LED0~F以及L、P、C的字模 */
uint8 const DISP_TAB[19] = {
//     0     1 2 3 4 5 6 7 8 9

    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,
//     A b C d E F

    0x88, 0x83, 0xC6, 0xA1,0x86, 0x8E,
//      L P C

     0xC7, 0x8C,0xC6 };


int main (void)
{
    uint8 i;
    
    PINSEL0 = 0x00001500; // 设置SPI管脚连接

                
    IODIR = HC595_CS|NixieTube_CS;
    IOSET = IOSET|NixieTube_CS;
    MSPI_Init();// 初始化SPI接口                    

    while(1)    
    {
            for(i = 0; i < 16; i++)
            {
            MSPI_SendData(DISP_TAB[i]);    // 发送显示数据

            DelayMS(80);
            }
    }
 
    return 0;
}


文件:NixieTube.zip
大小:75KB
下载:下载
上一篇:ADS_LPC2103开发板I2C测试试验
下一篇:ADS_LPC2103开发板 原理图