这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » LPC2104,SPI LPC2104中模拟SPI实验C语言代码中遇到的问题!!

共2条 1/1 1 跳转至

LPC2104,SPI LPC2104中模拟SPI实验C语言代码中遇到的问题!!

院士
2006-09-17 18:14:16     打赏
LPC2104,SPI LPC2104中模拟SPI实验C语言代码中遇到的问题!!



关键词: LPC2104     模拟     实验     语言     代码     遇到     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 /****************************************************************************
* 名称:HC595_SendDat()
* 功能:向74HC595发送一字节数据
* 入口参数:dat        要发送的数据
* 出口参数:无
* 说明:发送数据时,高位先发送。
****************************************************************************/
void  HC595_SendDat(uint8 dat)
{  uint8  i;

   IOCLR = SPI_CS;                // SPI_CS = 0
   for(i=0; i<8; i++)            // 发送8位数据
   {  IOCLR = SPI_CLK;            // SPI_CLK = 0
      /* 设置SPI的DATA输出值 */
      if( (dat&0x80)!=0 ) IOSET = SPI_DATA;
        else IOCLR = SPI_DATA;
      dat <<= 1;
      IOSET = SPI_CLK;            // SPI_CLK = 1
   }
   
   IOSET = SPI_CS;                // SPI_CS = 1,输出显示数据
}
上程序中
if( (dat&0x80)!=0 ) IOSET = SPI_DATA;
        else IOCLR = SPI_DATA;
      dat <<= 1;
      IOSET = SPI_CLK;
怎么理解?? 1: 我的理解软件模拟SPI接口,时序是自己送的,在SPI_CLK一个正跳变时送一个字节,因为,驱动数码管的595是串入并出。
所以,数据1bit1送,送8次就是1Byte,正好可以显示1个数字。
在CS=1时输出显示。
当然,你用SPI口的话,时序由硬件提供,就可以不要考虑时序。但,PINSEL需要考虑。
按照此思路,同样可以实现2个I/O口模拟I2C的程序,不过I2C的协议比较复杂,对编程的人要求教高,有兴趣的可以一试。 2: 谢谢祈祷之龙!我后来自己也想通了,但听你这么一说我有了更深的理解。我是初学者对硬件知识了解不够,以后请多多指教!!!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]