找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6268|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)PWM做的wav語(yǔ)音報(bào)時(shí)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
stc8051單片機(jī)的PWM做的wav語(yǔ)音報(bào)時(shí)程序


主程序預(yù)覽:
  1. #include <stc12c5a60s2.H>
  2. #include "Myfun.h"
  3. #include  "uart.h"
  4. #include "stdio.h"
  5. #define dian 11
  6. #define fen 12
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9. #define uchar unsigned char
  10. #define uint unsigned int

  11. int UART1_Recv_count;  //接收計(jì)數(shù)

  12. bit UART1_Overflow_Flag;   //緩沖區(qū)滿標(biāo)志



  13.   
  14. void main()
  15. {
  16. // uchar i;  
  17. PWMInit();         //初始化
  18. settimer1(250);                  //約11k讀取   晶振使用30m都可以
  19. P1M0=0x08;
  20. P1M1=0x00;          //1.3強(qiáng)拉輸出
  21. ////////////////////////////////////////////////////
  22. P3M0=0x40;
  23. P3M1=0x00;          //P3.6強(qiáng)拉輸出 led


  24.   
  25.    LED=1;

  26.    uartInit();
  27.    EA=1;  //開總中斷
  28.    ES=1;
  29.    // LED=0;
  30. //transmitString("開始。。。。");
  31.                UART1_Recv_count = 0;            //緩存清零
  32.               UART1_Overflow_Flag=0;        //允許串口繼續(xù)接收數(shù)據(jù)
  33.    while(1)
  34.    {

  35.          
  36.     if (UART1_Overflow_Flag==1)     //串口中斷數(shù)據(jù)接收完畢,開始處理   接收格式言 時(shí)分字符形式:1022就是10點(diǎn)22分

  37.       {  
  38.                  

  39.                   
  40. /////////////////播現(xiàn)在是北京時(shí)間/////////////////////////
  41.         delay1();
  42.                 soundtospeak(13);
  43.         delay1();

  44. /////////////////播時(shí)的"20"語(yǔ)音/////////////////////////

  45.    if((UART1_Recv_BUF[0]-0x30)==2)// 播20語(yǔ)音
  46.               {
  47.                               soundtospeak(2);
  48.                delay1();
  49.                           soundtospeak(10);
  50.                delay1();
  51.                    }
  52. ///////////////////播時(shí)的"10"語(yǔ)音//////////////////////
  53.    if  ((UART1_Recv_BUF[0]-0x30)==1)//小于9大于19點(diǎn)

  54.                           {
  55.                      soundtospeak(10);         //播10語(yǔ)音
  56.              delay1();


  57.                       }

  58. /////////////////////播時(shí)"x"時(shí)語(yǔ)音////////////////////////////////
  59.         if  (((UART1_Recv_BUF[0]-0x30)==1)&&((UART1_Recv_BUF[1]-0x30)>0)||(((UART1_Recv_BUF[0]-0x30)==2)&&(0<(UART1_Recv_BUF[1]-0x30))&&((UART1_Recv_BUF[1]-0x30)<4))||((UART1_Recv_BUF[0]-0x30)==0))//如為整點(diǎn)不報(bào)0語(yǔ)音
  60.             {
  61.             soundtospeak(UART1_Recv_BUF[1]-0x30); //此函數(shù)將讀完一個(gè)數(shù)才退出
  62.        
  63.             delay1();
  64.                 }
  65.    

  66.             soundtospeak(dian);        //播"點(diǎn)"語(yǔ)音
  67.             delay1();

  68. ////////////////以下為分時(shí)間語(yǔ)音//////////////////////////////////////

  69.            if((UART1_Recv_BUF[2]-0x30)==5)// 播50語(yǔ)音
  70.               {
  71.                               soundtospeak(5);
  72.                delay1();
  73.                           soundtospeak(10);
  74.               delay1();
  75.                  if  ((UART1_Recv_BUF[3]-0x30)==0)        //如果分鐘為整分情況下
  76.                     {
  77.                     soundtospeak(fen);        //播"分"語(yǔ)音
  78.             delay1();
  79.                         }
  80.                    }
  81.           if((UART1_Recv_BUF[2]-0x30)==4)// 播40語(yǔ)音
  82.               {
  83.                               soundtospeak(4);
  84.                delay1();
  85.                           soundtospeak(10);
  86.               delay1();
  87.             if  ((UART1_Recv_BUF[3]-0x30)==0)
  88.                     {
  89.                     soundtospeak(fen);        //播"分"語(yǔ)音
  90.             delay1();
  91.                         }
  92.                    }
  93.            if((UART1_Recv_BUF[2]-0x30)==3)// 播30語(yǔ)音
  94.               {
  95.                               soundtospeak(3);
  96.                delay1();
  97.                           soundtospeak(10);
  98.               delay1();
  99.                   if  ((UART1_Recv_BUF[3]-0x30)==0)
  100.                     {
  101.                     soundtospeak(fen);        //播"分"語(yǔ)音
  102.             delay1();
  103.                         }
  104.                    }


  105.            if((UART1_Recv_BUF[2]-0x30)==2)// 播20語(yǔ)音
  106.               {
  107.                               soundtospeak(2);
  108.                delay1();
  109.                           soundtospeak(10);
  110.               delay1();
  111.                 if  ((UART1_Recv_BUF[3]-0x30)==0)
  112.                     {
  113.                     soundtospeak(fen);        //播"分"語(yǔ)音
  114.             delay1();
  115.                         }
  116.                    }

  117.            if  ((UART1_Recv_BUF[2]-0x30)==1)//播10語(yǔ)音
  118.                 {
  119.                      soundtospeak(10);       
  120.              delay1();
  121.                
  122.             if  ((UART1_Recv_BUF[3]-0x30)==0)
  123.                     {
  124.                     soundtospeak(fen);        //播"分"語(yǔ)音
  125.             delay1();
  126.                         }
  127.                 }


  128.          if(((UART1_Recv_BUF[3]-0x30)>0))
  129.           {
  130.            if  ((UART1_Recv_BUF[2]-0x30)==0)//播0語(yǔ)音
  131.                 {
  132.                      soundtospeak(0);       
  133.              delay1();

  134.                 }
  135.           }
  136. /////////////////////播"x"分語(yǔ)音////////////////////////////////
  137.           if ((((UART1_Recv_BUF[2]-0x30)==0)&&((UART1_Recv_BUF[3]-0x30)>0))||((UART1_Recv_BUF[3]-0x30)>0) )
  138.           {
  139.        
  140.                     soundtospeak(UART1_Recv_BUF[3]-0x30); //此函數(shù)將讀完一個(gè)數(shù)才退出
  141.             delay1();
  142.             soundtospeak(fen);        //播"分"語(yǔ)音
  143.             delay1();
  144.            }
  145. //////////////////////////////////////////////////////          
  146.                           
  147.                           
  148.                           
  149.                           
  150.                           
  151.                           
  152.                                 

  153.               UART1_Recv_count = 0;            //緩存清零
  154.               UART1_Overflow_Flag=0;        //允許串口繼續(xù)接收數(shù)據(jù)
  155.       }
  156.    }


  157. }
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:114320 發(fā)表于 2016-4-18 20:05 | 只看該作者
回復(fù)

使用道具 舉報(bào)

板凳
ID:696438 發(fā)表于 2022-1-8 10:47 | 只看該作者
51黑專家 發(fā)表于 2016-4-18 20:05
這里也有一個(gè)http://www.torrancerestoration.com/mcu/1535.html

666,很好很好!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表