找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2115|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

自己做的檢測(cè)磁場(chǎng)的板子程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
檢測(cè)磁場(chǎng)的資料可以自己下載,親測(cè)有效

單片機(jī)源程序如下:
  1. #include"reg12.h" //頭文件在STC公司主頁(yè)上下載
  2. #include"stdio.h"
  3. #include"intrins.h"
  4. //------------------------------------------------------------------------------
  5. void AD_init();
  6. void serial_init();
  7. void delay(unsigned int a);
  8. float AD_work(unsigned char channel);
  9. unsigned int AD_get(unsigned char channel);
  10. //------------------------------------------------------------------------------
  11. void main()
  12. {

  13.         AD_init(); //A/D轉(zhuǎn)換初始化
  14.         serial_init(); //串口初始化
  15.         while(1)
  16.         {
  17.         float GS=0.0;
  18.         GS=(AD_work(0)-2.5)/0.00083;
  19.         if(GS<0) GS=-GS;
  20.                 TI=1; //使用printf函數(shù)前須先將發(fā)送標(biāo)志位TI置1
  21.                 printf("%f uT\n",GS);
  22.                 TI=0;
  23.                 delay(1000); //延時(shí)約1s
  24.                 }
  25. }
  26. //------------------------------------------------------------------------------
  27. unsigned int AD_get(unsigned char channel)
  28. {
  29.         ADC_CONTR=0x88|channel; //開(kāi)啟AD轉(zhuǎn)換1000 1000 即POWER SPEED1 SPEED0 ADC_FLAG?? ADC_START CHS2 CHS1 CHS0?
  30.         _nop_(); _nop_(); _nop_(); _nop_();//要經(jīng)過(guò)4個(gè)CPU時(shí)鐘的延時(shí),其值才能夠保證被設(shè)置進(jìn)ADC_CONTR 寄存器
  31.         while(!(ADC_CONTR&0x10)); //等待轉(zhuǎn)換完成
  32.         ADC_CONTR&=0xe7; //關(guān)閉AD轉(zhuǎn)換,ADC_FLAG位由軟件清0
  33.         return(ADC_RES*4+ADC_RESL); //返回AD轉(zhuǎn)換完成的10位數(shù)據(jù)(16進(jìn)制)
  34. }
  35. //------------------------------------------------------------------------------
  36. float AD_work(unsigned char channel)
  37. {
  38.         float AD_val; //定義處理后的數(shù)值A(chǔ)D_val為浮點(diǎn)數(shù)
  39.         unsigned char i;
  40.         for(i=0;i<100;i++)
  41.         AD_val+=AD_get(channel); //轉(zhuǎn)換100次求平均值(提高精度)
  42.         AD_val/=100;
  43.         AD_val=(AD_val*5)/1024; //AD的參考電壓是單片機(jī)上的5v,所以乘5即為實(shí)際電壓值
  44.         return AD_val;
  45. }
  46. //------------------------------------------------------------------------------
  47. void delay(unsigned int a) //延時(shí)約1ms
  48. {
  49.         unsigned int i;
  50.         while (--a!=0)
  51.         for(i=600;i>0;i--);//1T單片機(jī)i=600,若是12T單片機(jī)i=125
  52. }
  53. //------------------------------------------------------------------------------
  54. void serial_init()
  55. {
  56.         TMOD=0x20;
  57.         TH1=0xfd;
  58.         TL1=0xfd; //設(shè)置9600波特率
  59.         SCON=0x50; //串口方式1,允許接收
  60.         TR1=1;
  61. }
  62. //------------------------------------------------------------------------------
  63. void AD_init()
  64. {
  65.         P1ASF=0xff; //P1口全部作為模擬功能AD使用
  66.         ADC_RES=0; //清零轉(zhuǎn)換結(jié)果寄存器高8位
  67.         ADC_RESL=0; //清零轉(zhuǎn)換結(jié)果寄存器低2位
  68.         ADC_CONTR=0x80;//開(kāi)啟AD電源
  69.         delay(2); //等待1ms,讓AD電源穩(wěn)定
  70. }
復(fù)制代碼

所有資料51hei提供下載:
磁場(chǎng)檢測(cè).zip (17.53 KB, 下載次數(shù): 9)
m.zip (271 Bytes, 下載次數(shù): 8)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:332432 發(fā)表于 2019-4-26 13:07 | 只看該作者
歡迎討論
回復(fù)

使用道具 舉報(bào)

板凳
ID:1 發(fā)表于 2019-4-27 03:29 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

地板
ID:99242 發(fā)表于 2024-10-12 21:52 來(lái)自觸屏版 | 只看該作者
看著不錯(cuò),有空試試看
回復(fù)

使用道具 舉報(bào)

5#
ID:99242 發(fā)表于 2024-10-12 22:10 來(lái)自觸屏版 | 只看該作者
用的啥霍爾
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表