单片机智能房间设计

发布者:Ziyu2022最新更新时间:2015-06-15 来源: 51hei关键字:单片机  智能房间 手机看文章 扫描二维码
随时随地手机看文章
概况:
1,可用键盘控制各个房间的用电器.
2,也可用无线遥控控制各个房间里的电器.
3,也可连接电脑,用电脑程序,控制各个房间里的电器.
4,带一个大数码管实时时钟,用DS1302做.
只要时和分位,可代替大钟.
  整点报时(蜂鸣一下),可设定2 个闹铃,
5,可用4*4键盘直接调整时间,设定闹钟.
6,用两个单片机互相通讯.
7,一个单片机负责键盘,时钟,数码管显示,蜂鸣器
(取名2号机)
8,另一个单片机负责检测传感器输入,连接NRF24L01无线模块。输出控制各个房间用电器,(取名1号机)
9,现在想到输入传感器有,2个光敏电阻传感器,一个磁铁干簧管传感器。
10,输出器件有,各房间的电灯,风扇,一个报警号筒。
 
功能将会不断加.......
可学到的知识点:
我认最主要的是综合各个模块的能力。
1、DS1302的应用
2、键盘扫描程序、键盘输入程序、。。。
 
 
工程进展:
2012年4月3日
做了有一个星期了,已完成时间显示、4*4键盘直接调整时间、设定闹钟、整点报时。
 
 2012年4月9日
现将一些变量、功能函数名摘录如下。
bit tiaoshibz;//调时标示
uchar zhishuPointer;//调时 位指针
uchar xianshipointer;//显示旋转指针
uchar miaojilu;//秒记录,用于秒位闪烁
uchar miaojishu;//秒位闪亮的时间
bit miaobz;//秒位闪亮结束的标致
uchar data xiancun[4];//显示缓存 xiancun[0]为时的十位 xiancun[3]为分的个位
bit naozhongbz1,naozhongbz2;//闹钟启动标致
bit naozhongnaolingbz;//闹钟闹铃开始标致
uchar naozhong1[4];//闹钟用定时用  naozhong[0]为时的十位 naozhong[3]为分的个位
uchar naozhong2[4];
uchar zhengdianbaoshi;//整点报时
/********键盘用***********/
uchar code SKEY[16]={10,11,12,13,3,6,9,14,2,5,8,0,1,4,7,15};
uchar code act[4]={0xfe,0xfd,0xfb,0xf7};
uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/**********DS1302功能函数声明**************/
void DS1302InputByte(unsigned char d);
unsigned char DS1302OutputByte(void);
void Write1302(unsigned char ucAddr, unsigned char ucDa);
unsigned char Read1302(unsigned char ucAddr);
void DS1302_SetProtect(bit flag);
void DS1302_SetTime(unsigned char Address, unsigned char Value);
void DS1302_GetTime(struct Clock *Time);
void TimeToStr(struct Clock *Time,bit bz);
/*void DateToStr(struct Clock *Time);*/
void Initial_DS1302(void);
//void BurstWrite1302(unsigned char *pWClock); //往DS1302写入时钟数据(多字节方式)
//void BurstRead1302(unsigned char *pRClock); //读取DS1302时钟数据(时钟多字节方式)
//void DS1302_TimeStop(bit flag);           // 是否将时钟停止
/***********功能函数声明*******************/
char scan_key(void);
void ControlInput(uchar a);
uchar jianceshuzhi(uchar pointer,char n);//检测输入数值是否合法
void zhishu(void);//键盘直接输入
void naozhong(uchar bz1,uchar bz2);//闹钟 内含整点报时(蜂鸣一下)
void baojing(uint);//闹铃声
void shanshuo(uchar a);
/*********串口函数声明**************/
void fasong (uchar a); //发送一字节
void huiying(void); //回应电脑,(发送输入,输出的状态给电脑)   
void yingda(void);
void yueding(bit a);
void Stringfasong(uchar *p);
 
前天终于把两个单片机用SPI接口通讯的试验做成功了。
现在正在研究NRF24L01。把这个实验做成功,再添加到智能房间程序中,就可以用无线遥控家里的用电器了。
2012年5月1日
NRF24L01 收发实验己成功。
2012年5月6日
前几天研究NRF2401时,一不小心接错了线,烧坏了一块。
昨天又在淘宝上买了两块,现在还在路上。
这几天又研究了VB程序,就是在我去年编的那个人机界面上改的。取名叫“人机界面”。
 下面是截图:
 
能实现的功能有:
8个命令按钮可控制P0的状态,单击一次,状态取反。
绿色正方形指示P0各位状态。
8个绿色圆点指示P2口各位状态。
指示都是具有实时性的。只要端口状态改变,单片机就会把状态发给电脑指示出来。[page]
 
 前几天又加了个调时窗口,调时窗口的程序有检测输入时数据是否合法功能。对不合法的数据,将拒绝输入。
经过多次调试,现己实现了电脑对DS1302的调时。 
调时的过程是,电脑发把时间数据发给1号机,一号机再发给2号机,和电脑。
 
研究到无线模块这里,卡住了,这几天电脑也出问题。打算先放一段时间。2012年6月3日
 
这几天又有新进展了,无线模块,硬件实验成功,昨天又在淘宝上买了一个远距离的nRF24l01p,现在正在路上呢,我会尽把无线模块部分的程序整合到智能房间中去的。2012年7月16日
 
今天把PLC上模拟定时器功能给编出来了。
PLC上有T0到Tn个定时器,在单片编程中有时也要用到好多定时器到延时或别的什么的。我一直想用C语言实现这样的
功能。今天给做出来了。并在实验板上实验通过了。现在发出来与爱好单片机有朋友们分享。
#include   
#define uint unsigned int 
#define uchar unsigned char
//uchar code SEG87[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar jishu;
uint sec;//秒变量,可计大约18小时,
//加一个定时器就要加一个记录当前时间的变量 jilu
//和Tnbz标致 
uint jilu1,jilu2,jilu3,jilu4,jilu5;
bit t1bz,t2bz,t3bz,t4bz,t5bz;
sbit D1=P3^3;//定义按键输入
sbit D2=P3^4;
sbit D3=P3^5;
sbit D4=P3^2;
/****************************/
void delay(uint k)    
{       
uint data i,j;      
for(i=0;i {for(j=0;j<960;j++)     
{;}}       
}
/***********************************/
/***********************************/
void timer0(void) interrupt 1//用于计时
{
TH0=-(35000/256);
TL0=-(40000%256);
jishu++;
if(jishu==20)
sec++;//秒变量 尚未考虑sec溢出情况
 }
/***********************************/
void main(void)   
{    
  TH0=-(50000/256);
  TL0=-(50000%256);
  ET0=1;
  EA=1;
  TR0=1;
  sec=3600;
  while(1)    
{
//*****虚拟定时器1******  
 if(!t1bz)  
 { if(!D1)
   { delay(20);
     if(!D1)
     {jilu1=sec;
      t1bz=1;
     }
   }
 }
   if(sec-jilu1==2)//这里的 2 为延时时间,改就此值可
//改变延时时间
    {P2=0xef;
  t1bz=0;
  }
//*******************************
   if(!t2bz)  
 { if(!D2)
   { delay(20);
     if(!D2)
     {jilu2=sec;
      t2bz=1;
     }
   }
 }
   if(sec-jilu2==4)
    {P2=0xdf;
  t2bz=0;
  }
//*********************************
   if(!t3bz)  
 { if(!D3)
   { delay(20);
     if(!D3)
     {jilu3=sec;
      t3bz=1;
     }
   }
 }
   if(sec-jilu3==6)
    {P2=0xbf;
  t3bz=0;
  }
//*****下面是用虚拟定时器4,5实现P2^0位LED,闪烁。
if(!t4bz)  
   {    jilu5=0;
     jilu4=sec;
      t4bz=1;
 
 }
   if(sec-jilu4==1)
    {
 P2|=0x01;
  t5bz=1;
  }
//******************************
 if(t5bz)  
 { 
  jilu4=0;   
  jilu5=sec;
  t5bz=0;   
 }
   if(sec-jilu5==1)
    {P2&=0xfe;
  t4bz=0;
  } 
 }
}
自己感觉以上程序比较绕人,费脑子。有兴趣有朋友看的时候一定要有耐心哦。
2012年7月22日
智能房间的硬件工作,从上个星期天正式开始了。这次为了确保能稳定可靠的工作,我尽量的避免了用细如牛毛的细铜丝作跳线。下面的图片是进展情况。











2012年8月5日
智能房间硬件进展:[page]











 
2012年8月19日
昨天把传感器输入部分给做了一些。


用的是LM339 暂时接了3个传感器,两个光敏电阻,一个温度电阻,剩下的1/4作备份。

关键字:单片机  智能房间 引用地址:单片机智能房间设计

上一篇:数码管计时器程序
下一篇:32个算法介绍

推荐阅读最新更新时间:2024-03-16 14:03

给工业应用中的智能传感器变送器供电
智能传感器变送器在工厂自动化、生产过程用检测仪表和控制设备中得到了广泛的应用,用于测量温度、压力、流量、水平面和许多其他的过程变量。图 1 是现场变送器的方框图,其采用一个电阻式温度检测器 (RTD)、热敏电阻或热电偶来测量主要的变量。 图 1:针对过程控制应用的温度变送器方框图 该信号链路包括传感器模拟前端、微控制器 (MCU) 以及高精度模数转换器和数模转换器。 依靠 4-20mA 环路给智能传感器供电 虽然基本传感器变送器电路的 MCU 和数据转换器通常专为低工作电流而优化,但是高性能智能传感器应用中增加的功能导致了电流需求的升高。例如:当该电路包含了诸如隔离、校准和诊断、液晶显示器接口、或无线连接选项(如蓝牙低能耗
[电源管理]
给工业应用中的<font color='red'>智能</font>传感器变送器供电
基于51单片机设计的DS1302时钟程序
/****************************************************** #include reg52.h DS1302时钟程序 *******************************************************/ sbit ACC_0 = ACC^0; sbit ACC_1 = ACC^1; sbit ACC_2 = ACC^2; sbit ACC_3 = ACC^3; sbit ACC_4 = ACC^4; sbit ACC_5 = ACC^5; sbit ACC_6 = ACC^6; sbit ACC_7 = ACC^7; //************
[单片机]
基于CH375接口电路的LPT-USB打印机驱动器的设计与实现
1 引言 本课题来源于北京普析通用公司。 由于该公司现有光谱仪器的单机版(如1810和T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越少,有些用户原有的打印机只是USB接口而非并行口,因此现有仪器对打印机的支持不能适应用户需要。为了使该公司的并行口仪器直接和USB打印机相连,笔者设计了一种LPT-USB打印机驱动器,实现并口仪器与USB打印机的连接。 笔者利用单片机和USB总线接口器件实现LPT-USB打印机驱动器的设计。利用该设计将能够实现并行打印口数据在USB打印机上的直接打印,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户的使用。 2 CH375的特点及工作原理
[应用]
51单片机定时/计数器C语言应用实例
  /************      设置T0为16位定时器,定时50ms,系统采用12M Hz 晶振 。      ************/      #include reg52.h      voi DMA in()      {      TMOD=0x01;//设定T0的长度和状态:16位定时      TH0=(65536-50000)/256;//50ms定时,计数器的初值高8位      TL0=(65536-50000)%256;//50ms定时,计数器的初值低8位      EA=1;//系统开放中断      ET0=1;//允许T0中断      TR0=1;//启动T0      for(;;);/
[单片机]
51单片机串口通信例子
小记:本例子是在别人的版本修改而来的,因本人没有11.0592MHz的晶振,进而采用12MHz的,经过波特率的调整发现在波特率为1200时,定时器工作在方式二,穿口工作在模式二,且SMOD=1.此时定时器的TH1=TL1=0xCC,此时调试串口没有错误。 发送例子: #include reg52.h #include stdio.h void delay(unsigned int i); char code message ="welcome"; unsigned char a; void main(void) { SCON=0x50; //REN=1 ,串口工作模式2; TMOD=0x20; //
[单片机]
8051单片机(STC89C52)两个倒计时器同步计数
此处需要定时器0提供5ms精准定时, 则每个定时周期都需要(5*10^-3)/(1*10^-6)=5000次加1计数, 所以这里定时器0的初始值设为65536 - 5000 = 60536 = EA84H. 这里先实现两个倒计时器同时工作, 下一步该考虑怎么实现两个倒计时器不同步工作. #include STC89C5xRC.H void delay()//用定时器0实现5ms精准定时 { TMOD = 0x01; TH0 = 0xEA; TL0 = 0x84;//65536 - 5000 = 60036 TF0 = 0;//置溢出标志位为0 TR0 = 1;//开启定时器0 w
[单片机]
8051<font color='red'>单片机</font>(STC89C52)两个倒计时器同步计数
单片机c语言教程:C51复合语句和条件语句
曾经在BBS上有朋友问过我{}是什么意思?什么作用?在 C 中是有不少的括号,如{}, ,()等,确实会让一些初入门的朋友不解。在 VB 等一些语言中同一个()号会有不一样的 作用,它能用于组合若干条语句形成功能块,能用做数组的下标等,而在 C 中括号的分 工较为明显,{}号是用于将若干条语句组合在一起形成一种功能块,这种由若干条语句组合 而成的语句就叫复合语句。复合语句之间用{}分隔,而它内部的各条语句还是需要以分号“;” 结束。复合语句是允许嵌套的,也是就是在{}中的{}也是复合语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。单片机C语言中能将复合语句视为一条单语句,也就是说 在语法上等同于一条单语句。对于一个
[单片机]
MCX A:新的通用MCU和资源丰富的FRDM开发平台
恩智浦正式发布MCX A14x和A15x系列“通用”微控制器。MCX A隶属于MCX产品组合,基于Arm® Cortex®-M33内核平台。 MCX的理念是将主流恩智浦器件的卓越特色与创新功能结合起来,打造下一代智能边缘设备 。 可扩展性是MCX产品组合的一个重要优势。MCX A系列在该产品组合中发挥着重要作用,是各类应用的基础。它面向多个市场的广泛应用,包括: 工业通信 智能计量 自动化与控制 传感器 低功耗/电池供电设备 MCX A14x的工作频率为48MHz,MCX A15x的工作频率为96MHz。器件的封装选项包括32引脚QFN、48引脚QFN和64引脚LQFP。MCX A器件的所有封装类型在IO
[单片机]
MCX A:新的通用<font color='red'>MCU</font>和资源丰富的FRDM开发平台
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved