打印
[PIC®/AVR®/dsPIC®产品]

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

[复制链接]
882|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kxsi|  楼主 | 2019-7-25 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • //*****************电子园PIC16F877A开发板 SPI总线驱动74595实验***************



  • //



  • //CKP=0;       空闲为低电平



  • //CKP=1;       空闲为高电平



  • //STAT_CKE=0;  SDO后沿采样



  • //STAT_CKE=1;  SDO前沿采样



  • //



  • //STAT_SMP=0;    //在数据输出时间的中间采样输入数据



  • //STAT_SMP=1;    //在数据输出时间的末尾采样输入数据



  • //



  • //RC3/SCK 接74595 移位时钟11脚



  • //RC5/SDO 接74595 数据输入14脚



  • //RC4/SDI 接74595 锁存时钟12脚



  • //



  • //mcu: PIC16F877A  4MHz  



  • //2010年7月10日16:11:08



  • //***************************************************************************







  • #include <lian_pic.h>



  • __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);       



  • //HS振荡,禁止看门狗,低压编程关闭,启动延时定时器







  • const uchar smg_text[]={0xbf,0xfe,0xfb,0xef,0xdf,0x7f,0xfd,0xf7,};







  • const uchar smg[]={0x0a,0xfa,0x8c,0xa8,0x78,0x29,0x09,0xba,0x08,0x28,0x00,};   



  •                 // 0     1    2    3    4    5    6    7    8    9    all







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







  • uchar c;   



  • uchar d;   







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



  • void delay1ms(uint DelayTime);     



  • uchar spi_write_read(uchar dd);




使用特权

评论回复
沙发
kxsi|  楼主 | 2019-7-25 10:28 | 只看该作者
//*************** 主程序 ********************
void main(void)
{       
  SSPM3=0;
  SSPM2=0;
  SSPM1=0;
  SSPM0=0;       //spi主控模式,时钟为Fosc/4
  
  CKP=0;         //空闲为低电平
  STAT_CKE=1;    //SDO前沿采样
  
  STAT_SMP=0;    //在数据输出时间的中间采样输入数据
  
  TRISC3=0;      //RC3/SCK为输出
  TRISC5=0;      //RC5/SDO为输出
  TRISC4=0;      //RC4/SDI为输出(不使用SDI引脚时,可设置为输出,作普通io用)
  RC4=0;
  SSPEN=1;       //使能MSSP模块,启用spi或iic
  
  delay1ms(10);
  
  RC4=0;                 //产生锁存时钟
  spi_write_read(0x00);
  spi_write_read(0x00);
  RC4=1;
  delay1ms(500);
  
  for(d=0;d<8;d++)
  {
    for(c=0;c<8;c++)
    {
      RC4=0;
      spi_write_read(smg_bit[d]);
      spi_write_read(smg_text[c]);
      RC4=1;
      delay1ms(50);
    }  
  }

  while(1)
  {
    for(c=0;c<11;c++)
    {
      RC4=0;
      spi_write_read(smg_bit[8]);
      spi_write_read(smg[c]);
      RC4=1;
      delay1ms(50);
    }              
  }
}       

使用特权

评论回复
板凳
kxsi|  楼主 | 2019-7-25 10:28 | 只看该作者
//****************spi总线发送接收数据***************
uchar spi_write_read(uchar dd)
{
  uchar buf;
  SSPBUF=dd;
  while(!STAT_BF);    //等待数据发送接收完毕
  buf=SSPBUF;         
  return (buf);       //返回接收到的数据
}

使用特权

评论回复
地板
kxsi|  楼主 | 2019-7-25 10:29 | 只看该作者
//*****************延时 n*1ms 12MHz*****************
void delay1ms(uint DelayTime)
{       
  uint temp;
  for(;DelayTime>0;DelayTime--)
  {       
    for(temp=0;temp<270;temp++)
    {;}
  }
}

使用特权

评论回复
5
598330983| | 2019-7-31 23:56 | 只看该作者
有没有效果图啊

使用特权

评论回复
6
51xlf| | 2019-8-5 10:59 | 只看该作者
pic18系列单片机和PIC16系列单片机什么区别  

使用特权

评论回复
7
i1mcu| | 2019-8-5 11:00 | 只看该作者
并行输出的位移缓存器  

使用特权

评论回复
8
pmp| | 2019-8-5 11:00 | 只看该作者
一次性烧录的单片机吗?

使用特权

评论回复
9
mmbs| | 2019-8-5 11:01 | 只看该作者
pic 16f877a 头文件都有哪些?  

使用特权

评论回复
10
1988020566| | 2019-8-5 11:01 | 只看该作者
请问下PIC16f877a-i/p的引脚定义是怎样的  

使用特权

评论回复
11
lzbf| | 2019-8-5 11:01 | 只看该作者
PWM模式里的周期怎么算 的   

使用特权

评论回复
12
houjiakai| | 2019-8-5 11:01 | 只看该作者
中断有没有优先级  

使用特权

评论回复
13
youtome| | 2019-8-5 11:02 | 只看该作者
内部LDO不工作,功耗更低些?     

使用特权

评论回复
14
cemaj| | 2019-8-5 11:02 | 只看该作者
如何调试PIC16的堆栈   

使用特权

评论回复
15
sanfuzi| | 2019-8-5 11:02 | 只看该作者
PIC16 汇编指令多少字节  

使用特权

评论回复
16
cemaj| | 2019-8-5 11:02 | 只看该作者
pic16f877 datasheet 寄存器定义  

使用特权

评论回复
17
51xlf| | 2019-8-5 11:02 | 只看该作者
pic16f877与16f877A 有什么区别?

使用特权

评论回复
18
youtome| | 2019-8-5 11:02 | 只看该作者
PIC单片机16系列的使用什么编译器  

使用特权

评论回复
19
i1mcu| | 2019-8-5 11:02 | 只看该作者
74HC595吧?            

使用特权

评论回复
20
houjiakai| | 2019-8-5 11:02 | 只看该作者
pic16(L)F1503和pic16F1503有什么区别  

使用特权

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

本版积分规则

44

主题

3309

帖子

2

粉丝