找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6229|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机PWM做的wav语音报时程序

[复制链接]
跳转到指定楼层
楼主
stc8051单片机的PWM做的wav语音报时程序


主程序预览:
  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;  //接收计数

  12. bit UART1_Overflow_Flag;   //缓冲区满标志



  13.   
  14. void main()
  15. {
  16. // uchar i;  
  17. PWMInit();         //初始化
  18. settimer1(250);                  //约11k读取   晶振使用30m都可以
  19. P1M0=0x08;
  20. P1M1=0x00;          //1.3强拉输出
  21. ////////////////////////////////////////////////////
  22. P3M0=0x40;
  23. P3M1=0x00;          //P3.6强拉输出 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;        //允许串口继续接收数据
  33.    while(1)
  34.    {

  35.          
  36.     if (UART1_Overflow_Flag==1)     //串口中断数据接收完毕,开始处理   接收格式言 时分字符形式:1022就是10点22分

  37.       {  
  38.                  

  39.                   
  40. /////////////////播现在是北京时间/////////////////////////
  41.         delay1();
  42.                 soundtospeak(13);
  43.         delay1();

  44. /////////////////播时的"20"语音/////////////////////////

  45.    if((UART1_Recv_BUF[0]-0x30)==2)// 播20语音
  46.               {
  47.                               soundtospeak(2);
  48.                delay1();
  49.                           soundtospeak(10);
  50.                delay1();
  51.                    }
  52. ///////////////////播时的"10"语音//////////////////////
  53.    if  ((UART1_Recv_BUF[0]-0x30)==1)//小于9大于19点

  54.                           {
  55.                      soundtospeak(10);         //播10语音
  56.              delay1();


  57.                       }

  58. /////////////////////播时"x"时语音////////////////////////////////
  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))//如为整点不报0语音
  60.             {
  61.             soundtospeak(UART1_Recv_BUF[1]-0x30); //此函数将读完一个数才退出
  62.        
  63.             delay1();
  64.                 }
  65.    

  66.             soundtospeak(dian);        //播"点"语音
  67.             delay1();

  68. ////////////////以下为分时间语音//////////////////////////////////////

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


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

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


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

  134.                 }
  135.           }
  136. /////////////////////播"x"分语音////////////////////////////////
  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); //此函数将读完一个数才退出
  141.             delay1();
  142.             soundtospeak(fen);        //播"分"语音
  143.             delay1();
  144.            }
  145. //////////////////////////////////////////////////////          
  146.                           
  147.                           
  148.                           
  149.                           
  150.                           
  151.                           
  152.                                 

  153.               UART1_Recv_count = 0;            //缓存清零
  154.               UART1_Overflow_Flag=0;        //允许串口继续接收数据
  155.       }
  156.    }


  157. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:114320 发表于 2016-4-18 20:05 | 只看该作者
回复

使用道具 举报

板凳
ID:696438 发表于 2022-1-8 10:47 | 只看该作者
51黑专家 发表于 2016-4-18 20:05
这里也有一个http://www.51hei.com/mcu/1535.html

666,很好很好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表