打印
[LPC]

LPC2103 SSP 驱动数码管

[复制链接]
1338|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sxjzml3590|  楼主 | 2013-11-6 21:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8位数码管使用的是两片74HC595级联驱动的,通过spi发送数据没有什么问题,但换到ssp,一直不能正确显示,查看了很多资料都是这么操作的,调试很久了一直不行。spi是低电平有效,下降沿采样。程序如下:
#include "config.h"
#include "LPC2103_lian.H"

uint8 const LedData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xF8,   
                       0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};


//**********************函数定义************************

void MSpiIni(uint8 fdiv);
void ssp_Init(void);
void senddata(uint8 data);
uint8 ssp_sendbyte(uint8 data) ;
void display(uint8 day,uint8 n);


//**********************主程序**************************
int main(void)
{
        p06_mosi0;
        p07_gpio;                //都是使用的p07作为片选
        p04_sck0;
        p014_gpio;
        gpio_out(p07);
        MSpiIni(0x40);
        IO0SET=IO0SET|p07;
        ssp_Init();
        SPI_SPCR=(0<<2)|(0<<3)|(1<<4)|(1<<5)|(0<<6);
        

                display(3,5);

        while(1);


}

void ssp_Init()
{
        p019_miso1;
        p020_mosi1;
        p014_sck1;
        SSPCR0=(0x01<<8)|
                   (0x00<<7)|        // 第一个时钟沿采样
                   (0x01<<6)|          // 低电平有效
                   (0x00<<4)|   
                   (0x07<<0);
        SSPCR1=(0x00<<3)|
               (0x00<<2)|
               (0x01<<1)|
               (0x00<<0);
    SSPCPSR=0x52;
    SSPIMSC=0x02;
    SSPICR=0x03;

        
}

uint8 ssp_sendbyte(uint8 data)   //ssp发送数据函数
{
        IO0CLR=IO0CLR|p07;
        SSPDR=data;        
        while((SSPSR&0x01)==0);
        IO0SET=IO0SET|p07;
        return(SSPDR);
}

void MSpiIni(uint8 fdiv)
{
        if(fdiv<8)fdiv=8;

        SPI_SPCCR=fdiv&0xFE;
}
void senddata(uint8 data) //spi发送数据函数
{
        IO0CLR=IO0CLR|p07;
        SPI_SPDR=data;
        while((SPI_SPSR & 0x80) ==0);
        IO0SET=IO0SET|p07;
}

void display(uint8 day,uint8 n)
{
   ssp_sendbyte((1<<n));          //换做spi发送函数,就能正确显示,没问题。
   ssp_sendbyte(LedData[day]);
}
现求助各位大侠,有谁使用过,帮解答下。

相关帖子

沙发
阿南| | 2013-11-7 18:18 | 只看该作者
用示波器扫一下波形,595的时序要求很低的,基本上一个脉冲就会移一位

使用特权

评论回复
板凳
sxjzml3590|  楼主 | 2013-11-7 22:05 | 只看该作者
表示没有示波器啊

使用特权

评论回复
地板
戈卫东| | 2013-11-8 09:04 | 只看该作者
换个模式再试试...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝