完整程序在下方
说明一下吧,上边这两个函数是用于控制语音的,不用管它,在调试途中发现不稳定,比如11点它会说成31点,这就奇怪了,我查了半天才发现是我取BCD码的方式不对,取十位本来是/16,结果我写成了/10,这能不错吗?该回来后怀着激动的心下载了程序,结果一上电,纳尼?!屏幕亮都不亮,本以为下载路径不对,重新加载了HEX文件,才发现是内存不够,8K的内存就没啦?只好把英文字库给关了,这下内存有了!按下按键,可以报出时间和温度了!
这个语音芯片我用的是NVC080C,可以存放150多段语音,很好用,希望可以帮助到大家!
本功能实现了利用按键控制语音芯片进行时间和温度的报告,格式如下:
现在——XX点XX分——温度——XX度
这个功能我是用了两个函数,话不多说,上程序。
void yy_bs(unsigned char w){ if(w/16 == 0) { DS3231_TIME(); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/16 == 1) { DS3231_TIME(); yuyin(0X3D); delay_ms(1500); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/16 == 2) { DS3231_TIME(); yuyin(0X35); delay_ms(1000); yuyin(0X3D); delay_ms(2000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; // case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/16 == 3) { DS3231_TIME(); yuyin(0X36); delay_ms(1000); yuyin(0X3D); delay_ms(2000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; //case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/16 == 4) { DS3231_TIME(); yuyin(0X37); delay_ms(1000); yuyin(0X3D); delay_ms(2000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; //case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/16 == 5) { DS3231_TIME(); yuyin(0X38); delay_ms(1000); yuyin(0X3D); delay_ms(2000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; //case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/16 == 6) { DS3231_TIME(); yuyin(0X39); delay_ms(1000); yuyin(0X3D); delay_ms(1000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; //case(0x00):yuyin(0X33);break; } DS3231_TIME(); } } void yy_bs1(unsigned char w) { if(w/10 == 0) { DS3231_TIME(); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/10 == 1) { DS3231_TIME(); yuyin(0X3D); delay_ms(1500); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/10 == 2) { DS3231_TIME(); yuyin(0X35); delay_ms(1000); yuyin(0X3D); delay_ms(2000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; // case(0x00):yuyin(0X33);break; } DS3231_TIME(); } else if(w/10 == 3) { DS3231_TIME(); yuyin(0X36); delay_ms(1000); yuyin(0X3D); delay_ms(2000); switch(w&0x0f) { case(0x01):yuyin(0X34);break; case(0x02):yuyin(0X35);break; case(0x03):yuyin(0X36);break; case(0x04):yuyin(0X37);break; case(0x05):yuyin(0X38);break; case(0x06):yuyin(0X39);break; case(0x07):yuyin(0X3A);break; case(0x08):yuyin(0X3B);break; case(0x09):yuyin(0X3C);break; //case(0x00):yuyin(0X33);break; } DS3231_TIME(); } }
复制代码