微波炉控制系统.docx
- 文档编号:28916428
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:30
- 大小:221.84KB
微波炉控制系统.docx
《微波炉控制系统.docx》由会员分享,可在线阅读,更多相关《微波炉控制系统.docx(30页珍藏版)》请在冰豆网上搜索。
微波炉控制系统
河北工业大学计算机
成绩
、设计题目:
(编号12)微波炉控制系统设计
二、设计目的:
(1)模拟微波炉的控制系统,实现部分功能,包括:
①大小火力的选择;②设定温火加热时间并显示;③时间倒计时并通过LED显示;④设置蜂鸣器来警告加热时
间到;⑤设置中断来模拟开门等。
(2)通过试验进一步加深对MCS—51单片机内部结构和程序设计方法的理解。
(3)通过两个人的合作,增强团队精神。
三、总体设计
1、分析问题的功能
本设计主要预实现以下工作流程:
和电源指示灯均熄灭。
5)微波炉运行过程中,若按下K1键,则微波炉停止工作,LED显示灭,指示灯灭。
2、系统总体结构设计
1)硬件设计:
单片机:
MCS-51单片机
I/O接口:
P1口和P3口
中断:
采用外部中断1
其他硬件设备:
3个LED灯(LED1、LED2LED3)、3个SW傩(SWH1SWH2SWH3)
一个K键(K1)、LED显示(LED6LED7、键盘(S0-S9)、蜂鸣器。
设定8031时钟频率11.0592MHz
2)软件设计:
(具体见程序清单中的文字解释)
四、详细设计:
1、硬件详细设计:
1)画出电路图;
LED显示和键盘控制
蜂鸣器的连接图
2)进行硬件资源分配(包括I/O口地址、所用各存储单元的用途)
8000H硬件入口地址
8013H/INT1中断入口地址
指示灯控制连线:
P1.0P1.1P1.2-
SW1SW2SW3,P1.4P1.5P1.6-LED1LED2LED3
/INTO-K1
LED显示和键盘的连线:
P3.1-SCL,P3.0-SDA,P3.4-RST-L,INT_KEY
/INTO
蜂鸣器连线:
P1.7-BUZZ
2、软件详细设计:
我们的1秒的延时是用软件来实现的。
DELAY2子程序用软件计时来实现1秒的延时
3、设计中的主要困难及解决方案
在这部分论述设计中遇到的主要困难及解决方案。
1)在LED显示倒计时时遇到困难,问了问老师和同学,通过设置内外循环解决了
这个难题。
2)在设置中断时遇到了困难,通过多次试验、修改终于成功实现。
ACK
BIT
10H
SLA
DATA
50H
SUBA
DATA
51H
ZLG7290EQU
70H
NUMBYTEDATA52HKeyDATA53HSystemRegEQU00HKeyReg
CmdBufOCmdBuf1DpRam
MAIN:
8000H
MAIN;定义主程序入口地址8013H;定义中断入口地址
INTISV
主程序如下:
MOVSP,#70H
SETBEA;
SETBIT1;
8100H;定义入口地址
开中断
外部中断1的触发控制位,输入脚上的高到低的负跳有效
SETBEX1;外部中断一中断允许控制位
RSTDELAYRSTDELAY
CLR
LCALL
SETB
LCALL
lcallClsDisp;清除显示内容
MAINLOOP:
MOVp1,#0FFH;将P1口全部置1
JBP1.0,MAINLOOP;查询P1.0,是1则继续查询;是0则继续执行
MOVA,P1
SWAPA
MOVP1,A;将SW键与LED灯交换,电源指示灯亮
movDisBuf+7,#0
movDisBuf+6,#0
lcallDisplay;调用显示子程序,LED7和LED6显示00
WaitKey:
JBINT_KEY,WaitKey查询INT_KEY,是1则继续查询;是0则继续执行
IcallGetKey
movA,KeyjzWaitKey
MOVDisBuf+6,Key
lcallDisplay
CLRA;检查个位数字并显示,并将A清零
WAITKEY2:
JBINT_KEY,WAITKEY2
lcallGetKey
movA,Key
;若键值为0,则转到HLKZ
jzHLKZ
MM:
MOVDisBuf+7,DisBuf+6
MOVDisBuf+6,KeylcallDisplay
CLRA
;检查十位数字并显示,转到HLKZ
LJMPHLKZ
HLKZ:
HLD:
JBP1.1,HLX
MOVA,P1
SWAPA
MOVP1,A
LJMPDELAY1
HLX:
JBP1.2,HLD
MOVA,P1
SWAPA
MOVP1,A
;火力控制大小的选择,SW1为大火力,SW2为小火力
LJMPDELAY1
DELAY1:
MOVR2,3FH
M1:
MOVA,R2MOVDisBuf+7,AIcallDisplayMOVR3,3EH
M2:
MOVA,R3
MOVDisBuf+6,AlcallDisplay
LCALLDELAY2
;调用1秒的子程序
DJNZR3,M2MOVA,R2JZNEXT
DECR2
LJMPM1
NEXT:
CPLP1.7
LCALLDELAY
CPLP1.7
MOVP1,#0FFHlcallClsDisp
SJMP$
;用来显示倒计时
;蜂鸣器鸣叫36.5ms
;指示灯灭,LED显示清除
DELAY2:
MOVR5,#50
DLY1:
MOVR6,#100
DLY2:
MOVR7,#100
DJNZR7,$
DJNZR6,DLY2
DJNZR5,DLY1
RET
;1秒延时子程序
;子程序名:
ClsDisp
;功能:
清除显示内容
;调用:
VI2C_ASM.INC
;入口参数
;出口参数
;占用资源
ClsDisP:
无
无
R0,R1,R2,R3(工作寄存器组1),ACCCy,R5(当前工作寄存器组)movR5,#8
movA,#01100000B
Cls1:
MO\SLA,#ZLG7290MO\SUBA,#CmdBuf0MO\MTD,AmovMTD+1,#1FHMO\NUMBYTE,#02HpushACCpushPSWsetbRS0clrRS1
LCALLIWRNBYTEpopPSWpopACCincA
LCALLdelaydjnzR5,Cls1ret
;子程序名:
Display
;功能:
在8段LED数码管显示
;调用:
VI2C_ASM.INC
;入口参数
;出口参数
;占用资源器组)
Display:
Disbuf+0~Disbuf+7,8字节显示缓冲区
无
R0,R1,R2,R3(工作寄存器组1),ACCCy,R0,R5(当前工作寄存
movR5,#8movA,#01100000B
Disp1:
movRO,#DisbufMO\SLA,#ZLG7290
MO\SUBA,#CmdBuf0MOV/ITD,AmovMTD+1,@R0MO\NUMBYTE,#02HpushACCpushPSWsetbRS0clrRS1
LCALLIWRNBYTEpopPSWpopACCincA
incR0
LCALLDELAYdjnzR5,Disp1ret
;子程序名:
GetKey
;功能:
获取用户按键值(Key)
;调用:
VI2C_ASM.INC
;入口参数:
无
;出口参数:
Key
;占用资源:
R0,R1,R2,R3(工作寄存器组1),ACCCy
GetKey:
MO\SLA,#ZLG7290
MO\SUBA,#01H
MO\NUMBYTE,#01H
pushACC
pushPSW
setbRS0
clrRS1
LCALLIRDNBYTE
popPSW
popACC
movKey,MRD
ret
;子程序名:
DELAY
;功能:
延时约36.5ms(11.0592MHz时钟)
;调用:
YS500US
;入口参数:
无
;出口参数:
无
R6R7,#80H
YS500US
;占用资源:
R7
DELAY:
MOV
MIN:
LCALL
DJNZR7,MIN
RET
;子程序名:
YS500US
;功能:
延时约279us(11.0592MHz时钟)
;调用:
无
;入口参数:
无
;出口参数:
无
;占用资源:
R6
YS500US:
MOVR6,#80H
DJNZR6,$
RET
$INCLUDE(VI2C_ASM.INC)
INTISV:
MOVP1,#0FFH
IcallClsDisp
;中断子程序
RETI
END
备注:
VI2C_ASM」NC内容见后面的附表1.
四、调试程序的方法:
1)硬件调试方法(编译一调试一右击,setprogramcounter—运行)
按电路图连接电路
2)软件调试方法
编译一调试一右击,setProgramcounter—运行
五、你所设计的程序最终完成的功能:
试验结果的演示:
LED上显示剩余工作时间;
4)定时时间到,蜂鸣器鸣叫,LED显示消失,同时电源指示灯灭,火力大小指示灯
熄灭。
2、微波炉中断
1)通过上述的1中的1)、2)、3)使微波炉正常工作;
2)当按下K1键时,触发中断,LED显示消失,同时电源指示灯灭,火力大小指示灯熄灭。
(说明:
对应到现实问题是指在微波炉工作过程中按下END键工作过程停止。
)
六、对该设计题目的自我评价和完善方案:
1、对自己完成程序进行自我评价。
本次试验由我和张磊合作完成,我们分工明确,我负责连线和校正,她负责编写程序,排除错误,运行程序。
我们基本完成了老师布置的任务,回答老师的提问时没有遇见困难,团队合作较好。
本实验的创新点在于条理清楚,硬件设备齐全,连线复杂但清晰,功能实现的较好,但由于设计时间仓促,对所学知识的掌握仍有一
定的欠缺,所以程序仍有很多需要完善的地方。
2、对课题提出更完善的方案。
本实验仍有需要改进的地方:
比如说①可以用一个指示灯指示门关闭,这样按
键才能起作用;②在定时到时后,显示“END;③火力选择可以再设置一个中档(由于学校硬件设备有限,这条想过了,没有执行)。
0在定时结束后让蜂鸣器持续鸣叫直
到按了中断(END才停止。
五、收获及心得体会:
1、通过本次课程设计,自己在哪些方面的能力有所提高。
1)自己对所学的MCS-51单片机软硬件知识有了更进一步的了解,对老师上课
所讲解的知识有了直观的认识,对编程中的语言更加熟悉。
2)对硬件的连线更加熟练,对各个硬件的应用有了进一步的了解
我们平时接触的计算机知识并不多,在学习MCS-51单片机的过程中我们遇到了
许多困难,刚开始甚至有一种怎么也学不会的感觉。
在开放性试验中,刚开始我们都是
毫无头绪的,不再是以前源代码的实验而要完全自己设计一个程序。
开始时我们觉得这
好难,甚至有我们将完不成的感觉。
我们上网找了一些程序,但是这些程序多没有硬件
连线,而且这些程序也太过复杂是我不能全部看懂。
看着别人一个一个的把程序编出来,我们就开始反思。
难道我们就没有这个能力吗?
最后我们决定自己写程序。
当第二天我
但我
这起
们的程序没有错误是我们相当激动。
后来在运行时有些我们预期的效果没有实现,们通过查书修改和问同学都将其一一完成。
我们在开始的时候总是将困难扩大化,得我们没有完成任务的自信。
在做完了试验之后,我开始觉得单片机也是很简单的,
有想象的那么难。
这次实验也是我对单片机产生了浓厚的兴趣。
在以后的学习和生活当中,我要重分利用这次试验所总结的经验,自信的面对一切。
带着克服困难的信心去面对其它问题。
日期:
2008年12月29日附表1
;MCS-51单片机模拟I2C软件包(V1.1)
;文件名:
VI2C_ASM」NC
;功能说明:
本模拟I2C软件包包含了I2C操作的底层子程序,使用前要定义
好SCL和SDA。
在标准8051模式(12Clock)下,对主频要求是不高于12MHz(即1个;机器周期1US);若F0SO12MHZ则要增加相应的NOP指令数。
(总线时序符合I2C标准模式,100Kbit/S)
;版本说明:
本版新增了两个子程序,IWRNBYTEEXT,IRDNBYTEEXT两个子程序,
;这两个子程序用于主从通讯上及一此特殊器件的读写操作较为方便.
;更新时间:
2002.06.04
;启动I2C总线子程序
START:
SETB
SDA
NOP
SETB
SCL
NOP
NOP
NOP
NOP
NOP
CLR
SDA
NOP
NOP
NOP
NOP
NOP
CLR
SCL
NOP
RET
;起始条件建立时间大于4.7US
;起始条件锁定时大于4US
;钳住总线,准备发数据
;结束总线子程序
STOP:
CLR
SDA
NOP
SETB
SCL
NOP
NOP
NOP
NOP
NOP
SETB
SDA
NOP
NOP
NOP
NOP
RET
;发送结束条件的时钟信号
;结束总线时间大于4us
;结束总线
;保证一个终止信号和起始信号的空闲时间大于
4.7us
;发送应答信号子程序
MACK:
CLR
SDA
;将SDA置0
NOP
NOP
SETB
NOP
SCL
;保持数据时间,即SCL为高时间大于4.7US
NOP
NOP
NOP
NOP
CLR
NOP
NOP
RET
SCL
;发送非应答信号
MNACK:
SETBSDA
NOP
NOP
将SDA置1
SETBSCL
NOP
NOP
;保持数据时间,即SCL为高时间大于4.7US
NOP
NOP
NOP
CLRSCL
NOP
NOP
RET
;检查应答位子程序
返回值,
ACK=1
时表示有应答
CACK:
SETB
NOP
NOP
SDA
SETB
SCL
CLR
NOP
NOP
ACK
MOV
C,SDA
JC
CEND
SETB
ACK
CEND:
NOP
CLR
NOP
RET
SCL
;判断应答位
;发送字节子程序
;字节数据放入ACC
;每发送一字节要调用一次CACK子程序,取应答位
WRBYTE:
MOV
WLP:
RLC
JC
SJMP
R0,#08H
A
;取数据位
WLP1:
WR1:
DJNZNOPRET
SETB
NOP
SETB
NOP
NOP
NOP
NOP
NOP
CLR
WR1
WR0
RO,WLP
SDA
SCL
SJMP
WLP1
CLR
SDA
NOP
SETB
SCL
NOP
NOP
SCL
WR0:
;判断数据位
;发送1
;发送0
NOP
NOP
NOP
CLRSCL
SJMPWLP1
;读取字节子程序
;读出的值在ACC
/非应答信号
;每取一字节要发送一个应答
R0,#08H
SDA
RDBYTE:
MOV
RLP:
SETB
NOP
NOP
NOP
NOP
SETB
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SCL
;时钟线为高,接收数据位
NOP
NOP
;+1
;+1
;+1
;+1
;+1
MOV
C,SDA
;读取数据位
MOV
A,R2
CLR
SCL
;将SCL拉低,时间大于
RLC
A
;进行数据位的处理
MOV
R2,A
NOP
NOP
NOP
;+1
NOP
4.7US
;+1
;+1
NOP
NOP
NOP
NOP
NOP
NOP
;+1
;+1
;+1
;未够8位,再来一次
DJNZRO,RLP
RET
ACC
R2、CY
以下是用户接口子程序
;无子地址器件写字节数据
;入口参数:
数据为
ACC、器件从地址
SLA
沾用:
A、RO、CY
IWRBYTE:
PUSH
ACC
IWBLOOP:
LCALL
START
;起动总线
MOV
A,SLA
LCALL
WRBYTE
;发送器件从地址
LCALL
CACK
JNB
ACK,RETWRB
;无应答则跳转
POP
ACC
;写数据
LCALL
WRBYTE
LCALL
CACK
LCALL
STOP
RET
RETWRB:
POP
ACC
LCALL
STOP
RET
IRDBYTE:
LCALL
START
MOV
A,SLA
;发送器件从地址
INC
A
LCALL
WRBYTE
LCALL
CACK
JNB
ACK,RETRDB
LCALL
RDBYTE
;进行读字节操作
LCALL
MNACK
;发送非应信号
RETRDB:
LCALL
STOP
;结束总线
RET
;无子地址器件读字节数据
;入口参数:
器件从地址SLA
;出口参数:
数据为
沾用:
A、RO、
;向器件指定子地址写N字节数据
;入口参数:
器件从地址SLA、器件子地址
;占用:
SUBA、发送数据缓冲区MTD、发送字节数NUMBYTE
A、RO
、R1、R3、CY
IWRNBYTE:
MOV
WRDA:
MOV
R3,A
LCALL
START
;起动总线
MOV
A,SLA
LCALL
WRBYTE
;发送器件从地址
LCALL
CACK
JNB
ACK,RETWRN
;无应答则退出
MOV
A,SUBA
;指定子地址
LCALL
WRBYTE
LCALL
CACK
MOV
R1,#MTD
MOV
A,@R1
LCALL
WRBYTE
;开始写入数据
LCALL
CACK
JNB
ACK,IWRNBYTE
INC
R1
DJNZ
R3,WRDA
;判断写完没有
A,NUMBYTE
RETWRN:
LCALLSTOP
RET
;向器件指定子地址读取入口参数:
;出口参数:
沾用:
A、
SUBA、接收字节数NUMBYTE
RDN1:
MOV
R3,NUMBYTE
LCALL
START
MOV
A,SLA
LCALL
WRBYTE
;发送器件从地址
LCALL
CACK
JNB
ACK,RETRDN
MOV
A,SUBA
;指定子地址
LCALL
WRBYTE
LCALL
CACK
LCALL
START
;重新起动总线
MOV
A,SLA
INC
A
;准备进行读操作
LCALL
WRBYTE
LCALL
CACK
JNB
ACK,IRDNBYTE
MOV
R1,#MRD
LCALL
RDBYTE
;读操作开始
IRDNBYTE:
N字节数据
器件从地址SLA、器件子地址接收数据缓冲区MTD
R0、R1、R2、R3、CY
MOV;NOP
;NOP
DJNZ
LCALL
LCALL
@R1,A
;+1
;+1
R3,SACK
MNACK
STOP
SACK:
RET
LCALL
INC
MACK
R1
SJMP
RDN1
;无子地址器件写N
;入口参数:
器件从地址SLA、发送数据缓冲区;占用:
字节数据
A、RO、R1、R3、CY
MTD、发送字节数NUMBYTE
;不发送子地址SUBA,直接发送多个数据.
IWRNBYTEEXT:
MOV
A,NUMBYTE
MOV
R3,A
LCALL
START
;起动总线
MOV
A,SLA
LCALL
WRBYTE
;发送器件从地址
LCALL
CACK
JNB
ACK,RETWRNE
;无应答则退出
MOV
R1,#MTD
MOV
A,@R1
LCALL
WRBYTE
;开始写入数据
LCALL
CACK
JNB
ACK,RETWRNE
INC
R1
DJNZ
R3,WRDAE
;判断写完没有
WRDAE:
RETWRNE:
LCALLSTOP
RET
;无子地址器件读取N字节数据
入口参数:
;出口参数:
沾用:
A、
;说明:
此函数不发送子址,也不重新启动总线,而是直接读取多个数据
IRDNBYTEEXT:
MOV
R3,NUMBYTE
LCALL
START
MOV
A,SLA
INC
A
LCALL
WRBYTE
;发送器件从地址
RDNE1:
RETRDNE:
LCALL
JNB
MOV
LCALL
MOV
DJNZ
LCALL
LCALL
CACK
ACK,RETRDNE
R1,#MRDRDBYTE
@R1,A
R3,SACKE
MNACK
STOP
;读操作开始
;最后一字节发非应答位
;并结束总线
RET
・*************************************************************************************
********
请注意
(VI2C_ASM」NC)即可。
;在使用本软件包时,请在你的程序的未尾加入$INCLUDE
VI2C_ASM.INC文件
;复制到IDE包含文件所要求的目录(如:
工作目录或INC目录)
,以节省程序空间。
用户可以对"用户接口子程序"进行裁减,即把自已不使用的接口子程序删掉
幵**卄*卄**卄*卄*卄*卄*卄**卄*卄*卄*卄*卄**卄*卄*卄*卄*卄*卄**卄*卄*卄*卄*卄**卄*卄**
*********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微波炉 控制系统