致谢
本次课程设计能够顺利完成首先要感谢指导老师王立夫老师,王老师教学严谨堪称典范。同时也离不开各位队员的辛勤努力,无论是多么复杂的工作只要齐心协力总可以做好。
在这里我们要感谢辛勤教育我们的老师以及帮助我们的同学们,是他们给了我知识给了我们面对困难的勇气,真诚说一声:谢谢你们!
[1] 何立民.单片机高级教程(第2版)[M]. 北京:北京航空航天大学出版社,2007 [2] 徐煜明.单片机原理及接口技术[M].北京:电子工业出版社.2008
[3] 张迎新.单片微型计算机原理应用及接口技术(第2版)[M].北京:国防工业出版2008. [4] 求是科技编著.单片机典型模块设计实例导航[M]. 北京:人民邮电出版社,2004. [5]刘易雄,刘建雄 DS18B20接口的C语言程序设计. 仪器仪表用户,河南科技大学机电工程学院 ,2005,06
[6] 陈涛. DS18B20芯片与单片微控制器的接口设计与应用[J]. 山东煤炭科技 , 2002,(03) . [7] 陈明荧.8051单片机课程设计实训教材。北京:清华大学出版社 2004 [8]李军 .检测技术及仪表[M]. 北京: 中国轻工业出版社 2002.4 [9 ]凌玉华.单片机原理与应用系统设计 长沙:中南大学出版社 2006
冰箱控制面板C322uFRstRP1RESPACK-8上拉电阻98765432P0P1P2P3P4P5P6P7VCC1温度显示C21930pXTAL1上电自动复位U1R1110kVCCX1C1R84k730p晶振电路CRYSTALRst18XTAL29RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15293031VCC39P038P137P236P335P434P533P632P721D022D1out_alarmR1423D224D3100R25262728PSENALEEAout_alarmABCU3附录一 原理图
0.0VCCDQGNDDQ13VCC21Q2D2N2905LS1DS18B20
冷藏室温度传感器DQ1key12key23in_alarm4in_smart5DQ16key_shift7key08VCCVCCVCCR1U23.0VCCDQGNDDQ3VCC214k7 4k7key1VCCDS18B204k74k74k74k74k72N44015001冷冻室温度传感器温度+key2R122U4:A4069out_heatC44k7 R2R3R4R5R6P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD1011121314151617out_motorout_alarmin_openSPEAKERout_VT1out_heatR7AT89C51out_motorR13Q1RL2(NO)out_VT1key_shift自动模式in_smartGNDkey0显示屏幕切换智能速冻模式in_alarmC51000ufR15100RR10100RR9100R报警消音模式GND加热棒in_open冷藏室管道的电磁阀D3LED-REDD2冰箱门打开启动定时D1LED-REDLED-RED门灯显示 压缩机驱动电机 温度--GND1000ufD0D1D2D3P0P1P2P3P4P5P6P7RL2T73S5D15-5V+994
附录二 源程序
#include \#include \#define uchar unsigned char #define uint unsigned int
sbit out_heat=P3^7; //控制外部加热棒
sbit out_VT1=P3^6; //冷藏室控制阀门,温当度达到时,阀门关闭,切断冷气体 sbit out_motor=P3^0; //启动压缩机 sbit out_alarm=P3^1 ; //超时报警信号 sbit in_open=P3^3; //开门输入数字信号 sbit k0=P1^7; //自动模式按键 sbit k1=P1^1; //温度设定加 sbit k2=P1^2; //温度设定减 sbit DS=P1^0; //冷藏温度传感器入口 sbit in_clarm=P1^3; //报警消音按键,关闭定时器 sbit in_smart=P1^4; //智能速冻模式切换 sbit DQ1=P1^5; //冷藏室温度传感器入口 sbit key_shift=P1^6; //屏幕切换按键 sbit door_led=P3^5; //门打开显示灯 uint temp; //存放冷冻室温度值 uint temp1; //存放冷藏室温度值 bit fushu=0; //冷冻室温度符号位 bit fushu_c=0; //冷藏室温度符号位 #define led_code P0 //数码管段选 #define led_choose P2 //数码管位选 int key_value; //存放温度设定的值 int key_value1; //冷冻室预设温度值 int key_value2; //冷藏室预设温度值
int pre_tempr1=0; //智能功能速冻模式下冷藏的温度 int pre_tempr2=0; //智能速冻模式下冷冻室的温度 uchar COUNTER=0; //用于记录中断次数 uchar Flag1=0; //自动模式标志位 uchar Flag2=0; //智能模式标志位 uchar Flag3=0; //报警标志位 //*******共阳极数码管段值***************//
uint shuma8_d[]={0x40,0x79,0x24,0X30,0X19,0x12,0x02,0x78,0x00,0x10,0xff};
//0.****1.****2.***3.***4.***5.***6.***7.***8.***9.***全灭** uint shuma_w[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位选 //****************数码管显示函数**********************// void led_send7(uint shuma_w0,uint shuma_d0) //7段数码管显示 {
uint shuma7_d[]={0xC0,0xF9,0xA4,0XB0,0X99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
led_choose=shuma_w[shuma_w0]; led_code=shuma7_d[shuma_d0]; }
void led_send8(uint shuma_w1,uint shuma_d1) //8段数码管显示带小数点 {
led_choose=shuma_w[shuma_w1]; led_code=shuma8_d[shuma_d1]; }
//*********延时函数************************// void delay(uint n)//毫秒级 {
uint i,j; for(j=0;j void delay1(uchar count) //微秒级 { while(count>0) count--; } void delay2(uchar second) //秒级 { uint i,j,k; for(i=0;i //***********DS18B20处理函数****获取冷冻室的温************************// void reset(void) //初始化函数 { } bit read_bit(void) //定义的是一个位函 { bit temp3; DS=0; _nop_(); DS=1; DS=0; delay1(100); DS=1; delay1(4); delay1(200); } uchar read_byte(void) //读一个字节 { uchar i,byte=0; bit j; for(i=0;i<8;i++) { byte=_cror_(byte ,1); j=read_bit(); if(j==0) byte=byte|0x00; else byte=byte|0x80; } return byte; } void write_byte(uchar command) //写一个字节函数 { uchar i; for(i=0;i<8;i++) { if((command&0x01)==0) { DS=0; delay1(8); DS=1; _nop_(); } else { DS=0; _nop_(); DS=1; delay1(8); } command=_cror_(command,1); } } void tmpchange(void) //温度获取命令函数 _nop_(); temp3=DS; delay1(200); return temp3;