ZY1730语言芯片驱动
ZY1730语言芯片驱动
#include "ZY1730.H"
#include "global.h"
/*延时程序*/
void Delay_us(uint8 u)
{
uint32 i;
i=u;
for(i=u;i>0;i--);
}
/*字节写入程序*/
uint8 RW_Byte(uint8 com)
{
uint8 i;
uint8 revdat = 0, senddat = 0;
for(i=0;i<8;i++)
{
GpioClr(P1_20); //时钟线拉低
Delay_us(10);
senddat = com & 0x01;
com >>= 1;
if(senddat == 0x01)
GpioSet(P1_24);
else
GpioClr(P1_24);
if(GpioGet(P1_23) == 1)
revdat = revdat | (0x01 << i);
GpioSet(P1_20);
Delay_us(10);
}
GpioSet(P1_24);
return(revdat);
}
/*初始化程序*/
void Sound_Init(void)//初始化
{
uint8 pu_tab[]={0x01,0x00};
GpioClr(P1_19);//片选
Delay_us(10);
RW_Byte(pu_tab[0]); //发送PU指令
RW_Byte(pu_tab[1]);
Delay_us(10);
GpioSet(P1_19); //延时等特执行完成
}
/*声音播放程序*/
void Sound_Play(uint8 ID)
{
uint8 Send_Buffer[7];
Send_Buffer[0]=0x80;//播放指令
Send_Buffer[1]=0x00;
Send_Buffer[2]=Sound_Playtab[ID][0];//起始地址低字节
Send_Buffer[3]=Sound_Playtab[ID][1];//起始地址高字节
Send_Buffer[4]=Sound_Playtab[ID][2];//结束地址低字节
Send_Buffer[5]=Sound_Playtab[ID][3];//结束地址高字节
Send_Buffer[6]=0x00;
GpioClr(P1_19);//拉低片选信号
Delay_us(10);
RW_Byte(Send_Buffer[0]);
RW_Byte(Send_Buffer[1]);
RW_Byte(Send_Buffer[2]);
RW_Byte(Send_Buffer[3]);
RW_Byte(Send_Buffer[4]);
RW_Byte(Send_Buffer[5]);
RW_Byte(Send_Buffer[6]);
Delay_us(10);
GpioSet(P1_19);//片选信号输出高,开始执行指令
}
/*声音停止程序*/
void Sound_Stop(void)
{
uint8 Send_Buffer[2]={0x02,0x00};
GpioClr(P1_19);//拉低片选信号
Delay_us(10);
RW_Byte(Send_Buffer[0]);
RW_Byte(Send_Buffer[1]);
Delay_us(10);
GpioSet(P1_19);//片选信号输出高,开始执行指令
}
/*读状态寄存器*/
uint8 Sound_Read_Sta(uint8 Status)//读状态寄存器
{
uint8 RDsta[]={0x05,0x00,0x00};
uint8 temp;
GpioClr(P1_19);
Delay_us(10);
temp = RW_Byte(RDsta[0]);
RW_Byte(RDsta[1]);
RW_Byte(RDsta[2]);
Delay_us(10);
GpioSet(P1_19);
return (temp&Status);
}
/*清中断*/
void Sound_ClrInt(void)//清除中断
{
uint8 ClrInt_Tab[]={0x04,0x00,0x00,0x00};
GpioClr(P1_19);
Delay_us(10);
RW_Byte(ClrInt_Tab[0]);
RW_Byte(ClrInt_Tab[1]);
RW_Byte(ClrInt_Tab[2]);
Delay_us(10);
GpioSet(P1_19);
}
/*标号播放
val--播报值
f为0 则是吨 f为1是公斤 f为2是元
*/
unsigned char N_play(uint32 val,uint8 f)
{
uint32 i,w;
uint8 data[9]={0,0,0,0,0,0,0,0,0};
w=val;
ZY1730语言芯片驱动
i=w/100000000;
data[0]=i;
w-=i*100000000;
i=w/10000000;
data[1]=i;
w-=i*10000000;
i=w/1000000;
data[2]=i;
w-=i*1000000;
i=w/100000;
data[3]=i;
w-=i*100000;
i=w/10000;
data[4]=i;
w-=i*10000;
i=w/1000;
data[5]=i;
w-=i*1000;
i=w/100;
data[6]=i;
w-=i*100;
i=w/10;
data[7]=i;
w-=i*10;
data[8]=w;
//拾万位处理
if(data[0]!=0)
{
Sound_Play(data[0]);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"data[0]"
Sound_Play(13); while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"拾"
OSTimeDly(OS_TICKS_PER_SEC/100);
if((affirm()==1)||(cancel()==1)) return 0; //如果用户按下退出或者确认键,就不播放声音。
}
//万位处理
if(data[1]!=0)
{
Sound_Play(data[1]);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"data[0]"
Sound_Play(10);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"万"
OSTimeDly(OS_TICKS_PER_SEC/100);
if((affirm()==1)||(cancel()==1)) return 0; //如果用户按下退出或者确认键,就不播放声音。
}
else if((data[0]!=0) && ((data[2]!=0)||(data[3]!=0)||(data[4]!=0)||(data[5])))
{
Sound_Play(10);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"万"
Sound_Play(0);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"零"
OSTimeDly(OS_TICKS_PER_SEC/100);
if((affirm()==1)||(cancel()==1)) return 0; //如果用户按下退出或者确认键,就不播放声音。
}
//千位处理
if(data[2]!=0)
{
Sound_Play(data[2]);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"data[1]"
Sound_Play(11);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"千"
OSTimeDly(OS_TICKS_PER_SEC/100);
if((affirm()==1)||(cancel()==1)) return 0; //如果用户按下退出或者确认键,就不播放声音。
}
else if((data[1]!=0) && ((data[3]!=0)||(data[4]!=0)||(data[5]!=0)))
{
Sound_Play(0);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"零"
OSTimeDly(OS_TICKS_PER_SEC/100);
if((affirm()==1)||(cancel()==1)) return 0; //如果用户按下退出或者确认键,就不播放声音。
}
//百位处理
if(data[3]!=0)
{
Sound_Play(data[3]);while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"data[2]"
Sound_Play(12); while(Sound_Read_Sta(0x10)==0);Sound_ClrInt(); // 语音"百"
OSTimeDly(OS_TICKS_PER_SEC/100);
if((affirm()==1)||(cancel()==1)) return 0; //如果用户按
…… 此处隐藏:4418字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




