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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




