51单片机数码管显示实验报告

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

51单片机数码管显示实验

实验内容:

1)编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复。

2)C语言程序

#include

#define uint unsigned int

void display();

void num();

int i;

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; //共阳极数码管0-F编码表

void delayms(uint);

void main()

{

while(1)

{

num();

display();

}

}

void display()

{

P2=0xff;//消隐P0连接段选,P1节位选

P1=0x00;//8个数码管同时显示

P2=table[i];//数码管显示数码0

delayms(1000);//延时5ms

}

void num()

{

if(i<9)

i++;

else

i=0;

}

void delayms(uint x)

{

uint i,j;

for(i=0;i

for(j=0;j<110;j++);

}

3)汇编语言:

ORG 0000H

LJMP MAIN

ORG 0100H

;P2连接段选,P1节位选

MAIN: MOV P1,#00H ;所有的数码管都显示

MOV R2,#00H ;从0开始显示

LOOP: MOV A,R2 ;为下面的基址加变址寄存器寻址方式做准备MOV DPTR,#TAB1 ;把数组的首地址赋给DPTR

MOVC A,@A+DPTR ;取数组中的数字

MOV P2,A ;把取得的值送给P0口显示

ACALL DELAY ;延时一会

INC R2 ;为取下一个数加一

CJNE R2,#10,LOOP ;只要数小于10就继续循环显示

MOV R2,#00H ;如果加到10后重新从0开始

LJMP LOOP ;进入循环函数

;******************************************

TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H; 数组

DB 92H,82H,0F8H,80H,90H

RET

;******************************************

DELAY: MOV R3,#3 ;延时函数

DE1: MOV R4,#0FFH

DE2: MOV R5,#0FFH

DJNZ R5,$

DJNZ R4,DE2

DJNZ R3,DE1

RET

;*************************************************

END

(3)编写程序学习数码管的动态显示,让8只数码管从从左往右显示1、2、3……8。

C语言程序:

#include

#define uint unsigned int

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; //共阳极数码管0-F编码表

void delayms(uint x);

void zuoyi();

void main()

{

int i;

while(1)

{

P1=0xfe;

for(i=0;i<8;i++)

{

P2=table[i];

delayms(3);

zuoyi();

}

}

}

void delayms(uint x)

{

uint i,j;

for(i=0;i

for(j=0;j<110;j++);

}

void zuoyi()

{

int a;

a=~P1;

a=a<<1;

P1=~a;

}

汇编语言:

;数码管动态显示

ORG 0000H

LJMP MAIN

ORG 0100H

;P0连接段选,P1节位选

MAIN: MOV R2,#0 ;从0开始显示

MOV P1,#0FEH

LOOP: MOV A,R2

MOV DPTR,#TAB1

MOVC A,@A+DPTR

MOV P2,A

ACALL DELAY

INC R2

MOV A,P1

RL A

MOV P1,A

CJNE R2,#8,LOOP

MOV R2,#0

AJMP LOOP

;****************************************** TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H ;数组DB 92H,82H,0F8H,80H,90H

RET

相关文档
最新文档