1、(5) 课程设计报告 (6)答辩情况目录:一题目4页二问题的提出4页三总体设计4页四详细设计5页五调试程序的方法8页六你所设计的程序最终完成的功能9页七对该设计题目有何更完善的方案12页八收获及心得体会12页九附录:程序清单13页河北工业大学计算机硬件技术基础(2010)课程设计报告学院理学院班级物理C071成绩姓名梁少锋学号073009同组人陶磊073012一、题目用单片机模拟消毒碗柜的工作过程+液晶显示(03)二、问题的提出定时消毒碗柜是现代化生活中不可缺少的电器,给家庭生活带来方便和卫生。这个学期我们学习了单片机硬件技术技术这门课,从中获益匪浅,希望将所学得以应用。于是设计了这样一个程序
2、来模拟定时消毒的目的。(1) 培养综合运用所学单片机知识来解决生活中常见问题的能力。(2) 掌握单片机的接口技术及相关外围芯片的外特性和控制方法。(3) 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。(4)进一步加深对MCS-51单片机内部结构和程序设计方法的理解。三、总体设计1、 分析问题的功能(1)通过软件编程利用8051单片机内部定时器实现对消毒的定时,开关模拟消毒柜的门,外部中断实现消毒开始命令。(2)设计中加入了液晶的同步显示,可以提示用户消毒的状态,如进行、暂停、结束。2、系统总体结构设计(1)硬件设计:根据问题需要确定单片机、I/O接口、定时器、I/O设备、中断等
3、设备设备的应用;实验平台是DP-51PROC实验箱,用的是TKSMONITOR51仿真器,采用NXP(founded by Philips)的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)软件设计:主要功能分两大模块,即定时模块,液晶显示模块.其中定时为主要模块,在定时的过程中
4、根据需要调用液晶显示,并进行蜂鸣提醒。四、详细设计: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口接锁存器后组成地址总
5、线的低八位,低八位中的低三位分别接液晶屏的D/I,R/W,CS1控制端口,P0口不接锁存器直接与液晶屏的数据接口(DB0DB7)相连。P2口为地址总线的高八位,用于选择液晶屏的右半屏,其中实验箱内部已将CS1与CS2进行非链接,可以保证同时只会有一块显示屏被选中。P3.2使用第二功能外部中断0,用来控制屏幕的切换。P1.0用于控制液晶屏的复位操作。总体用来静态和动态显示消毒状态,实现了液晶的显示。下面以表格的形式列出所有的硬件连接:串行口器件引脚P1.0液晶RSTP1.1T1P1.2LED1P1.3LED2P1.4SW1P3.1BUZZP3.2(INT0)KEY2P3.3(INT1)KEY1P
6、3.4(T0)不接线P3.5(T1)A0D/IA1R/WA2CS1Y0CSA15G2AA14G2BA13G1A12CA11BA10A2、 软件详细设计:按各功能模块进行程序设计,并说明各功能模块的实现方法。3、设计中的主要困难及解决方案在将液晶显示糅合在程序中时,前三张的静态显示可以正常运行,后边的动态显示无法调用,后来发现是主程序和液晶显示所用的存储单元和地址有冲突,经过调整,程序正常。五、调试程序的方法硬件调试方法(确定硬件工作是否正常)在进行实验之前要对所用到的硬件进行检测,看其是否完好。再有“图形点阵液晶显示屏驱动参考程序看液晶显示屏及KYE1是否能正常工作。在检验个部分都能工作后再由
7、此硬件进行设计实验。特别应注意的是在进行硬件连线一定得在断电的情况下进行,否则容易烧坏仪器。软件调试方法(如何调试程序的方法)在程序无法正常运行的时候,采用单步运行,查看每一步程序时是否正常,发现不能执行的地方就是问题的所在;在某个功能不能运行的时候,采用执行到光标处指令,如不能正常跳转,应是循环出现问题或子程序有错误。比如,在开始调用液晶静态图行的时候,调用完,不能继续执行后边的程序,经研究发现是液晶显示子程序中有死循环,不能跳出,修改后便正常了。六、你所设计的程序最终完成的功能(1)我们所编制的定时消毒碗柜+液晶显示程序,首先可以实现对放入其中的碗筷进行定时消毒,并在柜门被中途打开时停止消
8、毒,防止臭氧的扩散,同时可以用液晶显示同步提示用户现在消毒所处的状态,最后消毒完成时会有蜂鸣提示。准备的测试数据,将以图解说明。七、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。程序在基本要求的基础上,进行了全面的创新,包含了基本的单片机知识点,融会贯通。将中断控制消毒以及中断级联延时等各个方面融到一起,液晶动态显示融入其中,达到了较高的单片机应用与创新水平。对本次课程设计,我们倾注了很大的心血,使任务书中所要求的功能圆满的实现,并在此的基础上,加入了创新功能,如液晶同步显示及蜂鸣器的提示音等,使消毒碗柜更加贴近生活,贴近实际应用。此外这个设计还可以应用到其他需要计时及显示的用具
9、中,大大增加其使用价值。2、对课题提出更完善的方案。定时消毒碗柜基本程序简单,却运用的知识广泛,在此基础上可以将其它的课题和此课题合二为一,运用中断的嵌套等解决问题。八、收获及心得体会1、通过本次课程设计,自己在哪些方面的能力有所提高。对单片机的基本理论有了更深刻的理解和掌握,通过查阅资料和文件,扩大了自己又一个领域的知识面,掌握了一门新的技能。在编程的过程中,逻辑思维能力及实践能力,创新能力,合作能力以及学习能力都得到了全面的提高。2、收获和心得体会。首先,谢谢赵老师在这半年来对我们的谆谆教导,不仅仅是在学习方面,更重要的是老师让我们学会了创新,学会了自己思维,动手的能力,并且在人生观、价值
10、观给予了很多很多耐人寻味的道理。通过这门课程的学习,我懂得了要努力去争取,努力去创造,正直加奋斗才等于成功。最后希望老师身体健康、万事如意!日期: 2010年 月 日 程序清单: LCD_WR_CMD1 XDATA 2004H ;THE CONSTANTS OF THE COMMAND,THE 1 REPRESENT THE LEFT LCD_WR_DATA1 XDATA 2005H SCREEN,AND THE 2 REPRESENT THE RIGHT SCREEN LCD_WR_CMD2 XDATA 2000H LCD_WR_DATA2 XDATA 2001H LCD_IS_BUSY1
11、XDATA 2006H LCD_IS_BUSY2 XDATA 2002H LCD_RST BIT P1.0 LCD_DISP_ON EQU 3FH THE EQU IS THE CONSTANTS AND THE DATA IS THE VARIABLES LCD_DISP_CLR EQU 00H LCD_ADDZ_ZERO EQU 0C0H THE FIRST DISPLAY LINE LCD_ADDX_ZERO EQU 0B8H LCD_ADDX_END EQU 0C0H LCD_ADDY_ZERO EQU 40H LCD_DISP_BUF DATA 0EH LCD_DATA_BUF DA
12、TA 02H LCD_CMD_BUF DATA 02H LCD_X DATA 08H THE LEFT-UP LOCATIONS IN THE X-COORDINATE LCD_Y DATA 09H SIZE_X DATA 0AH SIZE_X*8 IS THE DISPLAYED AREAS SIZE IN THE ROW DIRECTION SIZE_Y DATA 0BH THE DISPLAYED AREAS SIZE IN THE COLMUN DIRECTION START_X DATA 0CH IN THE ACTIVE DISPALY,ITS THE FIRST AREAS LC
13、D_X START_Y DATA 0DH ORG 8000H LJMP MAIN ORG 8003H SETB F0 RETI ORG 8013H ;外部中断1入口地址 LJMP TOP1 ORG 800BH ;定时器0入口地址 LJMP TOP3 ORG 801BH ;定时器1入口地址LJMP TOP5 ORG 8100H-主程序如下:MAIN: MOV SP,#70H ;堆栈区从70H开始 SETB EA SETB EX0 SETB IT0 CLR F0 ACALL LCD_INIT LCALL FIRST_SCREEN LCALL SECOND_SCREEN LCALL THIRD_SC
14、REEN MOV TMOD,#51H ;1为计数0为定时 MOV TH1,#0FFH ;计数100个 MOV TL1,#9CH MOV TH0,#3CH ;延时50ms MOV TL0,#0B0H MOV IE,#10001111B ;申请中断 CLR RS0 SETB RS1 SETB IT1 ;采用边缘触发 外部中断1下降眼厨房 SETB P1.2 ;门显示灯 (灭) SETB P1.3 ;消毒指示灯 CLR P1.1 ;100ms的脉冲 (CLR清0)WELL: JB P1.0,WELL1 ;不断判断门的状态等待中断 判断P1.0是1,如果是1就条到WELL1,如果是0 就顺序执行 SE
15、TB P1.2 SJMP WELLWELL1: CLR P1.2 AJMP WELLTOP1: JNB P1.0,TOP2 ;门中断触发判断触发方式(JNB 0的时候转到TOP2 1的时候就一直执行) LJMP NEXTTOP2: SETB P1.2 ;关门启动定时器0 SETB TR0 ;kai zhong duan 1wei kai tiao dao CLR P1.3 SETB TR1 LCALL FIVE_SCREENNEXT: RETI ;恢复到中断处TOP3: CLR P1.3 ;消毒指示灯打开 JB P1.0,TOP4 CPL P1.1 ;每50ms取反一次 wei le gei
16、p1.1 yi ge mai chong MOV TH0,#3CH ;重新赋值 LJMP NEXT1TOP4: CLR TR0 ;判断门转移 CLR TR1 SETB P1.3 CLR P1.2 NEXT1:RETITOP5: CLR TR0 ; 定时器1中断 CLR TR1 SETB P1.3 MOV TH1,#0FFH ; MOV TL0,#0B0H LCALL SIX-SCREENdelay2: MOV 7BH,0FFH LCALL DELAY1 djnz 7BH,DELAY2 LCALL FOUTH_SCREEN mov 35h,#05h DELAY1: MOV 34H,#05H DJ
17、NZ 34H,$ DJNZ 35H,DELAY1 RET RETI DELAY4: MOV R5,#00H DELAY4_L1: MOV R4,#00H DJNZ R4,$ DJNZ R5,DELAY4_L1 RETDELAY10: MOV R3,#01H DL1: MOV R4,#01H DL2: MOV R5,#0FH DJNZ R5,$ DJNZ R4,DL2 DJNZ R3,DL1DELAY50: MOV R3,#04H DL11: MOV R4,#0FH DL22: MOV R5,#0AFH DJNZ R4,DL22 DJNZ R3,DL11DELAY100: MOV R3,#06H
18、 DL111: MOV R4,#0FFH DL222: MOV R5,#0FFH DJNZ R4,DL222 DJNZ R3,DL111 RET IS_BUSY1: ;NO PARAMETER PUSH DPH PUSH DPL MOV DPTR,#LCD_IS_BUSY1 MOVX A,DPTR JB ACC.7,IS_BUSY1 POP DPL POP DPHIS_BUSY2: MOV DPTR,#LCD_IS_BUSY2 JB ACC.7,IS_BUSY2WR_CMD1: ;THE INPUT PARAMETER IS LCD_CMD_BUF ACALL IS_BUSY1 MOV DPT
19、R,#LCD_WR_CMD1 MOV A,LCD_CMD_BUF MOVX DPTR,AWR_CMD2: ACALL IS_BUSY2 MOV DPTR,#LCD_WR_CMD2WR_DATA1: ;THE INPUT PARAMETER IS THE LCD_CMD_BUF MOV DPTR,#LCD_WR_DATA1 MOV A,LCD_DATA_BUFWR_DATA2: MOV DPTR,#LCD_WR_DATA2DISP_ALL1:THE INPUT PARAMETER IS LCD_DISP_BUF MOV LCD_CMD_BUF,#LCD_ADDZ_ZERO ACALL WR_CM
20、D1 MOV LCD_CMD_BUF,#LCD_ADDX_ZERO REP_X1: PUSH LCD_CMD_BUF MOV LCD_CMD_BUF,#LCD_ADDY_ZERO MOV R3,#40H ;EACH SCREEN HAVE 64 COLMUNS REP_Y1: MOV LCD_DATA_BUF,LCD_DISP_BUF ACALL WR_DATA1 DJNZ R3,REP_Y1 POP LCD_CMD_BUF INC LCD_CMD_BUF CJNE A,#LCD_ADDX_END,REP_X1DISP_ALL2: ACALL WR_CMD2 REP_X2: MOV R3,#4
21、0H REP_Y2: ACALL WR_DATA2 DJNZ R3,REP_Y2 CJNE A,#LCD_ADDX_END,REP_X2LCD_INIT: ; CLR LCD_RST ACALL DELAY50 SETB LCD_RST MOV LCD_CMD_BUF,#LCD_DISP_ON MOV LCD_DISP_BUF,#LCD_DISP_CLR ACALL DISP_ALL1 ACALL DISP_ALL2PRINTE: ;THE INPUT PARAMETERS ARE LCD_X,LCD_Y,DPTR,SIZE_X,SIZE_Y MOV R4,SIZE_X REP_X: MOV A,LCD_X ADD A,#LCD_ADDX_ZERO MOV LCD_CMD_BUF,A MOV R3,SIZE_Y PUSH LCD_Y REP_Y:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1