单只数码管循环显示0~9

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

项目一:单只数码管循环显示0~9

一、设计要求:用汇编语言编写程序实现51单片机控制1只数码管,循环

显示0~9。并用仿真软件仿真出实验结果。最后,用51单片机开发板实现一支数码管循环显示0到9。

二、设计原理:

数码管显示原理:

我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。

其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。本实验用到的共阳极0到9编码:

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

P0口:P0.0—P0.7: 双向I/O (内置场效应管上拉),寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。PO结构图如下:

四、设计仿真图:

五、源代码:

ORG 0000H

SJMP MAIN

ORG 030H

MAIN: MOV R1,#00H

MOV A,R1

D1: ANL A,#0FH

MOV DPTR,#TAB

MOVC A,@A+DPTR ;查表

MOV P0,A ;P0口输出,显示数字

ACALL DELAY

INC R1

MOV A,R1 ;A加1

CJNE A,#10,D1 ;判断A是否到达10

LJMP MAIN ;当A达到10跳回主函数,重新赋值为0 DELAY: MOV R2,#05H ;延时

D2: MOV R3,#0FFH

D3: MOV R4,#0FFH

DJNZ R4,$

DJNZ R3,D3

DJNZ R2,D2

RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数值1到9的共阳极编码

END

六、结果:数码管循环显示0、1、2、3、4、5、6、7、8、9

相关文档
最新文档