数码管循环显示实验 一、实验目的 在实际系统中,数码管显示的内容由程序控制,是可以变化的。实验中要求在数码管 上循环显示0~6,通过实验需掌握以下知识点: 1.练习数据传送、循环、延时程序等基本程序结构和LOOP、DJNZ 等常用指令的使 用。 2.循环程序的基本结构。 3.延时程序的编写方法、调试方法。 二、实验预备知识 1.延时程序 在实际应用中,单片机一般用于控制其他设备,如机械、电炉等,而单片机运行的速 度远远快于受控设备的速度。为了使单片机与受控设备的速度匹配,程序中经常采用延时 程。单片机每执行一条指令要消耗一定的时间。 例如:在单片机晶振为6MHZ 时执行MOV A,#09H 的时间为2uS,如果反复执行 该指令10000 次则会产生20mS 的延时。下面是一个实际的延时程序: …… MOV R0 ,#10H DEL0:MOV R1 ,#0F7H DEL1:NOP DJNZ R1 ,DEL1 DJNZ R0 ,DEL0 …… 该程序反复执行NOP 和DJNZ 指令,从而产生延时。延时时间就是单片机执行延时程 序段所消耗的时间,延时时间与单片机的速度有关,因此同一个程序在不同的单片机系统 内运行,延时时间可能不一样。延时程序的延时时间的计算方法: ① 先计算出单片机的机器周期T T=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 ,#0C0H MOV P0 ,A LCALL DELAY MOV A ,#0F9H MOV P0 ,A LCALL DELAY MOV A ,#0A4H MOV P0 ,A LCALL DELAY MOV A ,#0B0H MOV P0 ,A LCALL DELAY MOV P0 ,#99H LCALL DELAY MOV P0 ,#92H LCALL DELAY SJMP LOOP DELAY: ;延时1S 的子程序 END 思考:在以上程序中,前面4 次显示通过累加器A 向P0 口送数,而后面3 次直接向 P0 口送数,运行结果会有不同吗? 2.结合硬件和实验要求给每条指令加注释,说明指令在程序中的作用 3.编写以上程序中空缺部分 4.单步运行、断点运行程序观察、记录结果。 5.连续运行,观察、记录运行结果 五、思考题 1.要改变显示速度,应如何修改程序? 六、扩展内容 1.在该程序中有很多相同的操作,试用循环结构重新编写程序,缩短程序长度。 2.修改程序实现显示0~F,时间间隔不变。 |
评论