📄 wtv.c
字号:
#include <STC12C5412.H>
#include <intrins.h>
#include <port.h>
enum Task {WTV_Task_Temperature,WTV_Task_Pressure, WTV_Task_Ozone,
WTV_Task_Music,WTV_Task_Water_Out,WTV_Task_None}; //语音芯片工作状态枚举类型定义
enum Task WTV_Task;//语音芯片工作状态变量
//在外部被修改赋值
unsigned char Forcast_count; //语音芯片播放段数计数
unsigned int Forcast_content; //语音芯片播放内容
/*-------------------------------------------------------------------------------------------------------
语音芯片控制写程序
---------------------------------------------------------------------------------------------------------*/
void fun1(unsigned char address)
{
unsigned char i;
//WTV_RST=0;
//for(i=0;i<10;i++) _nop_();
//WTV_RST=1; //复位
//wait(200); //2ms以上
WTV_CS=0; //片选
for(i=0;i<200;i++) _nop_(); // 1ms 以上
for(i=0;i<8;i++){
WTV_SCL=0;
if(address & 1)
WTV_SDA=1;
else WTV_SDA=0;
address>>=1;
for(i=0;i<20;i++) _nop_(); // 20us 以上
WTV_SCL=1;
for(i=0;i<20;i++) _nop_();
}
WTV_CS=1;
}
/*------------------------------------------------------------------------------------------------
温度语音播放程序
输入参数:扩大十倍的温度数值
-------------------------------------------------------------------------------------------------*/
void Temperature_Forcast(unsigned int Set_Temp)
{
if(Forcast_count==1){
fun1(0); //播 "当前设定水温"
Forcast_count++;
}
else if(Forcast_count==2){
fun1( (unsigned char)(Set_Temp/100)); //播温度十位
Forcast_count++;
}
else if(Forcast_count==3){
fun1(0); //播 " 十"
Forcast_count++;
}
else if(Forcast_count==4){
fun1( (unsigned char)(Set_Temp/10%10)); //播温度个位
Forcast_count++;
}
else if(Forcast_count==5){
fun1(0); //播 "点"
Forcast_count++;
}
else if(Forcast_count==6){
fun1( (unsigned char)(Set_Temp%10)); //播温度小数一位
Forcast_count++;
}
else if(Forcast_count==7){
fun1(0); //播 "度"
Forcast_count++;
WTV_Task=WTV_Task_None;
}
}
/*------------------------------------------------------------------------------------------------
水压语音播放程序
输入参数:水压力级别数值
-------------------------------------------------------------------------------------------------*/
void Pressure_Forcast(unsigned int Pressure_Mode)
{
if(Forcast_count==1){ //全局计数控制变量
fun1(0); //播 "当前设定水压"
Forcast_count++;
}
else if(Forcast_count==2){
fun1((unsigned char)(Pressure_Mode/10)); //播水压级别,要缩小十倍
Forcast_count++;
}
else if(Forcast_count==3){
fun1(0); //播 "级"
Forcast_count++;
WTV_Task=WTV_Task_None;
}
}
/*------------------------------------------------------------------------------------------------
臭氧控制语音播放程序
输入参数: 消毒按键被按下的次数
说明:第1次按下,要求确认;第2次按下,启动消毒;第3次按下,取消臭氧消毒;再次按下,又要求确认
-------------------------------------------------------------------------------------------------*/
void Ozone_Forcast(unsigned int Key_Pressed_Times)
{
if(Key_Pressed_Times==1){
fun1(0); //播“您将要使用臭氧消毒功能,确定请再次按下消毒键"
}
else if(Key_Pressed_Times==2){
fun1(0); //播"正在臭氧消毒”
}
else if(Key_Pressed_Times==3){
fun1(0); //播"臭氧消毒已取消"
}
WTV_Task=WTV_Task_None; //关臭氧播放功能
}
/*------------------------------------------------------------------------------------------------
出水状态语音播放程序
-------------------------------------------------------------------------------------------------*/
void Water_Out_Forcast(unsigned int Water_Out_State)
{
if(Water_Out_State==1)
fun1(0); // 播放"出水已开"
else
fun1(0); //播放"出水已关"
}
/*-------------------------------------------------------------------------------------------------
音乐播放控制程序
-------------------------------------------------------------------------------------------------*/
void Music_Forcast()
{
}
/*-------------------------------------------------------------------------------------------------
语音芯片中断控制程序
-------------------------------------------------------------------------------------------------*/
void WTV_ISR(void)
{
switch(WTV_Task){
case WTV_Task_Temperature:{ //播报设定温度
Temperature_Forcast(Forcast_content); //调用温度语音播放程序
break;
}
case WTV_Task_Pressure:{
Pressure_Forcast(Forcast_content); //调用水压语音播放程序
break;
}
case WTV_Task_Ozone:{
Ozone_Forcast(Forcast_content); //臭氧控制语音播放程序
break;
}
case WTV_Task_Water_Out:{
Water_Out_Forcast(Forcast_content); //出水状态语音播放程序
break;
}
case WTV_Task_Music:{
Music_Forcast(); //音乐循环播放程序
break;
}
case WTV_Task_None:{
break;
}
default:
fun1(0);
break;
}//end switch
}//end function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -