从零开始51单片机教程 —— 25 动态扫描显示接口电路及程序
00个周期,约2170微秒(11.0592M) MOV TL0,#LOW(65536-2000) SETB FIRST SETB SECOND ;关显示 MOV A,#DISPBUFF ;显示缓冲区首地址 ADD A,Counter MOV R0,A MOV A,@R0 ;根据计数器的值取对应的显示缓冲区的值 MOV DPTR,#DISPTAB ;字形表首地址 MOVC A,@A+DPTR ;取字形码 MOV P0,A ;将字形码送P0位(段口) MOV A,Counter ;取计数器的值 JZ DISPFIRST ;如果是0则显示第一位 CLR SECOND ;不然显示第二位 AJMP DISPNEXT DISPFIRST: CLR FIRST ;显示第一位 DISPNEXT: INC Counter ;计数器加1 MOV A,Counter DEC A ;如果计数器计到2,则让它回0 DEC A JZ RSTCOUNT AJMP DISPEXIT RSTCOUNT: MOV Counter,#0 ;计数器的值只能是0或1 DISPEXIT: POP PSW POP ACC RETI DELAY: ;延时130毫秒 PUSH PSW SETB RS0 MOV R7,#255 D1: MOV R6,#255 D2: NOP NOP NOP NOP DJNZ R6,D2 DJNZ R7,D1 POP PSW RET DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H END 从上面的单片机程序能看出,动态显示和静态显示相比,程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就能显示更多位数了。下面给出显示程序的流程图。 动态扫描程序框图>
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)