#include "voice.h"
#include "intrins.h"
void speak_delay(int us)
{
for (us; us >= 0; us--)
_nop_();
}
void speak_data(uchar addr)
{
while (voice_busy == 0)
;
voice_rst = 1;
speak_delay(200);
voice_rst = 0;
speak_delay(200);
while (addr > 0)
{
voice_data = 1;
speak_delay(100);
voice_data = 0;
speak_delay(100);
addr--;
}
}
uchar hour_buf = 0, minute_buf = 0; //当前时间保存区
uchar speak_order = 0; //进程标志位
uchar vont_sound0[7], vont_sound1[8], vont_sound2[8], vont_sound3[9];
void speak_timne(uchar hour_in, uchar minute_in)
{
/*第一个进程:将当前时间保存*/
if (speak_order == 0)
{
hour_buf = hour_in;
minute_buf = minute_in;
vont_sound0[0] = vont_sound1[0] = vont_sound2[0] = vont_sound3[0] = 22; //播放“现在北京时刻”
if (hour_buf <= 12)
{
vont_sound0[1] = vont_sound1[1] = vont_sound2[1] = vont_sound3[1] = 28; //播放“上午”
}
else if (hour_buf > 12 && hour_buf <= 18)
{
vont_sound0[1] = vont_sound1[1] = vont_sound2[1] = vont_sound3[1] = 29; //播放“下午”
}
else if (hour_buf > 18)
{
vont_sound0[1] = vont_sound1[1] = vont_sound2[1] = vont_sound3[1] = 30; //播放“晚上”
}
if (hour_buf > 12)
hour_buf = hour_buf - 12;
vont_sound0[3] = vont_sound1[3] = vont_sound2[4] = vont_sound3[4] = 13; //播放“点”
vont_sound0[6] = vont_sound1[7] = vont_sound2[7] = vont_sound3[8] = 14; //播放“分”
if (hour_buf <= 10 && minute_buf < 20)
{
vont_sound0[2] = hour_buf + 1; //播放小时
if (minute_buf < 10)
{
vont_sound0[4] = 1; //"零"
}
else
{
vont_sound0[4] = 11; //"拾"
}
if (minute_buf % 10 == 0)
{
vont_sound0[5] = 0;
}
else
{
vont_sound0[5] = (minute_buf % 10) + 1;
}
}
else if (hour_buf <= 10 && minute_buf >= 20)
{
vont_sound1[2] = hour_buf + 1; //播放小时
vont_sound1[4] = (minute_buf / 10) + 1; //播放分钟十位
vont_sound1[5] = 11; //"拾"
if (minute_buf % 10 == 0)
{
vont_sound1[6] = 0; //不播放
}
else
{
vont_sound1[6] = (minute_buf % 10) + 1;
}
}
else if (hour_buf > 10 && minute_buf < 20)
{
vont_sound2[2] = 11; //"拾"
vont_sound2[3] = (hour_buf % 10) + 1; //播放小时各位
if (minute_buf < 10)
{
vont_sound2[5] = 1; //"零"
}
else
{
vont_sound2[5] = 11; //"拾"
}
if (minute_buf % 10 == 0)
{
vont_sound2[6] = 0; //不播放
}
else
{
vont_sound2[6] = (minute_buf % 10) + 1; //播放分钟个位
}
}
else if (hour_buf > 10 && minute_buf >= 20)
{
vont_sound3[2] = 11; //播放"拾"
vont_sound3[3] = (hour_buf % 10) + 1; //播放小时各位
vont_sound3[5] = (minute_buf / 10) + 1; //播放分钟十位
vont_sound3[6] = 11; //"拾"
if (minute_buf % 10 == 0)
{
vont_sound3[7] = 0; //不播放
}
else
{
vont_sound3[7] = (minute_buf % 10) + 1;
}
}
speak_order = 1;
}
/*进程二*/
else if (speak_order == 1)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 2;
}
/*进程三*/
else if (speak_order == 2)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 3;
}
/*进程四*/
else if (speak_order == 3)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 4;
}
/*进程五*/
else if (speak_order == 4)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 5;
}
/*进程六*/
else if (speak_order == 5)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 6;
}
/*进程七*/
else if (speak_order == 6)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 7;
}
/*进程八*/
else if (speak_order == 7)
{
if (hour_buf <= 10 && minute_buf < 20)
speak_data(vont_sound0[speak_order - 1]);
else if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 8;
}
/*进程九*/
else if (speak_order == 8)
{
if (hour_buf <= 10 && minute_buf >= 20)
speak_data(vont_sound1[speak_order - 1]);
else if (hour_buf > 10 && minute_buf < 20)
speak_data(vont_sound2[speak_order - 1]);
else if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 9;
}
/*进程十*/
else if (speak_order == 9)
{
if (hour_buf > 10 && minute_buf >= 20)
speak_data(vont_sound3[speak_order - 1]);
speak_order = 10;
}
}
- 1
- 2
- 3
- 4
前往页