1、当第三次按下设置键时,数码管停止闪烁,设置灯熄灭,秒灯重新闪烁,时间以设定值计时。1.3 硬件环境一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz,386,486,586及兼容机.640K基本内存,1M以上扩充内存,10M以上的显示内存,时钟电路显示板,USB串行口接线。1.4 软件环境采用的是Windows操作系统,Keilc51系统软件,用汇编语言进行开发。第二章、课程设计说明2.1课程设计目的1利用所学过的知识,初步分析单片计算机控制系统的能力;2综合运用本专业方向所学知识,构成以单片机为核心控制系统的能力;3单片计算机控制系统实时软件的设计、 编制与调试的能力;4单片计算机控制系统
2、中模拟部件(包括电压及功率放大部件) 以及常规传感部件的使用、调试的能力;5单片计算机控制系统综合调整及性能测试的能力;6实验结果分析、总结及撰写技术报告的能力。2.2课程设计要求1.掌握单片机最小系统的电路原理图; 2.熟知单片机的工作原理;3.分小组共同编辑、编译软件;4.调试要求: 1)数码管显示当前的时间值;2)时间精度为0.5秒,由时、分、秒之间的分隔点闪烁体现;3)四个按钮,P1.0用作“时”的设定、P1.1用作“分”的设定、P1.2用作“秒”的设定;P1.3用作复位的设定5.独立完成课程设计报告(必须有完整的源程序2.3课程设计内容利用单片机定时器制作数字时钟并可以实现时钟的控制
3、。(1)制作数字时钟系统(2)可以控制时钟电路,P1.0选择控制时,分,秒,P1.1对时,分,秒进行自加(3)灯的亮灭显示控制端,P3.7口黄灯亮表示控制时,P3.3口红灯亮表示控制分,红灯、黄灯一起亮表示控制秒。(4)闪烁显示时钟(5)调试数字时钟(2)撰写课程设计报告第三章、时钟显示的工作原理3.1 单片机最小系统的硬件电路原理图图1 单片机电路原理图发光二极管导通时,产生一个正向的工作电流IF,工作电流根据发光二极管的材料、功率等不同,额定电流一般在1040mA左右,发光二极管导通时的正向压降VF比较大,一般为1.53V(普通硅二极管约为0.7V)。因此在正常使用中,为了保证发光二极管在
4、电源电压V的作用下管子的工作电流不超过额定值,必须给发光二极管串联一只限流电阻R,R的阻值可由下式算出:R(V-VF)/IF。其中V为工作电源电压,VF为发光二极管的正向压降,IF为额定工作电流。从上面原理图1可知,当单片机的P1.7输出低电平(0V)时,有正向工作电流流过发光二极管,发光二极管就亮;相反,当P1.7输出高电平(5V)时,发光二极管没有足够电压差产生工作电流,此时发光二极管不亮。因此,程序中只需交替让单片机的P1.7输出低电平“0”和高电平“1”就可以让发光二极管闪烁发光。3.2数码管硬件电路原理图图2 数码管及配件电路图数码管管脚图说明:0.5寸单联共阴高亮红色数码管数字对应
5、数码管显示控制转换字节(共阴编码)显示HGFE,DCBA编码0 0011,11110x3F;1 0000,01100x06;2 0101,10110x5B;3 0100,11110x4F;4 0110,01100x66;5 0110,11010x6D;6 0111,11010x7D;7 0000,01110x07;8 0111,11110x7F;9 0110,11110x6F;共阳为编码取反即可,接线为高低端口对应接法。备注:第一脚的识别很简单,看管脚的底部,有一个方块型的就是第一脚。或者正面(就是显示那面)朝你,左下角第一个为第一脚。3.3 复位电路原理图图3 复位电路原理图当8051的AL
6、E及/PSEN两引脚输出高电平,RST引脚高电平到时,单片机复位。RST/VPD端的高电平,若直接由启动瞬间产生,则为启动复位,若通过按动按钮产生高电平复位称手动复位。图中,上电时,接通电源,电容器C相当于瞬间短路,+5V加到了RST/VPD端,该高电平使8051全机复位。若运行过程中,需要程序从头执行,只需按动按钮S,则直接把+5V加到了RST/VPD端,从而复位。显然,该电路即可以上电复位,也可以手动复位,是常用复位电路之一。3.4 开关电路原理图 图4 开关电路原理图图为一开关电路,按键SB1是系统开机键,当其按下,使V15导通,V14基极被拉低,V14导通,系统通电。单片机两个管脚与P
7、ower_on、Power_keep两处相连,当单片机上电后,Power_keep上输出高电平,保持V15处于导通状态,整个系统供电正常。Power_on管脚用于定时检测SB1按键按下的时间长度,1s、2s、3s对应不同的工作状态,此时SB1作为功能键。SB2作为系统关机键,按下后V15截止,系统断电整个电路其实也挺简单的了,不过总觉得按键SB2有些浪费,作为一个产品结构空间有限时,不允许这样的设计浪费,所以想把SB2解放出来另作功能键,而用SB1作为开关机键。在目前的电路上,如果直接去掉SB2,用SB1定时按下使单片机在Power_keep处输出一个低电平,让系统断电。但有人说这样系统关机不
8、可靠,大家分析一下是否真的不可靠?我觉得这个关机电平是低电平,所以单片机断电后管脚上电平不会突变,低电平关机应该是可靠的吧。3.5晶振电路原理图 图5 晶振电路原理图第四章、设计的部分内容说明4.1计时功能的实现与中断服务程序时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0打开后,进入计时,满100毫秒后,重装定时。中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。这样然后根据进率,得到时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,实现时钟计时功能。累加是用指令INC来实现的。进入中断服
9、务程序以后,执行PUSH PSW和PUSH A将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的保护现场? . 以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循“后进先出”的原则。4.2设计中运用的指令说明1 指令:是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。 2.中断: 中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,
10、又返回被中断的程序处,继续执行下去。例如:程序截取 MOV 38H,#80H ;中断跳转 Loophh:RET ;断返回3.堆栈:堆栈是一个后进先出的主存区域,位于堆栈段中,使用SS段寄存器记录其段地址。它只有一个出入口,即当前栈顶,栈顶是地址较小的一端(低端),它用堆栈指针寄存器SP指定。堆栈有两种以字为单位的基本操作,对应两条基本指令:进栈指令PUSH和出栈指令POP。截取程序Push acc ;堆栈进行保护现场及中断TR: Pop acc 4.伪指令:伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,完成诸如数据定
11、义、分配存储区、指示程序结束等功能。程序截取Org 0000h ;汇编起始指令Ljmp setup Org 000BH5.部分程序段的功能 a.中断入口程序 ;ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;外中断1中断程序入口外中断1中断返回ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;串行中断程序入口地址串行中断程序返
12、回b. 闪动调时程序T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护 PUSH PSW ; MOV TL1, #0B0H ;装定时器T1定时初值 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次) MOV R2,#06H ;重装0.3秒定时用初值 CPL 02H ;0.3秒定时到对闪烁标志取反 JB 02H,FLASH1 ;02H位为1时显示单元熄灭 MOV 72H,76H ;02H位为0时正常显示c. 主程序START:MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7
13、,#0BH ;CLEARDISP: MOV R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入熄灭符数据MOV TMOD,#11H ;设T0、T1为16位定时器MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用初值(50MS
14、20)START1: LCALL DISPLAY ;调用显示子程序JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1SETMM1: LJMP SETMM ;转到时间调整程序SETMMd. 1秒计时程序T0中断服务程序INTT0:PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正A
15、DDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0MOV R0,#77H ;指向分计时单元(76H-77H)
16、分计时单元加1分钟分数据放入ACJNE A,#60H,ADDHH ;ADDHH:小于60分时中断退出大于或等于60分时分计时单元清0MOV R0,#79H ;指向小时计时单元(78H-79H)小时计时单元加1小时时数据放入ACJNE A,#24H,HOUR HOUR:小于24小时中断退出大于或等于24小时小时计时单元清0OUTT0:中断退出时将分、时计时单元数据移MOV 73H,77H ;输入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器开放T0中断RETI MOV 73H,77H ;INTT1OUT: POP
17、PSW ;恢复现场中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据AJMP INTT1OUT ;转中断退出FLASH2:01H位为1时,数据放入小时显示单元(74H-75H),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;第五章、心得体会一个星期的单片机课程设计很快就结束了,在这一周当中,虽然开始有点困难,但是经过我们们分工合作,合理地进行设计安排,再加上老师的耐心指导,我们们终于顺利地完成了本次单片机课程设计,同时也
18、学到了很多东西。 在本次课程设计中,我们通过动手实践操作,进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,加深了对单片机原理及应用技术的认识,进一步巩固了对单片机知识的理解,掌握简单单片机应用系统的设计、制作、调试的方法。在设计时根据课题要求,复习相关的知识,查询相关的资料。根据实验条件,找到适合的方案,找到需要的元器件及工具,进行实验。这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时间了解了更多的有关单片机的知识,使知识更加丰富,使自己更加充实。 与此同时,我们也对团队分工合作有了进一步的认识,只有通过合理的分工合作,我们们
19、才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。最重要的是,这次课程设计也增加了我们对问题的研究和探讨,在我们以后的学习中会有更多的帮助。 单片机作为我们们的主要专业课之一,虽然在大二开学初我们对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我们发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。作为一名通信技术专业的大二学生,我们觉得做单片机课程设计是十分有意义的,而且是十分必要的。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我们发现效率很高,这是我们做这次课程设计的又一收获。然后,要做好一个课程设计
20、,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我们受益终身。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢
21、固。我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次课程设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。 在完成单片机课程设计后,我们们发现我们们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。但通过学习这一次实践,增强了我们们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面。从中增强了我们们的团队合作精神,并让我们们认识到把理论应用到实践中去是多么重要。第六章、参考
22、文献(1) 张迎新编著.单片微型计算机原理、应用及接口技术(修订版).北京:国防工业出版社,2004.1.(2) 谢维成等.单片机原理与运用及C51程序设计.北京:清华大学出版社,(3) 李朝青编著.单片机原理及接口技术.北京:航空航天大学出版社,1999.3.(4) 王福瑞等编著.单片微机测控系统设计大全.北京:航空航天大学出版社, (5) 苏家健、曹柏荣、汪志锋编著,单片机原理及应用技术.高等教育出版;StateCurrent equ 51h Org 0000h ; Ljmp setup ;无条件转移指令Org 000BH ljmp LOOP1 Org 001BH ljmp ViewRef
23、 Org 0030H setup: MOV 40h,#00h ;秒控制 MOV 41h,#59h ;分控制 MOV 42h,#23h ;时控制 MOV 30H,#02H MOV 31H,#03H ;显示时 MOV 32H,#0AH ;显示横线 MOV 33H,#05H MOV 34H,#09H ;显示分 MOV 35H,#0AH MOV 36H,#00H MOV 37H,#00H ;显示秒中断 MOV R0,#30H MOV TMOD,#11h ;串行口方式设定MOV TL1,#0B0H MOV TL0,#0F0h ;设置定时器0的低四位初值 MOV TH1,#3CH MOV TH0,#0D8
24、h ;设置定时器0的高四位初值 Setb TR0 Setb TR1 ;置位 MOV IE,#8AH ;闭合EA ES ET1 ET0 MOV 50H,#20 ;定时1秒钟循环次数MOV StateCurrent,#00hMAIN:MOV p1,#0ffhJB p1.0,SLOOP1 ;当P1.0等于1时跳转至SLOOP1 Lcall delay Lcall delay JB p1.0,SLOOP1 JNB p1.0,$ ;当P1.0为零时进入死循环 INC StateCurrent ;加1MOV a,StateCurrentCjne A,#04h,SLOOP1 ;当A等于#04H时跳转至SLOOP1MOV StateCurre
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1