数码管循环显示实验 作者:dolphin 时间:2012-11-13 数码管循环显示实验一、实验目的在实际系统中,数码管显示的内容由程序控制,是可以变化的。实验中要求在数码管上循环显示0~6,通过实验需掌握以下知识点:1.练习数据传送、循环、延时程序等基本程序结构和LOOP、DJNZ 等常用指令的使用。2.循环程序的基本结构。3.延时程序的编写方法、调试方法。二、实验预备知识1.延时程序在实际应用中,单片机一般用于控制其他设备,如机械、电炉等,而单片机运行的速度远远快于受控设备的速度。为了使单片机与受控设备的速度匹配,程序中经常采用延时程。单片机每执行一条指令要消耗一定的时间。例如:在单片机晶振为6MHZ 时执行MOV A,#09H 的时间为2uS,如果反复执行该指令10000 次则会产生20mS 的延时。下面是一个实际的延时程序:……MOV R0 ,#10HDEL0:MOV R1 ,#0F7HDEL1:NOPDJNZ R1 ,DEL1DJNZ R0 ,DEL0……该程序反复执行NOP 和DJNZ 指令,从而产生延时。延时时间就是单片机执行延时程序段所消耗的时间,延时时间与单片机的速度有关,因此同一个程序在不同的单片机系统内运行,延时时间可能不一样。延时程序的延时时间的计算方法:① 先计算出单片机的机器周期TT=fosc/12(如果为6 时钟工作方式,T=fosc/6)② 在指令表中查延时程序中每条指令的机器周期数,机器周期数乘机器周期就是执行一次该指令的时间。③ 根据延时程序中各指令的执行次数,计算延时时间。例如:某单片机的晶振频率为12MHZ,执行上述程序的延时时间为:(((2+1)×247+1+2)×16+1)×1uS=11905uS=11.905uS由于单片机执行速度很快,需要执行非常多的指令才能达到一定的延时时间,为了使延时程序不至于太长,一般都采用循环结构,即多次反复执行同一段程序。以上程序采用了双重循环,循环次数为3952 次。思考题:要改变以上延时程序的延时时间,应如何修改。三、实验内容1.实验程序实验程序如下,其中程序空缺部分需自行编写。ORG ;程序从0000H 单元开始存放。CLR P3.5 ;位选LOOP:MOV A ,#0C0HMOV P0 ,ALCALL DELAYMOV A ,#0F9HMOV P0 ,ALCALL DELAYMOV A ,#0A4HMOV P0 ,ALCALL DELAYMOV A ,#0B0HMOV P0 ,ALCALL DELAYMOV P0 ,#99HLCALL DELAYMOV P0 ,#92HLCALL DELAYSJMP LOOPDELAY: ;延时1S 的子程序END思考:在以上程序中,前面4 次显示通过累加器A 向P0 口送数,而后面3 次直接向P0 口送数,运行结果会有不同吗?2.结合硬件和实验要求给每条指令加注释,说明指令在程序中的作用3.编写以上程序中空缺部分4.单步运行、断点运行程序观察、记录结果。5.连续运行,观察、记录运行结果五、思考题1.要改变显示速度,应如何修改程序?六、扩展内容1.在该程序中有很多相同的操作,试用循环结构重新编写程序,缩短程序长度。2.修改程序实现显示0~F,时间间隔不变。 关键词: 数码管循环显示实验 电路图 阅读全文 加入微信获取电子行业最新资讯搜索微信公众号:EEPW或用微信扫描左侧二维码