📄 playdata.c
字号:
//==============================================================================
//文件名称:PlayData.c
//功能描述:显示并播放温度值
//维护记录:2005.11.30 by hongyan.Feng
//==============================================================================
#include "s480.h"
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
extern void DIG_Init(void);
extern void DIG_Set(int DIG,int SEG);
unsigned int g_Data[11] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};
//0, 1, 2, 3, 4, 5, 6, 7, 8, 9
//===============================================================================
//语法格式:void PlaySnd_Auto(unsigned int uiSndIndex)
//实现功能:自动播放语音函数
//参 数:uiSndIndex,播放索引号
//返 回 值:无
//日 期:2005.11.30
//==============================================================================
void PlaySnd_Auto(unsigned int uiSndIndex)
{
SACM_S480_Initial(1); //初始化为自动播放方式
SACM_S480_Play(uiSndIndex,3,3); //播放
while((SACM_S480_Status() & 0x0001) != 0)
{ //判断播放状态,如还在播放则继续循环
SACM_S480_ServiceLoop(); //播放系统服务程序
*P_Watchdog_Clear = 0x0001;
}
SACM_S480_Stop(); //停止播放
}
//===============================================================================
//语法格式:void F_TempplayAndShow(float temp)
//实现功能:温度显示播放函数
//参 数:temp,温度值
//返 回 值:无
//日 期:2005.11.30
//==============================================================================
void F_TempplayAndShow(float temp)
{
int iShow[6]; //播报数存储数组
temp=temp*100; //温度值乘100,以方便计算小数点后两位
iShow[5]=temp/10000; //计算温度值的百位数
iShow[4]=(temp/1000); //计算温度值的十位数
iShow[4]=iShow[4]%10;
iShow[3]=(temp/100); //计算温度值的个位数
iShow[3]=iShow[3]%10;
iShow[2]=(temp/10); //计算温度值的小数点后第一位数
iShow[2]=iShow[2]%10;
iShow[1]=(temp); //计算温度值的小数点后第二位数
iShow[1]=iShow[1]%10;
DIG_Init();
if(iShow[5]!=0) //如果百位数字不为0
{
DIG_Set(2,g_Data[iShow[5]]); //第二位数码管显示百位数字
PlaySnd_Auto(iShow[5]); //播放百位数字
PlaySnd_Auto(10); //播放"百"
}
if((iShow[5]!=0)&&(iShow[4]==0)&&(iShow[3]!=0)) //如果百位数字不为0且十位为0,但是个位不为0
{
DIG_Set(3,g_Data[iShow[4]]); //显示十位数字
PlaySnd_Auto(iShow[4]); //播放十位数字
}
if(iShow[4]!=0) //如果十位不为0
{
DIG_Set(3,g_Data[iShow[4]]); //第三位数码管显示十位数字
PlaySnd_Auto(iShow[4]); //播放十位数字
PlaySnd_Auto(11); //播放"十"
}
DIG_Set(4,g_Data[iShow[3]]); //第四位数码管显示个位数字
if((iShow[4] == 0)&&(iShow[5]==0)&&(iShow[3]==0)) //如果百位,十位,个位都为0
{
PlaySnd_Auto(iShow[3]); //播放个位数字
}
if(iShow[3]!=0) //如果个位为不为0
{
PlaySnd_Auto(iShow[3]); //播放个位数字
}
PlaySnd_Auto(12); //播放"点"
DIG_Set(5,g_Data[iShow[2]]); //第五位数码管显示小数点后第一位数字
PlaySnd_Auto(iShow[2]); //播放小数点后第一位数字
DIG_Set(6,g_Data[iShow[1]]); //第六位数码管显示小数点后第二位数字
PlaySnd_Auto(iShow[1]); //播放小数点后第二位数字
PlaySnd_Auto(13); //播放"摄氏度"
*P_Watchdog_Clear = 0x0001;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -