#单片机课程设计基于MCS51单片机的直冷式电冰箱的控制.docx
《#单片机课程设计基于MCS51单片机的直冷式电冰箱的控制.docx》由会员分享,可在线阅读,更多相关《#单片机课程设计基于MCS51单片机的直冷式电冰箱的控制.docx(18页珍藏版)》请在冰点文库上搜索。
#单片机课程设计基于MCS51单片机的直冷式电冰箱的控制
2009/2010学年度第一学期
计算机控制技术(MCS51单片机)
课程设计报告书
题目:
直冷式电冰箱的控制
班级:
姓名:
学号:
指导教师:
日期:
1.课程设计目的…………………………………………………………………………………1
3.设计内容………………………………………………………………………………………1
4设计总结………………………………………………………………………………………14
参考书目…………………………………………………………………………………………14
附录………………………………………………………………………………………………15
1课程设计目的
1.1以MCS51单片机为主完成计算机控制技术(单片机)课程设计,掌握此次课程设计所用知识。
1.2理解课程设计使用原理,使此次设计的程序及电路能够正常使用。
2直冷式电冰箱的控制要求
2.1课程设计的要求
2.1.1设定2个测温点,测量范围:
-26︒C~+26︒C,精度±0.5︒C;
2.1.2利用功能键分别控制温度设定、冷藏室及冷冻室温度设定等;
2.1.3制冷压缩机停机后自动延时3分钟后方能再启动;
3电冰箱控制系统硬件电路
3.1硬件设计
3.1系统硬件结构图
3.1.1单片机采用INTEL公司的高效微控制器MCS51。
是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP的可反复擦写1000次的Flash只读程序存储器,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。
INTEL公司的AT89C51芯片具有以下特性:
4KB片内在系统可编程Flash程序存储器;
时钟频率为0~33MHz;
128字节片内随机读写存储器(RAM);
32个可编程输入/输出引脚;
2个16位定时/计数器;
5个中断源,2级优先级;
全双工串行通信接口;
监视定时器;
2个数据指针。
图3.2MCS51内部结构图
2
3.1.2电源供电电路
本设计总电源是有效值220V,频率50Hz的单相交流电网电压,通过变压器降压输出一组9V和一组24V低压交流电,然后再经过整流桥
和
整流输出直流电压。
前者提供给数字电路部分,后者为模拟电路部分提供电能。
为了得到标准的±12V,±5V,+5V直流电,故选用三端稳压器7912,7812,7905和7805作为稳压元件,使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而输出得到足够高稳定性的直流电源。
图3.3数字电路供电图
图3.4模拟电路供电图
3.1.3温度测量电路
如图3.5所示,温度传感器选用了MF53-1型热敏电阻,具有负温度系数,灵敏度较高。
其阻值和温度的关系为:
R(t)=286/(26.8+t)-2.68kΩ
利用温度传感器可以很容易测得冷藏室温度和冷冻室温度。
3
图3.5温度测量电路
4
3.1.4键盘与显示电路
从图3.7中可以看出,键盘电路和LED显示电路由串行口扩展5片74LS164实现。
系统采用了6个功能键控制冷冻室、冷藏室及速冻时间设定,4个LED数码管用于显示冷冻室、冷藏室温度及压缩机启、停和故障等状态。
图3.7键盘与显示电路
3.2软件设计
3.2.1主程序
主程序是整个电冰箱的总控制程序,如控制各单元初始化、控制中断、定时、显示、键盘程序的启动与重复等。
为系统软件的主干部分。
5
图3.8主程序流程图
3.2.2初始化子程序
初始化模块主要完成初始化I/O口、中断、内存单元,并读出存放在闪烁存储器上的温度设定值。
温度设定值存放在闪烁存储器上即使断电也可保存。
3.2.3键盘扫描子程序
扫描程序采用边延时边扫描的方法,当设置键SET_KEY按下一次,指示灯L1亮,按ADD(+)键和SUB(-)键设置冷藏室温度。
当设置键SET_KEY按下二次,指示灯L2亮,L1灭,按ADD(+)键和SUB(-)键设置冷冻室温度。
当设置键SET_KEY按下三次,设置完成,指示灯L1,L2均灭。
如果3S内无键按下,表示误按或用户放弃设置。
退出扫描。
4设计总结
本系统实现测控一体化、体积小、精度高、使用方便,报警界限值可以由用户根据需要随时进行调整,具有很高的性能/价格比。
系统的使用者来说,能够很稳定的控制温度而且稳定性很高。
能实现电冰箱温度的自动控制。
在系统的设计过程中,应用了多门学科的知识,使我对各学科有了更深入的理解,加强了知识的灵活应用。
同时学会了一个完整系统设计的步骤和方案的选择,以及获取资料的方法,最重要的是设计过程中的团队合作,这些都为我以后工作实践打下了良好基础。
参考书目:
参考书目:
1张旭涛曾现峰单片机原理及应用北京:
北京理工出版社,2010
2邹振春MCS-51系列单片机原理及接口技术机械工业出版社,1995
3房小翠单片机实用系统设计技术[M].北京:
国防工业出版社,1999
4李广第单片机基础[M].(修定本)北京:
北京航空航天大学出版社,2000
5舒怀林单片机原理与接口技术[M].武汉:
华中科技大学出版社,2001
6郭维芹实用模拟电子技术.北京:
电子工业出版社,1999
主程序
ORG0000H
AJMPMAIN
ORG0003H
LJMPDY_INT
6
ORG000B
LJMPTIME0_INT
ORG0030H
DATAEQUP1.0
V1EQUP1.3
V2EQUP1.4
V3EQUP1.5
SET_KEYEQUP1.5
V3EQUP1.5
V3EQUP1.5
SET_KEYEQUP1.5
ADD_KEYEQUP1.6
SUB_KEYEQUP1.7
L1EQUP0.6
L2EQUP0.7
L3EQUP2.5
L4EQUP2.6
MAIN:
CLRA
START:
LCALLINIT1;初始化
LCALLKEY;键盘扫描
LCALLGETWD;获得冷藏室温度
MOV62H,R0
INCDATA
LCALLGETWD;获得冷冻室温度
MOV63H,R0
DECDATA
MOVR3,62H;显示两室温度值
MOVR4,63H
LCALLDISP
MOVA,60H
CLRC
HIGH:
CJNEA,62H,HIGH1;冷藏室温度等于高于设定值时
7
AJMPHIGH2
HIGH1:
JCHIGH3
HIGH2:
SETBV1;开启压缩机
LCALLOPEN
AJMPLOW
HIGH3:
MOVA,61H
CLRC
CJNEA,63H,HIGH4;冷冻室温度等于高于设定值时
AJMPHIGH5
HIGH4:
JCLOW
HIGH5:
SETBV2;开启压缩机
LCALLOPEN
LOW:
MOVA,61H
CLRC
CJNEA,63H,LOW1;冷冻室温度等于低于最低值时
AJMPLOW2
LOW1:
JNCLOW3
LOW2:
CLRV2;关闭压缩机
LCALLCLOSE
AJMPLS
LOW3:
MOVA,60H
CLRC
CJNEA,62H,LOW4;冷冻室温度等于低于最低值时
AJMPLOW5
LOW4:
JNCLS
LOW5:
CLRV1;关闭压缩机
LCALLCLOSE
LS:
MOVR1,#10H;延时1S
LS1:
LCALLDLY_100MS
DJNZR1,LS1
INC65H;化霜时间计数加1
MOVA,65H
8
CJNEA,#00H,LS2
INC66H
LS2:
MOVA,65H
CJNEA,#08H,LOOP
MOVA,66H
CJNEA,#07H,LOOP
JBV1,LOOP;化霜定时时间到且V1,V2均关闭
JBV2,LOOP
SETBV3;打开V3开始化霜
MOVR0,#50;化霜时间5S
LS3:
LCALLDLY_100MS
DJNZR0,LS3
LOOP:
AJMPSTART
END
初始化子程序
9
INTI1:
CLRA
MOVDPTR,#20H;读取冷藏室温度设定值
MOVCA,@DPTR
LCALLDLY_100MS;延时确保数据读完
MOV60H,A
INCDPTR;读取冷藏室温度设定值
MOVCA,@DPTR
LCALLDLY_100MS;延时确保数据读完
MOV61H,A
MOV64H,#00H;清空各状态位
SETBEX0;允许外部中断0中断
SETBIT0;选择边沿触发方式
SETBEA;CPU开中断
RET
键盘扫描子程序
10
KEY:
CLRA;键盘扫描子程序
MOVR0,#00H
START:
MOVR4,#1EH;边延时边扫描3S
LOOP:
LCALLDLY_100MS
JNBSETB_KEY,SET
JNBADD-KEY,ADD
JNBSUB_KEY,SUB
DJNZR4,LOOP
AJMPEXIT;3S内没有键按下结束扫描
SET:
CJNER0,#03H,SET1;设置键按下三次,设置完成
CLRL1
CLRL2
AJMPEXIT
SET1:
INCR0
CJNER0,#01H,SET2;设置键按下一次
SETBL1
AJMPSTART
SET2:
CLRL1;设置键按下二次
SETBL2
AJMPSTART;加键按下
ADD:
CJNER0,#01H,ADD1;冷藏室温度为正时加1
MOVA,60H
JBACC.7,ADD_1
INCA
MOV60H,A
AJMPDSP
ADD_1:
CLRACC.7;冷藏室温度为负时加1
DECA
SETBACC.7
MOV60H,A
AJMPDSP
ADD1:
CJNER0,#02H,START
11
MOVA,61H;冷冻室温度为正时加1
JBACC.7,ADD1_1
INCA
MOV61H,A
AJMPDSP
ADD1_1:
CLRACC.7;冷冻室温度为负时加1
DECA
SETBACC.7
MOV61H,A
AJMPDSP;减键按下
SUB:
CJNER0,#01H,SUB1;冷藏室温度为正时减1
MOVA,60H
JBACC.7,SUN_1
DECA
MOV60H,A
AJMPDSP
SUB_1:
CLRACC.7;冷藏室温度为负时减1
INCA
SETBACC.7
MOV60H,A
AJMPDSP
SUB1:
CJNER0,#02H,START
CLRACC.7;冷冻室温度为正时减1
JBACC.7,SUB1_1
DECA
MOV61H,A
AJMPDSP
SUB1_1:
CLRACC.7;冷冻室温度为负时减1
INCA
SETBACC.7
MOV61H,A
AJMPDSP
12
DSP:
MOVDPTR,#20H;将设定值存放在闪烁存储器上
MOVA,62H
MOVC@DPTR,A
LCALLDLY_100MS
INCDPTR
MOVA,63H
MOVC@DPTR,A
LCALLDLY_100MS
MOVR3,60H;显示设定值
MOVR4,61H
LCALLDISP
AJMPSTART
EXIT:
RET
OPEN:
CLRA;
延时子程序
DLY_100MS:
MOVR1,#64H
LOOP1:
MOVR2,#7DH
LOOP2:
NOP
DJNZR2,LOOP2
13
DJNZR1,LOOP1
RET
14