PIC16F877A开发板 SPI总线驱动74595实验

[复制链接]
 楼主| susceptibility 发表于 2020-3-7 11:03 | 显示全部楼层 |阅读模式
  1. //*****************电子园PIC16F877A开发板 SPI总线驱动74595实验***************
  2. //
  3. //CKP=0;       空闲为低电平
  4. //CKP=1;       空闲为高电平
  5. //STAT_CKE=0;  SDO后沿采样
  6. //STAT_CKE=1;  SDO前沿采样
  7. //
  8. //STAT_SMP=0;    //在数据输出时间的中间采样输入数据
  9. //STAT_SMP=1;    //在数据输出时间的末尾采样输入数据
  10. //
  11. //RC3/SCK 接74595 移位时钟11脚
  12. //RC5/SDO 接74595 数据输入14脚
  13. //RC4/SDI 接74595 锁存时钟12脚
  14. //
  15. //mcu: PIC16F877A  4MHz  
  16. //2010年7月10日16:11:08
  17. //***************************************************************************

  18. #include <lian_pic.h>
  19. __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);   
  20. //HS振荡,禁止看门狗,低压编程关闭,启动延时定时器
  21.    
  22. const uchar smg_text[]={0xbf,0xfe,0xfb,0xef,0xdf,0x7f,0xfd,0xf7,};
  23.                            
  24. const uchar smg[]={0x0a,0xfa,0x8c,0xa8,0x78,0x29,0x09,0xba,0x08,0x28,0x00,};   
  25.                 // 0     1    2    3    4    5    6    7    8    9    all

  26. const uchar smg_bit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,};                                            

  27. uchar c;   
  28. uchar d;   

  29. //********************函数定义*********************
  30. void delay1ms(uint DelayTime);     
  31. uchar spi_write_read(uchar dd);


  32. //*************** 主程序 ********************
  33. void main(void)
  34. {   
  35.   SSPM3=0;
  36.   SSPM2=0;
  37.   SSPM1=0;
  38.   SSPM0=0;       //spi主控模式,时钟为Fosc/4
  39.    
  40.   CKP=0;         //空闲为低电平
  41.   STAT_CKE=1;    //SDO前沿采样
  42.    
  43.   STAT_SMP=0;    //在数据输出时间的中间采样输入数据
  44.    
  45.   TRISC3=0;      //RC3/SCK为输出
  46.   TRISC5=0;      //RC5/SDO为输出
  47.   TRISC4=0;      //RC4/SDI为输出(不使用SDI引脚时,可设置为输出,作普通io用)
  48.   RC4=0;
  49.   SSPEN=1;       //使能MSSP模块,启用spi或iic
  50.    
  51.   delay1ms(10);
  52.    
  53.   RC4=0;                 //产生锁存时钟
  54.   spi_write_read(0x00);
  55.   spi_write_read(0x00);
  56.   RC4=1;
  57.   delay1ms(500);
  58.    
  59.   for(d=0;d<8;d++)
  60.   {
  61.     for(c=0;c<8;c++)
  62.     {
  63.       RC4=0;
  64.       spi_write_read(smg_bit[d]);
  65.       spi_write_read(smg_text[c]);
  66.       RC4=1;
  67.       delay1ms(50);
  68.     }  
  69.   }

  70.   while(1)
  71.   {
  72.     for(c=0;c<11;c++)
  73.     {
  74.       RC4=0;
  75.       spi_write_read(smg_bit[8]);
  76.       spi_write_read(smg[c]);
  77.       RC4=1;
  78.       delay1ms(50);
  79.     }         
  80.   }
  81. }   

  82. //****************spi总线发送接收数据***************
  83. uchar spi_write_read(uchar dd)
  84. {
  85.   uchar buf;
  86.   SSPBUF=dd;
  87.   while(!STAT_BF);    //等待数据发送接收完毕
  88.   buf=SSPBUF;         
  89.   return (buf);       //返回接收到的数据
  90. }


  91. //*****************延时 n*1ms 12MHz*****************
  92. void delay1ms(uint DelayTime)
  93. {   
  94.   uint temp;
  95.   for(;DelayTime>0;DelayTime--)
  96.   {   
  97.     for(temp=0;temp<270;temp++)
  98.     {;}
  99.   }
  100. }


 楼主| susceptibility 发表于 2020-3-7 11:04 | 显示全部楼层
作者:Leo Chin
出处:http://www.cnblogs.com/hnrainll/
本博客**,大多系网络中收集,转载请注明出处
相关标签:嵌入式培训、嵌入式开发、嵌入式学习
晓伍 发表于 2020-4-2 15:42 | 显示全部楼层
非常感谢楼主分享
八层楼 发表于 2020-4-2 15:42 | 显示全部楼层
非常感谢楼主分享
观海 发表于 2020-4-2 15:43 | 显示全部楼层
非常感谢楼主分享
guanjiaer 发表于 2020-4-2 15:43 | 显示全部楼层
非常感谢楼主分享
heimaojingzhang 发表于 2020-4-2 15:43 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

238

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部