标题:
语音三线串口控制程序
[打印本页]
作者:
413huoxingren
时间:
2018-6-28 10:41
标题:
语音三线串口控制程序
AVR16语音三线串口控制程序
单片机源程序如下:
#include <iom16v.h>
#include <macros.h>
#include <eeprom.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define mclk 16000000 //定义时钟频率
const address[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c};//0—9,0a中放现在的温度为,0b中放点,0c中放摄氏度
#define rst PB0 //复位
#define cs PB1 //片选端
#define clk PB2 //时钟
#define data PB3 //数据位
#define busy PINB&0X10 //忙信号PB4
#define rst1 PORTB|=(1<<PB0)
#define rst0 PORTB&=~(1<<PB0)
#define cs1 PORTB|=(1<<PB1)
#define cs0 PORTB&=~(1<<PB1)
#define clk1 PORTB|=(1<<PB2)
#define clk0 PORTB&=~(1<<PB2)
#define data1 PORTB|=(1<<PB3)
#define data0 PORTB&=~(1<<PB3)
uchar a,b,c;
void Port_init(void)
{
DDRB=0XEF;
PORTB=0XFF;
}
/********延时区域*********/
void delay_nus(uint x) //n微妙延时程序
{
unsigned int i;
for(i=x;i>0;i--)
{asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
}
void delay_1ms(void) //一毫秒延时程序
{
unsigned int i;
for(i=0;i<2286;i++); //晶振数*143-2
}
void delay_nms(unsigned int x)
{
unsigned int i;
for(i=x;i>0;i--)
{
delay_1ms();
}
}
/****************************************
函数名:void send_com(uchar add)
功能:发码播放,add为语音地址
*****************************************/
void send_com(uchar add)
{
uchar i;
rst1;
rst0;
delay_nms(5);
rst1;
delay_nms(20);
cs0;
delay_nms(5);
for(i=0;i<8;i++)
{
clk0;
if(add&1)
data1;
else
data0;
delay_nus(300);
clk1;
delay_nus(300);
add=add>>1;
}
cs1;
}
/******************************************
函数名:void wendujisuan()
功能:温度处理
*****************************************/
void wendujisuan(uint m1)
{
a=m1/100;
b=m1%100/10;
c=m1%100;
}
/******************************************
函数名:void sound()
功能:播报温度
*****************************************/
void sound()
{
while(!busy);
send_com(0x0a);//播放"现在的温度为"
delay_nms(500);
while(!busy);
send_com(a);
delay_nms(500);
while(!busy);
send_com(b);
delay_nms(500);
while(!busy);
send_com(11);
delay_nms(500);
while(!busy);
send_com(c);
delay_nms(500);
while(!busy);
send_com(12);
delay_nms(500);
while(!busy);
}
void main()
{
Port_init();
while(1)
{
wendujisuan(325);
sound();
}
}
复制代码
所有资料51hei提供下载:
语音三线串口16M好使.zip
(1.09 KB, 下载次数: 9)
2018-6-28 10:39 上传
点击文件名下载附件
语音三线串口控制程序
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1