智能家居源码
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd43.h"
- #include "usart.h"
- #include "24cxx.h"
- #include "touch.h"
- #include "gui.h"
- #include "gui_time.h"
- #include "mygui.h"
- #include "sram.h"
- #include "24l01.h"
- #include "timer.h"
- #include "beep.h"
- #include "mygui_clock.h"
- #include "exfuns.h"
- #include "malloc.h"
- #include "mygui_inc.h"
- #include "myfont.h"
- #include "sim900a.h"
- #include "USART2.h"
- /******************************************************************/
- /*本程序只供学习使用,未经作者许可,不得用于其它任何用途 */
- /*本程序接口按神舟Ⅲ号stm开发板设计,如有错误,诚请指正! */
- /*本程序中部分内容来自互联网,若未注明原作者,恳请谅解! */
- /*作者 :XING ZHE REN */
- /*建立日期: 2014.1.18 */
- /*版本:V2.0 */
- /*Copyright(C) DATOU */
- /******************************************************************/
- extern void TIM4_Int_Init(u16 arr,u16 psc);
- extern u8 TIM4_USE;
- int main(void)
- {
- DIR picdir; //图片目录
- delay_init(); //延时函数初始化
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(9600); //串口初始化为9600
- LED_Init(); //LED端口初始化
- LCD43_Init();
- KEY_Init();
- FSMC_SRAM_Init(); // Init sram
- TIM3_Init(2,36000-1);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); //必须加!!!!!
- GUI_Init();
- tp_dev.init();
-
- NRF24L01_Init();
- BEEP_Init();
-
- while(NRF24L01_Check());
- mem_init(SRAMIN); //初始化内部内存池
- exfuns_init(); //为fatfs相关变量申请内存
- f_mount(0,fs[0]); //挂载SD卡
- while(f_opendir(&picdir,"0:/PICTURE"))//打开图片文件夹
- {
- LCD_ShowString(0,0,200,16,16,"PICTURE ER");
- delay_ms(200);
- LCD_Fill(60,150,240,146,WHITE);//清除显示
- delay_ms(200);
- }
-
- KEY_Init();
- USART2_Init(36,115200);
- USE_XBF_YAHEI_9();
- GUI_SetFont(&Font_YAHEI9);
- GUI_SetTextMode(GUI_TM_TRANS);
- // GUI_SetColor(BLACK);
- while(1)
- {
-
- // sim900a_test();
- Main_Task();
- }
-
- }
复制代码
- #include<stc12c5a.h>
- #include"24l01.h"
- #include"18b20.h"
- #include"usart.h"
- #include"spi.h"
- #include"1602.h"
- #include"delay.h"
- #include"bujin.h"
- #include"control_dev.h"
- #include"ds1302.h"
- uchar Buff[32];
- bit ReadTimeFlag;//定义读时间标志
- _CONTROL_DEV CONTROL_DEV = {
- 0, //窗帘
- 0, //灯光
- 0, //火焰
- 0, //烟雾
- };
- /******************************************
- 控制器各位初始化
- *******************************************
- */
- void CONTROL_DEV_Init(void)
- {
- CONTROL_DEV.Curtain_sta = Buff[CURTAIN];
- Buff[LIGHTING] = 1;
- Buff[FIRE]=1;
- Buff[SMOG]=1;
- // Buff[NRF_TERMINAL_MODE_CHANGE] = OFF;
- }
- void Timer0Init(void) //1??@11.0592MHz
- {
- AUXR |= 0x80; //?????1T??
- TMOD &= 0xF0; //???????
- TMOD |= 0x01; //???????
- TL0 = 0xCD; //??????
- TH0 = 0xD4; //??????
- TF0 = 0; //??TF0??
- ET0 = 1;
- EA = 1;
- TR0 = 1; //???0????
- }
- void Timer0_isr(void) interrupt 1
- {
- static unsigned int num;
- TL0 = 0xCD; //??????
- TH0 = 0xD4; //??????
- num++;
- if(num==100) //大致100ms
- {
- num=0;
- ReadTimeFlag=1; //读标志位置1
- }
- }
- void main(void)
- {
- unsigned char temp[16];//定义显示区域临时存储数组
- int i; //注意i须为有符号型
- uchar cnt=0;
- uchar NRF_Mode=0;
- LCD_Init();
- UsartInit();
- Timer0Init();
- Ds1302_Init();
- CONTROL_DEV_Init();
-
- while(NRF24L01_Check())//检测24L01
- {
- LCD_Str(0,0,"CHECK 24L01 !"); delay_ms(500);
- LCD_Str(0,0," "); delay_ms(500);
- } LCD_Str(0,0," NRF_connect:OK");
- LCD_Str(8,1,"Fire:FT");
- LCD_Str(8,1,"Fire:OK");
- LCD_Str(0,1,"Smog:FT ");
- LCD_Str(0,1,"Smog:OK ");
- RX_Mode(); //重要,不加程序跑飞
- NRF_Mode=RECEIVE;
- Ds1302_Write_Time();
- while(1)
- {
- printf("mode:%d\n",(int)NRF_Mode);
- if(NRF_Mode==RECEIVE) //0接收
- {
- if(NRF24L01_RxPacket(Buff)==0)
- {
- NRF_Mode=SEND; //printf(" RX_OK");
- TX_Mode();
- if(CONTROL_DEV.Curtain_sta != Buff[CURTAIN])
- {
- i=Buff[CURTAIN] - CONTROL_DEV.Curtain_sta;
- if(i>0)
- go(i*8, 1);
- else if(i<0)
- back((0-i*8), 1); //printf("back"); 注意数值的符号!!!!1
- CONTROL_DEV.Curtain_sta = Buff[CURTAIN];
- i=0;
- }
- if( Buff[LIGHTING] == 0)
- {
- Light = 0;
- }else if ( Buff[LIGHTING] == 1)
- Light = 1;
- }
- }else if(NRF_Mode==SEND) //发送
- {
- Buff[FIRE]=Fire;
- Buff[SMOG]=Smog;
- if(NRF24L01_TxPacket(Buff)==TX_OK)
- {
- NRF_Mode=RECEIVE;
- RX_Mode(); //printf(" TX_OK");
- }
- }
-
- /* if(ReadTimeFlag==1) //定时读取ds1302 定时时间到 则标志位置1,处理过时间参数标志位清零
- {
- ReadTimeFlag=0; //标志位清零
- Ds1302_Read_Time();//读取时间参数
- // sprintf(temp,"DATE %02d-%02d-%02d %d",(int)time_buf1[1],(int)time_buf1[2],(int)time_buf1[3],(int)time_buf1[7]);//年月日周
- // LCD_Str(0,0,temp);//显示第一行
- // sprintf(temp,"TIME %02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
- // LCD_Str(0,1,temp);//显示第二行
- //printf("TIME %02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
- }
- */
-
- }
- }
- //void Temp_Change(uchar i)
- //{
- // temp=ReadTemp()*20/32;
- // Buff[i++]=temp%1000/100+'0';
- // Buff[i++]=temp%100/10+'0';
- // Buff[i++]='.';
- // Buff[i++]=temp%10+'0';
- // Buff[i]='\0';
- // LCD_Str(12,0,&Buff[9]);
- //}
复制代码
所有资料51hei提供下载:
智能家居系统源代码.7z
(2.67 MB, 下载次数: 15)
|