51单片机数码管显示实验报告11784.pdf
51单片机数码管显示实验报告11784--第1页
51单片机数码管显示实验
实验内容:
1)编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数
实现),到数码管显示9后,再从0开始显示,如此循环反复。
2)C语言程序
#includereg52.h
#defineuintunsignedint
voiddisplay();
voidnum();
inti;
unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管0-F编码表
voiddelayms(uint);
voidmain()
{
while(1)
{
51单片机数码管显示实验报告11784--第1页
51单片机数码管显示实验报告11784--第2页
num();
display();
}
}
voiddisplay()
{
P2=0xff;//消隐P0连接段选,P1节位选
P1=0x00;//8个数码管同时显示
P2=table[i];//数码管显示数码0
delayms(1000);//延时5ms
}
voidnum()
{
if(i9)
i++;
else
i=0;
51单片机数码管显示实验报告11784--第2页
51单片机数码管显示实验报告11784--第3页
}
voiddelayms(uintx)
{
uinti,j;
for(i=0;ix;i++)
for(j=0;j110;j++);
}
3)汇编语言:
ORG0000H
LJMPMAIN
ORG0100H
;P2连接段选,P1节位选
MAIN:MOVP1,#00H;所有的数码管都显示
MOVR2,#00H;从0开始显示
LOOP:MOVA,R2;为下面的基址加变址寄存器寻址方式做准备MOV
DPTR,#TAB1;把数组的首地址赋给DPTR
MOVCA,@A+DPTR;取数组中的数字
51单片机数码管显示实验报告11784--第3页
51单片机数码管显示实验报告11784--第4页
MOVP2,A;把取得的值送给P0口显示
ACALLDELAY;延时一会