找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2202|回复: 1
收起左侧

STM32智能家居源码

[复制链接]
ID:426797 发表于 2020-5-15 15:00 | 显示全部楼层 |阅读模式
智能家居源码
51hei.png
单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd43.h"
  6. #include "usart.h"         
  7. #include "24cxx.h"
  8. #include "touch.h"         
  9. #include "gui.h"
  10. #include "gui_time.h"
  11. #include "mygui.h"
  12. #include "sram.h"
  13. #include "24l01.h"
  14. #include "timer.h"
  15. #include "beep.h"
  16. #include "mygui_clock.h"
  17. #include "exfuns.h"
  18. #include "malloc.h"
  19. #include "mygui_inc.h"
  20. #include "myfont.h"
  21. #include "sim900a.h"
  22. #include "USART2.h"
  23. /******************************************************************/
  24. /*本程序只供学习使用,未经作者许可,不得用于其它任何用途                  */
  25. /*本程序接口按神舟Ⅲ号stm开发板设计,如有错误,诚请指正!                  */
  26. /*本程序中部分内容来自互联网,若未注明原作者,恳请谅解!                    */
  27. /*作者 :XING ZHE REN                                                                                           */         
  28. /*建立日期: 2014.1.18                                                                                          */
  29. /*版本:V2.0                                                                                                          */
  30. /*Copyright(C) DATOU                                                                                          */
  31. /******************************************************************/
  32. extern void TIM4_Int_Init(u16 arr,u16 psc);
  33. extern u8 TIM4_USE;



  34. int main(void)
  35. {       
  36.         DIR picdir;                         //图片目录         
  37.         delay_init();                     //延时函数初始化          
  38.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  39.         uart_init(9600);                 //串口初始化为9600
  40.         LED_Init();                             //LED端口初始化
  41.         LCD43_Init();       
  42.         KEY_Init();
  43.         FSMC_SRAM_Init();                        // Init  sram          
  44.         TIM3_Init(2,36000-1);
  45.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);  //必须加!!!!!
  46.         GUI_Init();
  47.         tp_dev.init();
  48.          
  49.         NRF24L01_Init();
  50.         BEEP_Init();
  51.          
  52.         while(NRF24L01_Check());
  53.         mem_init(SRAMIN);        //初始化内部内存池
  54.         exfuns_init();                                        //为fatfs相关变量申请内存
  55.         f_mount(0,fs[0]);                                  //挂载SD卡
  56.         while(f_opendir(&picdir,"0:/PICTURE"))//打开图片文件夹
  57.         {            
  58.                 LCD_ShowString(0,0,200,16,16,"PICTURE ER");
  59.                 delay_ms(200);                                  
  60.                 LCD_Fill(60,150,240,146,WHITE);//清除显示             
  61.                 delay_ms(200);                                  
  62.         }           
  63.        
  64.         KEY_Init();
  65.         USART2_Init(36,115200);         
  66.         USE_XBF_YAHEI_9();
  67.         GUI_SetFont(&Font_YAHEI9);       
  68.         GUI_SetTextMode(GUI_TM_TRANS);
  69. //        GUI_SetColor(BLACK);

  70.         while(1)
  71.         {               
  72.                
  73.         //        sim900a_test();
  74.                 Main_Task();         
  75.         }

  76. }
复制代码

  1. #include<stc12c5a.h>
  2. #include"24l01.h"
  3. #include"18b20.h"
  4. #include"usart.h"
  5. #include"spi.h"
  6. #include"1602.h"
  7. #include"delay.h"
  8. #include"bujin.h"
  9. #include"control_dev.h"
  10. #include"ds1302.h"

  11. uchar Buff[32];
  12. bit ReadTimeFlag;//定义读时间标志

  13. _CONTROL_DEV CONTROL_DEV = {
  14.         0,       //窗帘
  15.         0,                                //灯光
  16.         0,                                //火焰
  17.         0,                                //烟雾
  18. };
  19. /******************************************
  20.              控制器各位初始化
  21. *******************************************
  22. */
  23. void CONTROL_DEV_Init(void)
  24. {
  25.         CONTROL_DEV.Curtain_sta = Buff[CURTAIN];
  26.         Buff[LIGHTING] = 1;
  27.         Buff[FIRE]=1;
  28.         Buff[SMOG]=1;
  29. //        Buff[NRF_TERMINAL_MODE_CHANGE] = OFF;
  30. }

  31. void Timer0Init(void)                //1??@11.0592MHz
  32. {
  33.         AUXR |= 0x80;                //?????1T??
  34.         TMOD &= 0xF0;                //???????
  35.         TMOD |= 0x01;                //???????
  36.         TL0 = 0xCD;                //??????
  37.         TH0 = 0xD4;                //??????
  38.         TF0 = 0;                //??TF0??       
  39.         ET0 = 1;
  40.         EA  = 1;
  41.         TR0 = 1;                //???0????
  42. }

  43. void Timer0_isr(void) interrupt 1
  44. {
  45.         static unsigned int num;
  46.         TL0 = 0xCD;                //??????
  47.         TH0 = 0xD4;                //??????
  48.         num++;
  49.         if(num==100)        //大致100ms
  50.    {
  51.     num=0;
  52.     ReadTimeFlag=1; //读标志位置1
  53.         }
  54. }

  55. void main(void)
  56. {  
  57.         unsigned char temp[16];//定义显示区域临时存储数组
  58.         int i;                 //注意i须为有符号型
  59.         uchar cnt=0;
  60.         uchar NRF_Mode=0;
  61.         LCD_Init();
  62.         UsartInit();
  63.         Timer0Init();
  64.         Ds1302_Init();
  65.         CONTROL_DEV_Init();
  66.        
  67.         while(NRF24L01_Check())//检测24L01
  68.         {
  69.                 LCD_Str(0,0,"CHECK 24L01 !"); delay_ms(500);
  70.                 LCD_Str(0,0,"             "); delay_ms(500);
  71.                 } LCD_Str(0,0," NRF_connect:OK");
  72.                 LCD_Str(8,1,"Fire:FT");
  73.                 LCD_Str(8,1,"Fire:OK");
  74.                 LCD_Str(0,1,"Smog:FT ");
  75.                 LCD_Str(0,1,"Smog:OK ");
  76.         RX_Mode();                                                        //重要,不加程序跑飞
  77.         NRF_Mode=RECEIVE;
  78.         Ds1302_Write_Time();       
  79.         while(1)
  80.         {

  81.                 printf("mode:%d\n",(int)NRF_Mode);
  82.                 if(NRF_Mode==RECEIVE)                        //0接收
  83.                 {                               
  84.                         if(NRF24L01_RxPacket(Buff)==0)
  85.                         {       
  86.                                 NRF_Mode=SEND;                //printf("  RX_OK");
  87.                                 TX_Mode();                                                       
  88.                                 if(CONTROL_DEV.Curtain_sta != Buff[CURTAIN])
  89.                                 {
  90.                                         i=Buff[CURTAIN] - CONTROL_DEV.Curtain_sta;                                       
  91.                                         if(i>0)         
  92.                                                 go(i*8, 1);
  93.                                         else if(i<0)
  94.                                                 back((0-i*8), 1);                //printf("back");                           注意数值的符号!!!!1                       
  95.                                         CONTROL_DEV.Curtain_sta = Buff[CURTAIN];
  96.                                         i=0;
  97.                                 }
  98.                                 if( Buff[LIGHTING] == 0)
  99.                                 {
  100.                                         Light = 0;
  101.                                 }else if ( Buff[LIGHTING] == 1)
  102.                                         Light = 1;
  103.                         }
  104.                 }else if(NRF_Mode==SEND)                        //发送
  105.                 {                                       
  106.                         Buff[FIRE]=Fire;
  107.                         Buff[SMOG]=Smog;
  108.                         if(NRF24L01_TxPacket(Buff)==TX_OK)
  109.                         {
  110.                                 NRF_Mode=RECEIVE;
  111.                                 RX_Mode();                                                //printf("  TX_OK");
  112.                         }
  113.                 }

  114.                
  115. /*                 if(ReadTimeFlag==1) //定时读取ds1302 定时时间到 则标志位置1,处理过时间参数标志位清零
  116.                 {
  117.                   ReadTimeFlag=0;  //标志位清零
  118.                   Ds1302_Read_Time();//读取时间参数
  119. //                  sprintf(temp,"DATE %02d-%02d-%02d %d",(int)time_buf1[1],(int)time_buf1[2],(int)time_buf1[3],(int)time_buf1[7]);//年月日周
  120. //                  LCD_Str(0,0,temp);//显示第一行
  121. //                  sprintf(temp,"TIME %02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
  122. //                  LCD_Str(0,1,temp);//显示第二行
  123.                         //printf("TIME %02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
  124.                 }

  125.    */
  126.   
  127.         }       
  128. }















  129. //void Temp_Change(uchar i)
  130. //{
  131. //        temp=ReadTemp()*20/32;
  132. //        Buff[i++]=temp%1000/100+'0';
  133. //        Buff[i++]=temp%100/10+'0';
  134. //        Buff[i++]='.';
  135. //        Buff[i++]=temp%10+'0';
  136. //        Buff[i]='\0';
  137. //        LCD_Str(12,0,&Buff[9]);       
  138. //}
复制代码


所有资料51hei提供下载:
智能家居系统源代码.7z (2.67 MB, 下载次数: 15)
回复

使用道具 举报

ID:1 发表于 2020-5-15 17:09 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表