level 1
小爷的调调
楼主
#include ".\SPI_HC595\SPI_HC595.h" //引用头文件
/********************************************************************************
**函数名称:void myDelay (INT32U ulTime)
**函数功能:延时
**入口参数:ulTime
**出口参数:无
********************************************************************************/
void myDelay (INT32U ulTime)
{
INT32U i;
i = 0;
while (ulTime--) {
for (i = 0; i < 5000; i++);
}
}
/********************************************************************************
**函数名称:int main(void)
**函数功能:主函数,控制数码管循环显示0~9
**入口参数:无
**出口参数:无
********************************************************************************/
int main(void)
{
HC595_Init();
while(1)
{
{
HC595_SendData(0XC0F9A4B0);
}
}
//return 0;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
#include "SPI_HC595.h"
/********************************************************************************
**函数名称:void HC595_Init(void)
**函数功能:初始化引脚与SPI0模块
**入口参数:无
**出口参数:无
********************************************************************************/
void HC595_Init(void)
{
//引脚初始化
PINSEL0 = (PINSEL0 & 0xFFFF00FF)|0x00005500; //设置P0.4为SCK、P0.5为MISO、P0.6为MOSI
PINSEL0 = PINSEL0 & 0xFFF3FFFF; //设置P0.9(HC595_nCS)为GPIO
PINSEL0 = PINSEL0 & 0xFFFCFFFF; //设置P0.8(HC595_RCK)为GPIO
//设置为输出模式
IODIR |= HC595_nCS;
IODIR |= HC595_RCK;
IOCLR |= HC595_nCS;//使能输出
//------------SPI寄存器初始化----------------
S0SPCCR = 0x64; //分频、设置SPI时钟 = Fpclk/100
S0SPCR = 0x30; //设置SPI接口模式,MSTR = 1,主模式,CPOL = 1,CPHA =0
}
/********************************************************************************
**函数名称:uint32 HC595_SendData(uint32 data)
**函数功能:向74HC595发送一字节数据
**入口参数:data 需要发送的数据
**出口参数:S0SPDR 接收到的数据
********************************************************************************/
uint32 HC595_SendData(uint32 data)
{
IOCLR |=HC595_RCK;//清除原来数据
S0SPDR = data; //发送数据
while(0 == (S0SPSR&0x80));//等待SPIF置位,即等待数据发送完毕
IOSET |= HC595_RCK;//控制HC595将数据并行输出
return (S0SPDR);
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
怎么让四个数码管显示0123,不是给数据给个0XC0F9A4B0,74HC595会将高位的数据压入后面数码管中嘛?求教怎么修改.uint32 HC595_SendData(uint32 data)这个函数。谢谢各位大神。

2015年12月04日 03点12分
1
/********************************************************************************
**函数名称:void myDelay (INT32U ulTime)
**函数功能:延时
**入口参数:ulTime
**出口参数:无
********************************************************************************/
void myDelay (INT32U ulTime)
{
INT32U i;
i = 0;
while (ulTime--) {
for (i = 0; i < 5000; i++);
}
}
/********************************************************************************
**函数名称:int main(void)
**函数功能:主函数,控制数码管循环显示0~9
**入口参数:无
**出口参数:无
********************************************************************************/
int main(void)
{
HC595_Init();
while(1)
{
{
HC595_SendData(0XC0F9A4B0);
}
}
//return 0;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
#include "SPI_HC595.h"
/********************************************************************************
**函数名称:void HC595_Init(void)
**函数功能:初始化引脚与SPI0模块
**入口参数:无
**出口参数:无
********************************************************************************/
void HC595_Init(void)
{
//引脚初始化
PINSEL0 = (PINSEL0 & 0xFFFF00FF)|0x00005500; //设置P0.4为SCK、P0.5为MISO、P0.6为MOSI
PINSEL0 = PINSEL0 & 0xFFF3FFFF; //设置P0.9(HC595_nCS)为GPIO
PINSEL0 = PINSEL0 & 0xFFFCFFFF; //设置P0.8(HC595_RCK)为GPIO
//设置为输出模式
IODIR |= HC595_nCS;
IODIR |= HC595_RCK;
IOCLR |= HC595_nCS;//使能输出
//------------SPI寄存器初始化----------------
S0SPCCR = 0x64; //分频、设置SPI时钟 = Fpclk/100
S0SPCR = 0x30; //设置SPI接口模式,MSTR = 1,主模式,CPOL = 1,CPHA =0
}
/********************************************************************************
**函数名称:uint32 HC595_SendData(uint32 data)
**函数功能:向74HC595发送一字节数据
**入口参数:data 需要发送的数据
**出口参数:S0SPDR 接收到的数据
********************************************************************************/
uint32 HC595_SendData(uint32 data)
{
IOCLR |=HC595_RCK;//清除原来数据
S0SPDR = data; //发送数据
while(0 == (S0SPSR&0x80));//等待SPIF置位,即等待数据发送完毕
IOSET |= HC595_RCK;//控制HC595将数据并行输出
return (S0SPDR);
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
怎么让四个数码管显示0123,不是给数据给个0XC0F9A4B0,74HC595会将高位的数据压入后面数码管中嘛?求教怎么修改.uint32 HC595_SendData(uint32 data)这个函数。谢谢各位大神。
