📄 main4.c
字号:
#include <reg51.h>
#include "main4.h"
#include "ISD4004.c"
uchar key_num = 0;
uchar ad_l ,ad_h ;
//普通延时函数
void commen_delay(uint k)
{
uint i ,j ;
for(i = 0 ; i < k ; i ++)
for(j = 0 ; j < 121 ; j ++)
;
}
//初始化程序
//初始化单片机,并等待按键按下
void in_stc()
{
P0 = P1 = P2 = P3 = 0xff;//初始化
isd_pu();//AN键按下,isd上电并延迟50ms
isd_pd();
isd_pu();
}
//按键扫描程序
//入口:无
//出口:按键值key_num
//功能:实现按键值的加减,让主函数对按键值做出不同的反应
void scan_key()
{
if(up == 0)
{
commen_delay(30);
if(up == 0)
key_num ++; //键值加
if(key_num > 11)
key_num = 0 ;
}
if(down == 0)
{
commen_delay(30);
if(down == 0)
key_num --; //键值减
if(key_num < 0)
key_num = 0 ;
}
switch ( key_num )//根据键值key_num判定播放音的起始位置
{
case 0 : {ad_l = 0x00; ad_h = 0x00; break;} //开机音乐
case 1 : {ad_l = 0x40; ad_h = 0x00; break;} //工学院站
case 2 : {ad_l = 0x80; ad_h = 0x00; break;} //东环路口站
case 3 : {ad_l = 0xc0; ad_h = 0x00; break;} //雀山公园
case 4 : {ad_l = 0x00; ad_h = 0x01; break;} //柳州宾馆
case 5 : {ad_l = 0x40; ad_h = 0x01; break;} //龙潭公园
case 6 : {ad_l = 0x80; ad_h = 0x01; break;} //东风商场
case 7 : {ad_l = 0xc0; ad_h = 0x01; break;} //柳侯公园
case 8 : {ad_l = 0x00; ad_h = 0x02; break;} //华信国际东
default : break ;
}
/*
switch ( key_num )//根据键值key_num判定播放音的起始位置
{
case 0 : {ad_l = 0x00; ad_h = 0x00; break;} //开机音乐
case 1 : {ad_l = 0x10; ad_h = 0x00; break;} //工学院站
case 2 : {ad_l = 0x20; ad_h = 0x00; break;} //东环路口站
case 3 : {ad_l = 0x30; ad_h = 0x00; break;} //雀山公园
case 4 : {ad_l = 0x40; ad_h = 0x00; break;} //柳州宾馆
case 5 : {ad_l = 0x50; ad_h = 0x00; break;} //龙潭公园
case 6 : {ad_l = 0x60; ad_h = 0x00; break;} //东风商场
case 7 : {ad_l = 0x70; ad_h = 0x00; break;} //柳侯公园
case 8 : {ad_l = 0x80; ad_h = 0x00; break;} //华信国际东
case 9 : {ad_l = 0x90; ad_h = 0x00; break;}
case 10 : {ad_l = 0xa0; ad_h = 0x00; break;}
case 11 : {ad_l = 0xb0; ad_h = 0x00; break;}
default : break ;
}
*/
}
//放录音模式选择及放音选段函数
void find_play()
{
if(PR == 1) //如果PR==1则转入录音部分
{
if(AN == 0 ) //录音键,录音时按住不放
{
// rec(0xb0,0x00); //开始从指定位置录音
rec(0x90,0x00); //开始从指定位置录音
}
}
else //如果PR=0则转入放音部分
{
if(AN == 0) //放音键,按下开始放音
{
play(ad_l,ad_h); //从指定位置开始放音
key_num ++; //自动跳转到下一段
if(key_num > 11)
key_num = 0;
}
if(turn == 0) //转弯
{
play(0x60,0x00);
}
if(brige == 0)//过桥提示语
{
play(0x90,0x00);
}
if (sit == 0) //让座提示语
{
play(0x90,0x00);
}
}
isd_stop();
isd_pd();
}
//**********************************************
//主程序
//功能:1.录音时,按住AN键,LED点亮开始录音,松开AN键即可停止录音
//再次按下AN键,LED点亮开始录音第二段,依次类推,直至芯片溢出
//按stop键芯片复位
//2.放音时,按下AN键,即可播放一段语音,按stop键芯片复位.
//***************************************************
void main(void)
{
in_stc();//单片机初始化
LED = 0 ;
//play(0x20,0x00);
//key_num++ ;
while (1)
{
LED = 0 ;
in_stc();//单片机初始化
scan_key(); //按键扫描,得出键值
find_play(); //找指定的放音位置
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -