zoukankan      html  css  js  c++  java
  • PIC16F877A开发板 普通IO驱动74595实验

    //*****************电子园PIC16F877A开发板 普通IO驱动74595实验***************
    //
    //PIC16F877A 实验板
    //
    //mcu: PIC16F877A  4MHz  
    //2010年7月10日21:52:30
    //**************************************************************************
    
    #include <lian_pic.h>
    __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);	
    //HS振荡,禁止看门狗,低压编程关闭,启动延时定时器
    
    #define srclk RC3        //移位寄存器时钟 (74595:11脚)
    #define rclk  RC4        //存储寄存器时钟 (74595:12脚)
    #define ser   RC5        //串行数据口     (74595:14脚)
                             //oe:输出允许  L:允许输出;H:禁止输出;  (74595:13脚)
                             //srclr:移位寄存器清零 (L:清零) (74595:10脚)
      
    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);     
    void senddata_74595(uchar SendData);
    
    
    //*************** 主程序 ********************
    void main(void)
    {	
      TRISC3=0;      //srclk 引脚设为输出
      TRISC5=0;      //ser   引脚设为输出
      TRISC4=0;      //rclk  引脚设为输出
      rclk=0;
      
      delay1ms(10);
      
      rclk=0;                 //产生锁存时钟
      senddata_74595(0x00);
      senddata_74595(0x00);
      rclk=1;
      delay1ms(200);
      
      for(d=0;d<8;d++)
      {
        for(c=0;c<8;c++)
        {
          rclk=0;
          senddata_74595(smg_bit[d]);
          senddata_74595(smg_text[c]);
          rclk=1;
          delay1ms(100);
        }  
      }
    
      while(1)
      {
        for(c=0;c<11;c++)
        {
          rclk=0;
          senddata_74595(smg_bit[8]);
          senddata_74595(smg[c]);
          rclk=1;
          delay1ms(100);
        }  	    
      } 
    }	
    
    //***********************74595发送函数************************
    void senddata_74595(uchar SendData)
    {
      uchar i;
      for(i=0;i<8;i++)
      {	
        if((SendData&0x80)==0)           //先发送高位,后发送低位
        {
          ser=0;
        }
        else
        {
          ser=1;
        }  
        srclk=0;
        srclk=1;
        SendData=SendData<<1;           //数据左移一位
      }	
    }
    
    
    //*****************延时 n*1ms 12MHz*****************
    void delay1ms(uint DelayTime)
    {	
      uint temp;
      for(;DelayTime>0;DelayTime--)
      {	
        for(temp=0;temp<270;temp++)
        {;}
      }
    }
  • 相关阅读:
    c++学习--面向对象一实验
    c++学习--面向对象一
    c#学习
    Linux安全之SSH 密钥创建及密钥登录,禁止密码登陆
    laravel 5.5 跨域问题 并且laravel的跨域 Access-Control-Allow-Origin 报错的坑
    安装 lnmp
    微信小程序-聊天功能下拉加载更多数据(历史聊天内容出现在顶部)
    简单实现小程序view拖拽功能
    mysql 常用命令
    有感而发——写给曼曼的信
  • 原文地址:https://www.cnblogs.com/hnrainll/p/1917514.html
Copyright © 2011-2022 走看看