小爷的调调 小爷的调调
..........
关注数: 2 粉丝数: 25 发帖数: 25 关注贴吧数: 7
求助:关于74hc595级联的问题? #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)这个函数。谢谢各位大神。
求助:关于74hc595级联的问题? #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)这个函数。谢谢各位大神。
1 下一页