您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>数码管>

数码管动态扫描显示01234567程序(三种方案)

2018年01月29日 11:24 电子发烧友整理 作者: 用户评论(0

数码管由于价格便宜,使用简单,在电器特别是家电领域(比如空调、热水器和冰箱等)得到了极为广泛的应用。在高校电子信息类专业单片机的教学过程中,数码管动态显示及实现方法是学生普遍反映较难掌握的内容。鉴于此,本文为大家带来三个数码管动态扫描显示01234567程序介绍。

数码管动态扫描显示01234567程序一

原理图

8个数码管它的数据线并联接到JP5, 位控制由8个PNP型三级管驱动后由JP8引出。

数码管动态扫描显示01234567程序(三种方案)

程序流程图

数码管动态扫描显示01234567程序(三种方案)

汇编语言参考程序

ORG 0000H

AJMP MAIN

ORG 0080H

MAIN:

CLR P2.0 选中第一个数码管

MOV P0,#28H 显示0

LCALL DELAY 调用延时ORG

MOV P0,#0FFH 关显示

SETB P2.0

CLR P2.1 选中第二个数码管

MOV P0,#7EH 显示1

LCALL DELAY

MOV P0,#0FFH

SETB P2.1

CLR P2.2 选中第三个数码管

MOV P0,#0A2H 显示2

LCALL DELAY

MOV P0,#0FFH

SETB P2.2

CLR P2.3 选中第四个数码管

MOV P0,#62H 显示3

LCALL DELAY

MOV P0,#0FFH

SETB P2.3

CLR P2.4 选中第五个数码管

MOV P0,#74H 显示4

LCALL DELAY

MOV P0,#0FFH

SETB P2.4

CLR P2.5 选中第六个数码管

MOV P0,#61H 显示5

LCALL DELAY

MOV P0,#0FFH

SETB P2.5

CLR P2.6 选中第七个数码管

MOV P0,#21H 显示6

LCALL DELAY

MOV P0,#0FFH

SETB P2.6

CLR P2.7 选中第八个数码管

MOV P0,#7AH 显示7

LCALL DELAY

SETB P2.7

MOV P0,#0FFH

AJMP MAIN 重新开始

DELAY: 延时子程序

MOV R7,#2

D1: MOV R6,#25

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

c语言参考程序

#include p=""> >

#define uchar unsigned char //宏定义,为方便编程

#define uint unsigned int

#define DIGI P0 //宏定义,将P1口定义为数码管

#define SELECT P2 //宏定义,将P2定义为数码管选择口

uchar digivalue[]={0x28,0x7e,0x0a2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};

//显示的数字数组,依次为0,1,。。,9

uchar select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //选择数码管数组,依次选择1,2,。。,8

void delay() //延迟函数,决定数码管跳变的间隔时间

{

uchar ii=200; //若发现数码管闪烁,调节这里即可

while(ii--);

}

char code SST516[3] _at_ 0x003b; //仿真器插入代码

main() //主函数

{

uchar i=0;

while(1)

{

for(i=0;i<8;i++) //8个数码管轮流显示

{

SELECT=select[i]; //选择第i个数码管

IGI=digivalue[i]; //显示i

delay();

}

}

非常好我支持^.^

(7) 58.3%

不好我反对

(5) 41.7%

( 发表人:李建兵 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!