资源描述:
《基于单片机的智能电风扇的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于单片机的智能电风扇的设计摘要:本系统以AT89C52单片机为核心,系统由速度检测模块、电源模块、调速模块、键盘控制模块、液晶显示模块、声光报警模块、语音呼叫模块、防倾倒模块等组成。可实现空档、低速、高速、自然风由各档位可自由切换,定时控制换档功能,倾倒自动关闭风扇并报警等功能,对电风扇控制具有良好的效果,在实际应用中具有很好的推广价值。关键词:AT89C52,光控防倾倒,数码管显示,人性化定时。一、前言随着电子制造业的不断发展,社会生产率的要求越来越高,各行业都需要精良高效、高可靠性的设备来满足要求。作为一种老式家电,电风扇具有价格便宜,摆放方便,体积轻巧等特点。由于大部分家庭消
2、费水平的限制,电风扇作为一个家电行业的一员,在中小城市以及乡村将来一段时间内仍然会占有市场的大部分份额,但电风扇功能简单,不能满足智能化的要求,为提高电风扇的市场竞争力,使之在技术含量上有所提高,而且更加安全可靠,在现有市场上电风扇的基础上,本文结合实际,采用7805稳压电源,设计一种新型的智能电风扇,该风扇功能更多,且具有多种人性化设计,大大提高电风扇的市场竞争力。二、系统硬件设计智能电风扇以AT89C52单片机为核心,系统由速度检测模块、电源模块、调速模块、键盘控制模块、液晶显示模块、声光报警模块、语音呼叫模块、防倾倒模块等组成(如图1所示)。液晶显示模块声光报警模块语音呼叫模块
3、AT89C52速度检测模块调速模块电源模块防倾倒模块键盘控制模块图1智能电风扇系统组成三、部分硬件电路设计1、液晶显示电路此系统选用的是点阵LCD模块.这是一款低功耗的点阵图形式LCD,可以工作在3.3V供电的情况下,显示格式为128(列)×64(行),具有多功能指令,内部带有中文字库,既可以工作于串行方式又可以工作于并行方式,很容易与16位的单片机相连。本系统中与单片机的连接采用并行工作模式,以液晶显示控制芯片的异步串行通信端USART为外部数据或控制指令的输入断口,如图2所示。图2液晶显示电路2、语音呼叫系统控制电路语音呼叫系统是继酒精检测电路发出超标信号后,该系统读取GPS模块
4、传送过来的信息并通过语音呼叫系统把饮酒者所在地点信息传给其最近联系人,让他过来帮忙,如:“我现在在XX方位,我喝醉了,请速来接我”。其电路如图3所示。图3语音呼叫系统控制电路3、调速电路设计调速电路设计如图4所示,实现以下功能:高速、低速档选择,自然风功能,可以用遥控器遥控档位,可以设定定时关机、定时换挡,防倾倒功能,数码显示定时功能,无极调速。图4调速电路四、系统软件设计#includeSbitp0_0=p0^o;Sbitp0_1=p0^1;Sbitp0_2=p0^2;Sbitp0_3=p0^3;Sbitp0_4=p0^4;Sbitp0_5=p0^5;Sbitp0
5、_6=p0^6;Sbitp0_7=p0^7;Sbitp1_0=p1^o;Sbitp1_1=p1^1;Sbitp1_2=p1^2;Sbitp1_3=p1^3;Sbitp1_4=p1^4;Sbitp1_5=p1^5;Sbitp3_2=p3^2;Sbitp3_3=p3^3;Sbitfeng=p3^6;SbitSPK=P3^7;/******函数声明******/Voidinit();∥初始化Voiddelay1ms(unsignedint);∥延时程序Voiddi();∥低速运行程序Voidgao();∥高速运行程序Voidkeyscan();∥键盘扫描Voidshijian();倒计时显
6、示Voidshow(intwei,intshu);/*数码管显示*//******变量声明******/Codeunsignedcharm-ucledTab[]={0xco,0xf9,0xa4,0xbo,0x99,0x92,0x82,0xf8,0x80,0x890,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};/*数码管十六进制编码表*/CodeunsignedcharLedTab[]={0xef,0xf7,0xfb,0xfd,0xfe};CodeunsignedcharhouTab[]={0xf7,0xfb,0xfd,0xfe,0xff};Staticun
7、signedintnum[4]={16,16,16,16};Staticintminute,second,mode=0,xianshi=0,h,hn,hou,m,n,hongwai;Unsignedcharfrq;DoubleT=1;Inttimecount=0;Voidmain(){Init();While(1){While(mode==0)//空档{Shijian();Keyscan();Feng=1;P1_0=0;P0=0xf7;}While(mod