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