定时消毒碗柜课程设计报告文档格式.docx
《定时消毒碗柜课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《定时消毒碗柜课程设计报告文档格式.docx(43页珍藏版)》请在冰豆网上搜索。
(5)课程设计报告
(6)答辩情况
目录:
一.题目…………………………………………………………4页
二.问题的提出…………………………………………………4页
三.总体设计……………………………………………………4页
四.详细设计……………………………………………………5页
五.调试程序的方法……………………………………………8页
六.你所设计的程序最终完成的功能…………………………9页
七.对该设计题目有何更完善的方案………………………12页
八.收获及心得体会…………………………………………12页
九.附录:
程序清单…………………………………………13页
河北工业大学计算机硬件技术基础(2010)
课程设计报告
学院
理学院
班级
物理C071
成绩
姓名
梁少锋
学号
073009
同组人
陶磊
073012
一、题目
用单片机模拟消毒碗柜的工作过程+液晶显示(03)
二、问题的提出
定时消毒碗柜是现代化生活中不可缺少的电器,给家庭生活带来方便和卫生。
这个学期我们学习了单片机硬件技术技术这门课,从中获益匪浅,希望将所学得以应用。
于是设计了这样一个程序来模拟定时消毒的目的。
(1)培养综合运用所学单片机知识来解决生活中常见问题的能力。
(2)掌握单片机的接口技术及相关外围芯片的外特性和控制方法。
(3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
(4)进一步加深对MCS-51单片机内部结构和程序设计方法的理解。
三、总体设计
1、分析问题的功能
(1)通过软件编程利用8051单片机内部定时器实现对消毒的定时,开关模拟消毒柜的门,外部中断实现消毒开始命令。
(2)设计中加入了液晶的同步显示,可以提示用户消毒的状态,如进行、暂停、结束。
2、系统总体结构设计
(1)硬件设计:
根据问题需要确定单片机、I/O接口、定时器、I/O设备、中断等设备设备的应用;
实验平台是DP-51PROC实验箱,用的是TKSMONITOR51仿真器,采用NXP(foundedbyPhilips)的P89C52X2型号单片机,晶振频率为11.0592MHz。
用到的I/O接口有P0.0,P0.1,P0.2,P1,P2.0,P2.1,P2.2,P3.2,P3.5等,用到了外部中断INT0、INT1,内部定时器计数器T/C0、T/C1,锁存器,74LS138译码器,输出设备有:
液晶屏、蜂鸣器、LED灯、输入设备:
1*8按键中的KEY1、KEY2,开关SW1。
(2)软件设计:
主要功能分两大模块,即定时模块,液晶显示模块.
其中定时为主要模块,在定时的过程中根据需要调用液晶显示,并进行蜂鸣提醒。
四、详细设计:
1、硬件详细设计:
1)1液晶显示部分电路图;
1)2八段显示和消毒部分电路图:
2)进行硬件资源分配(包括I/O口地址、所用各存储单元的用途)。
用途介绍:
(1)SDA为总线定义,串行数据存取位;
SCL为总线定义,串行时钟位;
RST为MCU复位输出信号,低电平复位ZLG7290,用于倒计时的显示。
(2)P1.4与开关相连,控制门的关闭;
INT1与按键1相连,控制消毒按钮,P1.2与LED1相连,根据亮灭判断门的开关;
P1.3与LED2相连,判断消毒状态的进行;
整个相连用于消毒过程。
(3)P0与P2口为外部总线扩展,其中P0口接锁存器后组成地址总线的低八位,低八位中的低三位分别接液晶屏的D/I,R/W,CS1控制端口,P0口不接锁存器直接与液晶屏的数据接口(DB0~DB7)相连。
P2口为地址总线的高八位,用于选择液晶屏的右半屏,其中实验箱内部已将CS1与CS2进行非链接,可以保证同时只会有一块显示屏被选中。
P3.2使用第二功能外部中断0,用来控制屏幕的切换。
P1.0用于控制液晶屏的复位操作。
总体用来静态和动态显示消毒状态,实现了液晶的显示。
下面以表格的形式列出所有的硬件连接:
串行口
器件引脚
P1.0
液晶RST
P1.1
T1
P1.2
LED1
P1.3
LED2
P1.4
SW1
P3.1
BUZZ
P3.2(INT0)
KEY2
P3.3(INT1)
KEY1
P3.4(T0)
不接线
P3.5(T1)
A0
D/I
A1
R/W
A2
CS1
Y0
CS
A15
G2A
A14
G2B
A13
G1
A12
C
A11
B
A10
A
2、软件详细设计:
按各功能模块进行程序设计,并说明各功能模块的实现方法。
3、设计中的主要困难及解决方案
在将液晶显示糅合在程序中时,前三张的静态显示可以正常运行,后边的动态显示无法调用,,后来发现是主程序和液晶显示所用的存储单元和地址有冲突,经过调整,程序正常。
五、调试程序的方法
硬件调试方法(确定硬件工作是否正常)
在进行实验之前要对所用到的硬件进行检测,看其是否完好。
再有“图形点阵液晶显示屏驱动"
参考程序看液晶显示屏及KYE1是否能正常工作。
在检验个部分都能工作后再由此硬件进行设计实验。
特别应注意的是在进行硬件连线一定得在断电的情况下进行,否则容易烧坏仪器。
软件调试方法(如何调试程序的方法)
在程序无法正常运行的时候,采用单步运行,查看每一步程序时是否正常,发现不能执行的地方就是问题的所在;
在某个功能不能运行的时候,采用执行到光标处指令,如不能正常跳转,应是循环出现问题或子程序有错误。
比如,在开始调用液晶静态图行的时候,调用完,不能继续执行后边的程序,经研究发现是液晶显示子程序中有死循环,不能跳出,修改后便正常了。
六、你所设计的程序最终完成的功能
(1)我们所编制的定时消毒碗柜+液晶显示程序,首先可以实现对放入其中的碗筷进行定时消毒,并在柜门被中途打开时停止消毒,防止臭氧的扩散,同时可以用液晶显示同步提示用户现在消毒所处的状态,最后消毒完成时会有蜂鸣提示。
准备的测试数据,将以图解说明。
七、对该设计题目有何更完善的方案
1、对自己完成程序进行自我评价。
程序在基本要求的基础上,进行了全面的创新,包含了基本的单片机知识点,融会贯通。
将中断控制消毒以及中断级联延时等各个方面融到一起,液晶动态显示融入其中,达到了较高的单片机应用与创新水平。
对本次课程设计,我们倾注了很大的心血,使任务书中所要求的功能圆满的实现,并在此的基础上,加入了创新功能,如液晶同步显示及蜂鸣器的提示音等,使消毒碗柜更加贴近生活,贴近实际应用。
此外这个设计还可以应用到其他需要计时及显示的用具中,大大增加其使用价值。
2、对课题提出更完善的方案。
定时消毒碗柜基本程序简单,却运用的知识广泛,在此基础上可以将其它的课题和此课题合二为一,运用中断的嵌套等解决问题。
八、收获及心得体会
1、通过本次课程设计,自己在哪些方面的能力有所提高。
对单片机的基本理论有了更深刻的理解和掌握,通过查阅资料和文件,扩大了自己又一个领域的知识面,掌握了一门新的技能。
在编程的过程中,逻辑思维能力及实践能力,创新能力,合作能力以及学习能力都得到了全面的提高。
2、收获和心得体会。
首先,谢谢赵老师在这半年来对我们的谆谆教导,不仅仅是在学习方面,更重要的是老师让我们学会了创新,学会了自己思维,动手的能力,并且在人生观、价值观给予了很多很多耐人寻味的道理。
通过这门课程的学习,我懂得了要努力去争取,努力去创造,正直加奋斗才等于成功。
最后希望老师身体健康、万事如意!
日期:
2010年月日
程序清单:
LCD_WR_CMD1XDATA2004H
;
THECONSTANTSOFTHECOMMAND,THE1REPRESENTTHELEFT
LCD_WR_DATA1XDATA2005H
SCREEN,ANDTHE2REPRESENTTHERIGHTSCREEN
LCD_WR_CMD2XDATA2000H
LCD_WR_DATA2XDATA2001H
LCD_IS_BUSY1XDATA2006H
LCD_IS_BUSY2XDATA2002H
LCD_RSTBITP1.0
LCD_DISP_ONEQU3FH
THEEQUISTHECONSTANTSANDTHEDATAISTHEVARIABLES
LCD_DISP_CLREQU00H
LCD_ADDZ_ZEROEQU0C0H
THEFIRSTDISPLAYLINE
LCD_ADDX_ZEROEQU0B8H
LCD_ADDX_ENDEQU0C0H
LCD_ADDY_ZEROEQU40H
LCD_DISP_BUFDATA0EH
LCD_DATA_BUFDATA02H
LCD_CMD_BUFDATA02H
LCD_XDATA08H
THELEFT-UPLOCATION'
SINTHEX-COORDINATE
LCD_YDATA09H
SIZE_XDATA0AH
SIZE_X*8ISTHEDISPLAYEDAREA'
SSIZEINTHEROWDIRECTION
SIZE_YDATA0BH
THEDISPLAYEDAREA'
SSIZEINTHECOLMUNDIRECTION
START_XDATA0CH
INTHEACTIVEDISPALY,IT'
STHEFIRSTAREA'
SLCD_X
START_YDATA0DH
ORG8000H
LJMPMAIN
ORG8003H
SETBF0
RETI
ORG8013H;
外部中断1入口地址
LJMPTOP1
ORG800BH;
定时器0入口地址
LJMPTOP3
ORG801BH;
定时器1入口地址
LJMPTOP5
ORG8100H
-------主程序如下:
MAIN:
MOVSP,#70H;
堆栈区从70H开始
SETBEA
SETBEX0
SETBIT0
CLRF0
ACALLLCD_INIT
LCALLFIRST_SCREEN
LCALLSECOND_SCREEN
LCALLTHIRD_SCREEN
MOVTMOD,#51H;
1为计数0为定时
MOVTH1,#0FFH;
计数100个
MOVTL1,#9CH
MOVTH0,#3CH;
延时50ms
MOVTL0,#0B0H
MOVIE,#10001111B;
申请中断
CLRRS0
SETBRS1
SETBIT1;
采用边缘触发外部中断1下降眼厨房
SETBP1.2;
门显示灯(灭)
SETBP1.3;
消毒指示灯
CLRP1.1;
100ms的脉冲(CLR清0)
WELL:
JBP1.0,WELL1;
不断判断门的状态等待中断判断P1.0是1,如果是1就条到WELL1,如果是0就顺序执行
SETBP1.2
SJMPWELL
WELL1:
CLRP1.2
AJMPWELL
TOP1:
JNBP1.0,TOP2;
门中断触发判断触发方式(JNB0的时候转到TOP21的时候就一直执行)
LJMPNEXT
TOP2:
SETBP1.2;
关门启动定时器0
SETBTR0;
kaizhongduan1weikaitiaodao
CLRP1.3
SETBTR1
LCALLFIVE_SCREEN
NEXT:
RETI;
恢复到中断处
TOP3:
CLRP1.3;
消毒指示灯打开
JBP1.0,TOP4
CPLP1.1;
每50ms取反一次weilegeip1.1yigemaichong
MOVTH0,#3CH;
重新赋值
LJMPNEXT1
TOP4:
CLRTR0;
判断门转移
CLRTR1
SETBP1.3
CLRP1.2
NEXT1:
RETI
TOP5:
CLRTR0;
定时器1中断
CLRTR1
SETBP1.3
MOVTH1,#0FFH;
MOVTL0,#0B0H
LCALLSIX-SCREEN
delay2:
MOV7BH,0FFH
LCALLDELAY1
djnz7BH,DELAY2
LCALLFOUTH_SCREEN
mov35h,#05h
DELAY1:
MOV34H,#05H
DJNZ34H,$
DJNZ35H,DELAY1
RET
RETI
DELAY4:
MOVR5,#00H
DELAY4_L1:
MOVR4,#00H
DJNZR4,$
DJNZR5,DELAY4_L1
RET
DELAY10:
MOVR3,#01H
DL1:
MOVR4,#01H
DL2:
MOVR5,#0FH
DJNZR5,$
DJNZR4,DL2
DJNZR3,DL1
DELAY50:
MOVR3,#04H
DL11:
MOVR4,#0FH
DL22:
MOVR5,#0AFH
DJNZR4,DL22
DJNZR3,DL11
DELAY100:
MOVR3,#06H
DL111:
MOVR4,#0FFH
DL222:
MOVR5,#0FFH
DJNZR4,DL222
DJNZR3,DL111
RET
IS_BUSY1:
;
NOPARAMETER
PUSHDPH
PUSHDPL
MOVDPTR,#LCD_IS_BUSY1
MOVXA,@DPTR
JBACC.7,IS_BUSY1
POPDPL
POPDPH
IS_BUSY2:
MOVDPTR,#LCD_IS_BUSY2
JBACC.7,IS_BUSY2
WR_CMD1:
;
THEINPUTPARAMETERISLCD_CMD_BUF
ACALLIS_BUSY1
MOVDPTR,#LCD_WR_CMD1
MOVA,LCD_CMD_BUF
MOVX@DPTR,A
WR_CMD2:
ACALLIS_BUSY2
MOVDPTR,#LCD_WR_CMD2
WR_DATA1:
;
THEINPUTPARAMETERISTHELCD_CMD_BUF
MOVDPTR,#LCD_WR_DATA1
MOVA,LCD_DATA_BUF
WR_DATA2:
MOVDPTR,#LCD_WR_DATA2
DISP_ALL1:
THEINPUTPARAMETERISLCD_DISP_BUF
MOVLCD_CMD_BUF,#LCD_ADDZ_ZERO
ACALLWR_CMD1
MOVLCD_CMD_BUF,#LCD_ADDX_ZERO
REP_X1:
PUSHLCD_CMD_BUF
MOVLCD_CMD_BUF,#LCD_ADDY_ZERO
MOVR3,#40H;
EACHSCREENHAVE64COLMUNS
REP_Y1:
MOVLCD_DATA_BUF,LCD_DISP_BUF
ACALLWR_DATA1
DJNZR3,REP_Y1
POPLCD_CMD_BUF
INCLCD_CMD_BUF
CJNEA,#LCD_ADDX_END,REP_X1
DISP_ALL2:
ACALLWR_CMD2
REP_X2:
MOVR3,#40H
REP_Y2:
ACALLWR_DATA2
DJNZR3,REP_Y2
CJNEA,#LCD_ADDX_END,REP_X2
LCD_INIT:
;
CLRLCD_RST
ACALLDELAY50
SETBLCD_RST
MOVLCD_CMD_BUF,#LCD_DISP_ON
MOVLCD_DISP_BUF,#LCD_DISP_CLR
ACALLDISP_ALL1
ACALLDISP_ALL2
PRINTE:
;
THEINPUTPARAMETERSARELCD_X,LCD_Y,DPTR,SIZE_X,SIZE_Y
MOVR4,SIZE_X
REP_X:
MOVA,LCD_X
ADDA,#LCD_ADDX_ZERO
MOVLCD_CMD_BUF,A
MOVR3,SIZE_Y
PUSHLCD_Y
REP_Y: