|
馬達(dá)上轉(zhuǎn)一圈會壓到限位開關(guān)然后發(fā)一個+12的電壓,我用7805接的取一個5V電壓用來連單片機(jī),聽說這樣的話共地會有影響有干擾然后我又加了個光藕,現(xiàn)在開關(guān)抖動的問題搞了半天也沒搞好都是用延時的教程但用延時又影響CPU和其它事件的執(zhí)行,偶然發(fā)現(xiàn)大神們有用電容來做硬件延時的我也照著弄了一個簡直太好了,發(fā)來給大家看下。
一個12V的東東怎么和5V的單片機(jī)簡單相連呢我的這種方法可以嗎?或者有其它什么更好的方法嗎?希望大神們幫我一下。還有雖然用了電容可是程序里還得寫延時雖然時間很短,要是不寫延時的話有機(jī)率會出現(xiàn)該亮不亮,不亮又亮的情況,怎么才能避免呢?
電路原理圖如下:
單片機(jī)源程序如下:
- #include<reg52.h>
- sbit LED=P1^0; //定義LED端口
- void DelayUs2x(unsigned char t);//us級延時函數(shù)聲明
- void DelayMs(unsigned char t); //ms級延時
- main()
- {
- LED=0; //LED燈點亮
- EA=1; //全局中斷開
- EX1=1; //外部中斷1開
- IT1=1; //IT1=1表示邊沿觸發(fā)
- while(1)
- {
-
- }
- }
- void ISR_INT1(void) interrupt 2
- {
-
- if(!INT1)
- {
- DelayMs(20);//在此處可以添加去抖動程序,防止按鍵抖動造成錯誤
- if(!INT1)
- //while(!INT1);//等待按鍵釋放
- {
- LED=!LED;
- }
- }
- }
- void DelayUs2x(unsigned char t)
- {
- while(--t);
- }
- void DelayMs(unsigned char t)
- {
-
- while(t--)
- {
- //大致延時1mS
- DelayUs2x(245);
- DelayUs2x(245);
- }
- }
復(fù)制代碼
|
評分
-
查看全部評分
|