用電渦流傳感器+51單片機來實現的金屬檢測原件清單:
0.jpg (44.9 KB, 下載次數: 23)
下載附件
2018-4-9 01:02 上傳
同厚金屬板材質分辨的proteus仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.jpg (78.88 KB, 下載次數: 24)
下載附件
2018-4-9 01:03 上傳
單片機源程序如下:
- #include <STC15F2K60S2.H>
- #include <ADC.h>
- #include <math.h>
- #define IRON 93
- #define COPPER 86
- #define ALUM 84
- sbit get_init=P0^0;
- sbit switch_mode=P0^1;
- sbit resolution=P0^2;
- //數碼管變量區
- unsigned char code Table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- unsigned char code Wei_Table[]={
- 0xef,0xdf,0xbf,0x7f};
- unsigned char Screen_Table[4],wei;
- unsigned char number=0; //物質編號
- unsigned char standard,current,texture;
- void Delay50ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- _nop_();
- _nop_();
- i = 3;
- j = 26;
- k = 223;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void Timer0Init(void) //2毫秒@11.0592MHz
- {
- AUXR &= 0x7F; //定時器時鐘12T模式
- TMOD &= 0xF0; //設置定時器模式
- TL0 = 0xCD; //設置定時初值
- TH0 = 0xF8; //設置定時初值
- TF0 = 0; //清除TF0標志
- TR0 = 1; //定時器0開始計時
- ET0 = 1;
- EA = 1;
- }
- void main()
- {
- ADC_Init();
- Timer0Init();
- Screen_Table[0]=0;
- P2M1=0x00;
- P2M0=0xff;
- while(1)
- {
- if(get_init==0) //獲取無介質時初始值
- {
- standard=GetADC(0);
- P31=0; //獲取成功標志
- }
- if(resolution==0) //獲取介質值并運算
- {
- current=GetADC(0);
- texture=(unsigned char)(((float)current*100/standard));
- if(texture>90)
- Screen_Table[1]=Screen_Table[0];
- else if(texture>85)
- Screen_Table[2]=Screen_Table[0];
- else if(texture>80)
- Screen_Table[3]=Screen_Table[0];
- }
- if(switch_mode==0) //設置被檢測物體編號
- {
- Delay50ms();
- if(switch_mode==0)
- {
- Screen_Table[0]=number;
- number++;
- if(number==4)
- number=0;
- while(switch_mode==0);
- Delay50ms();
- while(switch_mode==0);
- }
- }
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
金屬材質檢測-.zip
(93.16 KB, 下載次數: 96)
2018-4-8 21:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|