数码管汇编程序+PPT
02实验二:数码管动态显示程序设计25页PPT
八段LED段码表
10.1.2 LED显示器工作原理
1、LED静态显示方式
LED显示器工作于静态显示方式时,各位的共阴 极(或共阳极)连接在一起,每位的段码线分别与1 个8位的锁存器输出相连。之所以称为静态显示,是 因为各个LED的显示字符一经确定,相应锁存器锁存 的段码输出将维持不变,直到送入另一个字符的段码 为止。正因为如此,静态显示的亮度都较高。
dp g f …… a 低电平点亮
dp g f e d c b a
f
a g
b
高电平点亮 dp g f …… a
ed
c dp
公共阴极
接地
思考:如果要在8段显示器上显示P. ,那么共阳极 和共阴极段码分别是什么?
共阳极段码是:0CH ;共阴极段码是:F3H
字符 字形
共阳 共阴
理论上,八段可以 显示128种不同的字符, 扣除其中没有意义的组 合状态后,八段LED显示 器可以显示的字符如表 所示。
动态显示:
各显示器在显示过程中轮流得到送显信号,与各显示器接口 的I/O口线是共用的。
静态显示特点:
无闪烁,无须扫描,节省CPU时间,编程简单,用元器件多, 占I/O线多。
动态显示特点:
用元器件少,占I/O线少,有闪烁,必须扫描,花费CPU时间, 编程复杂。(有多个LED时尤为突出)
动态显示中延时时间的选择
各显示器在显示过程中轮流得到送显信号与各显示器接口动态显示中延时时间的选择动态显示中延时时间的选择在动态显示方式中各led显示器轮流工作为了防止产生闪烁现象每个led数码管刷新频率必须大于25hz即相邻两次点亮的时间间隔要小于40msled显示器的位数越多每一位的显示时间越短在驱动电流一定的情况下亮度越低正因如此在动态led显示电路中要适当增大驱动电流一般取20ma35ma正常情况下的工作电流一般在1020ma之间以抵消因显示时间短造成亮度下降
C51单片机03(数码管最终)PPT课件
谢谢大家
荣幸这一路,与你同行
It'S An Honor To Walk With You All The Way
演讲人:XXXXXX 时 间:XX年XX月XX日
MCS-51 单片机
1
a
2
b
3
c
a
4
dfgb
5
e
6 7 8
e
c
f
d
g
dp
dp
GND
9
单个共阴数码管与51单片机的连接
如何实现数码管静 态显示“5”?
执行语句 P1 = 0x6d;
数码管的静态显示
完整的数码管的静态显示程序 头文件
#include<reg52.h> 主函数
void main(void)
g f COM a b
a f gb
e
c
d DP
e d COM c DP
阳极 1 +5V
0 阴极 0V
LED发光二极管的工作原理
共阳极1 CV+O5CMCV
DP g f e d c b a
DP g
0:亮 1:灭
f ed c ba
0 COM 共阴极
共阳接法
共阴接法
半导体数码显示器内部接法
0:灭 1:亮
12、延时10毫秒
13、… … … … 14、熄灭各个数码管 15、选通第8个数码管,同时禁止其他数码管 16、送第8个数码管要显示的字符的代码段 17、延时10毫秒 18、跳回第一步开始循环执行
数码管的动态显示
程序代码如下: #include <AT89X51.H> #define unchar unsigned char void Delay(unchar delaytime); sbit LED1=P2^0; sbit LED2=P2^1; sbit LED3=P2^2; sbit LED4=P2^3; sbit LED5=P2^4; sbit LED6=P2^5; sbit LED7=P2^6; sbit LED8=P2^7;
数码管显示程序(汇编语言)
实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。
二、实验内容编制程序,使数码管显示“DJ--88”字样。
三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“DJ--88”字样。
脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。
2、数码管显示“DJ--88”字样。
五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。
汇编语言程序设计经典课件模版(PPT65张)
DA4 DB 5 DUP(0) ; 重复5个0存入DA4开始的存储单元中
2 表达式赋值语句
1)赋值语句 EQU
格式: 符号名 EQU 表达式 ;一个符号名只能定义一次
例:
COUNT EQU 100
; 常数赋给符号名COUNT
DATA EQU COUNT+2
; 表达式赋给符号名DATA
A1
运算结果 改变运算符优先级 下表或间接地址 连接结构与变量 修改变量 位图形 记录/字段位数
运算符优先级
优先级 1 2 3 4 5 6 7 8 9 10
运算符 ( ) , [ ] , < > , • , LENGTN , WIDTH , SIZE , MASK PTR , OFFEST , SEG , TYPE , THIS , CS: , DS: , ES: , SS: HIGH , LOW * , / , MOD , SHL , SHR +,- EQ , NE , LT , LE , GT , GE NOT AND OR , XOR SHORT
段名 ends ;指示段或者结构结束 功能:将一个逻辑段定义成一个整体 规定段所属的段寄存器 assume cs:段名, ds:段名, ss:段名,ES:段名 功能:定义4个逻辑段,指明段和段寄存器的 关系
3 段定义语句
定义类型是对该段起始位置的定义。参数有:
PARA,BYTE,WORD,PAGE
格式2:变量名 助记符 n DUP(操作数,操作数….)
N必须是正整数,表示括号内操作数的重复次数
例如:
DA1 DB 10H, 23H ; 变量DA1装入10H , 23H
DA2 DW ‘OK’
; 字符串‘OK’的ASCII码装入DA2开始的存 储单元中
数码管课件
return(0);
} 数码管显示程序设计
2014/1/17
数码管显示程序设计
2014/1/17
1、数码管显示硬件电路图 1.1 数码管
使用注意事项:
段及小数点上加限流电阻 目前大多用的都是硅管,点亮时的压降值为1.7V,外接+ 5V的Vcc,R=(Vcc-1.7V)/3mA,大概为1k欧姆。若需要的 亮度较大,限流电阻阻值一般选为330欧姆。
使用电压:
数码管显示程序设计
2014/1/17
2、程序设计 2.1 数码管驱动子程序
查表eg:DISP_TAB[8] = {0x01,0x02,0x04,0x08,0x10,0x20, 0x40,0x80}; for(i=0;i<8;i++) { P0.11=DISP_TAB [i]; }
数码管显示程序设计
数码管显示程序设计
2014/1/17
2、程序设计 2.2 主程序
主程序只需调用数码管驱动子程序即可 主程序中需注意: ① LPC2103头文件 #include“config.h”; ② 子程序调用; ③ LPC2103引脚设置;
数码管显示程序设计
2014/1/17
3、示例 3.1 子程序示例
void HC595_SendDat(uint8 dat)//待显示数据的输出 { uint8 i; IOCLR = SPI_CS;//SPI_CS=0,选中芯片 for(i=0;i<8;i++) //发送8位数据 {IOCLR = SPI_CLK; //SPI_CLK=0,产生输出时钟 if((dat&0x80)!=0) IOSET = SPI_DATA;//发送1, else IOCLR = SPI_DATA;//发送0 dat<<=1; IOSET = SPI_CLK; //SPI_CLK=1,产生输出时钟
《数码管显示控制》课件
在工业自动化系统中,数码管显示控制用于实时显示各种参数和状态信息。
工业控制
智能家居
仪器仪表
在智能家居系统中,数码管显示控制用于显示温度、湿度、电量等家居环境信息。
在各种仪器仪表中,数码管显示控制用于显示测量结果和状态信息。
03
02
01
数码管显示控制原理
数码管显示控制发展趋势与展望
05Βιβλιοθήκη 智能化:随着人工智能和物联网技术的快速发展,数码管显示控制正朝着智能化方向发展。未来的数码管显示将具备自适应调节、智能识别等功能,能够根据环境和使用场景自动调整显示效果,提高用户体验。
更广泛的应用领域
随着技术的不断进步和应用领域的拓展,数码管显示控制将在更多领域得到应用。例如,在智能家居、智能交通、智能医疗等领域,数码管显示将发挥重要作用,提升人们的生活品质。
硬件需求
Arduino开发板、数码管显示模块、杜邦线等
详细描述:介绍如何使用STM32的HAL库,通过STM32的GPIO口来控制数码管的显示内容,实现更复杂的显示效果。
编程语言:C语言
实现功能:通过编程控制数码管显示更复杂的图案和动画效果。
硬件需求:STM32开发板、数码管显示模块、杜邦线等
总结词:基于STM32平台的编程实例
更高的显示效果
未来的数码管显示将具备更高的显示效果,包括更高的分辨率、更丰富的色彩、更低的延迟等,为用户提供更加清晰、逼真的视觉体验。
更强大的交互能力
未来的数码管显示将具备更强大的交互能力,能够实现更加自然、直观的交互方式,如手势控制、语音控制等,提升用户的操作体验。
更高效的生产工艺
随着生产工艺的不断改进和技术创新,未来的数码管显示将采用更加高效的生产工艺,降低成本,提高生产效率,进一步推动数码管显示控制的应用和发展。
数码管和按键ppt课件
1.数码管及其编程 2.按键及其编程
1
1.数码管
1.1 数码管介绍
数码管其实就是按一定顺序排列光二极管,有规律的点亮就可以显示出来特定的符号。一般使 用数码管显示0~9和A~F。共阴极的数码管码表如下图。
3
1.2 学习数码管实验电路
8
编写第三个程序(动态显示) 程序参考实验讲义。
9
2 按键学习
开发板上的独立按键电路
10
矩阵键盘
本实验中,仅介绍独立按键,矩阵键盘需要下来自己学习。
11
按键的去抖
当我们按下按键时,并不是一下子就从打开 变成了闭合状态,而是会产生抖动,如下图 所示。
12
13
此课件下载可自行编辑修改,供参考! 感谢您的支持,我们努力做得更好!
4
可以看到,开发板上的数码管电路结合了两个锁存器,这样做的目的是为 了节省I/O口。如果单纯做数码管显示电路,是可以去掉锁存器的,但是因为开 发板上的元器件太多,所以有必要使用锁存器来拓展I/O口。
该电路使用单片机的P0口以及P2.6和P2.7来驱动数码管,P2.6和P2.7分别 控制两个锁存器的锁存端,定义P2.6为DULA,连接在左边的锁存器上,这个锁 存器主要用来控制数码管的每个段即a~g和dp。而P2.7定义为WELA,连接在右 面的锁存器上,这个锁存器的功能是选择是哪个数码管显示。因为使用的是共阴 极数码管所以哪位为低时那个数码管就显示。例如首先给P0输出0xff并使左边的 锁存器所存,然后给P0输出0xfe,并使右边的锁存器所存此时第一个数码管就 会全亮,而其他的数码管不亮。
5
1.3 编写数码管程序
首先,新建一个工程,编写第一个程序如下图。
6
数码管原理及显示_51单片机C编程ppt课件
.
4 一个共阴数码管循环显示0~9---单片机驱动
景德镇学院机电系
.
4 一个共阴数码管循环显示0~9---单片机驱动
景德镇学院机电系
第一步 用仿真软件Proteus画出上图。
第二步 用程序员书写软件UltraEdit将源程序书写完成。
第三步 用keil软件建立一个工程(用到上一步源程序),产生hex文件。
.
景德镇学院机电系
共阳数码管
3 数码管的显示段码---共阳
unsigned char seg7code[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳
.
4 一个共阴数码管显示一个数字编程---手动控制
第四步 将hex文件导入Proteus的单片机中,仿真运行看结果。
详细见具体操作!
.
STC micro
宏晶科技
.
景德镇学院机电系
3 数码管的显示段码----共阴
共阴数码管
unsigned char code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//共阴
.
景德镇学院机电系
1 数码管的结构
外型及引脚.2 数码管的分源自---共阴景德镇学院机电系
❖ 共阴数码管 共阴数码管是指将所有发光二极管的阴极接到一起
形成公共阴极(COM)的数码管。 共阴数码管在应用时应将公共极 COM接到地线
GND 上,当某一字段发光二极管的阳极为高电平时, 相应字段就点亮。当某一字段的阳极为低电平时,相应 字段就不亮。共阴数码管内部连接如图3所示。
《数码管显示》PPT课件
2021/3/8
13
素材和资料部分来自 网络,如有帮助请下载!
2021/3/8
10
动态显示
动态显示的特点是将所有位数码管的段选线 并联在一起,由位选线控制是哪一位数码管有 效。选亮数码管采用动态扫描显示。所谓动态 扫描显示即轮流向各位数码管送出字形码和相 应的位选,利用发光管的余辉和人眼视觉暂留 作用,使人的感觉好像各位数码管同时都在显 示。动态显示的亮度比静态显示要差一些,所 以在选择限流电阻时应略小于静态显示电路中 的。void Nhomakorabeaain()
{ unsigned int y;
y=0x00FF;
y=_irol_(y,4);
}
2021/3/8
2
空操作函数
格式:void _nop_(void); 作用:产生单一汇编指令nop.执行该函数实际上无实质性操作,仅 是延时一个机器周期.
例:从P0.7输出三个机器周期宽的正脉冲 P0 &=~0x80; P0 |=0x80; _nop_; _nop_; P0 &= ~0x80;
#define WR573(dat)\
{\
P0 = dat;\
LE573 = 1;\
_nop_();\
LE573 = 0;\
}
2021/3/8
5
中断源的符号、名称及产生的条件
INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
JBCflag ? C002 DECval C002: RET
51单片机数码管显示程序设计PPT优秀课件
;全局变量定义
FLAG
EQU 20H ;标志位
DISSEG
EQU P0 ;显示段驱动
DISBIT
EQU P2 ;显示位驱动P2.7-P2.2
DISBUF
EQU 21H ;显示缓冲区首地址21H-26H
DISBITBUF
EQU 27H ;当前显示位计数器0-5
FLASH
EQU 28H ;闪烁控制xxxxxx00,将x=1闪烁,=0不闪
INC R0
CJNE R0,#50H,INIT1
;初始化定时器T0
;f=11.0592MHz,2.5ms定时
MOV TMOD,#01H ;模式1
MOV TL0,#05H
MOV TH0,#0F7HSETB TR0;启动
SETB ET0
;开中断
2021/6/3
SETB EA RET
10
动态显示参考程序3:中断服务程序
2021/6/3
9
动态显示参考程序2:主程序
ORG 0000H
LJMP START
ORG 000BH
LJMP T0SERV ;T0中断入口
ORG 0030H
START: MOV SP,#50H ;初始化堆栈
LCALL INIT
;初始化
LOOP: MOV DISBUF,#1
MOV DISBUF+1,#2
;----------2.5MS中断服务程序=动态显示-------
T0SERV: MOV TL0,#05H
MOV TH0,#0F7H
PUSH PSW
;保护现场
PUSH ACC
PUSH DPH
PUSH DPL
SETB RS0
数码管驱动与程序设计PPT优选版
共阳极数码管
10 10 101 101 101 101 10 01 hgfedcba
+5V
数码管有8个笔段,每个笔段有亮和灭 两种状态,则每个数码管有28 = 256种 显示组合,去掉“点(h)”,其余7 个笔段有27 = 128种显示组合。
假设将a~h对应8位二进制数的0~7位:
a
f
b
g
e
c
d
h
笔段数值对应关系表
将0xF9送往P1口,即数码管的段选端segA~segH
3
;等效:将com4连接到K9(0电平)
第2位数码管显示“2”
2
;等效:将com3连接到K9(0电平)
数码管的动态扫描显示
目录
LED数码管 数码管驱动电路 段码表的生成 数码管的动态扫描显示
数字符号与数值的关系
笔段与数值的对应关系
+ -
数码管驱动与程序设计
目录
LED数码管 数码管驱动电路 段码表的生成 数码管的动态扫描显示
数字符号与数值的关系
ORG
0x0000
数码管的动态扫描显示——实验电路
CLR
P3.
实现方法:每次只让一个数码管显示。
ORG
0x0000
0
数码管驱动电路
;等效:将com1连接到K9(0电平)
在数字字符和数值之间建立对应的关系。
MOV CLR ACALL SETB
MOV CLR ACALL SETB
MOV CLR ACALL SETB SJMP
HOME(ABS, CODE) 0x0000
0xF9:1111
1001
字c符延显o置m“时示置将101将管被,长亮1”0码,x显的拉三短度的F管三示段9高极:的数送的极字选,管在前值往所第管符端第Q保提P有1Q1“s11证下位1e1位笔口g导11数 尽数A关”数段,通~码 量码闭码全即,s管 短管e,管部数g显H第熄码示1灭位“数1”
IIC总线,数码管及键盘PPT演示课件
/* All unit block CLK enable */
始 #**************************************** 化 #* change BDMACON reset value for BDMA *
、 #* Set clock control registers *
时 #****************************************************
ldr
r0,=LOCKTIME
钟 ldr str
r1,=0xfff r1,[r0]
11
ldr r0,=CLKCON
10
#****************************************************
初 #* START * #****************************************************
始 ResetHandler: ldr r0,=WTCON
#****************************************
D ldr r0,=BDIDES0
M ldr r1,=0x40000000 0x40000000 */
A
str r1,[r0] ldr r0,=BDIDES1
ldr r1,=0x40000000 0x40000000 */
/* watch dog disable*/
化 ldr r1,=0x0 str r1,[r0]
看 ldr r0,=INTMSK
门 ldr r1,=0x07ffffff /* all interrupt disable */ str r1,[r0]
单片机实例之数码管PPT课件
unsigned char dispcount; void delaynms(unsigned char n) { unsigned char i,j;
for(i=n;i>0;i--) for(j=250;j>0;j--);
}
void main(void) { while(1)
{ for(dispcount=0;dispcount<8;dispcount++) { P1=tabledu[dispcount]; P0=tablewe[dispcount]; delaynms(20); //10ms,12MHz }
void main(void) void delay02s(void) unsigned char x=0,a,b;
数码管段码
表4-2 共阳数码管显示数字的段码表
四、程序设计
要实现0~9的显示,设
计方法与前面彩灯花样显示
类似,首先写出0~9的显示
数据(表4-1中的字型码数
据,注意电路中选用的是共
图4-6 数码管原理图
动态显示达到一定速度时,由于人眼的视觉暂
留特性,在观察时,数码管所有内容如同静态显 示一样,不会产生闪烁。所以,对动态扫描的频 率有一定的要求,频率太低,LED数码管将出现 闪烁现象。如频率太高,由于每个LED数码管点 亮的时间太短,LED数码管的亮度太低,无法看 清。所以,显示时间一般取几个ms左右为宜。在 编写程序时,常采用调用延时子程序来达到要求 的保持时间。程序工作时,使电路选通某一位数 码管后,该数码管被点亮后并保持一定的时间。
{ while(1) 本任务是实现0~99999999的加1计数显示。 静态显示电路连接特点是单片机端口的每一位与数码管的一个端相连接,相当于单片机的一个引脚外接一只发光二极管。 图4-7 动态显示流程图 例如:显示一个“3”字,那么应当是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。 mov r6,#5 程序的设计框图见图4-5。 24进制计数和前面的十进制计数不同的是,当计数到24时,个位数要变为0,同时十位数也要变为0。 SS:MOV R7, #200 共阴极就是将8个LED的阴极连接到一起组成公共端COM,接负极,当相应字段为高电平“1”时,可以点亮该字段; for(k=248;k>0;k--); void delay02s(void) void main(void) mov r6,#5 2s的0-9数字显示。
数码管动态显示汇编程序例子
数码管动态显示汇编程序例子;数码管动态显示汇编程序例子,显示12(时)38(分)H10 EQU 65HH1 EQU 66HM10 EQU 67HM1 EQU 68HSHOUR EQU 69HSMIN EQU 6AHDISH10 EQU 6FHDISH1 EQU 70HDISM10 EQU 71HDISM1 EQU 72HMEMA EQU 75HMEMB EQU 79HORG 0000HAJMP STARORG 0030H;数码管数据表格TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80HDB90H,88H,83H,0C6H,0A1H,86H,8EH ;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F ORG 0050HSTAR: MOV SHOUR,#12; 设为12时MOV SMIN,#38; 设为38分MOV MEMA,#0MOV MEMB,#0MOV SP,#30HMOV PSW,#00H;#############################MAIN: MOV SP,#30HMOV PSW,#00HMOV MEMA,SHOURMOV MEMB,SMINACALL TLED; 把要显示的数转换成数码管代码ACALL DISPLAY; 显示小时,分钟MOV P0,#0FFHMOV P1,#0FFHAJMP MAIN;#########################################; 显示小时,分钟DISPLAY:MOV P0,DISH10MOV P1,#11111110BACALL D1MSMOV P0,DISH1MOV P1,#11111101BACALL D1MSMOV P0,DISM10MOV P1,#11111011BACALL D1MSMOV P0,DISM1MOV P1,#11110111BACALL D1MSRET;#################################### ; 把要显示的数转换成数码管代码TLED: MOV P0,#0FFHMOV A,MEMAMOV B,#10DIV ABMOV H10,AMOV H1,BMOV A,MEMBMOV B,#10DIV ABMOV M10,AMOV M1,BMOV A,H10MOV DPTR,#TABMOVC A,@A+DPTRMOV DISH10,AMOV A,H1MOV DPTR,#TABMOVC A,@A+DPTRMOV DISH1,AMOV A,M10MOV DPTR,#TABMOVC A,@A+DPTRMOV DISM10,AMOV A,M1MOV DPTR,#TABMOVC A,@A+DPTRMOV DISM1,ARET;############################################ ;延时D1MS: MOV R7,#0AHLOOP1: MOV R6,#32HLOOP2: DJNZ R6,LOOP2DJNZ R7,LOOP1RET用AT89C51实验板的两位数码管显示00~99依次循环的汇编语言程序a_bit equ 20h ;数码管个位数存放内存位置b_bit equ 21h ;数码管十位数存放内存位置temp equ 22h ;计数器数值存放内存位置star: mov temp,#0 ;初始化计数器,从0开始stlop: acall display;调用显示子程序inc temp;对计数器加1mov a,tempcjne a,#100,next ;判断计数器是否满100?mov temp,#0;满100就清零重新开始next: ljmp stlop;不满就循环执行;显示子程序display: mov a,temp ;将temp中的十六进制数转换成10进制mov b,#10 ;10进制/10=10进制div abmov b_bit,a ;十位在amov a_bit,b ;个位在bmov dptr,#numtab ;指定查表启始地址mov r0,#4dpl1: mov r1,#250 ;dplop: mov a,a_bit ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码mov p0,a ;送出个位的7段代码clr p2.7 ;开个位显示acall d1ms ;显示162微秒setb p2.7;关闭个位显示,防止鬼影mov a,b_bit ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码mov p0,a ;送出十位的7段代码clr p2.6 ;开十位显示acall d1ms ;显示162微秒setb p2.6;关闭十位显示,防止鬼影djnz r1,dplop ;循环执行250次djnz r0,dpl1 ;循环执行250X4=1000次ret;2+2X80=162微秒,延时按12MHZ计算D1MS: MOV R7,#80DJNZ R7,$RET;实验板上的7段数码管0~9数字的共阴显示代码numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH end ;如果是共阳数码管的显示代码numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H。
数码管PPT优选版
LED显示接口典型应用例子
电路:
静态显示“5”
#include<reg51.h> // 包含51单片机寄存器定义的头文件 void main(void) { 引脚输出低电平,数码显示器接通电源准备点亮 P2=0x6d; //让P0口输出数字“5”的段码6dH }
例:静态循环显示0~9
#include<reg51.h> #define uint unsigned int #define uchar unsigned char
E,0x79,0x71};
• void delay()
•{
•
uint i,j;
•
for(i=200;i>0;i--)
for(j=110;j>0;j--);
•}
• void main(void)
•{
• uint k;
• while(1) //无限循环
•{
• 引脚输出低电平,DS0点亮
•
• for(k=1;k<5;k++)
例:用数码管慢速动态扫描显示“1234”。 电路:
#include<reg51.h>
#define uint unsigned int
//宏定义
#define uchar unsigned char
void delay()
{
uint i,j;
for(i=200;i>0;i--)
for(j=110;j>0;j--);
}
void main(void)
{
while(1) //无限循环
{
引脚输出低电平,DS0点亮
P1=0x06; //数字1的段码