标题: 电涡流传感器实现金属检测 同厚金属板材质分辨单片机源码与仿真 [打印本页]

作者: tianxianyan    时间: 2018-4-8 21:07
标题: 电涡流传感器实现金属检测 同厚金属板材质分辨单片机源码与仿真
用电涡流传感器+51单片机来实现的金属检测原件清单:


同厚金属板材质分辨的proteus仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <STC15F2K60S2.H>
  2. #include <ADC.h>
  3. #include <math.h>
  4. #define IRON         93
  5. #define        COPPER        86
  6. #define ALUM        84
  7. sbit get_init=P0^0;
  8. sbit switch_mode=P0^1;
  9. sbit resolution=P0^2;
  10. //数码管变量区
  11. unsigned char code Table[]={
  12. 0x3f,0x06,0x5b,0x4f,
  13. 0x66,0x6d,0x7d,0x07,
  14. 0x7f,0x6f,0x77,0x7c,
  15. 0x39,0x5e,0x79,0x71};
  16. unsigned char code Wei_Table[]={
  17. 0xef,0xdf,0xbf,0x7f};
  18. unsigned char Screen_Table[4],wei;

  19. unsigned char number=0;        //物质编号
  20. unsigned char standard,current,texture;
  21. void Delay50ms()                //@11.0592MHz
  22. {
  23.         unsigned char i, j, k;

  24.         _nop_();
  25.         _nop_();
  26.         i = 3;
  27.         j = 26;
  28.         k = 223;
  29.         do
  30.         {
  31.                 do
  32.                 {
  33.                         while (--k);
  34.                 } while (--j);
  35.         } while (--i);
  36. }
  37. void Timer0Init(void)                //2毫秒@11.0592MHz
  38. {
  39.         AUXR &= 0x7F;                //定时器时钟12T模式
  40.         TMOD &= 0xF0;                //设置定时器模式
  41.         TL0 = 0xCD;                //设置定时初值
  42.         TH0 = 0xF8;                //设置定时初值
  43.         TF0 = 0;                //清除TF0标志
  44.         TR0 = 1;                //定时器0开始计时
  45.         ET0 = 1;
  46.         EA  = 1;
  47. }

  48. void main()
  49. {
  50.         ADC_Init();
  51.         Timer0Init();
  52.         Screen_Table[0]=0;
  53.         P2M1=0x00;
  54.         P2M0=0xff;
  55.         while(1)
  56.         {
  57.                 if(get_init==0)                                   //获取无介质时初始值
  58.                 {
  59.                         standard=GetADC(0);
  60.                         P31=0;                                        //获取成功标志
  61.                 }
  62.                 if(resolution==0)                        //获取介质值并运算
  63.                 {
  64.                         current=GetADC(0);
  65.                         texture=(unsigned char)(((float)current*100/standard));
  66.                         if(texture>90)
  67.                                 Screen_Table[1]=Screen_Table[0];
  68.                         else if(texture>85)       
  69.                                 Screen_Table[2]=Screen_Table[0];
  70.                         else if(texture>80)       
  71.                                 Screen_Table[3]=Screen_Table[0];
  72.                 }
  73.                 if(switch_mode==0)                         //设置被检测物体编号
  74.                 {
  75.                         Delay50ms();
  76.                         if(switch_mode==0)
  77.                         {
  78.                                 Screen_Table[0]=number;
  79.                                 number++;
  80.                                 if(number==4)
  81.                                         number=0;
  82.                                 while(switch_mode==0);
  83.                                 Delay50ms();
  84.                                 while(switch_mode==0);
  85.                         }
  86.                 }                                       
  87.         }
  88. }
  89. ……………………

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

所有资料51hei提供下载:
金属材质检测-.zip (93.16 KB, 下载次数: 96)



作者: admin327    时间: 2019-5-30 21:07
这个用的全部电路图在哪里
作者: admin327    时间: 2019-5-30 21:08
求大神解答一下啊
作者: yyzf998    时间: 2020-6-3 16:30
不错的思路。好好学习了,谢谢楼主!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1