您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > 东华理工大学单片机课程设计
单片机课程设计报告专业:电气自动化班级:1240802学号:2012400802##姓名:JION学长QQ:1968812673指导老师:朱**一、设计背景数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。二、单片机课程设计目的1.进一步熟悉和掌握8051单片机的结构及工作原理。2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机系统的全过程,为今后从事相应打下基础。6.掌握SPI串口进行数据传输的应用,并学会使用外部芯片辅助项设计。7.锻炼通过自学与自己探索的方式解决问题的能力。8.通过此次课程设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。三、课程设计要求。1.本系统共用4个数码管从左到右依次显示月、日/时、分采用软件译码静态显示。2.按键处理设置为:如没有按键,则时钟正常走时并且第二个数码管的小数点一秒一下。3.当按下切换按键时进入时间/日期切换键时,显示日期小数点常亮,再按一下有变成时间显示。4.校正时间功能按下校正键,月数码管重复闪烁,小数点常亮,这样在按下加调键可以进行校时。再按下校正键时,日数码管重复闪烁,小数点常亮,这样在按下加调键可以进行校时。再按下校正键时,时数码管重复闪烁,小数点闪烁,这样在按下加调键可以进行校时。再按下校正键时,分数码管重复闪烁,小数点闪烁,这样在按下加调键可以进行校时按。按下确定键后程序正常走时。四、设计方案4.1、计时部分课程设计思路:该课程设计是利用80C51单片机内部的定时/计数器、中断系统、以及行列键盘,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间、校时、启动控制等。用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为62500ms(自己计算)。形成定时时间为62500ms。用片内RAM的2FH单元对62500ms计数,计16次产生秒计数器34H单元加1,秒计数器加到60则分计数器33H单元加1,分计数器加到60则时计数器32H单元加1,时计数器加到24则时计数器清0。然后把分、时、日、月计数器分成分单元和时单元放到4个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时高位、小时低位---分高位、分低位和显示日期格式为月高位、月低位---日高位、日低位。4.4资源分配:按键信息存储单元50H月单元30H日单元31H时单元32H分单元33H秒单元34H计数单元2FH清零标志位20H.1时间/日期标志位20H.0显示的四位BCD码依次放入43H、42H、41H、40H校正指针21H显示缓冲区3BH3AH,4.2、按键判断部分课程设计思路:当每十六微妙进位一次时,程序就进行一次判断按键是否有按下的(是否有6按键功能切换键,切换日期与时间校正键校时键,确定键校正键按下k2),判断是否与上次按键相同,如果相同直接送入时间缓冲间送出显示,如果不相同就保存按下的按键再进行判断是不是切换键(ACC.5,SET2)按下,如果是时间时期同时取反,将取反时间送入时间缓冲间送出显示同时将取反日期送入日期缓冲间送出显示。如果不是,判断是否是校正键按下,如果不是重复将取反时间送入时间缓冲间送出显示同时将取反日期送入日期缓冲间送出显示。如果是校正键按下就进入校正状态,将校正指针初值设成(00,01、10、11、分别代表分、时日、月)同样判断校正指针(20H.1)中的值进入下面分、时、日、月四个子程序中执行,同时进入每个时间日期子程序中都要进行判断是否有ACC.6,ADD2;(加法)和ACC.7,SURE;确定键按下.每次按键任何一个键间日期缓冲间显示。如下图所示:4.3、数码管显示部分:把我们设计好的程序通过查表在数码管上显示出来,数码管上从左到右分别显示月、日/时、分,四个数码管分别显示高位和低位,切换时间显示时,要显示出小数点闪烁.如下图所示:4.5程序流程图:4.6子程序流程图:五、实验程序ORG0000HSJMPMAINORG000BHLJMPITOPORG0030HMAIN:MOV50H,#0FFH;按键信息初始化为未按键状态MOV30H,#1;月单元MOV31H,#1;日单元MOV32H,#0;时单元MOV33H,#0;分单元MOV34H,#0;秒单元MOV2FH,#16;2FH为十六分之一秒计数单元CLR20H.1;校正状态标志清零,为正常走时状态SETB20H.0;时间/日期标志置1MOVTMOD,#01H;置T0工作于方式1MOVTH0,#0BH;采用12M晶振,定时十六分之一秒MOVTL0,#0DCH;装载定时器初值MOVIE,#82H;允许中断SETBTR0;启动定时器SJMP$ITOP:PUSHPSW;现场保护PUSHACCMOVTH0,#0BHMOVTL0,#0DCHDJNZ2FH,KEY;计数开始MOV2FH,#16;十六分之一秒计数单元MOVA,34HADDA,#01H;在0~9之间,加01HDAA;进行十进制调整MOV34H,A;送到秒计数单元CJNEA,#60H,KEY;未到六十秒转移到KEY,到了则顺序往下执行MOV34H,#00H;秒单元清零MOVA,33H;分单元加1,并做十进制调整ADDA,#01HDAAMOV33H,A;送到分计数单元CJNEA,#60H,KEY;未到六十分转移到KEYMOV33H,#00H;分单元清零MOVA,32H;时单元加1,并做十进制调整ADDA,#01HDAAMOV32H,A;送到时单元CJNEA,#24H,KEY;未到二十四小时转移,到了则顺序往下执行MOV32H,#00H;时单元清零MOVA,31H;日单元加1,并做十进制调整ADDA,#01HDAAMOV31H,A;送到日单元CJNEA,#31H,KEY;未到三十一天转移MOV31H,#01H;日单元变为一MOVA,30H;月单元加1,并做十进制调整ADDA,#01HDAAMOV30H,A;送到月单元CJNEA,#12H,KEY;未到十二个月转移MOV30H,#01H;月单元变为一KEY:JNB20H.1,ZOUSHI;判断是否校正状态,不是,则转非校正状态LJMPJIAOSHI;是,则转为校正状态ZOUSHI:MOVA,P1CJNEA,50H,KEY1;判断是否与上次按键相同,不相同则转移到KEYLJMPNONE1;相同则不断判键KEY1:MOV50H,A;保存上次按键信息JNBACC.4,SWITCH1;是否按下切换键JNBACC.5,SET1;是否为校正键LJMPNONE1;没按与无效键均不作判断SWITCH1:CPL20H.0;时间与日期的转换NONE1:JNB20H.0,DATE1;判断日期与时间的标志MOV3BH,32H;将时间送到显示缓冲区MOV3AH,33HLJMPDISPDATE1:MOV3BH,30H;将日期送到显示缓冲区MOV3AH,31HLJMPDISPSET1:SETB20H.1;切换到校正标志MOV21H,#0;校正指针并请零CLR20H.0;选择日期标志MOV3BH,30H;将日期送到显示缓冲区MOV3AH,31HLJMPDISPJIAOSHI:MOVA,P1CJNEA,50H,KEY2;判断是否与上次按键相同LJMPNONE2;若相同则不能判断按键KEY2:MOV50H,A;保存上次按键信息JNBACC.5,SET2;是否为校正键JNBACC.6,ADD2;是否为加键JNBACC.7,SURE;是否为确定键LJMPNONE2;空操作SET2:INC21H;校正指针并自动加1ANL21H,#03HSJMPNONE2ADD2:MOVA,#30H;指向需要校正的指针ADDA,21HMOVR0,AMOVA,@R0;需要校正的指针并自动加1ADDA,#1DAAMOV@R0,ACJNER0,#30H,DATE;判断月是否校正完成,校正完成跳转日CJNE@R0,#13H,NONE2MOV@R0,#1SJMPNONE2DATE:CJNER0,#31H,HOUR;判断日是否校正完成,完成则跳转到时CJNE@R0,#32H,NONE2MOV@R0,#1SJMPNONE2HOUR:CJNER0,#32H,MIN;判断时是否校正完成,完成则跳转到分CJNE@R0,#24H,NONE2MOV@R0,#0SJMPNONE2MIN:CJNE@R0,#60H,NONE2;校正分MOV@R0,#0SJMPNONE2SURE:CLR20H.1;校时完成跳转到走时标志SJMPTIME2NONE2:JNB21H.1,DATE2;判断送到显示缓冲区的是时间还是日期TIME2:SETB20H.0;时间/日期标志置1,为显示时间状态MOV3BH,32H;时间送到显示缓冲区MOV3AH,33HLJMPDISPDATE2:CLR20H.0;时间/日期标志位清零,为显示日期状态MOV3BH,30H;日期送到显示缓冲区MOV3AH,31HDISP:MOVA,3BH;显示缓冲区中的内容分解为四位BCD码依次放入43H~40H单元ANLA,#0F0HSWAPAMOV43H,AMOVA,3BHANLA,#0FHMOV42H,AMOVA,3AHANLA,#0F0HSWAPAMOV41H,AMOVA,3AHANLA,#0FHMOV40H,AJNB20H.1,DISP1;不是校正状态,正常显示,否则校正状态下,闪烁显示JNB2FH.3,DISP1;若2FH.3为1,校正内容对应的BCD码单元送熄灭码JNB21H.0,N1;为0高两位传送,为1低两位传送MOV40H,#0AHMOV41H,#0AHSJMPDISP1N1:MOV42H,#0AHMOV43H,#0AHLJMPDISP1DISP1:MOVDPTR,#TAB;指向表单MOVA,40H;查最高位MOVCA,@A+DPTRCJNEA,#09H,NEXT1;判断最高位是否为0MOVA,#0FFH;为0则给熄灭码NEXT1:MOVSBUF,A;传送到数码管上,串行静态显示JNBTI,$CLRTIMOVA,41H;查第二位MOVCA,@A+DPTRMOVSBUF,A;传送到数码管上JNBTI,$;等待传输完毕MOVA,42H;查第三位CLRTI;允许继续传输MOVCA,@A+DPTR;查显示数据对应段码JNB20H.0,NEXT2;判断时间/日期标志;CJNEA,#11H,NEXT2;日期灭0,时间状太不灭0;MOVA,#0FFH;MOVC,2FH.3;判断并改变小数点,并判断半秒亮半秒灭;ANLC,20H.0movc,2fH.3MOVACC.4,C;小数点为.4位NEXT2:MOVSBUF,AJNBTI,$CLRTIMOVA,43H;查第四位MOVCA,@AMOVSBUF,AJNBTI,$CLRTIPOPACC;现场恢复POPPSWRETITAB:DB11H,0d7H,98H,92H,56H,32H,30H,97H,10H,12H,0FFHEND六、总结及建议课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实
本文标题:东华理工大学单片机课程设计
链接地址:https://www.777doc.com/doc-4486655 .html