使用的是普中开发板
可实现音乐播放和自己弹琴功能
通过keil4软件编程,在普中科技HC6800-MS开发板上实现两个主要功能,电子琴功能与音乐播放器功能。本次项目的设计目标有两个
一:按下矩阵键盘上的不同按键发出不同的音调实现电子琴功能;
二:按下指定按键开始播放预设音乐,再次按动播放结束,实现音乐播放器功能。
单片机源程序如下:
- #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
- #include "SoundPlay.h"
- #include"music.h"
- extern int num;
- extern u8 piano;
- extern u8 KeyValue;
- extern unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存
- unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
- // 频率-半周期数据表 高八位 本软件共保存了四个八度的28个频率数据
- code unsigned char FREQH[] = {
- 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC}; //1,2,3,4,5,6,7,i
- //超高音 1234567
- // 频率-半周期数据表 低八位
- code unsigned char FREQL[] = {
- 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F}; //超高音 1234567
- void Delay1ms(unsigned int count)
- {
- unsigned int i,j;
- for(i=0;i<count;i++)
- for(j=0;j<120;j++);
- }
- void main()
- {
- InitialSound();
- while(1)
- {
- while(piano){
- keypros();
- if(KeyValue>=5&&KeyValue<=12)
- P0 = LED7Code[(KeyValue-4)%16]&0x7f;
- if((piano==1)&&(GPIO_KEY!=0xf0)){
- if(KeyValue>=4){
- Sound_Temp_TH0 = FREQH[KeyValue-5];
- Sound_Temp_TL0 = FREQL[KeyValue-5];
- TH0 = Sound_Temp_TH0; //控制音调
- TL0 = Sound_Temp_TL0;
- TR0 = 1; //启动T0, 由T0输出方波去发音
- }
- }
- else
- {
- TR0 = 0;
- }
- }
- P0=0xFF;
- if(piano==0){
- if(num==1){
- Play(Music_Girl,0,3,360);
- Delay1ms(500);
- }
- if(num==2){
- Play(Music_Same,0,3,360);
- Delay1ms(500);
- }
- if(num==3){
- Play(Music_Two,0,3,360);
- Delay1ms(500);
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
音乐播放器程序.zip
(56.38 KB, 下载次数: 12)
|