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

📄 8个led渐变的程序.txt

📁 单片机的PWM控制
💻 TXT
字号:
给大伙发个8个LED渐变的程序,每个LED的亮度都不一样,托尾的效果
2007年01月12日 星期五 11:00
//************************************
//**** 
//**** at89c51   24M
//************************************
#include <reg51.h>
#include <stdio.h>//一般I/O函数
#include <stdlib.h>//标准函数
#include <absacc.h>//绝对地址
#include <intrins.h>//内部函数 
#include <setjmp.h>
#define uchar unsigned char
#define uint unsigned int
#define Byte unsigned char
#define Word unsigned int
#define ulong unsigned long
#define bool bit
#define true 1
#define false 0
#define V_TH0   0xfb  /* 时间常数高8位 (65536-500)/256   */
#define V_TL0   0x00  /* 时间常数低8位 (65536-500)%256   11.0592*/
#define ADD 2
#define reg01 XBYTE[0xc000]
#define reg02 XBYTE[0xc001] //控制寄存器
#define WriteDeviceAddress  0xa0
#define ReadDviceAddress  0xa1
uchar BBB, AAA ;

//*****************************************
uchar dis_buf[10] ;
uchar bdata flag ;
sbit sw=flag^0 ;
sbit keyin=P1^4 ;
sbit  io0=P0^7 ;
sbit  io1=P0^6 ;
sbit io2=P0^5 ;
sbit io3=P0^4 ;
sbit io4=P0^3 ;
sbit io5=P0^2 ;
sbit io6=P0^1 ;
sbit io7=P0^0 ;


//*************************************** 
void pwm_oe(void)
{
uchar i ;
for(i=1 ;i<BBB ;i++)
 {
 io0=(dis_buf[0]<=i)?1:0 ;
 io1=(dis_buf[1]<=i)?1:0 ;
 io2=(dis_buf[2]<=i)?1:0 ;
 io3=(dis_buf[3]<=i)?1:0 ;
 io4=(dis_buf[4]<=i)?1:0 ;
 io5=(dis_buf[5]<=i)?1:0 ;
 io6=(dis_buf[6]<=i)?1:0 ;
 io7=(dis_buf[7]<=i)?1:0 ;

 }
}
//**************************
void as1(uint speed)
{
uchar i ;
uint j ;
dis_buf[0]=0 ;
dis_buf[1]=0 ;
dis_buf[2]=0 ;
dis_buf[3]=0 ;
dis_buf[4]=0 ;
dis_buf[5]=0 ;
dis_buf[6]=8 ;
dis_buf[7]=AAA ;
for(i=0 ;i<32 ;i++)
 {
 dis_buf[8]=dis_buf[7] ;
 dis_buf[7]=dis_buf[6] ;
 dis_buf[6]=dis_buf[5] ;
 dis_buf[5]=dis_buf[4] ;
 dis_buf[4]=dis_buf[3] ;
 dis_buf[3]=dis_buf[2] ;
 dis_buf[2]=dis_buf[1] ;
 dis_buf[1]=dis_buf[0] ;
 dis_buf[0]=dis_buf[8] ;
 for(j=0 ;j<speed ;j++){pwm_oe() ;}
 }
}
//****************
void as2(uint speed)
{
uchar i ;
uint j ;
dis_buf[0]=0 ;
dis_buf[1]=1 ;
dis_buf[2]=2 ;
dis_buf[3]=4 ;
dis_buf[4]=5 ;
dis_buf[5]=6 ;
dis_buf[6]=8 ;
dis_buf[7]=12 ;
dis_buf[8]=AAA ;
for(i=0 ;i<32 ;i++)
 {
 dis_buf[8]=dis_buf[7] ;
 dis_buf[7]=dis_buf[6] ;
 dis_buf[6]=dis_buf[5] ;
 dis_buf[5]=dis_buf[4] ;
 dis_buf[4]=dis_buf[3] ;
 dis_buf[3]=dis_buf[2] ;
 dis_buf[2]=dis_buf[1] ;
 dis_buf[1]=dis_buf[0] ;
 dis_buf[0]=dis_buf[8] ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
}
//**************************
void as3(uchar speed)
{
uchar i,j ;
uint m ;
dis_buf[0]=AAA ;
dis_buf[1]=AAA ;
dis_buf[2]=AAA ;
dis_buf[3]=AAA ;
dis_buf[4]=AAA ;
dis_buf[5]=AAA ;
dis_buf[6]=AAA ;
dis_buf[7]=AAA ;
for(m=0 ;m<5000 ;m++)
 pwm_oe() ;
for(i=AAA ;i>0 ;i--)
 {dis_buf[0]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[1]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[2]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[3]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[4]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[5]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[6]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=AAA ;i>0 ;i--)
 {dis_buf[7]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
//-------------------
for(i=0 ;i<BBB ;i++)
 {dis_buf[0]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[1]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[2]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[3]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[4]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[5]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[6]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 }
for(i=0 ;i<BBB ;i++)
 {dis_buf[7]=i ;
 for(j=0 ;j<speed ;j++)pwm_oe() ;
 } 
}
//*****************
void as4(uint speed)
{
uint n ;
uchar i,j ;

for(j=0 ;j<BBB ;j++)
 {
 for(i=0 ;i<8 ;i++)dis_buf=~dis_buf&0x0f ;
 for(n=0 ;n<speed ;n++)
  pwm_oe() ;

 }
}
//************************
main()
{
uchar ci ;
BBB=16 ;
AAA=15 ;
while(1)
 {
 as1(230) ;
for(ci=0 ;ci<2 ;ci++){ as2(200) ;}
for(ci=0 ;ci<2 ;ci++){ as3(120) ;}
 as4(620) ;
 }
}

⌨️ 快捷键说明

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