教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

ZY1730语言芯片驱动

来源:网络收集 时间:2026-08-12
导读: ZY1730语言芯片驱动 #include ZY1730.H #include global.h /*延时程序*/ void Delay_us(uint8 u) { uint32 i; i=u; for(i=u;i0;i--); } /*字节写入程序*/ uint8 RW_Byte(uint8 com) { uint8 i; uint8 revdat = 0, senddat = 0; for(i=0;i8;i++) { GpioClr(P1

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字,全部文档内容请下载后查看。喜欢就下载吧 ……

ZY1730语言芯片驱动.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1336867.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)