標(biāo)題:
單片機(jī)PWM控制LED同步漸變分控效果程序
[打印本頁(yè)]
作者:
421352738
時(shí)間:
2022-1-20 11:51
標(biāo)題:
單片機(jī)PWM控制LED同步漸變分控效果程序
//************************************
//***********
//**** 2004-06-19 mcu at89c2051 38400BPS OSC 22.1184MHZ
//************************************
#include <at892051.h>
#include <stdio.h>//一般I/O函數(shù)
#include <stdlib.h>//標(biāo)準(zhǔn)函數(shù)
#include <absacc.h>//絕對(duì)地址
#include <intrins.h>//內(nèi)部函數(shù)
#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 0xff /* 時(shí)間常數(shù)高8位 (65536-500)/256 */
#define V_TL0 0x80 /* 時(shí)間常數(shù)低8位 (65536-500)%256 11.0592*/
#define ADD 1
//******************************
sbit roe=P3^2;
sbit goe=P3^3;
sbit boe=P3^4;
//**************************************************************
uchar dis_buf_r,dis_buf_g,dis_buf_b; //顯示緩沖
uchar mode;
uchar pointer;
uchar send_buf[4];
uchar pwm,rl;
uchar setadd;
jmp_buf env;
int retval;
uchar bdata flags;
sbit flag0=flags^0;
sbit flag1=flags^1;
sbit flag2=flags^2;
sbit flag3=flags^3;
sbit frameok=flags^4;
//*********************************
void delay(uint j);
void qcgd(uint speed);
//*********************************
void main(void)
{
TMOD=0x21;
SCON=0xd0;
TH1=0xfd;
TL1=0xfd; //256-(22.1184*10~6/32/12/3/38400*2)
//PCON=0X80;//倍頻
SM2=1;
TL0=V_TL0;
TH0=V_TH0;
TR0=1;
ET0=1;
TR1=1;
ET1=0;
ES=1;
EA=1;
PS=1;
frameok=0;
pointer=0;
dis_buf_b=dis_buf_g=dis_buf_r=15;
setadd=(~P1)&0xff;
while(1)
{
if(mode==0x55)
{delay(4);}
else
{
retval=setjmp(env);
if(retval==0)
{
qcgd(20);
}
}
}
}
//*********************************
// 接收數(shù)據(jù)
//*********************************
void receive(void)
{
dis_buf_r=send_buf[1];
dis_buf_g=send_buf[2];
dis_buf_b=send_buf[3];
}
//*****************************************
// 延時(shí)
//**************************************
void delay(uint tim)
{
uint i;
while(tim!=0)
{
for(i=0;i<50;i++)
{
if(frameok)
{receive();
mode=0x55;
frameok=0;
SM2=1;
pointer=0;
retval=1;
longjmp(env,retval);
}
}
tim--;
}
}
//************************************
//七彩過(guò)渡roe=(dis_buf_r<pwm)?0:1;
//**********************************
void qcgd(uint speed)
{
//for(i=0;i<255;i++){dis_buf_r=i;dis_buf_g=0;dis_buf_b=0;delay(speed);}//red
/*
for(i=0;i<16;i++){dis_buf_r=15;dis_buf_g=i;dis_buf_b=0;delay(speed);}//yeloww
for(i=0;i<16;i++){dis_buf_r=~i;dis_buf_g=15;dis_buf_b=0;delay(speed);}//grn
for(i=0;i<16;i++){dis_buf_r=0;dis_buf_g=15;dis_buf_b=i;delay(speed);}//qi
for(i=0;i<16;i++){dis_buf_r=0;dis_buf_g=~i;dis_buf_b=15;delay(speed);}//blu
for(i=0;i<16;i++){dis_buf_r=i;dis_buf_g=0;dis_buf_b=15;delay(speed);}//zhi
for(i=0;i<16;i++){dis_buf_r=15;dis_buf_g=i;dis_buf_b=15;delay(speed);}//w
for(i=0;i<16;i++){dis_buf_r=15;dis_buf_g=~i;dis_buf_b=~i;delay(speed);}//r
*/
for(dis_buf_g=63;dis_buf_g<64;dis_buf_g--)
{dis_buf_b=dis_buf_g;delay(speed);}//r
dis_buf_r=63;dis_buf_g=0;dis_buf_b=0;
for(dis_buf_g=1;dis_buf_g<64;dis_buf_g++)
{delay(speed);}//y
dis_buf_g=63;
for(dis_buf_r=63;dis_buf_r<64;dis_buf_r--)
{delay(speed);}//g
dis_buf_r=0;
for(dis_buf_b=1;dis_buf_b<64;dis_buf_b++)
{delay(speed);}//q
dis_buf_b=63;
for(dis_buf_g=63;dis_buf_g<64;dis_buf_g--)
{delay(speed);}//b
dis_buf_g=0;
for(dis_buf_r=1;dis_buf_r<64;dis_buf_r++)
{delay(speed);}//z
dis_buf_r=63;
for(dis_buf_g=1;dis_buf_g<64;dis_buf_g++)
{delay(speed);}//w
dis_buf_g=63;
}
//****************************************
// 通訊子程序
//**************************************
void send(void) interrupt 4
{
if(!TI && RI && !frameok)
{RI=0;
if(pointer==0)
{
if(SBUF==setadd||SBUF==0)
{
SM2=0;pointer++;
}
}
else
{
if(pointer<3)
{send_buf[pointer]=SBUF;pointer++;}
else
{
send_buf[pointer]=SBUF;
frameok=1;
}
}
}//end if
}//end sub
//*******************************************
void timer1() interrupt 1
{
TL0=V_TL0;
TH0=V_TH0;
pwm++;
if(pwm>63)pwm=0;
//for(pwm=0;pwm<64;pwm++)
// {
roe=(dis_buf_r<=pwm)?1:0;
goe=(dis_buf_g<=pwm)?1:0;
boe=(dis_buf_b<=pwm)?1:0;
// }
}//end sub
復(fù)制代碼
作者:
heicad
時(shí)間:
2022-1-20 17:52
缺少頭文件啊 樓主能分享一下嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1