⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 119.c

📁 一个用keil写的,动行在c8051f410上的用74hc595扩展led的驱动程序,在protes下仿真过.希望对初学者能有用.
💻 C
字号:
#include <c8051f410.H>

#define uchar unsigned char
#define uint  unsigned int 
sbit  DS     =P2^5;  
sbit  STCP   =P2^3;    //////define port for 595 use at led
sbit  SHCP   =P2^4;


////////////////////////////////////////////////////////////////////////////////led digital code define
uchar discod[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0x83,0x92,0x98,0x86,0x8e};
////////////////={ 0     1    2    3   4     5    6    7    8    9   A     b    s   q     e   f  };
uchar disbuf[6]={0x01,0x02,0x03,0x04,0x05,0x06};     ///six led figue buffer
uchar seriout,dseriout,seriin=0,fuctionled;          ///situation variable define
///////////////////////

void Delay_x10ms(unsigned char DelayTime)   //***************10ms延时**********//
   {
       unsigned char ic,jc,kc;
       for(ic=0;ic<DelayTime;ic++)
          for(jc=0;jc<10;jc++)
             for(kc=0;kc<120;kc++) {;}
    }

display()                       // display by 74hc595d  
{
uchar i,ii,iii,iiii,disad=1;    //i:6lednumber      ii:ledallcodnumber      disad:led at address 
uint  dscod,sericode;	  
///////////////////////////////////      here compile the display code then send to buffer      
disbuf[0]=~discod[1];   ///
disbuf[1]=~discod[2];    ///
disbuf[2]=~discod[3];    ///
disbuf[3]=~discod[4];                  ///
disbuf[4]=~discod[5];     ///
disbuf[5]=~discod[6];    ///
///////////////////////////////////


for(iiii=0;iiii<1;iiii++)
    {
         for(i=0;i<6;i++)
         {
		 sericode=(disbuf[i])+(~disad*256);      //the number of 595 use to  shefit  out
		 disad*=2;                            //led address add one                         //begin  datashfit
           for(ii=0;ii<17;ii++)               //shfit  16 bit
                   {
				   STCP=0;SHCP=0;             //pluse  down for ready
				   for(iii=0;iii<22;iii++);  //dealy  100 	
                   dscod=sericode&0x8000;     //cunt   out  bit
				   DS=dscod;                  //out
				   STCP=1;SHCP=1;             //clok   pluse   up  data_bit out
				   STCP=0;SHCP=0;             //pluse  down for ready
				   sericode<<=1;              //lift  shfit   one bit
                   }                     //595 enable  on    all data out
				  Delay_x10ms(5);
				   for(iii=0;iii<200;iii++);  //dealy  100 		

         }
	}
}
void main(void) 
{ XBR1=0X41;
  PCA0MD=0X00;
  OSCICN|=0x07;
  PCA0CPM0=0x46;
  PCA0MD|=0x08;
  for(;;)
  {
   display();
  }
 }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -