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

📄 595_pwm_080313.txt

📁 这是用74HC595来做的一个PWM程序
💻 TXT
字号:
//定时器晶体振荡器11.0592M.
//74hc595控制LED渐变程序,测试正确
//测试芯片STC89C54,
/*
原理:用CPU的3个脚控制595的SER,SRCLK,RCLK,实行数据
的串进并出,在用CPU的一个脚控制LED的共极(共阳或者共阴),
利用这个脚来控制PWM,实行LED的渐变
*/
#include<reg52.h>
#include <stdio.h>
#include <INTRINS.H>


#define uint unsigned int
#define uchar unsigned char

#define nop() _nop_();_nop_();

sfr AUXR=0X8E;

sbit CLK=P0^5;	//移位时钟
sbit DAT=P0^3;	//数据
sbit SRCLK=P0^4;	//寄存器时钟
sbit kong=P0^6;	//控制脚位


uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭
 				 //0     1    2    3    4    5    6    7    8    9    -    
/*
void delay1()
{
   uchar a,b,c;
   for(a=0;a<200;a++)
     for(b=0;b<200;b++)
	   for(c=0;c<20;c++)  
	       ;  
  }
void delay(unsigned char a)
  {	 unsigned char j; 
    //for(i=0;i<60;i++)
        for(j=0;j<100;j++)
  	     {
		 while(a--);
		 }
    }
*/ 

void out595(void)
{
        SRCLK=0;
        nop();
        SRCLK=1;
}


void jianbian()
{ 
uchar ww,xx,HUIDU,BAOCI,COLORMOD; 

  for(COLORMOD=0;COLORMOD<2;COLORMOD++) 
       { 
	//渐渐亮
     for(HUIDU=0;HUIDU<255;HUIDU++)//为占空比, 		  
         { 
           for(BAOCI=0;BAOCI<30;BAOCI++)   //细化
                 { 
                   for(ww=0;ww<HUIDU;ww++)	//渐亮
                       {
					     kong=1;
						 //out595();
                         //P0=~color[COLORMOD];
						 //  P0=~0x01;	   //亮的	  //渐亮
                          } 
                    for(xx=0;xx<255-HUIDU;xx++)
                         {
                          //P0=color[COLORMOD];
						  //P0=0xff;		  //不亮的
						  kong=0;
						  //out595();
                          }                                                
                   } 
           } 


    //渐渐灭
	for(HUIDU=0;HUIDU<255;HUIDU++)//为占空比, 		  
         { 
           for(BAOCI=0;BAOCI<30;BAOCI++)   //细化
                 { 
                   for(ww=0;ww<HUIDU;ww++)
                       {
                        // P0=~color[COLORMOD];
						  // P0=0xff;	   //亮的	  //渐灭
						  kong=0;
						  //out595();
                          } 

                    for(xx=0;xx<255-HUIDU;xx++)
                         {
                          //P0=~color[COLORMOD];
						  //P0=~0x01;		  //不亮的
						  kong=1;
						 //out595();
                          }                                                
                     } 
              } 
        } 
 } 


void sendbyte(uchar byte)
{    
        uchar num,c; 
        num=tab[byte];
        
   for(c=0;c<8;c++)
        {
         CLK=0;
         DAT=num&0x80;
         num=num<<1;
         CLK=1;
         }
//         RCLK=0;
//         nop();
//         nop();
//         RCLK=1;         
}

void display(uchar word)
{
 uchar i,j;
 i=word/10;
 j=word-10*i;
 sendbyte(j);
 sendbyte(i);
// kong=1;
out595();
jianbian();
}

main()
{   
    while(1)
    { 
	// jianbian();
	 //P0=(P0|0x40);
     display(19);
	 //delay1();
     display(86);
	 //delay1();
    }
}

⌨️ 快捷键说明

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