|
實驗12 紅外遙控MP3
- 實驗?zāi)康募皟?nèi)容
1、實現(xiàn)開始播放、上一曲、下一曲、音量加、音量減、暫停、快進、快退等功能;
- 通過遙控紅外控制;
- 正確運用sd卡的功能;
- 了解串口通道與硬件引腳的對應(yīng)關(guān)系;
- 正確配置串口;
二、實驗原理圖
1.001.jpg (12.86 KB, 下載次數(shù): 147)
下載附件
2017-6-2 01:00 上傳
1.002.jpg (13.85 KB, 下載次數(shù): 141)
下載附件
2017-6-2 01:00 上傳
三、實驗步驟(補充完整)
1、利用原有工程Remote,添加各種文件,其中在HARDWARE中添加一個新的usart2文件夾新寫入一個usart2.c
1.003.jpg (14.99 KB, 下載次數(shù): 147)
下載附件
2017-6-2 01:00 上傳
2、在usart2.c中寫入一個串口2 的中斷服務(wù)程序
1.004.jpg (55.5 KB, 下載次數(shù): 141)
下載附件
2017-6-2 01:00 上傳
- 把usart.c中的串口都寫成usart2,引腳寫成對應(yīng)的pa2,pa3
1.005.jpg (37.86 KB, 下載次數(shù): 136)
下載附件
2017-6-2 01:00 上傳
4、主函數(shù)中在對應(yīng)按鍵下用senddata發(fā)送指令,控制播放,暫停,下一曲,快進等
1.006.jpg (70.87 KB, 下載次數(shù): 128)
下載附件
2017-6-2 01:00 上傳
四、實驗代碼(要有詳細的注釋)
Usart2.c
void uart_init(u32 bound){
//GPIO????
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能USART2,GPIOA
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
USART_DeInit(USART2); //復(fù)位串口2
//USART2_TX PA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//USART2_RX PA.3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = bound;//一般設(shè)置為9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長為8位數(shù)據(jù)格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//無奇偶校驗位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發(fā)模式
USART_Init(USART2, &USART_InitStructure); //初始化串口
//USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART2, ENABLE); //使能串口
}
Main.c
int main(void)
{
u8 key;
u8 *str=0;
delay_init();
uart_init(9600); //串口初始化9600
Remote_Init();
while(1)
{
key=Remote_Scan();
if(key)
{
switch(key)
{
case 0:str="ERROR";break;
case 162:str="POWER";break;
case 98:str="UP"; //上一曲
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x04);
USART_SendData(USART2,0xEF);
delay_ms(1000);break;
case 2:str="PLAY"; //播放
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x01);
USART_SendData(USART2,0xEF);break;
case 226:str="ALIENTEK";break;
case 194:str="RIGHT"; //快進
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x0A);
USART_SendData(USART2,0xEF);break;
case 34:str="LEFT"; //快退
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x0B);
USART_SendData(USART2,0xEF);break;
case 224:str="VOL-"; //音量-
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x06);
USART_SendData(USART2,0xEF);
delay_ms(1000);break;
case 168:str="DOWN"; //
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x03);
USART_SendData(USART2,0xEF);
delay_ms(1000);break;
case 144:str="VOL+";
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x05);
USART_SendData(USART2,0xEF);
delay_ms(1000);break;
case 104:str="1";
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0xEF);break;
case 152:str="2";
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x09);
USART_SendData(USART2,0xEF);break;
case 176:str="3";
USART_SendData(USART2,0x7E);
USART_SendData(USART2,0x02);
USART_SendData(USART2,0x06);
USART_SendData(USART2,0xEF);
delay_ms(1000);break;
case 48:str="4";break;
case 24:str="5";break;
case 122:str="6";break;
case 16:str="7";break;
case 56:str="8";break;
case 90:str="9";break;
case 66:str="0";break;
case 82:str="DELETE";break;
}
}else delay_ms(10);
}
}
五、心得體會(不少于100字)
通過實驗,實現(xiàn)了遙控控制MP3實現(xiàn)開始播放、上一曲、下一曲、音量加、音量減、暫停、快進、快退等功能;通過遙控紅外控制;正確運用了sd卡的功能;了解串口通道與硬件引腳的對應(yīng)關(guān)系;正確配置串口,通過新建一個中斷子函數(shù)實現(xiàn)串口USART2的發(fā)送接收命令功能,通過PA2和PA3來連通sd卡和單片機,學(xué)到了很多關(guān)于單片機控制的知識很有幫助。
完整的實驗報告下載地址word格式的(可編輯):
http://www.zg4o1577.cn/bbs/dpj-86578-1.html
|
|