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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機藍橋杯智能風扇程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:882665 發表于 2021-6-27 08:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
工作模式
設備具有“睡眠風”、“自然風”和“常風”三種工作模式可以通過按鍵切換,通過
單片機 P34 引腳輸出脈寬調制信號控制電機運行狀態,信號頻率為 1KHz。
1.1 “睡眠風”模式下,對應 PWM 占空比為 20%;
1.2 “自然風”模式下,對應 PWM 占空比為 30%;
1.3 “常風”模式下,對應 PWM 占空比為 70%;
2. 數碼管顯示
數碼管實時顯示設備當前工作模式和剩余工作時間(倒計時),如圖 2 所示。
- - 1 1 - - 8 8 0 0 0 0 5 5 0 0
工作模式:睡眠風 熄滅 剩余工作時間:50 秒
圖 2.工作模式和剩余工作時間顯示
“睡眠風”狀態下,對應數碼管顯示數值為 1,自然風模式下,顯示數值為 2,常
風模式下,顯示數值為 3。
3. 按鍵控制
使用 S4、S5、S6、S7 四個按鍵完成按鍵控制功能。
2.1 按鍵S4定義為工作模式切換按鍵,每次按下S4,設備循環切換三種工作模式。
工作過程如下:
2.2 按鍵 S5 定義為“定時按鍵”每次按下 S5,定時時間增加 1 分鐘,設備的剩余
工作時間重置為當前定時時間,重新開始倒計時,工作過程如下:
設備剩余工作時間為 0 時,停止 PWM 信號輸出。
2.3 按鍵 S6 定義為“停止”按鍵,按下 S6 按鍵,立即清零剩余工作時間,PWM
信號停止輸出,直到通過 S5 重新設置定時時間。
2.4 按鍵 S7 定義為“室溫”按鍵,按下 S7,通過數碼管顯示當前室溫,數碼管顯
示格式如圖 3 所示,再次按下 S7,返回圖 2 所示的工作模式和剩余工作時間
睡眠風 自然風 常風
0 分鐘 1 分鐘 2 分鐘
3 / 4
顯示界面,如此往復。
- - 4 4 - - 8 8 8 8 2 2 5 5 C C
室溫顯示 熄滅 當前室內:25℃
圖 3.室溫顯示界面
室溫測量、顯示功能不應影響設備正在執行的 PWM 信號輸出、停止、模式切
換和計時等功能。
4. LED 指示燈
“睡眠風”模式下,L1 點亮,“自然風”模式下 L2 點亮,“常風”模式下 L3 點亮;
按下停止按鍵或倒計時結束時,LED 全部熄滅。

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<dulianjian.h>
  3. #include<shumaguan.h>
  4. #include<onewire.h>
  5. void Timer0Init();
  6. void anjian();
  7. unsigned char jianzhi;
  8. unsigned char fengsu=1;
  9. unsigned char time;       
  10. unsigned char wendu;
  11. unsigned char t;
  12. unsigned char c;
  13. static unsigned char s=0;
  14. static unsigned char w=0;
  15. unsigned char timeplay[8];
  16. unsigned char wenduplay[8];
  17. bit anjianflag;
  18. bit wenduflag;
  19. void main()
  20. {
  21. Timer0Init();
  22. P2=0X80;P0=~0X00;P2=0X00;
  23. P2=0X80;P0=~0X01;P2=0X00;

  24. while(1)
  25. {
  26. timeplay[0]=17;timeplay[1]=fengsu;timeplay[2]=17;timeplay[3]=16;timeplay[4]=0;
  27. timeplay[5]=time/100;
  28. timeplay[6]=(time%100)/10;
  29. timeplay[7]=time%10;
  30. if(wenduflag)
  31. {
  32. wendu=(unsigned char)rd_temperature_f();
  33. }
  34. wenduplay[0]=17;wenduplay[1]=4;wenduplay[2]=17;wenduplay[3]=16;wenduplay[4]=16;
  35. wenduplay[5]=wendu/10;
  36. wenduplay[6]=wendu%10;
  37. wenduplay[7]=12;
  38. if(anjianflag==1)
  39. {
  40. jianzhi=zhuangtaiji();
  41. if(jianzhi==1)
  42. {
  43. c++;
  44. P2=0X80;P0=~0X00;P2=0X00;
  45. P2=0X80;P0=~0X01;P2=0X00;
  46. }
  47. if(jianzhi==2)
  48. {
  49. time=0;t=0;
  50. }
  51. if(jianzhi==3)
  52. {
  53. t++;
  54. if(t==1)time=60;
  55. if(t==2)time=120;
  56. if(t==3)
  57. {
  58. time=0;t=0;
  59. }
  60. }
  61. if(jianzhi==4)
  62. {
  63. fengsu++;
  64. if(fengsu==1)
  65. {
  66. P2=0X80;P0=~0X00;P2=0X00;
  67. P2=0X80;P0=~0X01;P2=0X00;
  68. }
  69. if(fengsu==2)
  70. {
  71. P2=0X80;P0=~0X00;P2=0X00;
  72. P2=0X80;P0=~0X02;P2=0X00;
  73. }
  74. if(fengsu==3)
  75. {
  76. P2=0X80;P0=~0X00;P2=0X00;
  77. P2=0X80;P0=~0X04;P2=0X00;
  78. }
  79. if(fengsu==4)
  80. {
  81. fengsu=1;
  82. P2=0X80;P0=~0X00;P2=0X00;
  83. P2=0X80;P0=~0X01;P2=0X00;
  84. }
  85. }
  86. }
  87. }
  88. }
  89. void Timer0Init(void)                //1毫秒@11.0592MHz
  90. {
  91.         AUXR |= 0x80;                //定時器時鐘1T模式
  92.         TMOD &= 0xF0;                //設置定時器模式
  93.         TL0 = 0xAE;                //設置定時初值
  94.         TH0 = 0xFB;        //設置定時初值
  95.         TF0 = 0;                //清除TF0標志
  96.         TR0 = 1;                //定時器0開始計時
  97.         ET0=1;
  98.         EA=1;
  99. }
  100. void tm0_isr() interrupt 1
  101. {
  102.         static int shumaguancount;static int anjiancount;static int timecount;
  103.         shumaguancount++;anjiancount++;timecount++;
  104.     TL0 = 0xAE;                //設置定時初值
  105.         TH0 = 0xFB;               //reload timer0 high byte

  106.     if (shumaguancount == 20)               //1ms * 1000 -> 1s
  107.     {
  108.         shumaguancount = 0;
  109.                 if(c%2==0)
  110.                 {
  111.                 display(timeplay[s],w);
  112.                 wenduflag=0;
  113.                 }
  114.                 if(c%2==1)
  115.                 {
  116.                 display(wenduplay[s],w);
  117.                 wenduflag=1;
  118.                 }
  119.                 s++;w++;
  120.                 if(s==8)s=0;  
  121.                 if(w==8)w=0;            
  122.     }
  123.         if(anjiancount==100)
  124.         {
  125.         anjiancount=0;
  126.         anjianflag=1;
  127.         }
  128.         if(timecount==10000)
  129.         {
  130.         if(time>0)
  131.         time--;
  132.         }
  133. }
復制代碼

所有程序51hei提供下載:
fengshan2.zip (53.96 KB, 下載次數: 76)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

無效樓層,該帖已經被刪除
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表