本次实验任务如下:
一、动态显示与静态显示的比较
1.什么是动态显示
驱动电路可以使数码管正常显示数据,数码管的驱动方式有两种:动态显示驱动和静态显示驱动。
动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起。
另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。
2.什么是静态显示
静态显示驱动静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动。
3.优缺点对比
二、如何控制多只数码管
1.电路图
利用触发器作为中间环节来控制数码管。
U2为段位触发器,控制数码管的显示。
U3为位选触发器,控制数码管的选择。
P0口作为数据的输出口。
2.代码
ORG 0000H
LJMP MAIN
ORG 30H
;..................................................
; 数码管DS0显示‘0’
;..................................................
MAIN: MOV P0,#0C0H ;段选数据0
CLR P1.0 ;选中U2为段选芯片,将U2的Ē写为低电平
CLR P1.2 ;时序引脚CKL为低电平,为接受数据做准备
SETB P1.2 ;时序为上升沿,即将数据传送给U2
SETB P1.0 ;关闭U2,使得U2不在接受数据
////////////////////
MOV P0,#0FEH ;位选数据由P0口给出,选择DS0数码显示
CLR P1.1 ;选中U3位选芯片,将U3的Ē写为低电平
CLR P1.2 ;时序引脚CKL为低电平,为接收数据做准备
SETB P1.2 ;时序为上升沿,即将数据传送给U3
SETB P1.1 ;关闭U3,使得U3不在接收数据
///////////////////
LCALL DELAY ;延时一段时间
MOV P0,#0FFH ;关闭数码管,为下一个数码管显示做准备
CLR P1.0 ;选中U3位选芯片,将U3的Ē写为低电平
CLR P1.2 ;时序引脚CKL为低电平,为接收数据做准备
SETB P1.2 ;时序为上升沿,即将数据传送给U3
SETB P1.1 ;关闭U3,使得U3不在接收数据
///////////////////
;..................................................
; 数码管DS1显示‘1’
;..................................................
MOV P0,#0F9H
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
////////////////////
MOV P0,#0FDH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///////////////////
LCALL DELAY
MOV P0,#0FFH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///////////////////
;..................................................
; 数码管DS1显示‘2’
;..................................................
MOV P0,#0A4H
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
////////////////////
MOV P0,#0FBH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///////////////////
LCALL DELAY
MOV P0,#0FFH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///////////////////
;..................................................
; 数码管DS1显示‘3’
;..................................................
MOV P0,#0B0H
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
////////////////////
MOV P0,#0F7H
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///////////////////
LCALL DELAY
MOV P0,#0FFH
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
///////////////////
;..................................................
; 延时程序
;..................................................
DELAY: MOV R7,#200 ;延时子程序
DJNZ R7,$
RET ;返回主程序
END
3.程序分析
程序分为两个部分:主程序、子程序。
主程序中又分四部分,分别是控制四个数码管的显示。
子程序的作用是延时。
三、控制多只数码管的方法
由上面的实验,我们得知,多只数码管的显示是通过段选和位选一起控制的。
段选程序控制数码管的显示。
位选程序控制数码管的选择。
段选和位选程序如下:
;*****段选程序*********
CLR P1.0
CLR P1.2
MOV P0,#0B0H
SETB P1.2
SETB P1.0
;*****位选程序*********
CLR P1.1
CLR P1.2
MOV P0,#0F7H
SETB P1.2
SETB P1.1
在来一个前面程序的精简版----使用查表发实现
;**************数码管动态显示‘0,1,2,3’*********************
ORG 0000H
LJMP MAIN
ORG 30H
;............................................................
; 初始化定义
;............................................................
MAIN: MOV R0,#0;段选数据指针
MOV R1,#0FEH ;段选数据初始化
MOV DPTR,#TAB ;“0~9”数据表
;............................................................
; 主程序
;............................................................
;****改变段码和位码****
LOOP: MOV A,R0 ;数据指针RO给累加器A
MOVC A,@ A+DPTR ;将数据表中指针所对应的数据传送给A
MOV P0,A ;数据传给数码管各段
CLR P1.0
CLR P1.2
SETB P1.2
SETB P1.0
////////////////////////
MOV P0,R1 ;将位选数据传送给P0口,点亮所需数码管
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
////////////////////////
LCALL DELAY ;延时一段时间
MOV P0,#0FFH ;关闭数码管,为下一个数码管显示做消
CLR P1.1
CLR P1.2
SETB P1.2
SETB P1.1
;****改变段码和位码****
INC R0 ;数据指针加1,指向下一个数据地址
MOV A,R1 ;位选数码管左移,准备得下一个数码管点亮
RL A
MOV R1,A
CJNE R1,#0EFH,LOOP ;判断DS3数码管是否点亮结束
LJMP MAIN ;循环本程序
;............................................................
; 延时程序
;............................................................
DELAY: MOV R7,#200 ;延时子程序
DJNZ R7,$
RET ;返回主程序指令
;............................................................
; 数码管数据表
;............................................................
TAB: DB 000H,0F9H,0A4H,0B0H,099H ;0-9数据表
DB 092H,082H,0F8H,080H,090H
END
时间:2018年10月19日13:28:43
-END-
上一篇:51单片机一位数码管汇编程序
下一篇:51 静态和动态显示数码管
推荐阅读最新更新时间:2024-11-03 16:35
设计资源 培训 开发板 精华推荐
- 51实训最小系统板
- 【物联网实战】菜鸟RGB+431626A
- LT6656BCDC-3、3V 低功率 ADC 电压基准的典型应用
- L6902D 驱动多达 6 个高电流白光 LED 的应用电路
- EVAL-ADT7516EBZ,评估板具有用于工业控制的 ADT7516、10 位 ADC、12 位 DAC 数据采集系统
- OP184ESZ 高端负载电流监控器的典型应用
- DC2046A-F,用于具有 DC/DC 和理想二极管桥的 LT4276C/LT4321 PoE(13W、5V/2.3A)PD 的演示板
- AP2014AEVM,用于板载 DC/DC 转换器应用的 AP2014 低成本同步降压稳压器的评估模块
- 使用 Microchip Technology 的 LX7165 的参考设计
- 【智能车】遥控小车+1066538A