欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

求大神教我如何寫(xiě)這個(gè)程序?89c52單片機(jī)按鍵控制繼電器

[復(fù)制鏈接]
ID:402168 發(fā)表于 2019-3-12 18:55 | 顯示全部樓層 |閱讀模式
c51單片機(jī)程序 實(shí)現(xiàn)一個(gè)按鍵閉合繼電器25秒之后斷開(kāi);接著閉合另一個(gè)繼電器3分鐘然后斷開(kāi)接著打開(kāi)一個(gè)外接3.3v的led燈1分鐘,單片機(jī)上有3.3v的接口,只需要延時(shí)1分鐘就行了,然后蜂鳴器響,結(jié)束!單片機(jī)上有蜂鳴器


最小系統(tǒng)的

最小系統(tǒng)的
IMG_6307.JPG

這個(gè)是原理圖

這個(gè)是原理圖
截圖03.jpg
截圖07.jpg
回復(fù)

使用道具 舉報(bào)

ID:10947 發(fā)表于 2019-3-13 11:19 | 顯示全部樓層
你自己的邏輯都清楚了,應(yīng)該挺容易了吧;
先檢測(cè)按鍵是否按下,然后一個(gè)個(gè)順序執(zhí)行;
有開(kāi)發(fā)板就應(yīng)該有例程吧,看看按鍵檢測(cè)的例程,IO口控制的例程;
繼電器 蜂鳴器 LED都是控制IO口的輸出。
回復(fù)

使用道具 舉報(bào)

ID:402168 發(fā)表于 2019-3-13 16:20 | 顯示全部樓層
lfc315 發(fā)表于 2019-3-13 11:19
你自己的邏輯都清楚了,應(yīng)該挺容易了吧;
先檢測(cè)按鍵是否按下,然后一個(gè)個(gè)順序執(zhí)行;
有開(kāi)發(fā)板就應(yīng)該有例 ...

這個(gè) 不太會(huì),小白一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-3-13 17:11 | 顯示全部樓層
這個(gè)程序很簡(jiǎn)單,按鍵按下開(kāi)始計(jì)時(shí),按順序工作300秒結(jié)束,等待按鍵再次按下。
給你寫(xiě)一個(gè)程序,端口根據(jù)實(shí)際電路自行重新定義,定時(shí)時(shí)間也可以自行修改。
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit Key=P3^0;
  5. sbit Relay1=P2^0;
  6. sbit Relay2=P2^1;
  7. sbit LED=P2^2;
  8. sbit Buzzer=P2^3;
  9. uchar Cnt50ms=0;
  10. uint Cnt1s=0;
  11. bit sign=0;       
  12. /****延時(shí)程序*****/
  13. void delay(uint t)
  14. {
  15.         while(t--);
  16. }
  17. /****定時(shí)器初始化程序*****/
  18. void Timer0Init()        //50毫秒@11.0592MHz
  19. {
  20.         TMOD= 0x01;                //設(shè)置定時(shí)器模式
  21.         TL0 = 0x00;                //設(shè)置定時(shí)初值
  22.         TH0 = 0x4C;                //設(shè)置定時(shí)初值
  23.         TR0 = 1;                //定時(shí)器0開(kāi)
  24.         EA=1;                        //開(kāi)總中斷
  25.         ET0=1;                        //開(kāi)定時(shí)器0中斷
  26. }
  27. /****主程序*******/
  28. void main()
  29. {
  30.         Timer0Init();
  31.         while(1)
  32.         {
  33.                 if(Key==0)
  34.                 {
  35.                         delay(10000);//延時(shí)消抖
  36.                         if((Key==0)&&(sign==0))
  37.                         {
  38.                                 sign=1;//按鍵自鎖 啟動(dòng)定時(shí)器計(jì)時(shí)
  39.                         }
  40.                 }
  41.         }
  42. }
  43. /****中斷服務(wù)程序*******/
  44. void timer0() interrupt        1//50毫秒@11.0592MHz
  45. {
  46.         TL0 = 0x00;                //設(shè)置定時(shí)初值
  47.         TH0 = 0x4C;                //設(shè)置定時(shí)初值
  48.         if(sign==1)
  49.         {
  50.                 Cnt50ms++;
  51.                 if(Cnt50ms>=20)
  52.                 {
  53.                         Cnt50ms=0;
  54.                         Cnt1s++;
  55.                 }
  56.                 if(Cnt1s<25)
  57.                 {
  58.                         Relay1=0;
  59.                 }
  60.                 if(Cnt1s>=25)
  61.                 {
  62.                         Relay1=1;
  63.                         Relay2=0;
  64.                 }
  65.                 if(Cnt1s>=205)
  66.                 {
  67.                         Relay2=1;
  68.                         LED=0;
  69.                 }
  70.                 if(Cnt1s>=265)
  71.                 {
  72.                         LED=1;
  73.                         Buzzer=0;
  74.                 }
  75.                 if(Cnt1s>=300)
  76.                 {
  77.                         sign=0;
  78.                         Cnt50ms=0;
  79.                         Cnt1s=0;
  80.                         Buzzer=1;
  81.                 }
  82.         }
  83. }
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
電子黑火藥 + 12 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:402168 發(fā)表于 2019-3-13 18:08 | 顯示全部樓層
wulin 發(fā)表于 2019-3-13 17:11
這個(gè)程序很簡(jiǎn)單,按鍵按下開(kāi)始計(jì)時(shí),按順序工作300秒結(jié)束,等待按鍵再次按下。
給你寫(xiě)一個(gè)程序,端口根據(jù) ...

謝謝 我研究一下
回復(fù)

使用道具 舉報(bào)

ID:402168 發(fā)表于 2019-3-13 18:56 | 顯示全部樓層
wulin 發(fā)表于 2019-3-13 17:11
這個(gè)程序很簡(jiǎn)單,按鍵按下開(kāi)始計(jì)時(shí),按順序工作300秒結(jié)束,等待按鍵再次按下。
給你寫(xiě)一個(gè)程序,端口根據(jù) ...

大神 我測(cè)試過(guò)了 ,很完美,就是我的晶振是12M的,然后led燈一端接3.3v的vcc一端接P2.2電壓不夠 只微微的發(fā)亮。不知道有什么解決的辦法不,然后如果要兩個(gè)按鍵控制單獨(dú)分別控制一樣的程序的話 需要加那些語(yǔ)句呀?
回復(fù)

使用道具 舉報(bào)

ID:402168 發(fā)表于 2019-3-13 19:03 | 顯示全部樓層
謝謝 大神 很完美,如果再加一個(gè)按鍵,兩個(gè)獨(dú)立按鍵 能夠獨(dú)立的執(zhí)行 上面一樣的程序 怎么做呀/
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-3-14 14:22 | 顯示全部樓層
電子黑火藥 發(fā)表于 2019-3-13 19:03
謝謝 大神 很完美,如果再加一個(gè)按鍵,兩個(gè)獨(dú)立按鍵 能夠獨(dú)立的執(zhí)行 上面一樣的程序 怎么做呀/

程序已經(jīng)改為兩個(gè)按鍵控制與單獨(dú)分別控制一樣,定時(shí)器與12MHz晶振配套。至于LED亮度不足可能改變供電電壓不易,只能減小限流電阻或換用超高亮LED。
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit Key1=P3^0;
  5. sbit Key2=P3^1;
  6. sbit Relay1=P2^0;
  7. sbit Relay2=P2^1;
  8. sbit LED=P2^2;
  9. sbit Buzzer=P2^3;
  10. uchar Cnt50ms=0;
  11. uint Cnt1s=0;
  12. bit sign=0;        
  13. /****延時(shí)程序*****/
  14. void delay(uint t)
  15. {
  16.         while(t--);
  17. }
  18. /****定時(shí)器初始化程序*****/
  19. void Timer0Init()                //50毫秒@12.000MHz
  20. {
  21.         TMOD= 0x01;                //設(shè)置定時(shí)器模式
  22.         TL0 = 0xB0;                //設(shè)置定時(shí)初值
  23.         TH0 = 0x3C;                //設(shè)置定時(shí)初值
  24.         TR0 = 1;                        //定時(shí)器0開(kāi)始計(jì)時(shí)
  25.         EA=1;         //開(kāi)總中斷
  26.         ET0=1;        //開(kāi)定時(shí)器0中斷
  27. }
  28. /*
  29. void Timer0Init()        //50毫秒@11.0592MHz
  30. {
  31.         TMOD= 0x01;                //設(shè)置定時(shí)器模式
  32.         TL0 = 0x00;                //設(shè)置定時(shí)初值
  33.         TH0 = 0x4C;                //設(shè)置定時(shí)初值
  34.         TR0 = 1;                        //定時(shí)器0開(kāi)
  35.         EA=1;                        //開(kāi)總中斷
  36.         ET0=1;                        //開(kāi)定時(shí)器0中斷
  37. }*/
  38. /****主程序*******/
  39. void main()
  40. {
  41.         Timer0Init();
  42.         while(1)
  43.         {
  44.                 if((Key1==0)||(Key2==0))
  45.                 {
  46.                         delay(10000);//延時(shí)消抖
  47.                         if((Key1==0)||(Key2==0)&&(sign==0))
  48.                         {
  49.                                 sign=1;//按鍵自鎖 啟動(dòng)定時(shí)器計(jì)時(shí)
  50.                         }
  51.                 }
  52.         }
  53. }
  54. /****中斷服務(wù)程序*******/
  55. void timer0() interrupt 1
  56. {
  57. //        TL0 = 0x00;    //設(shè)置定時(shí)初值50毫秒@11.0592MHz
  58. //        TH0 = 0x4C;    //設(shè)置定時(shí)初值50毫秒@11.0592MHz
  59.         TL0 = 0xB0;                //設(shè)置定時(shí)初值50毫秒@12.000MHz
  60.         TH0 = 0x3C;                //設(shè)置定時(shí)初值50毫秒@12.000MHz
  61.         if(sign==1)
  62.         {
  63.             Cnt50ms++;
  64.             if(Cnt50ms>=20)
  65.             {
  66.                     Cnt50ms=0;
  67.                     Cnt1s++;
  68.             }
  69.             if(Cnt1s<25)
  70.             {
  71.                     Relay1=0;
  72.             }
  73.             if(Cnt1s>=25)
  74.             {
  75.                     Relay1=1;
  76.                     Relay2=0;
  77.             }
  78.             if(Cnt1s>=205)
  79.             {
  80.                     Relay2=1;
  81.                     LED=0;
  82.             }
  83.             if(Cnt1s>=265)
  84.             {
  85.                     LED=1;
  86.                     Buzzer=0;
  87.             }
  88.             if(Cnt1s>=300)
  89.             {
  90.                     sign=0;
  91.                     Cnt50ms=0;
  92.                     Cnt1s=0;
  93.                     Buzzer=1;
  94.             }
  95.         }
  96. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:483991 發(fā)表于 2019-3-14 15:47 | 顯示全部樓層
少一些求拜,多去看看別人的例子,多敲代,多調(diào)試才會(huì)進(jìn)步
回復(fù)

使用道具 舉報(bào)

ID:402168 發(fā)表于 2019-3-27 15:03 | 顯示全部樓層
wulin 發(fā)表于 2019-3-14 14:22
程序已經(jīng)改為兩個(gè)按鍵控制與單獨(dú)分別控制一樣,定時(shí)器與12MHz晶振配套。至于LED亮度不足可能改變供電電壓 ...

大神兩個(gè)按鍵分開(kāi)的話,按鍵1控制兩個(gè)繼電器跟之前的一樣,然后按鍵2控制3個(gè)繼電器,比之前多一個(gè)繼電器其他的和之前的一樣,這個(gè)代碼怎么分開(kāi)呀,加一個(gè)判斷嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表