久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

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

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

基于顏色識(shí)別傳感器模塊設(shè)計(jì)位移檢測(cè)機(jī)構(gòu)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:271398 發(fā)表于 2018-3-7 11:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
利用光纖放大器顏色識(shí)別傳感器模塊(顏色光電色標(biāo)傳感器光纖放ER2-21M)設(shè)計(jì)位移檢測(cè)機(jī)構(gòu)。因?yàn)榉瓷湫偷墓饫w位移傳感器基本原理比較簡(jiǎn)單,整體設(shè)計(jì)是將步進(jìn)電機(jī)模塊與光纖傳感器模塊相結(jié)合而構(gòu)成,進(jìn)而實(shí)現(xiàn)簡(jiǎn)單的位移檢測(cè)。本文介紹了控制程序的生成、反射型光纖傳感器的工作原理、整個(gè)系統(tǒng)的構(gòu)成、以及步進(jìn)電機(jī)在位移檢測(cè)機(jī)構(gòu)中的作用及原理、光纖傳感器在系統(tǒng)中的作用。主要的目的就是實(shí)現(xiàn)對(duì)待測(cè)物體的短距離的位移測(cè)量,本文將以單片機(jī)為中心實(shí)現(xiàn)對(duì)電機(jī)的控制和對(duì)位移值的顯示的軟件設(shè)計(jì),將步進(jìn)電機(jī)與光纖傳感器等硬件結(jié)構(gòu)完整地搭建起來(lái)。


單片機(jī)源程序如下:
  1. #include "reg52.h"
  2. #define uint unsigned int         
  3. #define uchar unsigned char
  4. #define MotorTabNum 5
  5. unsigned char T0_NUM = 0;
  6. signed char g_MotorNum = 0;
  7. unsigned char MotorTab[6] = {12, 10, 8, 6, 4, 2};
  8. sbit CLK = P1^0;                       //PWM信號(hào)輸出端
  9. sbit FX = P1^1;                       //電機(jī)方向
  10. sbit P1_3 = P1^3;                                                //電機(jī)開(kāi)關(guān)
  11. sbit MotorEn = P2^1;     // 使能
  12. sbit K1 = P1^4;                                                //開(kāi)關(guān)按鍵Key1         
  13. sbit K2 = P1^5;                                                //方向按鍵Key2           
  14. sbit K3 = P1^6;                                                //開(kāi)關(guān)按鍵Key3         
  15. sbit K4 = P1^7;                                                //方向按鍵Key4
  16. sbit SMG1 = P0^0;                                        //數(shù)碼管第一位定義
  17. sbit SMG2 = P0^1;                                        //數(shù)碼管第二位定義
  18. sbit SMG3 = P0^2;                                        //數(shù)碼管第三位定義
  19. sbit SMG4 = P0^3;                                        //數(shù)碼管第四位定義
  20. unsigned char g_MotorSt = 0;     // 啟停
  21. unsigned char g_MotorDir = 0;    // 正反
  22. int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40};           //共陰極數(shù)碼管段值     
  23. void Init_t0(void);                        //子函數(shù)聲明     
  24. void scan_key(void);
  25. void delayms(xms);
  26. void Display(void);         
  27. void main()  
  28. {      
  29.                 FX=1;  
  30.         CLK = 0;                                                         //置PWM初始輸出為高電平   
  31.                 P1_3 = 0;                                                     
  32.         Init_t0();
  33.         while(1)
  34.                 {
  35.                         scan_key();
  36.                 }                                //等待中斷
  37. }
  38. void scan_key(void)
  39. {
  40. #if 0
  41.         if(0 == P1_5)
  42.         {
  43.                 delayms(3);
  44.                 if(0 == P1_5)
  45.                         P1_1 = ~P1_1;
  46.         }
  47.         else if(0 == P1_4)
  48.         {
  49. delayms(3);
  50.                 if(0 == P1_4)
  51.                 {
  52.                         if(TR0==1)
  53.                                  TR0 = 0;
  54.                         else
  55.                                 TR0 = 1;
  56.                 }
  57.         }
  58.         delayms(30);
  59. #endif
  60.         if(K1 == 0)
  61.         {
  62.                 delayms(10);   // 軟件延時(shí)消抖
  63.                 if(K1 == 0)
  64.                 {
  65.                         while(!K1){Display();};  // 等待K1松開(kāi)
  66.                         g_MotorSt = g_MotorSt ^ 0x01;
  67.                         MotorEn ^= 1;
  68.                         if(TR0 == 0)
  69.                         {
  70.                                 TR0 = 1;
  71.                         }
  72.                         else
  73.                                 TR0 = 0;
  74.                 }
  75.         }
  76.         if(K2 == 0)
  77.         {
  78.                 delayms(10);   // 軟件延時(shí)消抖
  79.                 if(K2 == 0)
  80. {
  81.                         while(!K2){Display();};        // 等待K1松開(kāi)
  82.                         g_MotorDir = g_MotorDir ^ 0x01;
  83.                         FX ^= 1;
  84.                 }
  85.         }
  86.         if(K3 == 0)  // 加速
  87.         {
  88.                 delayms(10);   // 軟件延時(shí)消抖
  89.                 if(K3 == 0)
  90.                 {
  91.                         while(!K3){Display();};        // 等待K1松開(kāi)
  92.                         g_MotorNum++;
  93.                         if(g_MotorNum > MotorTabNum)
  94.                                 g_MotorNum = MotorTabNum;
  95.                 }
  96.         }
  97.         if(K4 == 0)  // 減速
  98.         {
  99.                 delayms(10);   // 軟件延時(shí)消抖
  100.                 if(K4 == 0)
  101.                 {
  102.                         while(!K4){Display();};        // 等待K1松開(kāi)
  103.                         g_MotorNum--;
  104.                         if(g_MotorNum < 0)
  105.                                 g_MotorNum = 0;
  106.                 }
  107.         }
  108. }
  109. void Init_t0(void)

  110.         TMOD=0x01;                  //設(shè)置定時(shí)器0工作方式1后面運(yùn)行TR位啟動(dòng)
  111.         TH0=(65536-100)/256;
  112.         TL0=(65536-100)%256;         //1.5ms 的高電平
  113.         EA=1;
  114.         ET0=1;
  115. //       TR0=1;         
  116. }
  117. /*******************中斷服務(wù)程序**********************/  

  118. void PWM0() interrupt 1         //定時(shí)器0中斷,產(chǎn)生方波
  119. {  
  120. #if 0
  121.         if(P1_0==1)                         //如果上個(gè)電平為1,則下個(gè)低電平的時(shí)間為18.5ms
  122.         {  
  123.                 TH0=(65536-18500)/256;                 //試過(guò)t1=1500;t0=20000-t1;但舵機(jī)老是吱吱的響,推測(cè):運(yùn)算耗時(shí).
  124.                 TL0=(65536-18500)%256;
  125.         }
  126.         else                                         //如果上個(gè)電平為0,則下個(gè)高電平為1.5ms
  127.         {
  128.                 TH0=(65536-8000)/256;
  129.                 TL0=(65536-8000)%256;
  130.         }
  131.         P1_0=~P1_0;
  132. #endif
  133.         TH0 = (65535-100)/256;   
  134.         TL0 = (65535-100)%256;
  135. T0_NUM++;
  136.         if(T0_NUM >= MotorTab[g_MotorNum])        // 增加按鍵g_MotorNum++   減小按鍵g_MotorNum--
  137.         {
  138.                 T0_NUM = 0;
  139.                 CLK=CLK^0x01;               //   輸出脈沖
  140.         }
  141. }
  142. /********延時(shí)函數(shù)***********************************************************/
  143. void delayms(xms)
  144. {
  145.          unsigned int x,y;
  146.          for(x=xms;x>0;x--)
  147.                  for(y=110;y>0;y--)                ;
  148. }
  149. void Display(void)
  150. {
  151.         unsigned char b1, b2;
  152.         b1=g_MotorNum/10;               
  153.     b2=g_MotorNum%10;
  154.         if(FX == 0)
  155.                 P0=0x71;//顯示F
  156.     else
  157.                 P0=0x79;
  158.         SMG1=0;                                                         
  159.     delayms(3);
  160.     SMG1=1;

  161.         P0=0x40;
  162. SMG2=0;
  163.          delayms(3);
  164.     SMG2=1;
  165.         P0=table[b1];
  166.         SMG3=0;                                                         //顯示十位
  167.         delayms(3);
  168.         SMG3=1;
  169.         P0=table[b2];
  170.     SMG4=0;
  171.     delayms(3);                                                 //顯示個(gè)位
  172.     SMG4=1;
  173. }
  174.        
復(fù)制代碼

所有資料51hei提供下載:
基于顏色識(shí)別傳感器模塊設(shè)計(jì)位移檢測(cè)機(jī)構(gòu).doc (66.5 KB, 下載次數(shù): 9)


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品亚洲欧美日韩精品中文字幕 | 久久99精品久久久久 | 亚洲激精日韩激精欧美精品 | 亚洲一区二区久久 | 亚洲精品99| 欧美性受| 国产精彩视频 | 五月精品视频 | 亚洲一页| 欧洲亚洲精品久久久久 | 日本成人中文字幕 | 少妇无套高潮一二三区 | 天天操天天玩 | 日韩欧美在线免费观看 | 91最新入口| 精品亚洲第一 | 国产亚洲精品久久情网 | 国产亚洲精品久久情网 | 精品久久久久国产 | 欧美一区二区在线播放 | 天天操夜夜操免费视频 | 国产精品欧美一区喷水 | 超黄毛片 | 午夜免费看视频 | 97caoporn国产免费人人 | 在线观看国产h | 久久久夜| 中文字幕一二三区 | 黄色网址大全在线观看 | 操人网站 | 亚洲欧美视频一区 | 成年人在线观看视频 | 免费在线观看黄色av | 九九综合九九 | 欧美黑人一区二区三区 | 青青操av| 国产精品一区在线播放 | 亚州激情 | 中文字幕在线国产 | 日日骑 | 狠狠爱网址 |