用单片机做电风扇简易定时控制器

发布者:翅膀小鹰最新更新时间:2012-08-01 来源: 21ic 关键字:单片机  电风扇  定时控制器 手机看文章 扫描二维码
随时随地手机看文章

自己的床头风扇的机械定时器坏掉了,准备51单片机给设计了一个.程序在实验板初步调试通过,等待元件寄到就可以做板子了,只是有点浪费单片机的资源。

一,设计思路:

开始通过手动键给单片机供电。直到电源指示灯LED4亮.单片机运行,继电器2工作给单片机供电。通过按键设置继电器2的工作时间,实现系统的自动断电,通过设置继电器1的工作时间,实现风扇的间歇转动,实现节能。

1.显示部分:通过按键,在风扇转动时间,暂停时间,和系统关闭剩余时间切换显示。数码显示两位,为“分”走时,其中系统关闭剩余时间为“小时”走时,LED为红,黄,蓝,分别点亮对应的风扇转动,暂停,和系统关闭剩余时间的状态。

2.按键部分:

lK1为时间调整移位键,按下此键,数码闪烁,同时对应的灯闪烁。在风扇转动时间,暂停时间,和系统之间切换

lK2为加一和状态切换显示键,当有K1按下,为时间加1。否则,在在风扇转动时间,暂停时间,和系统之间切换显示。

lK3为减1和备用键,当有K1按下,为时间加1,否则无效。

3.继电器部分:

l继电器1控制风扇的电源线,实现风扇的转动和暂时。

l继电器2控制单片机系统的电源,实现系统定时关闭。

二,原理图

 

三,程序清单

/*********************************************
系统名称:电风扇简易定时控制器
创键人:w418781840日期:2008.7.6
系统功能:
**********************************************/
/*********************************************
函数名称:声明区
功能描述:
**********************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineSEGP0//数码管段选.
#defineDIGP2//数码管位选
uchardis[2];//数码驱动组
ucharcodeTAB[]={0xC0,0xF9,0xA4,0xB0,0x99,//0-4共阳.
0x92,0x82,0xF8,0x80,0x90,0xff};//5-9,熄灭符
ucharstart,stop,close,sum,time;//各其本变量
ucharfliflag,cflag,zflag,x,y;//各标志位
uintcount_T0,count_T1,c_count;//计数变量
sbitK1=P3^7;//功能移位键
sbitK2=P3^2;//加一键和切换移位键.
sbitK3=P3^3;//减一.
sbitRLED=P2^2;//红灯,表风扇转动状态.
sbitYLED=P2^3;//黄灯,表风扇暂停状态
sbitBLED=P2^4;//蓝灯,表系统状态
sbitCLED=P2^6;//风扇控制位
sbitZLED=P2^7;//系统工作控制位
/*********************************************
函数名称:延时1MS函数
功能描述:显示调用.
**********************************************/
voiddelay1ms(ucharx)
{
uchari,j;
for(i=0;ifor(j=0;j<120;j++);
}

/*********************************************
函数名称:显示函数
功能描述:显示分走时,两位显示.
**********************************************/
voiddisplay(void)
{
uchari,scan=1;
for(i=0;i<2;i++)
{SEG=0xff;
DIG=~scan;
SEG=TAB[dis[i]];
delay1ms(5);
scan<<=1;
}
}
/*********************************************
函数名称:延时5MS函数
功能描述:按键消抖调用.
**********************************************/
voiddelay5ms(ucharx)
{
ucharj;
for(j=0;jdisplay();
}

/*********************************************
函数名称:初始化函数
功能描述:各变量初始化.
**********************************************/
voidinit()
{fliflag=0;//闪烁标志.
cflag=1;//风扇状态标志.
zflag=0;//转动标志.
x=30;//暂存
y=10;//暂存
CLED=1;//系统工作.
sum=0;//移位
start=30;//风扇转动时间
stop=10;//暂停时间.
close=5;//系统关闭剩余时间
count_T0=0;//T0,T1相关
count_T1=0;
c_count=0;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
}
/*********************************************
函数名称:分离函数
功能描述:分离显示十位,个位
**********************************************/
voiddisnner(void)
{if(cflag==1)//1
{RLED=0;YLED=1;BLED=1;//红灯闪烁.
time=start;//显示转动时间.
}
if(cflag==2)
{RLED=1;YLED=0;BLED=1;
time=stop;
}
if(cflag==3)
{RLED=1;YLED=1;BLED=0;
time=close;
}
dis[0]=time/10;
dis[1]=time%10;
}
/*********************************************
函数名称:T0中断函数
功能描述:产生1分钟.
**********************************************/
voidtimer0(void)interrupt1
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++count_T0==1200)//一分钟.[page]

{count_T0=0;
if(zflag==0)//为0
{ZLED=1;//则转动.
if(start!=99)//转动时间为99,显示99,不切换标志.一直转动.
{
start--;//不,则倒计时.
if(start==0)
{zflag=1;//倒时时间到.切换标志.
cflag=2;
start=x;//重赋值
}
}
}
else
{ZLED=0;//否则暂停.
stop--;//倒计时计数.
if(stop==0)
{cflag=1;//时间到.
zflag=0;
stop=y;
}
}
if(close!=99)//系统时间为99,显示99,系统一直工作..
{if(++c_count==60)//对一分计数60,即一小时后.
{c_count=0;
close--;//做一小时倒计时.
if(close==0)//时间到,系统断电.
CLED=0;//低电平有效.
}
}
}
disnner();//分离.送显示/
}
/*********************************************
函数名称:T1中断服务函数
功能描述:调整时间闪烁用.
**********************************************/
voidtimer1(void)interrupt3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(++count_T1==6)//闪烁周期30MS
{
count_T1=0;
fliflag=~fliflag;//切换
if(fliflag==0)//标志有效.
{
if(sum==1)cflag=1;//选用状态闪烁.
if(sum==2)cflag=2;
if(sum==3)cflag=3;
disnner();//闪烁用.
dis[0]=10;//放熄灭符.
dis[1]=10;
}
else//否则,正常显示.
{
RLED=1;YLED=1;BLED=1;
dis[0]=time/10;
dis[1]=time%10;
}
}
}
/*********************************************
函数名称:键扫描函数
功能描述:调整时间
**********************************************/
voidscanner(void)
{if(K1==0)//为0,表有键按下.
{
delay5ms(100);//延时500MS.
if(K1==0)//还按下.刚退出.
{
while(K1==0)display();//等待释放.
delay5ms(2);//消抖.
cflag=1;//退出显示状态1.
count_T0=0;
TR0=1;//启动T0
TR1=0;//关闪烁
sum=0;//归位.
x=start;//暂存.
y=stop;//暂存.
}
else
{//否则,有移位键按下.
TR0=0;//时间走动停止.
TR1=1;//开闪烁.
sum++;//移位.
if(sum==4)
sum=1;
}
}

if(K2==0)
{
delay5ms(2);
if(K2==0)
{
while(K2==0)display();
delay5ms(2);
if(sum)//有移位
{if(sum==1)
{
start++;
if(start==61)
start=99;
if(start==100)
start=30;
}
if(sum==2)
{
stop++;
if(stop==61)
stop=5;
}
if(sum==3)
{
close++;
if(close==9)
close=99;
if(close==100)
close=1;
}
}
else//没移位.
{
cflag++;//则进行显示状态移位.
if(cflag==4)
cflag=1;
}
}
}
if(K3==0)
{
delay5ms(2);
if(K3==0)
{
while(K3==0)display();
delay5ms(2);
if(sum==1)
{start--;
if(start==29)
start=99;
if(start==98)
start=60;
}
if(sum==2)
{stop--;
if(stop==4)
stop=60;
}
if(sum==3)
{close--;
if(close==0)
close=99;
if(close==98)
close=8;
}
}
}
}
/*********************************************
函数名称:主函数
功能描述:
**********************************************/
main()
{
init();
while(1)
{
display();//显示
scanner();//检测按键..
}
}

 

 

关键字:单片机  电风扇  定时控制器 引用地址:用单片机做电风扇简易定时控制器

上一篇:基于单片机的ISP在线编程设计分析
下一篇:基于单片机的锂电池充电器硬件设计

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

瑞萨推业界首款采用90 nm工艺MCU,速度可达200 MHz
业界第一个采用90 nm工艺带有片上闪存的微控制器,实现200 MHz业界最高运行速度 利用高性能SH-2A CPU内核,性能较以前产品提升约4倍,有助实现高精度、实时引擎和传输控制 日前,瑞萨科技(Renesas Technology Corp.)宣布开发出了业界第一个采用90 nm(纳米)工艺并带有片上闪存的,可用于汽车引擎、传输等控制程序开发的微控制器——32位SuperH(注1) 系列SH72546RFCC。据悉,该样品将从2007年10月开始在日本交付。 SH72546RFCC微控制器最大的突破是可在汽车应用所需的125℃高温工作环境下,实现200 MHz的业界最高运行速度。此外,它还采用了业界最大的片上闪存容量,可
[单片机]
基于MSP430F149单片机的光电编码器位置检测系统设计
在实际的工业位置控制领域中,为了提高控制精度,准确地对控制对象进行检测是十分重要的。传统的机械测量位移装置已远远不能满足现代生产的需要,而数字式传感器光电编码器,能将角位移量转换为与之对应的电脉冲输出, 主要用于机械位置和旋转速度的检测,具有精度高,体积小等特点,因此决定采用光电编码器进行位移检测。 美国TI公司推出的MSP430系列16位单片机,具有低功耗,运行速度快等优点,正日益得到广泛的应用。本文将高精度MSP430单片机应用在系统中,作为整个系统的控制器,整个系统结构简单,抗干扰性强,满足了钢铁厂的生产要求。 1、光电编码器原理 光电编码器是集光、机、电技术于一体的数字化传感器,其基本原理就是在特制的码盘上按一定规律编排光
[单片机]
基于MSP430F149<font color='red'>单片机</font>的光电编码器位置检测系统设计
基于C51系列单片机的物体分级设备的测量光幕设计
1 引言 光幕是电子测量系统中应用比较多的一种设备。利用光幕可以测量恒速传送带上的物体高度、长度或宽度等一系列数据,以便为后面的电子系统提供相应的参数。本文给出了一种利用单片机实现物体高度测量的光幕测量方法。 2 光幕测量物体高度的基本原理 图1所示是一个用普通光幕测量物体高度的测试原理结构示意图。图中,光幕的一边等间距安装有多个红外发射管,另一边相应的有相同数量同样排列的红外接收管,每一个红外发射管都对应有一个相应的红外接收管,且安装在同一条直线上。当同一条直线上的红外发射管、红外接收管之间没有障碍物时,红外发射管发出的调制信号(光信号)能顺利到达红外接收管。红外接收管接收到调制信号后,相应的电路输出低电平,而在有
[单片机]
基于C51系列<font color='red'>单片机</font>的物体分级设备的测量光幕设计
基于AT89C51单片机的温度检测系统硬件电路设计
引言 化工合成对温度检测与控制要求较高,是化工合成工艺的关键环节。对化工合成装置的温度进行检测,并按工艺要求,控制最高加热温度;在升温阶段,控制合成温度以每小时15℃的速率上升;加入触媒以后的温度采用恒值控制:前期为370℃,中期为380℃,后期为390℃;控制精度为±3℃l最高温度连续三次达到400℃时发出报警信号。显示检测温度值;每半小时打印一次最高温度值及检测时间;留有扩充余地,以实现多回路控制。 1 温度检测控制系统硬件结构 本系统的硬件电路由温度检测、信号放大、A/D转换、AT89C51单片机、功率放大及执行电路、打印、显示及报警电路等部分组成。选用AT89C51单片机作为主控机,采用带有死区的PID控制算法,当温度
[单片机]
基于AT89C51<font color='red'>单片机</font>的温度检测系统硬件电路设计
深挖MCU市场大洗牌:网络分销崛起
更新速度快是中国消费电子市场的重要特征之一,也是电子企业产品开发时的重要需求。要想在中国电子行业里脱颖而出,秘诀只有一个“快”字,产品更新要快、服务客户也要快,这是国内外很多MCU企业对中国市场的共同认识。互联网时代的到来、电子元器件在线交易兴起,进一步助推了这一需求趋势。如何应对新形势下的挑战,在把握“快”的同时,做好服务,是未来MCU分销商面临的重要课题。    网络分销市场成长   近年来,智能电网、物联网、医疗电子、照明等领域快速发展,对MCU应用需求也越来越多。应和快速和短周期的需求变化趋势,MCU分销领域的在线交易销售份额正在不断增长。对此,安富利电子元件中国区业务发展总监钟金洪表示:“在中国的电子市场里,有一
[嵌入式]
基于MSP430F5系列的硬件I2C的使用分享
0.前言 对于大多数单片机来说,I2C成了一个老大难问题。从51时代开始,软件模拟I2C成了主流,甚至到ARMCortex M3大行其道的今天,软件模拟I2C依然是使用最广的方法。虽然软件模拟可以解决所有的问题,但是总感觉没有充分发挥MCU内部的硬件资源。查阅了所有关于MSP430F5系列的图书,没有关于硬件I2C的应用代码,自己通过调试摸索,把经验总结之后和大家分享,希望大家喜欢。同时,I2C的使用可以分为等待法和中断法,从理解的角度来说等待法思路清晰易于上手,从功耗的角度出发,中断法可以灵活的进入低功耗模式,但是不易理解。本文先从等待法入手。 MSP430F5系列的硬件I2C使用大致会有以下问题: 【I2C地址设定】一般情
[单片机]
基于MSP430F5系列的硬件I2C的使用分享
51单片机~DS1302时钟,SPI总线原理
(一)说明: (二)SPI总线原理: (三)日历时钟寄存器: 慢充电: BCD码: temp.h #ifndef __TEMP_H_ #define __TEMP_H_ #include reg52.h //---重定义关键词---// #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif //--定义使用的IO口--// sbit DSPORT=P3^7; //--声明全局函数--// void Delay1ms(uin
[单片机]
51<font color='red'>单片机</font>~DS1302时钟,SPI总线原理
基于PIC单片机控制雷达跳频系统设计
  在研制雷达系统时,常常需要应用频率合成技术来实现跳频信号源。频率合成是指从一个高稳定的参考频率,经过各种技术处理,生成一系列稳定的频率输出?眼1?演。现在应用最广的是锁相环(PLL)频率合成技术,它是通过变化PLL中的分频比N来实现输出频率的跳频的,但无法避免缩短环路锁定时间与提高频率分辨率的矛盾,因此很难同时满足高速和高精确度的要求。直接数字式频率合成(DDS)是近年发展起来的一种新的频率合成技术。它将先进的数字处理理论与方法引入频率合成领域,是继直接频率合成(DS)和间接频率合成(IS)之后的第三代频率合成技术。DDS的优点是:相对带宽很宽,频率转换时间极短(ns级),频率分辨率很高(可达μHz),全数字化结构便于集成,输
[单片机]
基于PIC<font color='red'>单片机</font>控制雷达跳频系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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