红外遥控电子钟温度计yaudongxinyuWord格式.docx
- 文档编号:21395008
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:37
- 大小:465.55KB
红外遥控电子钟温度计yaudongxinyuWord格式.docx
《红外遥控电子钟温度计yaudongxinyuWord格式.docx》由会员分享,可在线阅读,更多相关《红外遥控电子钟温度计yaudongxinyuWord格式.docx(37页珍藏版)》请在冰豆网上搜索。
5.3功能详细说明20
5.3.1主界面20
5.3.2查看闹钟时间22
5.3.3查看温度报警上下限22
5.3.4菜单23
5.3.5设置普通时间24
5.3.6设置闹钟时间25
5.3.7设置日期25
5.3.8设置温度报警上下限26
5.3.9设置温度传感器DS18B20的转换精度26
5.3.10关闭时钟芯片DS12C887的晶振27
5.3.11开启时钟芯片DS12C887的晶振27
5.3.12查看温度报警历史28
5.3.13清空温度报警历史29
5.3.14查看时钟芯片DS12C887的内置电池状态30
6结束语30
7致谢30
8参考文献30
附录Ⅰ:
元器件清单31
附录Ⅱ:
系统实物图33
红外遥控电子钟温度计
马正东,陈磊
(西安科技大学计算机科学与技术学院陕西西安710600)
摘要
本产品是基于DS12C887R时钟芯片和DS18B20温度传感器并用红外遥控进行设置的电子钟温度计,以STC89C58单片机为控制核心,用1602液晶显作为人机交互界面。
系统可以对温度环境温度进行实时监测,当温度超过安全范围时,系统发出报警并记录温度报警信息,等待操作人员处理,除此之外还具有闹钟功能。
报警温度和时间调整等所有产品功能都可由红外遥控进行设置。
本产品适用于需要温度监测的低端工业控制或者家居环境监测。
关键字:
温度计电子钟DS12C887DS18B20红外遥控
ElectronicClockandThermometerControlledby
InfraredRemoterController
ZhengdongMa,LeiChen
(ComputerScienceandTechnologyCollege,Xi'
anUniversityofScienceandTechnology,Xi'
an,Shannxi,100600)
Abstract
ThisproductiselectronicclockandthermometerwhichcanbesetbyusersandbasedontherealtimeclockchipDS12C887andthetemperaturesensorchipDS18B20.AndtheproductuseSTC89C58tobeitsMCUanduse1602tobeitshumanmachineinterface.Thissystemcandetectthetemperatureoftheenvironmentinrealtimeanditcansoundthealarmrecordthealarmhistorywhentheenvironmenttemperaturebeyondthesafeboundsandthenwaitsfortheoperatortodealwithit.What'
smoreithastheabilityoftimealarm.Themosthighlightisallthefunctionsincludingalarmtemperatureandtimecorrectcanbesetbyinfraredremotecontroller.Thisproductcanbeappliedtolowlevelindustrycontrolandlivingenvironmentmonitor.
Keywords:
thermometer,electronicclock,DS12C887,DS18B20,infraredremotecontroller
1方案的比较与选择
红外遥控电子钟设计总体结构框图如图1-1所示:
图1-1系统总体框图
1.1单片机的选择
方案一:
采用凌阳公司的16位单片机,它是16位控制器,具有体积小、驱动能力强、可靠性高、功耗低、结构简单、具有语音处理、运算速度快等优点,但考虑到我们小组对这个方案采用的微处理器并不熟悉,使用起来并不是很方便,这对于硬件电路的设计和软件编程增加了难度。
我们决定不再使用此方案,考虑其他方案。
方案二:
采用STC89C52系列单片机。
STC89在8051基础上增加了许多功能,内置flashROM可以反复擦写10万次,内置硬件看门狗,极大地提高了MCS51家族的性能。
STC89由美国设计,在台湾生产,是目前在相同性能条件下价格最优的一个品种。
STC89C52具有高性能、低价格的特点。
其功能已能够满足我们对于产品的需要,所以我们选择性价比更高的STC89C52。
最后我们用了STC89C58是因为在实验过程中STC89C52芯片由于操作不当被烧坏并且程序超过了8KB达到了9KB之多,而手中只有一片STC89C58所以就直接用了,
故采用此方案。
1.2时钟芯片的选择
选择DS1302,DS1302具有实时时钟显示,闹铃调校的功能,且价格便宜。
但是DS1302还要额外搭建外围电路,同时供电中断之后内部晶振将停止,这意味着时钟将每次在断电之后重新调校,这将比较麻烦。
选择DS12C887R,同样是达拉斯公司出产的时钟芯片,与DS1302的主要区别就在于内置了锂电池,这样就算是意外断电时钟仍然能够精准走时。
电池容量可为振荡器和寄存器供电长达10年之久,故采用此方案。
1.3温度采集模块的选择
选择AD590,AD590是美国模拟器件公司生产的单片集成两端感温电流源,具有精度高、价格低、不需辅助电源、线性好的好特点。
但是该温度传感器输出量是模拟量,这对编程调试将带来比较大的工作量。
选择DS18B20,DS18B20具有先进的单总线结构,并且可以寄生供电。
只要一根线即可让其工作,转换精度可由用户自己选择,一共有四种选择,9位,10位,11位,12位,步进分别为0.5℃,0.25℃,0.125℃,0.0625℃。
DS18B20可以自动转化输出温度数据。
单片机可以直接识别,故采用此方案。
1.4声光报警模块的选择
通过单片机来控制语音芯片来实现提示信息的播报。
但是由于语音芯片成本比较高,而且扩展起来比较复杂,增加焊接难度和设计成本。
用发光二极管和蜂鸣器搭一个简单的电路,成本底,电路比较简单,使用方便符合我们的系统要求,故采用此方案。
1.5显示模块的选择
采用LED数码管显示。
颜色鲜艳,易于观察,但是由于产品需要显示的信息较多,个别字符也无法显示不符合本作品的要求。
采用1602液晶显示。
我们对1602液晶的操作比较熟悉,其显示功能也比较强大,实用性很强,还可以显示自定义字符,故采用此方案。
1.6电源模块的选择
采用蓄电池为系统供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。
但是蓄电池的体积过于庞大,价格比较昂贵,对于我们的作品性价比不高。
采用12V稳压电源,经过7805的电压变换后为单片机供电。
经过实验验证,输出电压供电时,单片机及外设的工作电压不够,性能不稳定。
方案三:
采用USB串口输出电压,其电压输出稳定,符合产品的需求,但是其不可移动性降低了产品的灵活性,使用极其不便。
方案四:
采用手头上的MP3充电器电源,其输出电压可以稳定在5.5伏,符合产品的需求,节省了一定的成本,大大简化了制作的难度,故采用此方案。
1.7红外发射接收模块的选择
红外编码和解码模块都有自己编程序来实现,好处可以学习红外发射协议,但是难度大,容易出错。
采用PT2262-IR和PT2272-L6配对的红外发射和接收芯片,其编码译码都由固件来实现。
外围电路的搭建稍复杂,但是有利于提高我们的动手能力,故采用方案。
经过反复的探讨和论证我们最终确定智如下最终方案:
Ø
采用STC89C58单片机作为整个电路的控制核心。
采用DS12C887R时钟芯片提供准确的时间。
利用DS18B20采集当前环境的温度。
采用蜂鸣器和二极管来完成声光报警功能。
采用用1602液晶作为人机交互界面。
采用MP3充电器为系统提供基准电源。
用两节1.5伏电池为遥控模块提供电源。
采用PT2262-IR和PT2272-L6的配对使用完成产品的遥控与接收控制。
2硬件系统的设计与功能实现
2.1STC89C58单片机设计
图2-1单片机设计
图2-2复位电路设计
本方案采用DS12C887作为时钟芯片,采用Intel总线模式,只启用它的时钟功能,利用了它的61个NVRAM作为存储温度报警记录用。
图2-3时钟模块设计
2.3红外遥控模块的设计
红外线遥控是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。
常用的红外遥控系统分发射和接收两个部分。
发射部分芯片PT2262-IR,编码芯片PT2262-IR发出的编码信号由:
地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出瞬间高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。
当发射机没有按键按下时,PT226-IR不接通电源,发射电路不工作。
PT2272-L6解码芯片在数据成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。
其6路的并行数据,对应的地址编码是6位。
发射与接收的地址编码有三种状态可供选择:
悬空、接正电源、接地三种状态,本作品制作时采用全部接地编码方式,只有编码芯片与解码芯片的地址完全一致的时候发射与接收才能正常工作。
红外接收头,它将红外接收电路做在一起,只有三个引脚.分别是+5V电源、地、信号输出。
红外接收头的信号输出为高电平,经过9014三极管的倒相后与解码芯片的信号输入端连接。
图2-4PT2262-IR发射电路
图2-5PT22762-L6接收电路
2.4声光报警模块的设计
图2-6蜂鸣器模块设计
图2-7发光二极管模块设计
2.5温度检测模块的设计
本产品为了简化设计DS18B20采用外部电源,没有采用寄生电源。
图2-8温度模块的设计
2.6人机界面的设计
图2-9液晶模块设计
3软件设计的实现与说明
3.1主程序框架图
我们所设计的软件的主程序框架图如下图3-1所示:
图3-1主程序框架图
3.2功能块框架图
每一个功能块的程序程序实现都有共同规律,规律如下:
图3-2功能块框架图
3.3程序设计
程序设计严格遵守两个框架图
两个典型的能说明本程序设计的函数如下。
3.3.1main()主函数
main()函数能很好的体现全局框架的设计。
用Current_Function来确定下一个功能该是哪一个。
voidmain()
{
init();
while
(1)
{
WDT_CONTR=0x34;
//00110100看门狗的设置;
if(Current_Function==1)
function_1_main();
elseif(Current_Function==2)
function_2_menu();
elseif(Current_Function==3)
function_3_set_usual_time();
elseif(Current_Function==4)
function_4_set_alarm_time();
elseif(Current_Function==5)
function_5_set_date();
elseif(Current_Function==6)
function_6_set_temp_alarm();
elseif(Current_Function==7)
function_7_set_temp_accurancy();
elseif(Current_Function==8)
function_8_turn_off_887_osc();
elseif(Current_Function==9)
function_9_turn_on_887_osc();
elseif(Current_Function==10)
function_10_temp_alarm_history();
elseif(Current_Function==11)
function_11_clear_temp_alarm_history();
elseif(Current_Function==12)
function_12_battery_state();
elseif(Current_Function==13)
function_13_look_alarm_time();
elseif(Current_Function==14)
function_14_look_alarm_temp();
}
}
3.3.2menu()函数
menu()函数即实现菜单的功能的函数,它跟其他的功能块在框架上的设计都一样,都是先扫描CPU有没有送来键盘动作信号,有则处理,不论有没有键盘动作信号,下一步都要进行人机界面的刷新。
bitfunction_2_menu()
if(Press_F==1)
{
Press_F=0;
if(Scan_Result==3)
{
Menu_Number++;
if(Menu_Number==11)
Menu_Number=1;
}
elseif(Scan_Result==2)
Menu_Number--;
if(Menu_Number==0)
Menu_Number=10;
elseif(Scan_Result==6)
Current_Function=1;
if(Date_Set_F==1)
{
write_ds(0x0b,0x86);
set_date(Year,Month,Day,W);
write_ds(0x0b,0x06);
}
if(Time_Usual_Set_F==1)
{
set_time(H,M,S);
Refresh_E=1;
write_cmd(0x01);
return0;
elseif(Scan_Result==5)
if(Menu_Number==1)//设置普通时间
Current_Function=3;
H=read_ds(4);
M=read_ds
(2);
S=read_ds(0);
Set_Pointer=1;
write_cmd(0x01);
}
elseif(Menu_Number==2)//设置闹钟时间
Current_Function=4;
H=read_ds(5);
M=read_ds(3);
S=read_ds
(1);
Time_Alarm_Set_F=0;
elseif(Menu_Number==3)//设置日期
Current_Function=5;
Year=read_ds(9);
Month=read_ds(8);
Day=read_ds(7);
W=read_ds(6);
elseif(Menu_Number==4)//设置温度报警限
Current_Function=6;
Temp_Alarm_Set_F=0;
ds1820_rst();
ds1820_wr(0xcc);
ds1820_wr(0xbe);
//读取ram的数据
ds1820_rd();
//得作废前两个
TH=ds1820_rd();
TL=ds1820_rd();
Temp_Accurancy=ds1820_rd();
//结束读取
elseif(Menu_Number==5)//设置温度精度
Current_Function=7;
Temp_Accurancy_Set_F=0;
//得作废前2个
if(Temp_Accurancy==0x1f)
Set_Pointer=1;
elseif(Temp_Accurancy==0x3f)
Set_Pointer=2;
elseif(Temp_Accurancy==0x5f)
Set_Pointer=3;
elseif(Temp_Accurancy==0x7f)
Set_Pointer=4;
elseif(Menu_Number==6)//关闭ds12c887晶振
Current_Function=8;
if(read_ds(0x0a)==0x00)
Osci_Turn_Off_F=1;
else
Osci_Turn_Off_F=0;
elseif(Menu_Number==7)//开启ds12c887晶振
Current_Function=9;
if(read_ds(0x0a)==0x20)
Osci_Turn_On_F=1;
Osci_Turn_On_F=0;
elseif(Menu_Number==8)//温度报警历史查询
Current_Function=10;
Refresh_E=1;
elseif(Menu_Number==9)
Current_Function=11;
Sure_F=0;
Ok_F=0;
elseif(Menu_Number==10)
Current_Function=12;
Set_Pointer=read_ds(0x0d);
}
}
}
if(Menu_Number==1||Menu_Number==2)
if(Menu_Number==1)
write_data(0x80,0x07);
write_data(0xc0,'
'
);
else
write_data(0x80,'
write_data(0xc0,0x07);
for(i=0;
i<
15;
i++)
write_data(0x81+i,menu1[i]);
write_data(0xc1+i,menu2[i]);
elseif(Menu_Number==3||Menu_Number==4)
if(Menu_Number==3)
write_data(0x80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外 遥控 电子钟 温度计 yaudongxinyu