双位数码管显示

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前言

《单片机应用技术》是自动化类专业一门理论较深.实践较强的主干综合专业课,该课程包括检测转换技术,微控技术和可编程控制技术等三大部分。检测与转换技术主要是实现物理量检测并将被检测的物理量转换成计数机或plc能识别的有效信号,作为控制系统的感知部分。而微机控制技术和可编程控制技术则在接收感知系统传来的信号技术基础上,根据执行机构的动作要求进行程序编制,形成控制信号,从而驱动动力系统进行各种操作。

单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。

原理图

程序说明

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。

动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,h"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

LED数码管动态显示

共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。原理示意图:

从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。例:如要显示“0”,则要 a,b,c,d,e,f六个字段亮就显示“0”了,而g和dp字段不亮;这样只要向P0口送出相应的代码即可,编码方法如下表:

dp g f e d c b a 显示的

字符编码

P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

0 0 0 1 0 0 1 0 0 0C0H

1 0 1 1 1 0 1 1 1 0F9H 1 1 0 0 0 0 1 0

2 0A4H 1 0 1 0 0 0 1 0

3 0B0H 0 0 1 0 1 0 1 1

4 99H

0 0 1 0 0 1 1 0 5 92H

0 0 0 0 0 1 1 0 6 82H

1 0 1 1 1 0 1 0 7 0F8H 0 0 0 0 0 0 1 0 8 80H

0 0 1 0 0 0 1 0 9 90H

程序使用时,只需将显示数字所对应的编码送P0口,然后打开相应的数码管显示位的电源控制即可显示相应的字符。

多位数码管显示控制程序及说明

START: MOV R0,#0 ;清零

MOV DPTR,#TABLE ;指定查表起始地址LOOP: ACALL DISPLAY ;调用子程序DISPLAY INC R0 ;R0加1

CJNE R0,#100,LOOP ;R0未到100则转换

JMP START ;跳转

DISPLAY: MOV A,R0 ;把R0里的数据送入A MOV B,#10 ;把10送入B

DIV AB ;a b相除

MOV 20H,A ;十位送入20H

MOV 21H,B ;个位送入21H

MOV R3,#50 ;把50送入R3

LOOP1: MOV A,21H ;取个位数

ACALL CHANG ;调用子程序CHANG CLR P2.4 ;开个位显示

ACALL DLY ;调用子程序DLY

SETB P2.4 ;关闭个位显示

MOV A,20H ;取十位数

ACALL CHANG ;调用子程序CHANG CLR P2.5 ;开十位显示

ACALL DLY ;调用子程序DLY

SETB p2.5 ;关闭十位显示

DJNZ R3,LOOP1 ;循环50次

RET ;子程序返回CHANG: MOVC A,@A+DPTR ;查表

MOV P0,A ;查表结果送入P0

RET ;子程序返回

DLY: MOV R6,#20 ;典型延时子程序延时

D1: MOV R7,#248 10ms

DJNZ R7,$

DJNZ R6,D1

RET

TABLE: DB 0C0H,0F9H,0A4H, ;表数据共阳极数码管显示代码 DB 0B0H,99H,92H,82H,

DB 0F8H,80H,90H

相关文档
最新文档