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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機霍爾自行車里程測速儀設計 論文 原理圖 程序 PPT 制作詳解都有

  [復制鏈接]
跳轉到指定樓層
樓主
給51黑電子論壇的朋友們分享一個51單片機做的霍爾自行車里程測速儀,資料很全 程序 設計論文都有.

1、單片機是通用的無論51還是52、無論stc還是at都一樣,引腳功能都一樣。
   程序也是一樣的。
2、原理圖中的.ddb、.Bkp等格式是要用protelse打開的,沒有軟件的不要緊,
   我已幫您轉換成word格式和pdf格式的了。
3、程序中的.c文件可以用記事本(文本文檔)打開,就是程序了。其他的是寫程序是自動
   生成的,沒什么用的。
4、可以按照正面布局,不要按照實物的背面焊接,要按照原理圖焊接。

數碼管腳位排布說明:

正面朝自己,秒點在下,左下為1腳,逆時針排布,左上為最后一個腳!請淘友焊接前弄清腳位排布再焊接!祝淘友成功!

視頻密碼:1234






霍爾自行車測速電路原理圖:






單片機霍爾里程測速儀制作的ppt文檔:



名稱         參數          數量
電阻           3k              4
               10k             3
               360Ω           9
排阻           4k7            1
電位器         50k             1
電解電容       10uf            1

瓷片電容       30pf            2
               104pf           3
晶振           12m            1
三極管         8550            4
按鍵           按鍵            2
電源座子       電源座子        1
霍爾元件       3144            1
比較器         lm393           1
8IC                       1
LED           發光二極管      1
數碼管         四位共陽        1
單片機         at89s52          1
40IC                      1
9*15cm          萬用板          1
自鎖開關                         1
Usb電源線                       1
磁鐵                            1


霍爾自行車里程測速儀設計論文:


單片機霍爾自行車里程測速儀源程序:
  1. //時間:4月7日15:22:04
  2. //目的:學習編程
  3. //說明1:P00---P07:a-----dp   P27---P24:com1-----com4   P34切換顯示   P32---INT0   一個磁鋼
  4. //說明2:此程序針對車輪周長為207cm,其他型號周長,可改變參數就行
  5. //說明3:數碼管從左至右  高------低
  6. #include<reg51.h>
  7. #include"juxun001.h"
  8. //====================================主函數=========================================================
  9. void main()
  10. {
  11.         time0_int0_init();//定時器0和外部中斷0的初始化
  12.         while(!TR0)        //上電一直未切割時就顯示  0.0.0.0
  13.         {
  14.                 init_display();
  15.         }
  16.         while(1)
  17.         {
  18.                 if(!change)//按下切換按鍵顯示里程
  19.                 {
  20.                         delay1m(5);
  21.                         if(!change)
  22.                         {
  23.                                 flag = ~flag;
  24.                         }
  25.                         while(!change);               
  26.                 }
  27.          
  28.         }
  29. }

  30. //==================================定時器0中斷函數================================
  31. void time0_interrupt()interrupt 1
  32. {
  33.         TL0 = (65536 - 5000) % 256;// 12M晶振,5ms定時
  34.         TH0 = (65536 - 5000) / 256;
  35.         display_function();
  36.         time_counter++;
  37.         time_counter8++;
  38.         if(time_counter8 >= 1600)//大于8s沒切割,車子視為停下了,速度為:0,但里程還記著
  39.         {
  40.                 time_counter8 = 0;
  41.                 speed = 0;//速度為 0
  42.                 point1 = 0;
  43.                 buf1[3] = speed%10;buf1[2] = speed/10%10;
  44.                 buf1[1] = speed/100%10;buf1[0] = speed/1000%10;
  45.         }
  46. }
  47. //==================================外部中斷0中斷函數=========================
  48. void int0_interrupt()interrupt 0
  49. {        
  50.         
  51.         external_counter++;
  52.         if(external_counter ==1 )TR0 = ~TR0;//第一次切割打開定時器0
  53.         if(external_counter == 65535)external_counter = 0;
  54.         time_counter8 = 0; //只要8秒內有切割,車子就任在運行
  55.         
  56.         if(external_counter % 2 == 0)//切割2次 更新下速度
  57.         {                                                                         //*5是因為中斷一次是5MS
  58.                  if(flag1==0){speed =((ulong)(36000)*zhouchang)/(time_counter * 5);flag1=1;}
  59.                 else if(flag1==1){speed =((ulong)(36000)*2*zhouchang)/(time_counter * 5);}//速度:單位為 m/h ,*1000的目的是不出現浮點數
  60.                
  61.                 if((speed >= 100)&&(speed < 1000))         //100 ---- 1000       3位整數
  62.                 {
  63.                         point1 = 1;buf1[3] = speed%10;buf1[2] = speed/10%10;
  64.                         buf1[1] = speed/100%10;buf1[0] = 0;}
  65.                 else if((speed >= 1000)&&(speed < 10000))   //1000 ---- 10000        4位整數
  66.                 {
  67.                         point1 = 1;speed = (uint)speed;
  68.                         buf1[3] = speed%10;buf1[2] = speed/10%10;
  69.                         buf1[1] = speed/100%10;buf1[0] = speed/1000%10;}
  70.                 else if((speed >= 10000)&&(speed < 100000))          //10000 ----- 100000      5位整數
  71.                 {
  72.                         point1 = 2;
  73.                         buf1[3] = speed/10%10;buf1[2] = speed/100%10;
  74.                         buf1[1] = speed/1000%10;buf1[0] = speed/10000%10;}
  75.                 else if((speed >= 100000)&&(speed < 1000000))  //100000 ------ 1000000    6位整數
  76.                 {
  77.                         point1 = 3;
  78.                         buf1[3] = speed/100%10;buf1[2] = speed/1000%10;
  79.                         buf1[1] = speed/10000%10;buf1[0] = speed/100000%10;}
  80.                 time_counter = 0;
  81.         }
  82.         if(external_counter % 8 == 0)//每切割8次 更新下里程
  83.         {
  84.                  s = (ulong)external_counter * zhouchang;  //里程:單位為   cm
  85.                 if((s >= 1000)&&(s < 10000))
  86.                 {
  87.                         point2 = 1;                                                                                                   //  0.012    001212
  88.                         buf2[3] = s/100%10;buf2[2] = s/1000%10;
  89.                         buf2[1] = 0;buf2[0] = 0;}//   4位整數
  90.                 else if((s >= 10000)&&(s < 100000))
  91.                 {
  92.                         point2 = 1;
  93.                         buf2[3] = s/100%10;buf2[2] = s/1000%10;
  94.                         buf2[1] = s/10000%10;buf2[0] = 0;}//     5位整數           0.123         012345
  95.                 else if((s >= 100000)&&(s < 1000000))
  96.                 {
  97.                         point2 = 1;
  98.                         buf2[3] = s/100%10;buf2[2] = s/1000%10;
  99.                         buf2[1] = s/10000%10;buf2[0] = s/100000%10;} //    6位整數         1.234    1234 56
  100.             else if((s >= 1000000)&&(s < 10000000))
  101.                 {
  102.                         point2 = 2;
  103.                         buf2[3] = s/1000%10;buf2[2] = s/10000%10;
  104.                         buf2[1] = s/100000%10;buf2[0] = s/1000000%10;}//     7位整數          1234 567
  105.                 else if((s >= 10000000)&&(s < 100000000))
  106.                 {
  107.                         point2 = 3;
  108.                         buf2[3] = s/10000%10;buf2[2] = s/100000%10;
  109.                         buf2[1] = s/1000000%10;buf2[0] = s/10000000%10;} //     8位整數                 1234 5678
  110.         }
  111. }
  112. //==================================開電源就顯示的數據,初始顯示速度========================
  113. void init_display()
  114. {
  115.         uchar i;
  116.         for(i = 0;i < 4;i++)         
  117.         {
  118.                 wei = bitcode[num - 1];
  119.                 led = display1[buf1[num--]];
  120.                 delay1m(4);
  121.                 if(num == 0)num = 4;
  122.         }
  123. }
  124. //====================================顯示函數===================================
  125. void display_function()
  126. {
  127.         if(flag == 0)//顯示速度
  128.         {
  129.                 switch(point1)
  130.                 {
  131.                         case 0:wei = bitcode[num-1];led = display1[buf1[num-1]];num--;break;//速度顯示 0
  132.                         case 1:if(num == 1){ wei = bitcode[num-1];led = 0x7f&display1[buf1[num-1]];num--;}
  133.                                    else { wei = bitcode[num-1];led = display1[buf1[num-1]];num--;}break;//最高位小數點亮
  134.                         
  135.                         case 2:if(num == 2){ wei = bitcode[num-1];led = 0x7f&display1[buf1[num-1]];num--;}
  136.                                    else { wei = bitcode[num-1];led = display1[buf1[num-1]];num--;}break;//第二高位小數點亮
  137.                         
  138.                         case 3:if(num == 3){ wei = bitcode[num-1];led = 0x7f&display1[buf1[num-1]];num--;}
  139.                                    else { wei = bitcode[num-1];led = display1[buf1[num-1]];num--;}break;//第三高位小數點亮
  140.                         default:break;        
  141.                         
  142.                 }
  143.                 if(num == 0)num = 4;
  144.          }
  145.         else if(flag == 1)//顯示里程
  146.    {
  147.                 switch(point2)
  148.                 {
  149.                         case 0:wei = bitcode[num-1];led = display1[buf2[num-1]];num--;break;//里程顯示 0
  150.                         
  151.                         case 1:if(num == 1){ wei = bitcode[num-1];led = 0x7f&display1[buf2[num-1]];num--;}
  152.                                    else { wei = bitcode[num-1];led = display1[buf2[num-1]];num--;}break;//最高位小數點亮
  153.                         
  154.                         case 2:if(num == 2){ wei = bitcode[num-1];led = 0x7f&display1[buf2[num-1]];num--;}
  155.                                    else { wei = bitcode[num-1];led = display1[buf2[num-1]];num--;}break;//第二高位小數點亮
  156.                
  157.                         case 3:if(num == 3){ wei = bitcode[num-1];led = 0x7f&display1[buf2[num-1]];num--;}
  158.                                    else { wei = bitcode[num-1];led = display1[buf2[num-1]];num--;}break;//第三高位小數點亮
  159.                         default:break;        
  160.                         
  161.                 }
  162.                 if(num == 0)num = 4;
  163.    }
  164. }
  165. //=================================定時器0和外部中斷0的初始化函數=================
  166. void time0_int0_init()
  167. {
  168.         TMOD |= 0x01;
  169.         TMOD &= 0xfd;//定時器0工作于方式1
  170.         TL0 = (65536 - 5000) % 256;//12M晶振,5ms定時
  171.         TH0 = (65536 - 5000) / 256;
  172.         IT0 = 1;//外部中斷0,負跳變觸發方式
  173.         TR0 = 0;
  174.         ET0 = 1;
  175.         EX0 = 1;
  176.         EA = 1;
  177. }
  178. //====================================ms 級延時函數===========================
  179. void delay1m(uchar x)
  180. {
  181.     uchar i,j;
  182.     for(i=0;i<x;i++)      //連數x次,約 x ms
  183.               for(j=0;j<120;j++);   //數120 次,約1 ms
  184. }
復制代碼


51單片機霍爾自行車里程測速儀設計全部資料下載(包含完整的論文):
基于單片機霍爾自行車里程測速儀.zip (4.82 MB, 下載次數: 696)

評分

參與人數 6黑幣 +62 收起 理由
ysandi + 30
yy960901 + 5 贊一個!
z207965750 + 5 樓主大好人啊 最近正在做相關畢設 非常感謝
tieq1952 + 12 贊一個!
阿亮666 + 5
穿著安踏去拉薩 + 5 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:154576 發表于 2017-3-6 14:26 | 只看該作者
非常感謝,學習了!
回復

使用道具 舉報

板凳
ID:89286 發表于 2017-3-6 19:15 | 只看該作者
thanks for sharing
回復

使用道具 舉報

地板
ID:138247 發表于 2017-3-8 13:48 | 只看該作者
非常感謝,學習了!
回復

使用道具 舉報

5#
ID:151348 發表于 2017-3-8 21:40 | 只看該作者
用霍爾元件測速時最好還是用幾個霍爾元件并聯,這樣的信號響應更好
回復

使用道具 舉報

6#
ID:4150 發表于 2017-4-1 17:56 | 只看該作者
支持下樓主
回復

使用道具 舉報

7#
ID:24486 發表于 2017-4-12 20:31 | 只看該作者

 非常感謝,學習了!
回復

使用道具 舉報

8#
ID:190238 發表于 2017-4-16 21:20 | 只看該作者
厲害了
回復

使用道具 舉報

9#
ID:193423 發表于 2017-4-25 16:10 | 只看該作者
學習了
回復

使用道具 舉報

10#
ID:193504 發表于 2017-4-25 17:38 | 只看該作者
更合適的佛皮革及哦啊餓哦幾個囧事日兩個案件時光
回復

使用道具 舉報

11#
ID:110278 發表于 2017-4-26 19:11 | 只看該作者
很不錯的。。。很好。
回復

使用道具 舉報

12#
ID:214835 發表于 2017-6-26 16:42 | 只看該作者
非常感謝,學習了!
回復

使用道具 舉報

13#
ID:110278 發表于 2017-6-28 18:31 | 只看該作者
內容挺多的。
回復

使用道具 舉報

14#
ID:159302 發表于 2017-7-2 12:17 | 只看該作者
謝謝!!!!!!!!!!!!!!!!!
回復

使用道具 舉報

15#
ID:232932 發表于 2017-9-13 19:24 | 只看該作者
謝謝
回復

使用道具 舉報

16#
ID:233234 發表于 2017-9-15 04:04 | 只看該作者
非常感謝,正好在做相關的東西,受教!
回復

使用道具 舉報

17#
ID:243873 發表于 2017-10-29 11:36 | 只看該作者
謝謝,學習啦
回復

使用道具 舉報

18#
ID:243873 發表于 2017-10-29 12:21 | 只看該作者
謝謝。真的需要
回復

使用道具 舉報

19#
ID:187478 發表于 2017-10-29 14:56 | 只看該作者
請問,測速的原理是?霍爾傳感器在這邊起到什么作用?是通過什么來感知速度大小的?
回復

使用道具 舉報

20#
ID:250492 發表于 2017-11-17 17:39 | 只看該作者
請問如果需要多個按鍵可以嗎?霍爾元件在proteus里面是不是可以用clock來替代?
回復

使用道具 舉報

21#
ID:215235 發表于 2017-11-20 15:17 來自手機 | 只看該作者
牛死了
回復

使用道具 舉報

22#
ID:146834 發表于 2017-12-11 22:33 | 只看該作者
謝謝分享,               
回復

使用道具 舉報

23#
ID:254251 發表于 2018-1-14 13:26 | 只看該作者
學習學習
回復

使用道具 舉報

24#
ID:86793 發表于 2018-3-6 14:55 | 只看該作者
感謝分享
回復

使用道具 舉報

25#
ID:300706 發表于 2018-4-14 10:20 | 只看該作者
謝謝分享
回復

使用道具 舉報

26#
ID:305252 發表于 2018-4-18 20:04 | 只看該作者
很不錯 學習了
回復

使用道具 舉報

27#
ID:253767 發表于 2018-4-20 07:29 | 只看該作者
正需要。新近買了一輛電動自行車,無里程表和測速器,準備自制。這個帖子正好滿足需要,就不用自己再設計了。
回復

使用道具 舉報

28#
ID:349564 發表于 2018-6-11 16:37 | 只看該作者
練氏 發表于 2017-10-29 14:56
請問,測速的原理是?霍爾傳感器在這邊起到什么作用?是通過什么來感知速度大小的?

胡爾傳感器用來測轉數
回復

使用道具 舉報

29#
ID:349564 發表于 2018-6-11 18:16 | 只看該作者
樓主很厲害
回復

使用道具 舉報

30#
ID:351593 發表于 2018-6-14 09:19 | 只看該作者
贊一個
回復

使用道具 舉報

31#
ID:406151 發表于 2018-10-7 15:55 | 只看該作者
學到了學到了 非常感謝
回復

使用道具 舉報

32#
ID:425450 發表于 2018-11-13 08:47 | 只看該作者
厲害  支持
回復

使用道具 舉報

33#
ID:280736 發表于 2018-11-13 12:36 | 只看該作者
謝謝!學習了!
回復

使用道具 舉報

34#
ID:443027 發表于 2018-12-10 09:24 | 只看該作者
樓主非常感謝,我正需要這個資料
回復

使用道具 舉報

35#
ID:443027 發表于 2018-12-29 16:03 來自手機 | 只看該作者
這個霍爾傳感器在proteus中怎么仿真,在哪個引腳
回復

使用道具 舉報

36#
ID:405613 發表于 2018-12-30 10:18 | 只看該作者
只有89C2051,看來要改電路和程序,參考下,謝謝
回復

使用道具 舉報

37#
ID:452173 發表于 2018-12-30 10:55 | 只看該作者
收藏了,學習學習。
回復

使用道具 舉報

38#
ID:462411 發表于 2019-1-5 13:17 | 只看該作者
正在做相關課程設計,贊一個
回復

使用道具 舉報

39#
ID:124605 發表于 2019-1-6 19:54 | 只看該作者
非常感謝,學習了!
回復

使用道具 舉報

40#
ID:501672 發表于 2019-3-31 13:16 | 只看該作者
感謝分享!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清视频一区二区 | 久久久久久久久91 | 国产一区二区电影 | 日韩中文字幕在线观看 | 亚洲第一天堂 | 亚洲国产欧美在线 | 欧美日韩国产在线 | 拍拍无遮挡人做人爱视频免费观看 | 999久久久免费精品国产 | 国产精品久久久亚洲 | 成人欧美一区二区三区在线播放 | 国产永久免费 | 日本aⅴ中文字幕 | 中文字幕乱码亚洲精品一区 | 在线免费国产视频 | 国产欧美一级二级三级在线视频 | 日日操视频 | 2020国产在线| 成年人网站免费视频 | 久久久久国产精品一区 | 蜜桃特黄a∨片免费观看 | 亚洲在线免费 | 亚洲免费精品一区 | 国产精品久久久久久久久久免费看 | 99成人在线视频 | 久久综合av | 一区二区日韩 | 成人不卡一区二区 | 在线亚洲一区 | www国产精品 | 色婷婷精品久久二区二区蜜臂av | 亚洲乱码一区二区 | 伦理午夜电影免费观看 | 日日操夜夜操天天操 | 国际精品鲁一鲁一区二区小说 | 91色视频在线观看 | 成人精品一区二区三区中文字幕 | 黄色免费三级 | 成人av网站在线观看 | 午夜激情免费视频 | 国产99在线 | 欧美 |