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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3477|回復: 1
打印 上一主題 下一主題
收起左側

基于90c52單片機的電磁小車程序設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:263925 發表于 2018-12-20 16:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
該設計是基于90c52單片機的電磁尋跡小車。搭好硬件后(包括兩個直流電機,一個萬向輪,傳感器(電感)及其支架 )。將小車放在通電的導線上傳感器與通電導線電磁感應產生電動勢,經過放大電路將微弱的信號放大后。再由單片機內部的ad讀取數據。分析數據在決定小車的方向.
具體的實現過程如下:
            
1.假設在小車的左右兩端各有1個電感并且經過放大電路后ad采集到的值分別為a和b。
2.電機的運轉快慢由定時器產生的pwm信號來控制,假設左右兩個電機的初始pwm為20,最高為100。
3.我們知道電勢的高低和傳感器離通電導線的距離有關,距離越遠得到的值越小,反之越高。最理想的狀態是小車一直在導線的中間走。也就是兩個電感的值相同。此時可以通過所得到的電感值算出小車的一個相對的位置 p=a-b/c 這只是一個最基本的式子具體還要根據自己實際所得的ad值來做調整。根據所得到的這個相對位置的值再來調整左邊或者右邊電機的pwm值。如果p>大于0,說明左邊的電感值大于右邊也就是說左邊的電感距離通電導線近,就應該左轉,反之右轉。
4.轉彎的方法第一可以保持一邊電機的pwm不變降低另一邊的pwm的值,第二可以保持一邊電機的pwm不變提高另一邊的pwm的值
本設計已經過測試確實可行由于時間倉促還有很多地方需要完善,見諒!

單片機源程序如下:

  1. #include "max7219.h"

  2. unsigned char  dis_code[18]={0x7E,0x30,0x6D,0x79,        // 0, 1, 2, 3
  3.                                       0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x01,0x00};// 4, 5, 6, 7, 8, 9,a,b,c,d,e,f,-, ,


  4. void Write_Max7219_byte(unsigned char temp)
  5. {
  6. unsigned char i;
  7. for (i=0;i<8;i++)   
  8.   {
  9.     MAX7219_CLK0; // CLK=0;
  10.           if((temp>>7)&0x1)
  11.           {
  12.                 MAX7219_DIN1;
  13.           }
  14.           else
  15.           {
  16.                 MAX7219_DIN0;
  17.           }
  18.      //DIN=((temp>>7)&0x1);     
  19.      temp<<=1;
  20.      MAX7219_CLK1;//CLK=1;
  21.    }
  22. }

  23. void Write_Max7219(unsigned char address,unsigned char dat)
  24. {
  25.   MAX7219_CS0;//MAX_LOAD=0;
  26.   Write_Max7219_byte(address);
  27.   Write_Max7219_byte(dat);
  28.   MAX7219_CS1;//MAX_LOAD=1;               
  29. }

  30. void clear(void)
  31. {
  32.    Write_Max7219(1,0x00);
  33.    Write_Max7219(2,0x00);
  34.    Write_Max7219(3,0x00);
  35.    Write_Max7219(4,0x00);
  36.    Write_Max7219(5,0x00);
  37.    Write_Max7219(6,0x00);
  38.    Write_Max7219(7,0x00);
  39.    Write_Max7219(8,0x00);
  40. }

  41. //void Max7219_port(void)
  42. //{
  43. //
  44. //        GPIO_InitTypeDef GPIO_InitStructure;
  45. //        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  46. //        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2 ;            
  47. //        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;  
  48. //        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;   

  49. //        GPIO_Init(GPIOB,&GPIO_InitStructure);

  50. ////        RCC->APB2ENR|=1<<2;   
  51. ////                    
  52. ////        GPIOA->CRL&=0X0F00FFFF;
  53. ////        GPIOA->CRL|=0X30330000;//PA2 推挽輸出            
  54. ////    GPIOA->ODR|=1<<4;      //PA2 輸出高
  55. ////        GPIOA->ODR|=1<<5;      //PA2 輸出高
  56. ////        GPIOA->ODR|=1<<7;      //PA2 輸出高
  57. ////                                                                                       
  58. //}
  59. void Init_Max7219(void)     
  60. {
  61.          Write_Max7219(SHUT_DOWN, 0x00);   //Normal Operation XXXXXXX1 Shutdown Mode   XXXXXXXX0
  62.          Write_Max7219(DECODE_MODE, 0x00);   //Decode Mode Select D7~D0 1 B decode 0 No decode
  63.          Write_Max7219(SCAN_LIMIT, 0x07);   //SCAN LIMIT 0~7 0xX0~0xX7
  64.          Write_Max7219(INTENSITY, 0x0A);   //Set Intensity   0xX0~0xXf
  65.          Write_Max7219(DISPLAY_TEST, 0x00);   //Normal Operation XXXXXXX0 Display Test Mode
  66.          Write_Max7219(SHUT_DOWN, 0x01);   //Normal Operation XXXXXXX1 Shutdown Mode   XXXXXXXX0
  67.          clear();
  68. }

  69. void TestLED(void)
  70. {
  71.    Write_Max7219(1,dis_code[0]);          
  72.    Write_Max7219(2,dis_code[1]);          
  73.    Write_Max7219(3,dis_code[2]);
  74.    Write_Max7219(4,dis_code[3]);  
  75.    Write_Max7219(5,dis_code[4]);
  76.    Write_Max7219(6,dis_code[5]);
  77.    Write_Max7219(7,dis_code[6]);
  78.    Write_Max7219(8,dis_code[7]);             
  79. }

  80. void LED(unsigned char position ,unsigned char Value)
  81. {
  82.        
  83.            Write_Max7219(position,dis_code[Value]);
  84. }

  85. void display(int num,int num1 )
  86. {
  87.   char temp;
  88.         temp = num/1000;
  89.         LED(8 ,temp);
  90.         temp = num%1000/100;
  91.         LED(7 ,temp);
  92.         temp = num%100/10;
  93.         LED(6 ,temp);
  94.         temp = num%10;
  95.         LED(5 ,temp);
  96.         temp = num1/1000;
  97.         LED(4 ,temp);
  98.         temp = num1%1000/100;
  99.         LED(3 ,temp);
  100.         temp = num1%100/10;
  101.         LED(2 ,temp);
  102.         temp = num1%10;
  103.         LED(1 ,temp);
  104. }
復制代碼

所有資料51hei提供下載:
基于90c52單片機的電磁小車.rar (127.24 KB, 下載次數: 14)




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

使用道具 舉報

沙發
ID:1 發表于 2018-12-21 01:24 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一区二区三区四区 | 成人精品国产免费网站 | 久在线视频 | 国产一区二区在线免费视频 | 免费激情网站 | 亚洲一本 | 国产一区二区在线免费观看 | 91社区在线观看 | 四虎成人免费视频 | 亚洲综合在线一区 | 亚洲久久| 四虎影视1304t | 欧美一区二区 | 在线免费观看a级片 | av一区二区在线观看 | 成人久久 | 亚洲天堂精品久久 | 亚洲综合二区 | 免费视频久久 | 国产亚洲一区二区三区 | 91精品国产综合久久福利软件 | 自拍 亚洲 欧美 老师 丝袜 | 中文字幕在线视频免费视频 | 乱一性一乱一交一视频a∨ 色爱av | 国产亚洲欧美在线视频 | 一区二区三区视频在线观看 | 久久综合色综合 | 日本成人在线免费视频 | 日本三级在线网站 | 中文字幕欧美一区 | 国产亚洲欧美另类一区二区三区 | 日韩av免费在线电影 | 欧美一级免费看 | 国产欧美一区二区三区久久 | 一区二区三区亚洲 | 久久久久久久综合 | 狠狠干美女| 91av导航 | 日韩一区二区三区在线视频 | 91精品国产91久久久久福利 | 狠狠爱综合|