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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10047|回復: 23
收起左側

單片機自動窗簾控制系統設計(煙霧+燈控)帶程序+仿真+文檔等資料

  [復制鏈接]
ID:284357 發表于 2019-2-27 17:54 | 顯示全部樓層 |閱讀模式
內涵程序,文檔,仿真圖等文件,需要的請下載

智能窗戶  AT89S52  1602顯示  步進電機轉動模擬開窗關窗

(1)手動控制:該功能是根據用戶的需求通過按鍵進行窗簾的開關,此功能可以使窗簾的開閉處于任何一種狀態;
(2)光照自動控制:系統可以根據用戶設定的光照強度值通過感光器采集光照自動開關窗簾;
(3)時間控制:此功能是根據用戶設定的時間一次性開關窗簾,并顯示當前溫度。

(4)溫度報警系統:可以自行設置溫度報警溫度。
(5)時間顯示及鬧鐘系統:可以自行設置鬧鐘時間。
(6)手動自動控制按鍵隨時切換

制作出來的自動窗簾實物圖如下:
IMG_5972.JPG IMG_5973.JPG

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png

智能窗戶元件清單
1)    9*15萬用板
2)    STC89C52單片機
3)    40腳IC座
4)    LCD1602液晶
5)    16P液晶IC座
6)    10k電阻*2
7)    1K電阻*4
8)    8550三極管*2
9)    MO-2煙霧模塊
10)    4P排針
11)    杜邦線*4
12)    蜂鳴器
13)    5MM草帽LED燈*3
14)    10uf電容
15)    30pf電容*2
16)    12M晶振
17)    輕觸按鍵*6
18)    ULN2003A芯片
19)    16腳IC座
20)    步進電機
21)    5P白色插口
22)    DS1302
23)    ADC0832
24)    8腳IC座*2
25)    32.768K晶振
26)    3V紐扣電池(含底座)
27)    光敏電阻
28)    103電位器
29)    3P圓孔母座
30)    DS18B20溫度傳感器
31)    自鎖開關
32)    DC電源插口
33)    導線若干
34)    電池盒

單片機自動窗簾源程序:

  1. #include <reg52.h>
  2.    
  3. #define uchar unsigned char
  4. #define uint  unsigned int  
  5. bit flag_200ms ;
  6. sbit beep = P1^7;     //蜂鳴器IO口定義
  7. sbit LED=P2^7;        //燈光模塊
  8. sbit yw=P2^6;         //煙霧模塊
  9. bit flag_relay_en;   
  10. uchar flag_kaig_moshi=0;//開關模式
  11. bit flag_zd_sd;    //自動 手動 模式
  12. bit flag_lj_en;   //按鍵連加使能
  13. bit flag_lj_3_en;  //按鍵連3次連加后使能 加的數就越大了
  14. uchar key_time,flag_value;      //用做連加的中間變量
  15. bit key_500ms  ;
  16. uchar menu_shudu = 20;  //用來控制連加的速度
  17. uchar value,i;
  18. uchar k_shi=1,k_fen=2; //開窗簾時間
  19. uchar g_shi=3,g_fen=4;   //關窗簾時間

  20. uint t_high;                  //高溫報警值
  21. sbit DO=P3^7;  //DO定義為P1口的第4位腳,連接ADC0832DO腳
  22. sbit SCL=P3^6;  //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
  23. sbit CS=P3^5;  //CS定義為P1口的第4位腳,連接ADC0832CS腳
  24. uchar guanxian,guanxian_set = 4;     //光線
  25. void write_eepom();

  26. #include "eepom52.h"
  27. #include "key.h"
  28. #include "ds1302.h"
  29. #include "lcd1602.h"
  30. #include "18b20_2lu.h"
  31. #include "bujindianji.h"
  32. sbit key_jia = P3^1;   //加
  33. sbit key_jie = P3^2;   //減

  34. /*************寫單片機內部EEPOM*************/
  35. void write_eepom()
  36. {
  37. SectorErase(0x2000);
  38. byte_write(0x2000,flag_zd_sd);
  39. byte_write(0x2001,k_shi%256);
  40. byte_write(0x2002,k_fen%256);
  41. byte_write(0x2003,g_shi%256);
  42. byte_write(0x2004,g_fen%256);
  43. byte_write(0x2005,t_high%256);
  44. byte_write(0x2009,guanxian_set%256);
  45. byte_write(0x2010,bjdj_value%256);
  46. byte_write(0x2050,a_a);
  47. }
  48. /*************讀單片機內部EEPOM*************/
  49. void read_eepom()
  50. {
  51. flag_zd_sd = byte_read(0x2000);
  52. k_shi  = byte_read(0x2001);
  53. k_fen  = byte_read(0x2002);
  54. g_shi  = byte_read(0x2003);
  55. g_fen  = byte_read(0x2004);
  56. t_high  = byte_read(0x2005);
  57. guanxian_set  = byte_read(0x2009);
  58. bjdj_value  = byte_read(0x2010);
  59. a_a = byte_read(0x2050);
  60. }
  61. /*************初始化EEPROM************/
  62. void init_eepom() //初始化EEPROM
  63. {
  64. read_eepom();
  65.   if(a_a == 0xff)
  66. {
  67.   flag_zd_sd = 1;     //模式設置
  68.   a_a = 1;
  69.   k_shi=8;
  70.   k_fen=2;   //開
  71.   g_shi=3;
  72.   g_fen=4;   //關
  73.   t_high  = 35;
  74.   guanxian_set = 4;
  75.   bjdj_value  = 0;
  76.   write_eepom();  
  77. }
  78. }
  79. #include "menu.h"
  80. /***************讀數模轉換數據****************/
  81. //請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的
  82.       //  1  0  0 通道
  83.       //  1  1  1 通道
  84. unsigned char ad0832read(bit SGL,bit ODD)
  85. {
  86. unsigned char i=0,value=0,value1=0;  
  87.   SCL=0;
  88.   DO=1;
  89.   CS=0;  //開始
  90.   SCL=1;  //第一個上升沿
  91.   SCL=0;
  92.   DO=SGL;
  93.   SCL=1;   //第二個上升沿
  94.   SCL=0;
  95.   DO=ODD;
  96.   SCL=1;     //第三個上升沿
  97.   SCL=0;     //第三個下降沿
  98.   DO=1;
  99.   for(i=0;i<8;i++)
  100.   {
  101.    SCL=1;
  102.    SCL=0; //開始從第四個下降沿接收數據
  103.    value<<=1;
  104.    if(DO)
  105.     value++;      
  106.   }
  107.   for(i=0;i<8;i++)
  108.   {   //接收校驗數據
  109.    value1>>=1;
  110.    if(DO)
  111.     value1+=0x80;
  112.    SCL=1;
  113.    SCL=0;
  114.   }
  115.   CS=1;
  116.   SCL=1;
  117.   if(value==value1)  //與校驗數據比較,正確就返回數據,否則返回0
  118.    return value;
  119. return 0;
  120. }

  121. /******************1ms 延時函數*******************/
  122. void delay_1ms(uint q)
  123. {
  124. uint i,j;
  125. for(i=0;i<q;i++)
  126.   for(j=0;j<120;j++);
  127. }
  128. /*************定時器0初始化程序***************/
  129. void init_1602_ds1302()
  130. {
  131. write_sfm2_ds1302(2,4,nian);
  132. write_sfm2_ds1302(2,7,yue);
  133. write_sfm2_ds1302(2,10,ri);
  134. write_sfm2_ds1302(1,4,shi);
  135. write_sfm2_ds1302(1,7,fen);
  136. write_sfm2_ds1302(1,10,miao);
  137. write_sfm1(1,14,week);  
  138. }            
  139. /*************定時器0初始化程序***************/
  140. void init_time0()   
  141. {
  142. EA   = 1;     //開總中斷
  143. TMOD = 0X01;   //定時器0、工作方式1
  144. ET0  = 1;    //開定時器0中斷
  145. TR0  = 1;    //允許定時器0定時
  146. }
  147. /*************手動開關窗簾***************/
  148. void shoudong_kaiguan()   //手動開關窗簾
  149. {
  150. if(flag_zd_sd == 0)   //手動模式
  151. {
  152.   if(guanxian <= guanxian_set)
  153.     LED=0;
  154.    else
  155.     LED=1;
  156.   if(menu_1 == 0)
  157.   {
  158.    if(flag_kaig_moshi == 0)
  159.    {
  160.     if(key_can == 2)
  161.      flag_z_f = 1;     //手動開窗
  162.     if(key_can == 3)
  163.      flag_z_f = 2;     //手動關窗
  164.     if(flag_lj_en == 0)
  165.      flag_z_f = 0;
  166.    }
  167.   }
  168. }
  169. if(flag_kaig_moshi == 0)
  170. {

  171.   if(flag_zd_sd == 1)   //自動模式
  172.   {
  173.    
  174.    if(guanxian <= guanxian_set)
  175.     flag_z_f = 2;     //手動開窗
  176.    
  177.    
  178.    else
  179.     flag_z_f = 1;     //手動關窗
  180.    
  181.   
  182.   }
  183. }
  184. }
  185.                
  186. /*********************智能窗簾處理函數***********************/
  187. void zinengchuanglian_dis()   //智能窗簾處理函數
  188. {
  189. if((miao == 0) && (fen == k_fen) && (shi == k_shi))   //定時開窗
  190. {
  191.   flag_z_f = 2;    //關窗
  192.   beep=0;     //鬧鐘到
  193.   flag_kaig_moshi = 1;
  194. }
  195. if((miao == 0) && (fen == g_fen) && (shi == g_shi))   //定時關窗
  196. {
  197.   flag_z_f = 1;     //開窗   
  198.   flag_kaig_moshi = 2;
  199. }
  200. }

  201. void main()
  202. {
  203. init_eepom();   //初始化EEPROM
  204. init_1602();   //lcd1602初始化
  205. init_1602_dis_csf(); //lcd1602初始化顯示
  206. init_ds1302_io();  //初始化ds1302Io
  207. init_time0();   //初始化定時器
  208. menu_1_break();      //菜單初始界面
  209. init_ds1302();   //ds1302初始化
  210. temperature1 = read1_temp();  //讀溫度1
  211. delay_1ms(650);
  212. while(1)
  213. {
  214.   key();    //按鍵程序
  215.   if(key_can < 10)
  216.   {
  217.    key_with();
  218.   }
  219.   shoudong_kaiguan();   //手動開關窗簾
  220.   if(flag_200ms == 1)
  221.   {  
  222.    flag_200ms = 0;
  223.    temperature1 = read1_temp();  //讀溫度1 環境溫度
  224.    if(temperature1 >= 99)
  225.     temperature1 = 99;
  226.    zinengchuanglian_dis();   //智能窗簾處理函數
  227.    guanxian = ad0832read(1,0) * 9.0 / 255;
  228.    if((menu_1 == 0))
  229.    {
  230.     read_time();    //讀時間
  231.     init_1602_ds1302();   //顯示時鐘
  232.     write_sfm_18b20(2,13,temperature1); //顯示溫度
  233.     write_sfm1(2,0,guanxian); //顯示溫度
  234.        if(guanxian <= guanxian_set)
  235.     LED=0;
  236.    else
  237.     LED=1;
  238.     if((temperature1 >= t_high)||(yw==0))
  239.      beep = ~beep;   //蜂鳴器溫度煙霧報警
  240.     else
  241.      beep = 1;        
  242.    }
  243.   }
  244.   bujindj();  //步進電機函數
  245. }
  246. }
  247. void time0() interrupt 1
  248. {   
  249. static uchar value;
  250. TH0 = 0X3C;
  251. TL0 = 0XB0;    //50ms
  252. value ++;
  253. if(value >= 4)    //200ms
  254. {
  255.   value = 0;
  256.   flag_200ms = 1;
  257. }
  258. if(flag_lj_en == 1)    //按下按鍵使能
  259. {
  260.   key_time ++;
  261.   if(key_time >= menu_shudu) //500ms
  262.   {
  263.    key_time = 0;
  264.    key_500ms = 1; //500ms
  265.    flag_value ++;
  266.    if(flag_value > 3)
  267.    {
  268.     flag_value = 10;
  269.     flag_lj_3_en = 1; //3次后1.5秒后連加大些
  270.    }      
  271.   }
  272. }
  273. }
復制代碼

全部資料51hei下載地址:
基于單片機自動窗簾控制系統設計(煙霧+燈控).7z (10.17 MB, 下載次數: 445)

評分

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

查看全部評分

回復

使用道具 舉報

ID:481306 發表于 2019-2-28 07:12 來自手機 | 顯示全部樓層
非常不錯,感謝分享。
回復

使用道具 舉報

ID:247623 發表于 2019-2-28 09:45 | 顯示全部樓層
非常好,感謝
回復

使用道具 舉報

ID:333678 發表于 2019-2-28 19:25 | 顯示全部樓層
很好,多謝分享。
回復

使用道具 舉報

ID:496846 發表于 2019-3-23 17:41 | 顯示全部樓層
xqtop 發表于 2019-2-28 07:12
非常不錯,感謝分享。

能發我嗎   我下載不了
回復

使用道具 舉報

ID:497589 發表于 2019-4-19 22:26 | 顯示全部樓層
非常厲害的設計,功能很多,其實在這個實驗中還可以標注出各個獨立鍵在設置時所能設置的功能,方便用戶使用
回復

使用道具 舉報

ID:497589 發表于 2019-5-2 20:46 | 顯示全部樓層
樓主,你的這個作品 我試著做了  為什么時鐘顯示始終設置不了呢,而且顯示會出問題,設置了時間馬上就會還原了。求解
回復

使用道具 舉報

ID:116064 發表于 2019-5-4 10:41 | 顯示全部樓層
為什么,我無法下載
回復

使用道具 舉報

ID:536855 發表于 2019-5-13 13:07 | 顯示全部樓層
很不錯的程序設計,Nice!
回復

使用道具 舉報

ID:536855 發表于 2019-5-13 22:19 | 顯示全部樓層
下載以后嘗試了很不錯的東西!很縝密的
回復

使用道具 舉報

ID:537743 發表于 2019-5-14 10:45 | 顯示全部樓層
好東西,要弄個來試試。
回復

使用道具 舉報

ID:537743 發表于 2019-5-14 10:49 | 顯示全部樓層
如果可以配上遙控器就完美了。
回復

使用道具 舉報

ID:536855 發表于 2019-5-15 21:33 | 顯示全部樓層
嘗試了以后很棒的體驗
回復

使用道具 舉報

ID:540303 發表于 2019-5-24 16:12 | 顯示全部樓層
解了燃眉之急,很好用,謝謝
回復

使用道具 舉報

ID:660987 發表于 2019-12-10 20:38 | 顯示全部樓層
很nice
回復

使用道具 舉報

ID:633713 發表于 2019-12-11 14:34 來自手機 | 顯示全部樓層
很實用,不錯
回復

使用道具 舉報

ID:582255 發表于 2020-4-17 21:21 | 顯示全部樓層
好資料,學習了
回復

使用道具 舉報

ID:368810 發表于 2020-5-23 11:08 | 顯示全部樓層
樓主仿真圖里沒有光敏電阻啊?
回復

使用道具 舉報

ID:472519 發表于 2020-5-23 14:12 | 顯示全部樓層
謝謝分享!學習!!!
回復

使用道具 舉報

ID:755024 發表于 2020-11-2 16:58 來自手機 | 顯示全部樓層
很好滿足需求
回復

使用道具 舉報

ID:350104 發表于 2020-11-2 21:25 | 顯示全部樓層
這個確實好  優化擴展一下可以用在其他方面
回復

使用道具 舉報

ID:836287 發表于 2020-11-3 14:39 | 顯示全部樓層
非常不錯,我借用學習學習
回復

使用道具 舉報

ID:885457 發表于 2021-2-22 07:19 | 顯示全部樓層

非常不錯,我借用學習學習
回復

使用道具 舉報

ID:885725 發表于 2021-2-25 10:52 | 顯示全部樓層

清單中第14項10μf電容,板上好像沒有?

本帖最后由 whbt51h 于 2021-2-26 10:37 編輯

感謝樓主分享。請問這個16P的IC座是什么樣的?
清單.PNG
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品视频99在线观看免费 | 可以在线看的黄色网址 | 国产91视频免费 | 久久精品国产免费 | 成人福利在线 | 午夜影院黄 | 日韩精品视频一区二区三区 | 国产成人一区在线 | 国产日韩欧美在线观看 | 中文字幕在线第二页 | m豆传媒在线链接观看 | 操久久 | 日韩午夜场| 亚洲精品乱码久久久久久9色 | 黄免费看| 精品国产伦一区二区三区观看方式 | 亚洲午夜三级 | 亚洲一区二区三区在线 | 精品视频一区二区在线观看 | 亚洲精品乱码久久久久久按摩观 | 欧美在线一区二区三区 | 一级黄色毛片 | 欧美国产日韩在线观看成人 | 蜜月aⅴ国产精品 | 久久久天堂 | 99久久99热这里只有精品 | 久久精品色欧美aⅴ一区二区 | 成人午夜精品 | 久久久久久中文字幕 | 婷婷在线免费 | 天天拍天天操 | 日本午夜视频 | 精品小视频 | 日韩一区二区在线视频 | 国产精品精品视频一区二区三区 | 国产福利视频在线观看 | 免费看一区二区三区 | 九九热在线免费视频 | 黄色免费网 | 久久久亚洲 | 精品不卡 |