找回密码
 立即注册

QQ登录

只需一步,快速开始

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

电涡流传感器实现金属检测 同厚金属板材质分辨单片机源码与仿真

[复制链接]
跳转到指定楼层
楼主
用电涡流传感器+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)


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

使用道具 举报

沙发
ID:551454 发表于 2019-5-30 21:07 | 只看该作者
这个用的全部电路图在哪里
回复

使用道具 举报

板凳
ID:551454 发表于 2019-5-30 21:08 | 只看该作者
求大神解答一下啊
回复

使用道具 举报

地板
ID:688460 发表于 2020-6-3 16:30 | 只看该作者
不错的思路。好好学习了,谢谢楼主!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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