久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)舞臺燈程序 含有源碼 我一直收藏的
[打印本頁]
作者:
人在江湖
時間:
2017-4-20 20:01
標(biāo)題:
單片機(jī)舞臺燈程序 含有源碼 我一直收藏的
我收藏的舞臺燈程序 含有源碼
完整源碼下載(包含頭文件內(nèi)容):
舞臺燈程序.docx
(18.5 KB, 下載次數(shù): 28)
2017-4-20 19:59 上傳
點擊文件名下載附件
舞臺燈程序
下載積分: 黑幣 -5
單片機(jī)源碼:
#include<reg52.h>
#include<intrins.h>
#include"led_disp.h"
/********引腳定義*******/
sbit led1=P1^2; //藍(lán)燈
sbit led2=P1^3; //綠燈
sbit led3=P1^4; //紅燈
/*********89板測試引腳***************
sbit key4=P3^3; //存儲
sbit key3=P3^2; //減
sbit key2=P3^1; //T0 加
sbit key1=P3^0; //T1 模式選擇
*/
// 彩燈引腳
sbit key4=P1^6; //存儲
sbit key3=P1^7; //減
sbit key2=P3^4; //T0 加
sbit key1=P3^5; //T1 模式選擇
//-----------------------------------------//
sbit voice=P1^0; //聲控引腳
/***********延時函數(shù)*******************/
void delay(unsigned int time);
void delayus(uint t);
void delayms(uint k);
void delay_nms(uint n);
void delay_1ms(void);
/****模式設(shè)置函數(shù)***************************/
void led_1(uint t);
void led_2(uint t);
void led_3(uint t);
void led_mod0(void);
void led_mod1(void); // 模式1
void led_mod2(void); //模式2
void led_mod3(void); //模式3
void led_mod4(void); //模式4,聲控模式
/********按鍵功能函數(shù)*********************/
void key1_fun(void);
void key2_fun(void);
void key3_fun(void);
void key4_fun(void);
void key_fun(void);
/*********中斷、顯示、其他函數(shù)***********/
void InitTimer0(void); //定時100us,用于數(shù)碼管顯示;中斷用于執(zhí)行數(shù)碼管顯示
void InitTimer1(void); //定時10ms,用于按鍵;中斷執(zhí)行按鍵掃描
void disp(void);
void dis(void);
void dis1(void);
/******************************/
void led_work(void); //led 花樣閃爍
void led_rem(void); //記憶模式功能,開機(jī)時執(zhí)行
void voice_ctr(void); //聲控功能
uint MOD_T; //模式閃爍快慢變量
uchar MOD_NUM,MOD_T_ADD; //模式號,模式閃爍時間快慢變量
/**********模式閃爍快慢變量及對應(yīng)的向量**************************************/
uint MOD_T0,MOD_T1,MOD_T2,MOD_T3,MOD_T4,MOD_T5;
uchar MOD_T_ADD0,MOD_T_ADD1,MOD_T_ADD2,MOD_T_ADD3,MOD_T_ADD4,MOD_T_ADD5;
uint MOD_TR[6]; // 元素7為存儲變量
uchar MOD_T_ADDR[6]; //
/********存儲記憶變量*****************/
uchar MOD_NUM_REM;
uchar MOD_T_ADD_REM;
uint num; //聲控變量
/****************************************************************************/
uint delay_time; //MOD_T=3000-55*(MOD_T_ADD+1); 200--60000
uchar t,TN; //定時器0變量
bit key_flag;
//code uchar led_mod[]={0x39,0x39,0x39,0x73,0x39,0x6d,0x5e,0x79,0x7c,0x79,0x5e,0x3f}; //89板模式數(shù)顯段
//code uchar led_tab[]={0x0A,0xFA,0x8C,0x98,0x78,0x19,0x09,0xBA,0x08,0x18, 0x49,0x0F,0xC8,0x0D,0x2C}; //0-9,b,c,d,e,p
code uchar led_mod[]={0x0f,0x0f,0x0f,0x2c,0x0f,0x19,0xc8,0x0d,0x49,0x0d,0xc8,0x0a}; //彩燈模式數(shù)顯段
//主函數(shù)
void main(void)
{
InitTimer0();
InitTimer1();
led1=0;
led2=0;
led3=0;
P2=0x00; //數(shù)碼管初始化控制
MOD_T=6000; //led閃爍時間變量
MOD_TR[0]=6000;
MOD_TR[1]=6000;
MOD_TR[2]=6000;
MOD_TR[3]=6000;
MOD_TR[4]=6000;
MOD_TR[5]=6000;
MOD_T_ADDR[0]=0;
MOD_T_ADDR[1]=0;
MOD_T_ADDR[2]=0;
MOD_T_ADDR[3]=0;
MOD_T_ADDR[4]=0;
MOD_T_ADDR[5]=0;
//MOD_NUM=MOD_NUM_REM;
//MOD_T_ADD=0;
//led_rem();
//key_flag=0;
while(1) //主程序循環(huán)
{
//led_mod3();
// key1_fun();
//key2_fun();
//key3_fun();
//key4_fun();
//key_fun();
led_work();
}
}
//延時子函數(shù)
//參數(shù)范圍 0-65536
void delayus(uint t)
{
while(t--);
}
//延時子函時,
//參數(shù) d_time 控制延時的時間
//作用,燈亮和熄滅必須持續(xù)一定時間,人眼才能看到
void delayms(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<120;j++);
}
void delay_1ms(void)
{
unsigned char a,b;
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}
void delay_nms(uint n)
{
uint i;
for(i=0;i<n;i++)
{delay_1ms();}
}
/************************************/
void led_1(uint t)
{
led1=1;
delayms(t);
led1=0;
delayms(t);
led2=1;
delayms(t);
led2=0;
delayms(t);
led3=1;
delayms(t);
led3=0;
delayms(t);
}
void led_2(uint t)
{
led1=1;
led2=1;
delayms(t);
led1=0;
led2=0;
delayms(t);
led2=1;
led3=1;
delayms(t);
led2=0;
led3=0;
delayms(t);
led3=1;
led1=1;
delayms(t);
led3=0;
led1=0;
delayms(t);
}
void led_3(uint t)
{
led1=1;
led2=1;
led3=1;
delayms(t);
led1=0;
led2=0;
led3=0;
delayms(t);
}
void led_mod0(void)
{
led_1(MOD_TR[0]);
}
void led_mod1(void)
{
led_2(MOD_TR[1]);
}
void led_mod2(void)
{
led_3(MOD_TR[2]);
}
void led_mod3(void)
{
led_1(MOD_TR[3]);
led_2(MOD_TR[3]);
led_3(MOD_TR[3]);
}
void led_mod4(void)
{
switch(num)
{
case 0:
{ led1=1;
led2=1;
led3=1;
break;
}
case 1:
{
led1=0;
led2=1;
led3=1;
break;
}
case 2:
{
led1=1;
led2=0;
led3=1;
break;
}
case 3:
{
led1=1;
led2=1;
led3=0;
break;
}
case 4:
{
led1=1;
led2=0;
led3=0;
break;
}
case 5:
{
led1=0;
led2=0;
led3=1;
break;
}
case 6:
{
led1=0;
led2=1;
led3=0;
break;
}
}
}
void led_rem(void)
{
}
/*************************************/
/**************中斷設(shè)置及執(zhí)行*****************/
void InitTimer0(void) //100us
{
TMOD |= 0x02;
TH0 = 0x00;
TL0 = 0x38;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void Timer0Interrupt(void) interrupt 1
{
//add your code here!
//disp();
t++;
if(t==30)
{
t=0;
TN++;
if(TN==5) TN=1;
dis();
}
if(t<15)
{
voice_ctr();
}
//dis();
}
/************************************************/
void InitTimer1(void)
{
TMOD |= 0x10;
TH1 = 0x0B1;
TL1 = 0x0E0;
EA = 1;
ET1 = 1;
TR1 = 1;
}
void Timer1Interrupt(void) interrupt 3
{
TH1 = 0x0B1;
TL1 = 0x0E0;
/*********add your code here!*****************/
//dis();
key_fun();
}
/*****************按鍵功能函數(shù)************************************/
void key1_fun(void) //按鍵1功能--模式選擇
{
if(!key1)
{
delayus(1000);
if(!key1)
{
while(!key1);
MOD_NUM++;
if(MOD_NUM==6) MOD_NUM=0;
}
num=0;
}
}
void key2_fun(void) //按鍵2功能--加
{
if(!key2)
{
delayus(1000);
if(!key2)
{
while(!key2);
//if(MOD_NUM==0)
{
if(MOD_T_ADDR[MOD_NUM]==99) MOD_T_ADDR[MOD_NUM]=0;
else MOD_T_ADDR[MOD_NUM]+=1;
}
}
}
MOD_TR[MOD_NUM]=2*(6000-55*(MOD_T_ADDR[MOD_NUM]+1));
}
void key3_fun(void) //按鍵3功能--減
{
if(!key3)
{
delayus(1000);
if(!key3)
{
while(!key3);
if(MOD_T_ADDR[MOD_NUM]==0) MOD_T_ADDR[MOD_NUM]=99;
else MOD_T_ADDR[MOD_NUM]-=1;
}
}
MOD_TR[MOD_NUM]=2*(6000-55*(MOD_T_ADDR[MOD_NUM]+1));
}
void key4_fun(void) //存儲鍵:模式,閃爍快慢存儲
{
if(!key4)
{
delayus(1000);
if(!key4)
{
while(!key4);
MOD_NUM_REM=MOD_NUM;
MOD_T_ADD_REM=MOD_T_ADDR[MOD_NUM];
}
}
}
void key_fun(void)
{
// if(!key1||!key2||!key3||!key4) key_flag=1;
//if(key_flag)
key1_fun();
key2_fun();
key3_fun();
key4_fun();
}
//-------------------------------------------------//
void voice_ctr(void)
{
if(!voice)
{
//delayus(10);
while(!voice);
num++;
if(num==7) num=0;
}
}
/**************led花樣閃爍*****************/
void led_work(void)
{
if(MOD_NUM==0) { led_mod0(); }
else if(MOD_NUM==1) { led_mod1(); }
else if(MOD_NUM==2) { led_mod2(); }
else if(MOD_NUM==3) { led_mod3(); }
else if(MOD_NUM==4) { led_mod4(); }
else
{
led1=1;
led2=1;
led3=1;
}
}
/*****************************顯示函數(shù):模式和閃爍快慢顯示***************************/
void dis(void)
{
/*P0=led_tab[MOD_NUM/10]; seg1 delayus(50);
P0=led_tab[MOD_NUM%10]; seg2 delayus(50);
P0=led_tab[MOD_T_ADD/10]; seg3 delayus(50);
P0=led_tab[MOD_T_ADD%10]; seg4 delayus(50);
*/
if(TN==1)
{
led_disp(1,led_mod[MOD_NUM*2]);
//delayus(5);
}
else if(TN==2)
{
led_disp(2,led_mod[MOD_NUM*2+1]);
//delay_nms(5);
// delayus(5);
}
else if(TN==3)
{
led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]);
//delay_nms(5);
// delayus(5);
}
else
{
led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]);
//delay_nms(5);
// delayus(5);
}
/* if(TN==0)
{ led_disp(0,led_mod[MOD_NUM*2]); }
else if(TN==1)
{ led_disp(1,led_mod[MOD_NUM*2+1]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD%10]);}
*/
/*if(MOD_NUM==0)
{
if(TN==0)
{ led_disp(0,led_mod[0]); }
else if(TN==1)
{ led_disp(1,led_mod[1]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD0/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD0%10]);}
}
else if(MOD_NUM==1)
{
if(TN==0)
{ led_disp(0,led_mod[2]); }
else if(TN==1)
{ led_disp(1,led_mod[3]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD1/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD1%10]);}
}
else if(MOD_NUM==2)
{
if(TN==0)
{ led_disp(0,led_mod[4]); }
else if(TN==1)
{ led_disp(1,led_mod[5]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD2/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD2%10]);}
}
else if(MOD_NUM==3)
{
if(TN==0)
{ led_disp(0,led_mod[6]); }
else if(TN==1)
{ led_disp(1,led_mod[7]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD3/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD3%10]);}
}
else if(MOD_NUM==4)
{
if(TN==0)
{ led_disp(0,led_mod[8]); }
else if(TN==1)
{ led_disp(1,led_mod[9]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD4/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD4%10]);}
}
else
{
if(TN==0)
{ led_disp(0,led_mod[10]); }
else if(TN==1)
{ led_disp(1,led_mod[11]); }
else if(TN==2)
{led_disp(2,led_tab[MOD_T_ADD5/10]);}
else
{led_disp(3,led_tab[MOD_T_ADD5%10]);}
}
*/
}
void dis1(void)
{
/*
led_disp(1,led_tab[11]);
led_disp(2,led_tab[11]);
led_disp(3,led_tab[0]);
led_disp(4,led_tab[0]); delay_led(500);
*/
if(TN==1)
{
led_disp(1,led_mod[MOD_NUM*2]); delay_led(35);
led_disp(2,led_mod[MOD_NUM*2+1]); delay_led(35);
led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]); delay_led(35);
led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]); delay_led(35);
}
else if(TN==2)
{
led_disp(2,led_mod[MOD_NUM*2+1]); delay_led(35);
led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]); delay_led(35);
led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]); delay_led(35);
led_disp(1,led_mod[MOD_NUM*2]); delay_led(35);
}
else if(TN==3)
{
led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]); delay_led(35);
led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]); delay_led(35);
led_disp(1,led_mod[MOD_NUM*2]); delay_led(35);
led_disp(2,led_mod[MOD_NUM*2+1]); delay_led(35);
}
else if(TN==4)
{
led_disp(4,led_tab[MOD_T_ADDR[MOD_NUM]%10]); delay_led(35);
led_disp(1,led_mod[MOD_NUM*2]); delay_led(35);
led_disp(2,led_mod[MOD_NUM*2+1]); delay_led(35);
led_disp(3,led_tab[MOD_T_ADDR[MOD_NUM]/10]); delay_led(35);
}
}
void disp(void)
{
P0=led_tab[11]; P2=0x20; // P0=0x0f; //led_tab[11];
delayus(14);
//P2=0xff;
//delayms(10);
P0=led_tab[11]; P2=0x10; //P0=0x0f; //led_tab[11];
delayus(14);
//P2=0x00;
//P2=0xff;
//delayms(10);
P0=led_tab[0]; P2=0x08; // P0=0x0a; //led_tab[0];
delayus(14);
//P2=0x00;
//P2=0xff;
//delayms(10);
P0=led_tab[0]; P2=0x40; //P0=0x0a; //led_tab[0];
delayus(14);
//P2=0x00;
//P2=0xff;
//delayms(10);
}
復(fù)制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲激情一级片
|
久久久久久久久久久久久久久久久久久久
|
国产激情第一页
|
国产黄色一级片
|
四虎在线视频
|
中文在线播放
|
欧美日韩国产一区二区三区
|
亚洲美女网站
|
欧美中文在线
|
日韩av一区二区在线观看
|
青青操av
|
亚洲国产精品一区二区第一页
|
都市激情亚洲
|
亚洲高清网
|
国产乱码精品1区2区3区
|
国产精品一区二区av
|
久久精品视频亚洲
|
欧美激情一区
|
男人天堂网址
|
涩涩视频网站在线观看
|
国内精品久久影院
|
国久久
|
国产成人综合在线
|
日韩快播电影
|
黄色福利
|
亚洲激情网站
|
天堂男人av
|
av第一页
|
国产91久久精品一区二区
|
欧美久久久久久
|
亚洲欧美日韩国产综合
|
韩日视频在线观看
|
日韩精品一区二区三区视频播放
|
91视频一区二区三区
|
天堂成人国产精品一区
|
国产在线精品一区二区三区
|
久久久久久国产精品
|
久久99国产精一区二区三区
|
天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品
|
91精品国产色综合久久不卡蜜臀
|
久久大陆
|