找回密码
 立即注册

QQ登录

只需一步,快速开始

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

具有语音功能的RCL电阻、电容、电感测试仪测试仪-电子设计

[复制链接]
跳转到指定楼层
楼主
凌阳的一个项目给机器人或者小车、调试语音功能,可测电阻电容电感

资料目录:


电感测试电路:


语音电路:


程序流程图:


单片机源程序如下:

  1. //*****************************************************//
  2. //R/C/L测试:每次等测试稳定后语音播报1次,之后不再播报,
  3. //可以通过数码管显示观察测量结果。
  4. //*****************************************************//

  5. #include "s480.h"
  6. #define          P_IOA_Data                        (volatile int*)0x7000
  7. #define                 P_TimerB_Data              (volatile int*)0x700c
  8. #define                P_TimerB_Ctrl       (volatile int*)0x700D
  9. #define                 R_Test                                1
  10. #define                C_Test                                2
  11. #define                L_Test                                3



  12. float g_fRx=0.0;
  13. float g_fCx=0.0;
  14. float g_fLx=0.0;

  15. unsigned char         g_ucIntFlag=0;     
  16. unsigned int         g_uiStatus;
  17. unsigned int          g_uiKey=0;            
  18. unsigned int        g_uifx=0;       
  19. unsigned int          g_uisum=0;         
  20. unsigned int        j=0,i=0;
  21. unsigned int          g_uidisplay;
  22. unsigned int        Lxsum=0;
  23. unsigned char         LxFlag=0;
  24. unsigned int        g_speechID=0;
  25. unsigned int        g_speachIndex=0;
  26. unsigned int        g_Speechary[6]={0};
  27. unsigned int         g_array[4]={0};


  28. unsigned int         voicflag=0;
  29. //=========== 播放提示语音 ========================//
  30. //input:voice index
  31. //=================================================//
  32. void PlayTestValue()      //播放语音
  33. {  
  34.    SACM_S480_Initial(1);
  35.    while(g_speachIndex<g_speechID)
  36.         {
  37.            SACM_S480_Play(g_Speechary[g_speachIndex],3,3);
  38.            while(SACM_S480_Status()&0x0001)
  39.             SACM_S480_ServiceLoop();
  40.             g_speachIndex++;
  41.         }
  42.         SACM_S480_Stop();
  43.         voicflag=1;
  44. }

  45. //*************************************************//
  46. main()
  47. {   
  48.         g_uidisplay=0;
  49.         System_Initial();                                                                                                                                                                                                                                 
  50.         while(1)
  51.         {  
  52.            g_uiKey=SP_GetCh();         
  53.            //g_uiKey=1;  
  54.                   switch(g_uiKey)
  55.                           {
  56.                            case 0x0001:                                                  
  57.                                                 g_uiStatus = R_Test;
  58.                                                 RunTime2Hz();//开中断
  59.                                                    TmbCount();                                          
  60.                                                    Rline_on();                                                                                                                  
  61.                                                    break;
  62.                            case 0x0002:                                                                                             
  63.                                                    g_uiStatus = C_Test;
  64.                                                    RunTime2Hz();//开中断
  65.                                                 TmbCount();
  66.                                             Cline_on();
  67.                                                                                        
  68.                                                 break;
  69.                            case 0x0004:                                                  
  70.                                                    g_uiStatus = L_Test;
  71.                                                 SP_INT_32Hz();
  72.                                                 TmbCount();   
  73.                                                 Lline_on();
  74.                                                                                                
  75.                                                    break;
  76.                            default:
  77.                                                 break;                     
  78.                        
  79.                
  80.                         }

  81.                  
  82. //************************状态判断处理*********************//
  83.        
  84.                   switch(g_uiStatus)
  85.                 {       
  86.                         case R_Test:
  87. //**********************R********************************//
  88.                         if(voicflag)                        
  89.                            RunTime2Hz();                                               
  90.                          while(g_ucIntFlag)
  91.                         {               
  92.                                 g_uifx=*(P_TimerB_Data);                                                                               
  93.                                 g_ucIntFlag = 0;                               
  94.                                 *(P_TimerB_Data)=0;                                                                                                                
  95.                                 if(g_uifx&&g_uifx<7500)                                                                       
  96.                                          g_fRx=(3*2.7575*(1e+6))/g_uifx-100;  //计算
  97.                                 else
  98.                                 {       
  99.                                         R_Above1K();
  100.                                         g_fRx =(3*69.3225*(1e+6))/g_uifx-(1e+4);
  101.                                 }                                                                  
  102.                                         R_display(g_fRx);
  103.                                
  104.                         }
  105.                                 break;
  106.                                
  107.                         case C_Test:
  108. //************************C*******************//
  109.                      while(g_ucIntFlag)
  110.                         {       
  111.                                 if(voicflag)                        
  112.                                    RunTime2Hz();       
  113.                                 g_uifx=*(P_TimerB_Data);                                                                               
  114.                                 g_ucIntFlag = 0;
  115.                                 *(P_TimerB_Data)=0;                                                                       
  116.                                                                         
  117.                                 if(g_uifx)                                                                       
  118.                                  {
  119.                                         g_fCx=(3*4.81*(1e+6))/g_uifx;  //计算                                  
  120.                         /*                if(g_fCx<1000)
  121.                                         {       
  122.                                                 C_Below1K();                                               
  123.                                                 g_fCx =(3*0.94*(1e+6))/g_uifx;
  124.                                          
  125.                                         }  */                                           
  126.                                         //PlayVoice(g_fRx);
  127.                                         C_display(g_fCx);
  128.                                 }
  129.                         }                               
  130.                                 break;
  131.                                                
  132.                         case L_Test:
  133. //************************L*******************//
  134.                          while(LxFlag)
  135.                         {               
  136.                                 if(voicflag)                        
  137.                                    RunTime2Hz();
  138.                                 g_uifx=*(P_TimerB_Data);                                                                               
  139.                                 LxFlag = 0;                                                       
  140.                         //        *(P_IOA_Data)|=0x0008;
  141.                         //        Lline_on();
  142.                                 *(P_TimerB_Data)=0;                                                                                                                                        
  143.                                 if(g_uifx)                                                                       
  144.                                  {
  145.                                         g_fLx=(4*38*(1e+6))/(g_uifx*g_uifx); //计算   
  146.                                                                                      
  147.                                         //PlayVoice(g_fRx);
  148.                                         L_display(g_fLx);
  149.                                        
  150.                                 }
  151. ……………………

  152. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
电子竞赛—具有语音功能的RCL测试仪.rar (1.92 MB, 下载次数: 107)




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

使用道具 举报

沙发
ID:305388 发表于 2018-4-11 10:15 | 只看该作者
非常棒,下载学习一下。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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