资源简介
这是本人的单片机课设,多模式带音乐跑马灯,包括代码和仿真图,还有写好了的课程设计报告
代码片段和文件信息
#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
评论
共有 条评论