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
|