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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3196|回復(fù): 2
收起左側(cè)

基于51單片機定時器0計時外部中斷0計數(shù)的霍爾傳感器精確測速數(shù)碼管顯示測速的項目工程

[復(fù)制鏈接]
ID:171036 發(fā)表于 2020-4-24 20:55 | 顯示全部樓層 |閱讀模式
本帖最后由 51黑電子會員 于 2020-4-28 14:32 編輯
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit qiting=P3^0;//定義啟停按鍵
  5. uchar qitingnum,flag_1s;//定義啟停次數(shù)變量、1s標志位變量清零
  6. uint count,pulse,quan;//定時器0定時中斷次數(shù)變量、脈沖個數(shù)變量、圈數(shù)變量
  7. unsigned long speed;//轉(zhuǎn)速變量
  8. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共陰數(shù)碼管段碼數(shù)字0~9字碼表,高電平點亮數(shù)碼管段碼數(shù)字0~9。
  9. /**ms級延時子程序**/
  10.   void delay(uint x)
  11. {
  12.    uint i,j;                       
  13.    for(i=0;i<x;i++)     
  14.     for(j=0;j<110;j++);
  15.   }
  16. /**轉(zhuǎn)速顯示函數(shù)**/
  17.   void display(unsigned long speed)
  18. {
  19.    if(speed<=99999)
  20. {
  21.     uchar wan,qian,bai,shi,ge;//定義拆字變量
  22.     wan=speed/10000;//轉(zhuǎn)速/10000得到萬位
  23.     qian=speed%10000/1000;//轉(zhuǎn)速/10000的余數(shù)/1000得到千位
  24.     bai=speed%1000/100;//取得百位
  25.     shi=speed%100/10;//取得十位數(shù)字
  26.     ge=speed%10;//取得個位數(shù)字
  27.    
  28.     P2=0xfd;//數(shù)碼管萬位顯示位
  29.     P1=table[wan];//數(shù)碼管萬位數(shù)值顯示
  30.     delay(2);//延時

  31.     P2=0xfb;//數(shù)碼管千位顯示位
  32.     P1=table[qian];//數(shù)碼管千位數(shù)值顯示
  33.     delay(2);//延時

  34.     P2=0xf7;//數(shù)碼管百位顯示位
  35.     P1=table[bai];//數(shù)碼管百位數(shù)值顯示
  36.     delay(2);//延時

  37.     P2=0xef;//數(shù)碼管十位顯示位
  38.     P1=table[shi];//數(shù)碼管十位數(shù)值顯示
  39.     delay(2);//延時

  40.     P2=0xdf;//數(shù)碼管個位顯示位
  41.     P1=table[ge];//數(shù)碼管個位數(shù)值顯示
  42.     delay(2);//延時
  43.    }
  44. }
  45. /**按鍵掃描程序**/  
  46.   void keyscan()//按鍵掃描函數(shù)
  47. {
  48.    if(qiting==0)//判斷啟停鍵是否按下
  49. {
  50. //  delay(5);
  51.     display(speed);
  52.     if(qiting==0)//判斷啟停鍵是否再次按下
  53.   {
  54.      qitingnum++;//啟停次數(shù)變量加加
  55. //   while(!qiting);//等待啟停鍵松開
  56.      while(!qiting)//等待啟停鍵松開
  57.      display(speed);
  58. //   lcd_init();//LCD1602液晶顯示器初始化函數(shù)
  59.    }
  60.   }
  61.    if(qitingnum==1)//判斷啟停次數(shù)變量是否為1
  62. {
  63.     display(speed);//顯示速度函數(shù)
  64.     TR0=1;//打開定時器0
  65.   }
  66.    if(qitingnum==2)//判斷啟停次數(shù)變量是否為2
  67. {
  68. //  write_1602com(0x08);//關(guān)LCD1602液晶顯示器顯示
  69.     P2=0xff;//關(guān)數(shù)碼管顯示位
  70.     P1=0x00;//關(guān)數(shù)碼管數(shù)值顯示
  71.     qitingnum=0;//啟停次數(shù)變量置0
  72.     TR0=0;//關(guān)閉定時器0
  73.    }
  74. }
  75. /**定時器0、外部中斷0初始化子程序**/
  76.   void Time0_Int0_init()
  77. {
  78.    TMOD=0X01;//模式選定時器0工作方式1
  79.    TH0=(65536-50000)/256;//定時器0高8位定時50毫秒
  80.    TL0=(65536-50000)%256;//定時器0低8位定時50毫秒
  81.    EA=1;//打開總中斷
  82.    IT0=1;//外部中斷0為下降沿中斷
  83.    EX0=1;//打開外部中斷0
  84.    ET0=1;//打開定時器0的中斷
  85.    TR0=0;//關(guān)閉定時器0
  86. }
  87. /**主函數(shù)**/     
  88.   void main()
  89. {
  90.    Time0_Int0_init();//定時器0、計數(shù)器1初始化子程序
  91.    while(1)
  92. {
  93.     keyscan();//按鍵掃描函數(shù)
  94.     if(flag_1s==1)//判斷1s標志位變量是否為1
  95.   {
  96.      flag_1s=0;//1s標志位變量清零
  97.      display(speed);//轉(zhuǎn)速顯示函數(shù)
  98.     }
  99.    }
  100.   }
  101. /**外部中斷0中斷服務(wù)子程序**/   
  102.   void Int0() interrupt 0
  103. {
  104.    pulse++;//脈沖個數(shù)變量
  105.    if(pulse==2) //兩次外部中斷脈沖,電機轉(zhuǎn)一圈。
  106. {
  107.     quan++;//圈數(shù)變量加加
  108.     pulse=0;//脈沖個數(shù)變量置0
  109.    }     
  110. }
  111. /**定時器0中斷服務(wù)子程序**/                                      
  112.   void Timer0() interrupt 1
  113. {
  114.    TH0=(65536-50000)/256;//重裝定時器0高8位定時50毫秒
  115.    TL0=(65536-50000)%256;//重裝定時器0低8位定時50毫秒
  116.    count++;//定時器0定時中斷次數(shù)變量加加
  117.    if(count==20)//判斷定時器0定時中斷次數(shù)變量是否等于20,即1秒鐘。
  118. {
  119.     EX0=0;//關(guān)閉外部中斷0,開始統(tǒng)計1秒鐘內(nèi),霍爾元件發(fā)送的脈沖個數(shù)。
  120.     count=0;//定時器0定時中斷次數(shù)變量清0
  121.     speed=quan;//外部中斷0計數(shù)霍爾元件發(fā)送的脈沖個數(shù)為2個算一圈,即轉(zhuǎn)速:轉(zhuǎn)/秒,如果quan乘以60表示轉(zhuǎn)/分。
  122.     quan=0;//初始化圈數(shù),為了下一次統(tǒng)計1秒鐘內(nèi),霍爾元件發(fā)送的脈沖個數(shù)。
  123.     flag_1s=1;//1s標志位變量置1
  124.     TH0=(65536-50000)/256;//重裝定時器0高8位定時50毫秒
  125.     TL0=(65536-50000)%256;//重裝定時器0低8位定時50毫秒              
  126.     EX0=1;//打開外部中斷0,開始計算霍爾元件發(fā)送的脈沖個數(shù)。
  127.    }
  128. }
復(fù)制代碼
圖片111.png
回復(fù)

使用道具 舉報

ID:316613 發(fā)表于 2020-4-26 10:03 | 顯示全部樓層
沒法下載呢親
回復(fù)

使用道具 舉報

ID:171036 發(fā)表于 2020-5-6 19:59 | 顯示全部樓層

看程序就可以做出來啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合在线网 | 另类二区 | 新超碰97| 亚洲免费网 | 成人激情视频免费在线观看 | 国产欧美在线 | 国产日日操| 午夜视频在线视频 | 九九久久国产 | 亚洲精品电影 | 日韩精品一区二区三区中文字幕 | 在线视频 亚洲 | 国产最新视频在线 | 蜜臀网| 欧美日韩1区 | 在线播放日韩 | 在线免费黄色小视频 | 国产精品视频播放 | 国产黄色免费网站 | 天天操天天怕 | 久久久激情 | 羞羞的视频在线 | 三级成人在线 | 国产精品久久久久久久久 | 亚洲精品一区二区在线观看 | 国产色在线 | 久久久久九九九女人毛片 | 在线观看免费黄色片 | 精品一区二区三区日本 | 一区中文字幕 | 国产色播av在线 | 国产亚洲精品91 | 精品中文字幕久久 | 久草中文网 | 91中文字幕在线观看 | 日韩中文在线视频 | 99re在线 | 91精品在线播放 | 成人一区二区在线 | 草久在线视频 | 欧美一级大黄 |