新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的無(wú)線遙控自行車(chē)風(fēng)火輪程序

基于51單片機(jī)的無(wú)線遙控自行車(chē)風(fēng)火輪程序

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏

硬件制作資料從http://www.51hei.com/bbs/dpj-19358-1.html下載
//課題:無(wú)線遙控自行車(chē)風(fēng)火輪
//程序編寫(xiě):潘觀學(xué)
//單片機(jī):STC89C54RD
//晶振:12MHZ
//單片機(jī)時(shí)鐘模式:6T
#include
#include "fenghuolun.h" //定義在這里
/*********************************
延時(shí)函數(shù)
***********************************/
void delay_ms(unsigned int i)//1ms基準(zhǔn)延時(shí)
{unsigned char j;
while(i--)
{for(j=0;j<246;j++)
{;
}
}
}
void delay_us(unsigned int n) //10us延時(shí)
{uchar i;
uchar j;
for(i=0;ifor(j=0;j<2;j++);
}
/*******************************
呼吸燈
********************************/
void huxi()
{
uint k=0,t,i,j;
for(i=0;i<=350;i++)
{
if((i%4)==0)
k++;
for(t=0;t<=16;t++)
{
led=0;
for(j=0;j<=52;j++)
if(j==k)
led=1;
}
if(enable==1)break;
}
for(i=0;i<=350;i++)
{
if((i%4)==0)
k--;
for(t=0;t<=16;t++)
{
led=0;
for(j=0;j<=90;j++)//j越大速度越慢
if(j==k)
led=1;
}
if(enable==1)break;
}
led=0xff;
delay_ms(200);
}
/******************************
閃爍函數(shù)
*****************************/
void shan()
{
led=0;
delay_ms(100);
led=1;
delay_ms(400);
}
void shan1()
{
led=0;
delay_ms(100);
led=1;
delay_ms(100);
led=0;
delay_ms(100);
led=1;
delay_ms(300);
}
/**********************************
蜂鳴器函數(shù)
************************************/
void beep()
{
fmq=0;
delay_ms(100);
fmq=1;
}
/*******************************
畫(huà)面切換函數(shù)
********************************/
void huan()
{uchar i;
P1=0xff;//P1口設(shè)置為輸入狀態(tài) 先全部寫(xiě)1
i=P1;//賦值給臨時(shí)存貯變量

本文引用地址:http://butianyuan.cn/article/201611/323806.htm

i=i&0x0f;//和0x0f相與 屏蔽高四位,讀取無(wú)線遙控碼

if (i==0x04)//如果是0x04,則代表無(wú)線遙控器的按鍵A按下
{
if(moshi==0)
{
modle0++;//下一個(gè)靜態(tài)畫(huà)面
if(modle0>9)
modle0=0;
}
if(moshi==1)
{
modle1++;//下一個(gè)動(dòng)態(tài)畫(huà)面
if(modle1>2)
modle1=0;
}
beep();//提示音
}
if (i==0x01)//如果是0x01,則代表無(wú)線遙控器的按鍵B按下
{
if(moshi==0)
{
modle0--;//上一個(gè)靜態(tài)畫(huà)面
if(modle0<0)
modle0=9;
}
if(moshi==1)
{
modle1--;//上一個(gè)動(dòng)態(tài)畫(huà)面
if(modle1<0)
modle1=2;
}
beep();//提示音
}
if (i==0x08)//如果是0x08,則代表無(wú)線遙控器的按鍵C按下
{
moshi=~moshi;
beep();//提示音
}
if (i==0x02)//如果是0x02,則代表無(wú)線遙控器的按鍵D按下
{
enable=~enable;
beep();
}
}

/*******************
靜態(tài)畫(huà)面顯示函數(shù)
*******************/
void display(uchar n)
{uint i;//0-255形成整個(gè)圓
uchar a=8;//發(fā)送循環(huán)次數(shù)
uchar h1,h2,h3,h4;

for(i=0;i<256;i++)
{
h4=tab[n][i*4+3];
st_cp4=0;
while(a--)//發(fā)送第4個(gè)8位
{ds4=h4&0x01;
sh_cp4=0;
h4=h4>>1;
sh_cp4=1;
}
a=8;

h3=tab[n][i*4+2];
st_cp3=0;
while(a--)//發(fā)送第3個(gè)8位
{ds3=h3&0x01;
sh_cp3=0;
h3=h3>>1;
sh_cp3=1;
}
a=8;

h1=tab[n][i*4];
st_cp1=0;
while(a--)//發(fā)送第1個(gè)8位
{ds1=h1&0x01;
sh_cp1=0;
h1=h1>>1;
sh_cp1=1;
}
a=8;

h2=tab[n][i*4+1];
st_cp2=0;
while(a--)//發(fā)送第2個(gè)8位
{ds2=h2&0x01;
sh_cp2=0;
h2=h2>>1;
sh_cp2=1;
}
a=8;

st_cp1=1;
st_cp2=1;
st_cp3=1;
st_cp4=1;

delay_us(time1); //每顯示一組產(chǎn)生一個(gè)延時(shí)
}
}

/********************************
動(dòng)態(tài)畫(huà)面顯示函數(shù)
*********************************/
/*******自動(dòng)切換畫(huà)面*********/
void zidong()
{
if(z0>=20) //每顯示20次切換
{
z0=0;
z1++;
}
if(z1>9)
z1=0;
}


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉