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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

3秒內檢測不到觸發電平就證明電機卡主了

[復制鏈接]
跳轉到指定樓層
樓主


上圖我做的,平均1秒轉一圈,每轉一圈磁鐵觸發傳感器輸出一個低電平,

3秒內檢測不到觸發電平就證明電機卡主了。輸出信號控制電機停止,朋友們,怎么寫個程序呢?求的思路,謝謝!


sbit KEY1=P2^0;//檢測端口接霍爾傳感器輸出端,低電平有效
sbit KEY2=P2^1;//輸出高電平,啟動繼電器,斷開電源,或者接步進電機控制器的  停止端
void main()
{        KEY1=1;//通電默認高電平        
  KEY2=0;//通電默認低電平   
while(1)
        {
                if(KEY1==0)          //讀P2.0引腳
                {

                        delay_ms(5); //延時10ms消抖
                        if(KEY1==0)         //再次判斷,防止干擾,增強穩定
                        {





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

使用道具 舉報

沙發
ID:539024 發表于 2021-7-9 12:42 | 只看該作者
你把霍爾傳感器的引腳接到外部中斷上,用中斷檢測下降沿
回復

使用道具 舉報

板凳
ID:475031 發表于 2021-7-9 12:47 | 只看該作者
1543330241 發表于 2021-7-9 12:42
你把霍爾傳感器的引腳接到外部中斷上,用中斷檢測下降沿

百度搜破了也沒有找到相關例子,
大師,來個例子。這樣我也學會了。全網的人也學會了。不勝感激
回復

使用道具 舉報

地板
ID:81196 發表于 2021-7-9 16:22 | 只看該作者
使用外部中斷,設置為上升沿和下降沿觸發,那么就可以完整地提取出脈沖的寬度
回復

使用道具 舉報

5#
ID:475031 發表于 2021-7-9 16:41 | 只看該作者
shumivan 發表于 2021-7-9 16:22
使用外部中斷,設置為上升沿和下降沿觸發,那么就可以完整地提取出脈沖的寬度

來一段代碼。我參考參考。謝謝
回復

使用道具 舉報

6#
ID:176854 發表于 2021-7-9 20:01 | 只看該作者
#include "STC12C52xx.H"  //根據實際芯片修改頭文件

#define Delay_Time 200   //(需要檢測時間(單位:秒) - 1) * 100
sbit Key = P2^0;         //修改需要檢測引腳

unsigned int Counter = 0;
unsigned char Key_Loop = 0;


//-----------------------------------------------

void Timer0_Init() //12MHz  10ms
{
    AUXR &= 0x7F;                    
    TMOD |= 0x01;                  
                TL0 = 0xF0;               
    TH0 = 0xD8;               
    TR0 = 1;                        
    ET0 = 1;                        
}

void Read_Key()
{
    switch(Key_Loop)
                {
                  case 0:
                        {
                          if(!Key)
                                {
                                  Counter = 0;
                                }
                                else if(Counter >= Delay_Time)
                                {
                                  Key_Loop = 1;
                                }
                                break;
                        }
                        case 1:
                        {
                          //加入電機堵轉后的處理程序
                                break;
                        }
                        default:
                        {
                          Key_Loop = 0;
                                break;
                        }
                }
}

void main(void)
{
                P2M1 |= (1<<0);   //將檢測引腳設置為高阻輸入
                P2M0 &= ~(1<<0);  //將檢測引腳設置為高阻輸入
                Timer0_Init();

                EA = 1;                        
                while (1)
                {
                        Read_Key();
                }
}

void tm0_isr() interrupt 1 //定時器每10ms中斷一次
{
          TL0 = 0xF0;               
    TH0 = 0xD8;               
    Counter++;
}
回復

使用道具 舉報

7#
ID:57657 發表于 2021-7-10 08:35 | 只看該作者
  1. #include "reg51.h"
  2. sbit KEY1 = P2 ^ 0;//檢測端口接霍爾傳感器輸出端,低電平有效
  3. sbit KEY2 = P2 ^ 1;//輸出高電平,啟動繼電器,斷開電源,或者接步進電機控制器的  停止端

  4. void InitTimer0(){      //晶振頻率:12Mhz
  5.     TMOD = 0x01;
  6.     TH0 = 0xB1;
  7.     TL0 = 0xE0;
  8.     EA = 1;
  9.     ET0 = 1;
  10.     TR0 = 1;
  11. }
  12. unsigned char time = 0;      //霍爾傳感器 高電平每20毫秒加1 (加滿則停止計數,防止溢出) 低電平清0
  13. void Timer0Interrupt() interrupt 1{     //20ms 定時器0中斷
  14.     TH0 = 0xB1;
  15.     TL0 = 0xE0;
  16.     if (KEY1) {
  17.         if (time != 0xFF) time++;
  18.         KEY2 = !(time >= 150);      //150個20毫秒
  19.     } else {
  20.         time = 0;
  21.         KEY2 = 1;
  22.     }
  23. }


  24. void main(){
  25. KEY1 = 1;//通電默認高電平        
  26. KEY2 = 0;//通電默認低電平   
  27. InitTimer0();
  28. while(1);
  29. }
復制代碼
回復

使用道具 舉報

8#
ID:161164 發表于 2021-7-11 14:46 | 只看該作者
  1. void main()
  2. {
  3.     Motor_Run = 1;//運行標志
  4.     if(Scan_Count++ > 1000)
  5.     {
  6.         Scan_Count=0;
  7.         Rotate_Count++;
  8.         if(Hall_Pin_Old && !Hall_Pin)//下降沿檢測
  9.         {
  10.             Rotate_Stop_Count=0;
  11.         }
  12.         Hall_Pin_Old = Hall_Pin;
  13.         if(Rotate_Stop_Count++ > 200)//停轉超時
  14.         {
  15.             Motor_Run = 0;
  16.         }
  17.     }
  18. }
復制代碼


回復

使用道具 舉報

9#
ID:808939 發表于 2021-7-11 17:22 | 只看該作者
你把霍爾傳感器的引腳接到外部中斷上,用中斷檢測下降沿
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产在线 | 亚洲精品日韩在线观看 | 999久久精品 | aa级毛片毛片免费观看久 | 国产成人综合在线 | 本道综合精品 | 成人性视频在线 | 欧美一区永久视频免费观看 | 日韩a在线 | 午夜电影日韩 | 久久久久久国产精品 | 麻豆久久久久久久久久 | 一区二区在线 | 欧美成人激情视频 | 毛片一区二区三区 | 午夜成人免费视频 | 久久福利电影 | 九九av| 老司机精品福利视频 | 国产特一级黄色片 | 日本网站免费观看 | 亚洲精品国产区 | 国产乱码高清区二区三区在线 | 国产精品久久在线观看 | 免费视频成人国产精品网站 | 超碰一区二区 | 91精品久久久久久久久久 | 国产精品久久久久久久久久久久久久 | 亚洲视频手机在线 | 在线看中文字幕 | 天堂av中文在线 | 久久激情视频 | 日韩一区在线播放 | 日日天天 | 免费看黄色视屏 | 亚洲超碰在线观看 | 国产视频在线观看一区二区三区 | 看片地址| 一级欧美一级日韩片免费观看 | 日韩av成人在线 | 亚洲欧美国产精品久久 |