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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

教學樓照明燈單片機控制系統的時間判斷程序怎么寫?求思路

[復制鏈接]
跳轉到指定樓層
樓主
向大佬求助!這個是教學樓照明燈控制系統的部分程序,case 9 的單獨控制LED燈的程序單獨使用時可以的,但是想要他在規定時間里面完成自動打開或者關閉的話就會有沖突,我知道從case 9出來就會進入tcontrol的判斷,所以會出現LED燈閃現的情況,現在就是想怎么讓燈能夠在設置的時間里面自動開關同時又能夠手動干涉!其中的h1,h2……就是四個時間段的時鐘,m1,m2……就是四個時間段的分鐘。









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

使用道具 舉報

沙發
ID:421308 發表于 2019-7-14 12:30 | 只看該作者
程序呢
回復

使用道具 舉報

板凳
ID:582087 發表于 2019-7-15 09:11 | 只看該作者
  1. void main (void)
  2. {
  3.         unsigned char num;
  4.         kai();//打開所有燈
  5.         Init_Timer0();
  6.         Init_INT0();
  7.         while (1)         //主循環
  8.         {
  9.                 KeyPort=0xf0;// 賦值用于中斷檢測
  10.                 if(KeyPressFlag==1)
  11.                 {
  12.                         KeyPressFlag=0;  //按鍵標志清零,以便下次檢測
  13.                         num=KeyPro();    //按鍵響應返回給num
  14.                         if(num!=0xff)
  15.                         {
  16.                                 switch(num)
  17.                                 {
  18.                                         case 12://九個模式,第九個為單獨控燈
  19.                                         {
  20.                                                 MODE=MODE+1;
  21.                                                 if(MODE>9)MODE=0;       
  22.                                                 break;
  23.                                         }
  24.                                        
  25.                                         case 0:
  26.                                         case 1:
  27.                                         case 2:
  28.                                         case 3:
  29.                                         case 4:
  30.                                         case 5:
  31.                                         case 6:
  32.                                         case 7:
  33.                                         case 8:
  34.                                         case 9:
  35.                                         {}
  36.                                         default:break;
  37.                                 }
  38.                         }
  39.                 }
  40.                 switch(MODE)
  41.                 {
  42.                         case 0://顯示所有時分秒
  43.                         {}
  44.                         case 1://S1        時間段1的hour1
  45.                         {}
  46.                         case 2://F1        時間段1的minute1
  47.                         {}
  48.                         case 3://S2        時間段2的hour2
  49.                         {}
  50.                         case 4://F2        時間段2的minute2
  51.                         {}
  52.                         case 5://S3        時間段3的hour3
  53.                         {}
  54.                         case 6://F3        時間段3的minute3
  55.                         {}
  56.                         case 7://S4        時間段4的hour4
  57.                         {}
  58.                         case 8://F4        時間段4的minute4
  59.                         {}
  60.                         case 9://單獨控制LED燈
  61.                         {
  62.                                 TempData[0]=0x39;//高電平有效 C
  63.                                 TempData[1]=0x3f;//高電平有效 O
  64.                                 TempData[2]=0x37;//高電平有效 N
  65.                                 TempData[3]=0x78;//高電平有效 t
  66.                                 TempData[4]=0x70;//高電平有效 r
  67.                                 TempData[5]=0x3f;//高電平有效 O
  68.                                 TempData[6]=0x38;//高電平有效 L
  69.                                 TempData[7]=0;
  70.                                 if(KeyPressFlag==1)
  71.                                 {
  72.                                         KeyPressFlag=0;  //按鍵標志清零,以便下次檢測
  73.                                         num=KeyPro();    //按鍵響應返回給num
  74.                                         if(num!=0xff)
  75.                                         {
  76.                                                 switch(num)
  77.                                                 {
  78.                                                         case 1:LED1=~LED1;break;
  79.                                                         case 4:LED2=~LED2;break;
  80.                                                         case 7:LED3=~LED3;break;
  81.                                                         case 0:LED4=~LED4;break;
  82.                                                         default:break;
  83.                                                 }
  84.                                         }
  85.                                 }
  86.                         }
  87.                 }
  88.                 tcontrol(hour,minute);
  89.         }
  90. }

  91. void guan(void)//關燈
  92. {        //此方法使用bit位對單個端口賦值
  93.         //將P1.0口賦值 1,對外輸出高電平
  94.         LED1=1;
  95.         LED2=1;
  96.         LED3=1;
  97.         LED4=1;
  98. }
  99. void kai(void)//開燈
  100. {        //此方法使用bit位對單個端口賦值
  101.         //將P1.0口賦值 0,對外輸出低電平
  102.         LED1=0;
  103.         LED2=0;
  104.         LED3=0;
  105.         LED4=0;
  106. }
  107. void stay(void)//保持
  108. {
  109.         LED1=LED1;
  110.         LED2=LED2;
  111.         LED3=LED3;
  112.         LED4=LED4;
  113. }
  114. void tcontrol(int hour,int minute)//時間控制開關
  115. {
  116.         stay();
  117.         if(hour>=h1||hour<h2)        //時間段1        關
  118.         {
  119.                 guan();
  120.                 if(minute>=m1||minute<m2)guan();
  121.         }
  122.         else if(hour>=h2&&hour<h3)        //時間段2        開
  123.         {
  124.                 kai();
  125.                 if(minute>=m2||minute<m3)kai();
  126.         }
  127.         else if(hour>=h3&&hour<h4)        //時間段3        關
  128.         {
  129.                 guan();
  130.                 if(minute>=m3||minute<m4)guan();
  131.         }
  132.         else if(hour>=h4&&hour<h1)        //時間段4        開
  133.         {
  134.                 kai();
  135.                 if(minute>=m4||minute<m1)kai();
  136.         }
  137. }
復制代碼


程序可能審核沒通過,在這里,這是部分程序
回復

使用道具 舉報

地板
ID:582087 發表于 2019-7-15 09:16 | 只看該作者




程序在這里,只能用圖片格式
回復

使用道具 舉報

5#
ID:951817 發表于 2021-7-11 16:41 | 只看該作者
伽藍半城沙 發表于 2019-7-15 09:16
程序在這里,只能用圖片格式

在板子上按+按鍵和0按鍵,出現的5100是什么意思?
回復

使用道具 舉報

6#
ID:844772 發表于 2021-7-11 19:59 | 只看該作者
你就只管到點開或關就行,不用反復判斷是否該開或關;這樣就跟手動不沖突了。
回復

使用道具 舉報

7#
ID:161164 發表于 2021-7-12 01:24 | 只看該作者
自動化控制,手動的權限大於自動
你必需讓系統知到什麼命令是自動什麼是手動
方法有二
1. 為各燈加上各自的手/自控制切換按鈕
2. 把某按鈕命令(如關燈)設為手動,當後就開燈把權限交還自動
如按鈕有限,就選方法2
  1.                                                 switch(num)
  2.                                                 {//Manual_LEDx 為bit類型
  3.                                                         case 1:Manual_LED1=~Manual_LED1;break;
  4.                                                         case 4:Manual_LED2=~Manual_LED2;break;
  5.                                                         case 7:Manual_LED3=~Manual_LED3;break;
  6.                                                         case 0:Manual_LED4=~Manual_LED4;break;
  7.                                                         default:break;
  8.                                                 }

  9. void kai(void)//開燈
  10. {        //此方法使用bit位對單個端口賦值
  11.         //將P1.0口賦值 0,對外輸出低電平
  12.         LED1=Manual_LED1;
  13.         LED2=Manual_LED2;
  14.         LED3=Manual_LED3;
  15.         LED4=Manual_LED4;
  16. }
復制代碼



評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:934353 發表于 2021-7-12 17:27 | 只看該作者
設置手動開關燈的權限大于自動的,我覺得可以用中斷,外部中斷或者定時器中斷都可
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区久久久久久久网精 | 久久成人免费 | 99色视频 | 久草免费在线视频 | 九色综合网 | 中文字幕91 | 在线免费黄色 | 一级欧美一级日韩片 | 国产精品永久免费视频 | 国产高清视频 | 久热久热 | 成人精品| 99热在线播放 | 亚洲精品一区二区三区四区高清 | 久久久久久久av | 欧美在线国产精品 | 久久久久久国产精品免费免费男同 | 成年人免费看 | 做a视频在线观看 | 日韩视频在线播放 | 久久综合久久久 | 亚洲va国产日韩欧美精品色婷婷 | 国产日韩精品在线 | 日韩手机在线看片 | 亚洲第一区久久 | 韩国主播午夜大尺度福利 | 亚洲精品久久久久国产 | 日韩精品四区 | 99久久亚洲 | 国产精品成人品 | 国产视频不卡一区 | 亚洲成人高清 | 国内精品久久影院 | 日韩视频区 | 国产91在线播放 | 国产成人综合网 | 久久精品中文 | 视频一区二区三区在线观看 | 日韩免费一级 | caoporon| 日日干日日 |