資源簡介
這是本人的單片機課設,多模式帶音樂跑馬燈,包括代碼和仿真圖,還有寫好了的課程設計報告

代碼片段和文件信息
#include?
?
#define?_7SEG?P0??//7段數碼管?
#define?KEYBOARD?P3?//鍵盤?
#define?uchar?unsigned?char?
#define?uint?unsigned?int?
sbit?S1=P2^4;??????????//位定義S1為P1.4
sbit?S2=P2^5;??????????//位定義S2為P1.5
sbit?S3=P2^6;??????????//位定義S3為P1.6
sbit?S4=P2^7;??????????//位定義S4為P1.7
sbit?p10?=P1^0;
sbit?p11?=P1^1;
sbit?p12?=P1^2;
sbit?p13?=P1^3; ???
sbit?p14?=P1^4;
sbit?p15?=P1^5;
sbit?p16?=P1^6;
sbit?p17?=P1^7;
sbit?p20?=P2^0;
sbit?p21?=P2^1;
sbit?p22?=P2^2;
sbit?p23?=P2^3;
uint?code??SpeedCode[]={1357101418232732405065801001201401702002402803203604005006007008009001000};//速度碼?
uchar?code?LEDDisplayCode[]?=?{0x3F0x060x5B0x4F0x660x6D0x7D0x070x7F0x6f};//七段共陰極編碼表
//uchar?code?LEDDisplayCode[]?=?{0x400x790x240x300x190x120x020x780x00};//七
uchar?mode;?
uint?music_num;//音樂序號
uint?music_flag;//記錄是否改變音樂
void?Delay1ms(uint?num);
uint?countsystemSpeedspeedNumindex;??
bit?directionflag;?
/*************************************************************
程序功能:51單片機演奏單音樂曲
硬件接法:P36控制交流蜂鳴器,發聲頻率等于P36的方波振蕩頻率
**************************************************************/
sbit?SPEAKER?=?P3^6;?????//定義音樂輸出口
typedef?struct??????????????????//定義音符結構
{ unsigned?int?mFreq; //發聲頻率(對應的定時器初值)
unsigned?int?mDelay;????//發聲時值
}CNote;
unsigned?char?ReloadH;?????????//定義定時器T1重裝值
unsigned?char?ReloadL;
/************************************************************
函數:T1_ISR()
功能:定時器T0中斷服務函數,產生音樂振蕩頻率
*************************************************************/
void?T1_ISR()?interrupt?1?using?1
{ TR0?=?0;
TH0?=?ReloadH;
TL0?=?ReloadL;
SPEAKER?=?!SPEAKER;??//音樂聲頻的半個波 ??
TR0?=?1;
}
/***********************************************************
函數:Sound()
功能:演奏一個音符
參數:*note,音符指針,指向要演奏的音符
***********************************************************/
void?Sound(CNote?*note)
{????????????//利用定時器T0發出音符的頻率
if?(?note->mFreq?!=?0?)
{ ReloadH?=?(unsigned?char)(note->mFreq?>>?8);
ReloadL?=?(unsigned?char)(note->mFreq);
TH0?=?0xFF;
TL0?=?0xF0;
TR0?=?1;
}
Delay1ms(note->mDelay);???//發聲延時
TR0?=?0;???????????????//停止發聲
TF0?=?0;
SPEAKER?=?1;
Delay1ms(5);???????
}
/************************************************************
函數:Play()
功能:演奏一段樂曲
參數:music[],要演奏的樂曲
*************************************************************/
void?Play(CNote?music[])
{ unsigned?int?n?=?0;
for?(;;)
{ if?(?music[n].mDelay?==?0?)?break;
if(music_flag==1){
? music_flag=0;
break;
}
Sound(&(music[n]));
n++;
}
}
void?Delay1ms(uint?num)?//num?ms延時函數?
{?
?uint?ij;?
? for(i=0;i ?? for(j=0;j<125;j++);?//1ms延時?
}?
?
void?Display(uchar?Value)??//數碼管驅動函數?
{?
? _7SEG?=?LEDDisplayCode[Value];?
}??
???
void?LED1_6_W(uchar?da)//寫7-12LED燈的值
{
p15?=(bit)(da&0x20);
p14?=(bit)(da&0x10);
p13?=(bit)(da&0x08);
p12?=(bit)(da&0x04);
p11?=(bit)(da&0x02);
p10?=(bit)(da&0x01);
}
???
void?LED7_12_W(uchar?d
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????155255??2016-06-28?17:06??多模式帶音樂跑馬燈\kehse.DSN
?????文件???????9174??2016-06-29?08:38??多模式帶音樂跑馬燈\keshe2.c
?????文件?????359936??2016-06-30?14:36??多模式帶音樂跑馬燈\課程設計定稿.doc
?????目錄??????????0??2016-06-30?14:56??多模式帶音樂跑馬燈
?????文件???????3470??2016-06-28?10:06??多模式帶音樂跑馬燈\MusicTab.h
-----------?---------??----------?-----??----
???????????????527835????????????????????5
評論
共有 條評論