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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機定時控制系統,繼電器到設定時間亮起來后,時鐘停了,八位數碼管不顯示

[復制鏈接]
跳轉到指定樓層
樓主

定時控制系統可以顯示時間,并獨立控制兩組繼電器的開關狀態,具體功能如下:

(1)顯示時間,包括星期,小時,分鐘;

(2)分別間歇控制2個繼電器的開關,各繼電器的導通時間和斷開時間可以獨立設置,以分鐘為單位。例如間歇繼電器A導通n分鐘,關閉m分鐘,如此循壞。


求教各位幫忙看下單片機程序問題在哪里。多謝了。
  1. #include<reg51.h>
  2. #define uChar unsigned char
  3. #define uInt unsigned int
  4. uChar a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //段選0-9
  5. uChar b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                           //位選
  6. uChar second=50,minute=59,hour=23,day=07,count;
  7. sbit Key1 = P3^0; //繼電器確認設置
  8. sbit Key2 = P3^1; //調位
  9. sbit Key3 = P3^2; //加一
  10. sbit Key4 = P3^3; //切換

  11. sbit L1=P1^0;                //繼電器控制口
  12. sbit L2=P1^1;
  13. uChar a1=01,a2=01;        //間歇繼電器1的休息時間a1與工作時間a2
  14. uChar b1=01,b2=01;        //間歇繼電器2的休息時間b1與工作時間b2
  15. uChar a11=01,a21=01,b11=01,b21=01;        //記錄間歇繼電器組設置后的狀態
  16. /*********************延遲函數********************/
  17. void Delay(uInt t)
  18. {
  19. while(t)
  20. {
  21. t--;
  22. }
  23. }
  24. /*********************時分秒顯示函數*******************/
  25. void Dispaly1(uChar day,uChar hour,uChar minute)
  26. {
  27. /*********************第一位數碼管*********************/
  28. P2=b[0];
  29. P0=a[day/10];
  30. Delay(10);
  31. /*********************第二位數碼管*********************/
  32. P2=b[1];
  33. P0=a[day%10];
  34. Delay(10);
  35. /*********************第三位數碼管*********************/
  36. P2=b[2];
  37. P0=0x40;
  38. Delay(10);
  39. /*********************第四位數碼管*********************/
  40. P2=b[3];
  41. P0=a[hour/10];
  42. Delay(10);
  43. /*********************第五位數碼管*********************/
  44. P2=b[4];
  45. P0=a[hour%10];
  46. Delay(10);
  47. /*********************第六位數碼管*********************/
  48. P2=b[5];
  49. P0=0x40;
  50. Delay(10);
  51. /*********************第七位數碼管*********************/
  52. P2=b[6];
  53. P0=a[minute/10];
  54. Delay(10);
  55. /*********************第八位數碼管*********************/
  56. P2=b[7];;
  57. P0=a[minute%10];
  58. Delay(10);
  59. }
  60. /*********************繼電器狀態顯示函數********************/
  61. void Dispaly2(uChar a1,uChar a2,uChar b1,uChar b2)
  62. {
  63. P2=b[0];
  64. P0=a[a1/10];
  65. Delay(10);

  66. P2=b[1];
  67. P0=a[a1%10];
  68. Delay(10);

  69. P2=b[2];
  70. P0=a[a2/10];
  71. Delay(10);

  72. P2=b[3];
  73. P0=a[a2%10];
  74. Delay(10);

  75. P2=b[4];
  76. P0=a[b1/10];
  77. Delay(10);

  78. P2=b[5];
  79. P0=a[b1%10];
  80. Delay(10);

  81. P2=b[6];
  82. P0=a[b2/10];
  83. Delay(10);

  84. P2=b[7];
  85. P0=a[b2%10];
  86. Delay(10);
  87. }
  88. /*********************時鐘按鍵掃描函數*********************/
  89. void Keyscan1()
  90. {
  91. static uChar j=0;
  92. /*時鐘調位和數值加一功能*/
  93. if(Key2==0)
  94. {
  95. Delay(10);
  96. if(Key2==0)
  97. while(!Key2);
  98. j++;
  99. }
  100. if(j%4==1)
  101. {
  102. if(Key3==0)
  103. {
  104. Delay(10);
  105. if(Key3==0)
  106. while(!Key3);
  107. day++;
  108. if(day==8)
  109. day=1;
  110. }
  111. }
  112. if(j%4==2)
  113. {
  114. if(Key3==0)
  115. {
  116. Delay(10);
  117. if(Key3==0)
  118. while(!Key3);
  119. hour++;
  120. if(hour==24)
  121. hour=0;
  122. }
  123. }
  124. if(j%4==3)
  125. {
  126. if(Key3==0)
  127. {
  128. Delay(10);
  129. if(Key3==0)
  130. while(!Key3);
  131. minute++;
  132. if(minute==60)
  133. minute=0;
  134. }
  135. }
  136. }

  137. /*間歇繼電器掃描函數*/
  138. void Keyscan2()
  139. {
  140. static uChar n=0;
  141. /*調位和加一功能*/
  142. if(n%4==1)         
  143. {
  144. if(Key3==0)
  145. {
  146. Delay(10);
  147. if(Key3==0)
  148. while(!Key3);
  149. a1++;
  150. if(a1==10)          //繼電器1休息時間不超過10分鐘
  151. a1=1;
  152. }
  153. }
  154. if(n%4==2)
  155. {
  156. if(Key3==0)
  157. {
  158. Delay(10);
  159. if(Key3==0)
  160. while(!Key3);
  161. a2++;
  162. if(a2==10)           //繼電器1工作時間不超過10分鐘
  163. a2=1;
  164. }
  165. }
  166. if(n%4==3)
  167. {
  168. if(Key3==0)
  169. {
  170. Delay(10);
  171. if(Key3==0)
  172. while(!Key3);
  173. b1++;
  174. if(b1==10)                //繼電器2休息時間不超過10分鐘
  175. b1=1;
  176. }
  177. }
  178. if(n%4==0)
  179. {
  180. if(Key3==0)
  181. {
  182. Delay(10);
  183. if(Key3==0)
  184. while(!Key3);
  185. b2++;
  186. if(b2==10)                //繼電器2工作時間不超過10分鐘
  187. b2=1;
  188. }
  189. }
  190. }

  191. /************************************************/
  192. /***************主函數***************************/
  193. /************************************************/
  194. void main()
  195. {                                                
  196. TMOD=0x01;          /*定時器以方式一工作*/
  197. TH0=(65536-10000)/256;
  198. TL0=(65536-10000)%256;/*10ms計時*/
  199. EA=1;
  200. ET0=1;/*允許定時器0中斷*/
  201. TR0=1;/*打開定時器0*/
  202. while(1)
  203. {
  204. static uChar h=0;
  205. /*時鐘和繼電器切換功能*/
  206. if(Key4==0)
  207. {
  208. Delay(10);
  209. if(Key4==0)
  210. while(!Key4);
  211. h++;
  212. }
  213. if(h%2==0)/*如果按鍵偶數次則顯示時鐘*/
  214. {
  215. Dispaly1(day,hour,minute);
  216. Keyscan1();
  217. }

  218. if(h%2==1)/*如果按鍵奇數次則顯示日期*/
  219. {
  220. Dispaly2(a1,a2,b1,b2);

  221. Keyscan2();
  222. Delay(10);
  223. if(Key1==0)                                //按鍵K4按下確定設置并退出
  224.         {
  225.                 Delay(10);
  226.                 a11=a1;
  227.                 a21=a2;
  228.                 b11=b1;
  229.                 b21=b2;
  230.                 break;
  231.                
  232.         }
  233. }
  234. }
  235. }
  236. /**********************中斷函數**************************/
  237. void time0_int(void) interrupt 1
  238. {
  239. TH0=(65536-10000)/256;
  240. TL0=(65536-10000)%256;
  241. count++;
  242. if(count==100)/*10ms??ê±£???100′??ò??o?1s*/
  243. {
  244. count=0;
  245. second++;
  246. if(second==60)
  247. {
  248. second=0;
  249. minute++;
  250. if(L1==1)
  251.                         {
  252.                                 a11--;
  253.                                 if(a11==0)
  254.                                 {
  255.                                         L1=0;
  256.                                         a11=a1;
  257.                                 }
  258.                         }
  259.                
  260.                         if(a21==0)
  261.                         {
  262.                                 L1=1;
  263.                                 a21=a2;
  264.                         }
  265.                         else if(L1==0)
  266.                         {
  267.                                 a21--;
  268.                         }
  269.                         if(L2==1)
  270.                         {
  271.                                 b11--;
  272.                                 if(b11==0)
  273.                                 {
  274.                                         L2=0;
  275.                                         b11=b1;
  276.                                 }
  277.                         }

  278.                         if(b21==0)
  279.                         {
  280.                                 L2=1;
  281.                                 b21=b2;
  282.                         }
  283.                         else if(L2==0)
  284.                         {
  285.                                 b21--;
  286.                         }
  287. if(minute==60)
  288. {
  289. minute=0;
  290. hour++;
  291. if(hour==24)
  292. {
  293. day++;
  294. hour=0;
  295. minute=0;
  296. second=0;
  297. if(day==7)
  298. {
  299. day=01;
  300. hour=0;
  301. minute=0;
  302. second=0;
  303. }
  304. }
  305. }
  306. }
  307. }
復制代碼

2.png (133.04 KB, 下載次數: 68)

2.png

1.png (136.02 KB, 下載次數: 67)

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲天堂久久新 | 在线播放一区 | 亚洲精品在线免费播放 | 日韩一级黄色片 | www.日日夜夜 | 中文字幕在线观看第一页 | 韩国精品一区 | 9999在线视频 | 91久久国产精品 | 亚洲综合小视频 | 九九热在线观看 | 国产剧情久久 | 久久久久亚洲精品 | hsck成人网 | 国产极品车模吞精高潮呻吟 | 精品久久国产 | 欧美二区在线 | 久久精品视频亚洲 | www.9191 | 亚洲精品乱码久久久久久9色 | 综合久久国产 | 国产精品爱久久久久久久 | 在线久草| 国产一区h| 精品欧美一区免费观看α√ | 日本羞羞影院 | 午夜免费影视 | 亚洲一区二区三区四区在线观看 | 久久一级大片 | 国产精品毛片一区二区在线看 | 国产在视频一区二区三区吞精 | 欧美一区二区成人 | www视频在线观看 | 免费色网址 | 99久久精品免费看国产小宝寻花 | av中文在线观看 | 91久久| 欧美精品tv| 欧美日韩精品一区 | 精品欧美一区二区三区久久久 | 成人av在线播放 |