Ⅰ c語言編程:電機的正反驅動程序已經具備,想通過按鍵添加新功能,已寫程序及新添加功能如下
這個很簡單,我教你怎麼玩,下面是思路和方式
思路:有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用P0.0到P0.2來代替;輸出2個或以上(這看你接什麼顯示器,如果是PC的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用P1.0、P1.1;
PS:顯示那塊我不知道你怎麼處理,但是需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用NPN感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以了,具體硬體要注意什麼,有需要就問我
現在我們來寫程序:
#include <reg51.h> //選用晶振11.0592MHz
unsigned char k=0; //k表示正反轉次數
sbit X0=P3^2; //調節按鈕
sbit X1=P1^1; //上限位接近開關信號
sbit X2=P1^2; //下限位接近開關信號
sbit Y1=P0^0; //電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbit Y2=P0^1; //電機下降
void delay50ms(unsigned int i)
{
unsigned int j;
for (i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1; //下降沿觸發
EX0=1; //開P3.2外部中斷
EA=1; //總中斷開
while(1)
while(k)
{
Y1=0; //正轉
while(X1==1); //等待正轉接近開關反應
Y1=1; //正轉停
delay50ms(1); //停止時間50ms
Y2=0; //反轉
while(X2==1); //等待反轉接近開關反應
Y2=1; //反轉停
k--; //圈數減一
}
}
void counter0(void) interrupt 0
{
k++; //外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵
Ⅱ 用c語言編寫控制電機運動的程序
1、有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用P0.0到P0.2來代替;輸出2個或以上(這看接什麼顯示器,如果是PC的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用P1.0、P1.1;需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用NPN感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以。
2、常式:
#include<reg51.h>//選用晶振11.0592MHz
unsignedchark=0;//k表示正反轉次數
sbitX0=P3^2;//調節按鈕
sbitX1=P1^1;//上限位接近開關信號
sbitX2=P1^2;//下限位接近開關信號
sbitY1=P0^0;//電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbitY2=P0^1;//電機下降
voiddelay50ms(unsignedinti)
{
unsignedintj;
for(i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1;//下降沿觸發
EX0=1;//開P3.2外部中斷
EA=1;//總中斷開
while(1)
while(k)
{
Y1=0;//正轉
while(X1==1);//等待正轉接近開關反應
Y1=1;//正轉停
delay50ms(1);//停止時間50ms
Y2=0;//反轉
while(X2==1);//等待反轉接近開關反應
Y2=1;//反轉停
k--;//圈數減一
}
}
voidcounter0(void)interrupt0
{
k++;//外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
Ⅲ c語言鍵盤按鍵觸發怎麼表示
可以用FlexibleButton表示。
FlexibleButton 是一個基於標准 C 語言的小巧靈活的按鍵處理庫,支持單擊、連擊、短按、長按、自動消抖,可以自由設置組合按鍵,可用於中斷和低功耗場景。
該按鍵庫解耦了具體的按鍵硬體結構,理論上支持輕觸按鍵與自鎖按鍵,並可以無限擴展按鍵數量。另外,FlexibleButton 使用掃描的方式一次性讀取所有所有的按鍵狀態,然後通過事件回調機制上報按鍵事件。
核心的按鍵掃描代碼僅有三行,沒錯,就是經典的 三行按鍵掃描演算法。使用 C 語言標准庫 API 編寫,也使得該按鍵庫可以無縫兼容任意的處理器平台,並且支持任意 OS 和 non-OS(裸機編程)。
快速體驗:
FlexibleButton 庫中提供了一個測試常式 ./examples/demo_rtt_iotboard.c,該常式基於 RT-Thread OS 進行測試,硬體平台選擇了 RT-Thread IoT Board Pandora v2.51 開發板。
當然你可以選擇使用其他的 OS,或者使用裸機測試,只需要移除 OS 相關的特性即可。
如果你使用自己的硬體平台,只需要將 FlexibleButton 庫源碼和常式加入你既有的工程下即可。
DEMO 程序說明:
該示常式序可以直接在 RT-Thread stm32l475-atk-pandora BSP 中運行,可以在該 BSP 目錄下,使用 menuconfig 獲取本軟體包。
Ⅳ 在做電子設計大賽求電容式接近開關的使用程序,誰有發一份給我,謝了!
%A<p></p><p> 干簧管(Reed Switch)也稱舌簧管或磁簧開關,是一種磁敏的特殊開關,是干簧繼電器和接近開關的主要部件。</p> 干簧管通常有兩個軟磁性材料做成的、無磁時斷開的金屬簧片觸點,有的還有第三個作為常閉觸點的簧片。這些簧片觸點被封裝在充有惰性氣體(如氮、氦等)或真空的玻璃管里,玻璃管內平行封裝的簧片端部重疊,並留有一定間隙或相互接觸以構成開關的常開或常閉觸點。干簧管比一般機械開關結構簡單、體積小、速度高、工作壽命長;而與電子開關相比,它又有抗負載沖擊能力強等特點,工作可靠性很高。<p></p> 霍爾感測器是根據霍爾效應製作的一種磁場感測器。霍爾效應是磁電效應的一種,這一現象是霍爾(A.H.Hall,1855—1938)於1879年在研究金屬的導電機構時發現的。後來發現半導體、導電流體等也有這種效應,而半導體的霍爾效應比金屬強得多,利用這現象製成的各種霍爾元件,廣泛地應用於工業自動化技術、檢測技術及信息處理等方面。霍爾效應是研究半導體材料性能的基本方法。通過霍爾效應實驗測定的霍爾系數,能夠判斷半導體材料的導電類型、載流子濃度及載流子遷移率等重要參數。<file fsid="1627558660" link="/share/link?shareid=614056658&uk=2415932719" name="干簧管.doc" wealth="0" />%A</div>%A<dl class="thank line pt-5 pb-5">%A<dt class="thank-title grid f-12">提問者評價</dt>%A<dd class="grid ml-10">%A<pre accuse="qThanks">謝了,不過有原理圖之類的嗎,給我參考下
Ⅳ 單片機51C語言是如何處理接近開關,光電開並或限位開關的信號
若開關動作就有高電平(或低電平)送給單片機,那麼,讓信號送入單片機的外部中斷引腳,單片機通過設置形成上升沿(或其他方式)中斷來控制其他動作就行。
Ⅵ 如何使編一個在開機時自動運行的c語言程序
這是絕對不可能的。
F8等熱鍵的功能,是系統載入前就生效的。它們的執行控制代碼,在系統最先調用的程序代碼中。
而BAT文件,必須等到系統啟動完成以後才能執行。
只有修改系統的載入模塊才有可能在開機時屏蔽F8等功能鍵。
我可以幫助你,你先設置我最佳答案後,我網路Hii教你。
Ⅶ 單片機c語言程序
如果沒有定義
no_timer2
就執行下面的程序。。如果定義了。。就執行#else下面的程序、、與if。。。else的用法差不多。。
#endif就是結束的意思。。與#ifndef
是相對的。。
Ⅷ 單片機怎麼處理接近開關的信號
做個標志位FLAGLHL,如果由低變高再變低,則置位,主程序執行檢測標志位FLAGLHL就可以了,檢測到FLAGLHL為1,將FLAGLHL清零,並執行程序,檢測不到不執行。
Ⅸ 單片機控制交流電機正反轉的C語言程序
這個很簡單,我教你怎麼玩,下面是思路和方式
思路:有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用P0.0到P0.2來代替;輸出2個或以上(這看你接什麼顯示器,如果是PC的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用P1.0、P1.1;
PS:顯示那塊我不知道你怎麼處理,但是需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用NPN感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以了,具體硬體要注意什麼,有需要就問我
現在我們來寫程序:
#include <reg51.h> //選用晶振11.0592MHz
unsigned char k=0; //k表示正反轉次數
sbit X0=P3^2; //調節按鈕
sbit X1=P1^1; //上限位接近開關信號
sbit X2=P1^2; //下限位接近開關信號
sbit Y1=P0^0; //電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbit Y2=P0^1; //電機下降
void delay50ms(unsigned int i)
{
unsigned int j;
for (i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1; //下降沿觸發
EX0=1; //開P3.2外部中斷
EA=1; //總中斷開
while(1)
while(k)
{
Y1=0; //正轉
while(X1==1); //等待正轉接近開關反應
Y1=1; //正轉停
delay50ms(1); //停止時間50ms
Y2=0; //反轉
while(X2==1); //等待反轉接近開關反應
Y2=1; //反轉停
k--; //圈數減一
}
}
void counter0(void) interrupt 0
{
k++; //外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵