×
单片机 > 单片机程序设计 > 详情

PIC16F72 -74HC595控制程序

发布时间:2020-05-16 发布时间:
|
PIC16F72控制4个74HC595程序

/*************PIC16F72单片机程序******************************/
/*********************************************************************/
/*****File  Function :  74HC595控制程序                  *****/
/*****Program Author :  ZhengWen(ClimberWin)     *****/
/*****MCU            : PIC16F72 外部晶振12MHZ    *****/
/*****Compile Date   :  2011/04/13                       *****/
/*****Edition Info   :  V1.0                                   *****/
/*************************************************************/

#include
#include "binary.h"


#define uchar unsigned char
#define uint unsigned int

 void Init(void);     //初始化子程序
 void LockOut(void);
 void Write(void);   //写8位数据
 void LockOut(void);

 

#define  HC595_SCLK       RB2    //移位时钟脉冲  
#define  HC595_RCK      RB3    //输出锁存器控制脉冲
#define  HC595_SI         RB4    //串行数据输入    
#define  HC595_EN         RB5

uchar temp; 

/*********************************************/  
void delayms(unsigned int count)
{
 uint i,j;
 for(i=0;i  for(j=0;j<120;j++);
}
/*********************************************/ 

/////////////////74HC595部分程序////////////////////////

/********存数据到移位寄存器*******/
void Write(void)   //写8位数据
{
     uchar j;

      for (j=0;j<8;j++)
     {
       
    if  (temp & 0x80) //读取
     {
      HC595_SI=1;
     }
    else
     {
      HC595_SI=0;
     }
      temp=temp<<1;           
      HC595_SCLK=1;                    
      asm("NOP"); 
      asm("NOP"); 
      HC595_SCLK=0;
   LockOut();     //数据移位完毕后锁存输出
     }        
}

/********************************************************/                                               
/*寄存器内的数据锁存到输出寄存器并输出显示*/                                        

 void LockOut(void)
{
    HC595_RCK=0; 
    asm("NOP"); 
    asm("NOP"); 
    HC595_RCK=1;                      
    asm("NOP"); 
    asm("NOP"); 
    HC595_RCK=0;
}
/*********************************************************/

void Init(void)
 { 
     PORTB = 0B00000000;
     TRISB = 0B00000000;//设置RB0为输入,作为按键口
     RBPU=0;//PORTB上拉使能
}


////////////主程序/////////////////////////
void main (void)
{

 uchar i;
 Init();//初始化程序

  PORTB=0XFF;

   HC595_SCLK=0;
   HC595_RCK=1;
   HC595_EN=0;


        temp=0x55; 
     Write();

     temp=0xaa; 
     Write();

     temp=0x01; 
     Write();

           temp=0x22; 
     Write(); 
         while(1);


}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
msp430的中断优先级和中断嵌套(及容易理解错误的说明)