单片机程序设计

一、每两个数码管为一组交替点亮“8”
程序1:
#include
void delay()
{ int t,k;
for(t=0;t<20000;t++)
{ k++;}
}
void main()
{ int i,j,k;
while(1)
{
P1=0x01;
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)


{ delay();
P1<<=1;
delay();
P1>>=1;
delay();
}
P1<<=2;
delay();
}
}
}
程序2:
#include
main()
{
unsigned char j,i;
long delay;
for(j=0;j<1000;j++)
{P1=0x01;
for(i=0;i<3;i++)
{
for(delay=0;delay<5000;delay++);
P1<<=1;
for(delay=0;delay<5000;delay++);
P1>>=1;
for(delay=0;delay<5000;delay++);
P1<<=1;
for(delay=0;delay<5000;delay++);
P1>>=1;
for(delay=0;delay<5000;delay++);
P1<<=2;
}
}
}


二、让第四个数码管逐段亮,然后逆序逐段灭
#include
main()
{int i,k;
while(1)
{
P1=0X04;
P2=0X01;
for(i=0;i<8;i++)
{
for(k=0;k<20000;k++);
P2<<=1;
P2=P2+1;
}
for(i=7;i>=0;i--)
{
for(k=0;k<20000;k++);
P2>>=1;
P2=P2-1;
}
}
}

三、开关K5向上拨时,显示闪烁亮5;向下时,亮6
#include
sbit P0_2=P0^2;
main()
{
int k;
P1=0xff;
P2=0x6d;
for(k=0;k<20000;k++);
P2=0x00;
for(k=0;k<20000;k++);
while(P0_2==0x01)
{
P1=0xff;
P2=0x7d;

}
}

四、将开关K0~K5的置位情况显示在数码管上,开关置“ON”显示0,开关置“OFF”显示1.
#include
main()
{
int k;
while(1)
{ P0=0x1f;
P2=0x3f;
P1=P0;

for(k=0;k<20;k++);
P2=0x06;
for(k=0;k<20;k++);
P1=~P0;
}
}

五、将开关K0~k7的置数显示在数码管上,如:K0~k7全部为OFF,则第一、二个数码管显示FF
#include
#define uchar unsigned char
#define uint unsigned int
main()
{
uchar code tab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
int t,i;
while(1)
{
P0=0xff;
P1=0x01;
i=P0&0x0f;
P2=tab[i];
for(t=0;t<200;t++);
P1=0x02;
P0>>=4;
i=P0&0x0f;
P2=tab[i];
for(t=0;t<200;t++);
}
}

六、使第六个数码管显示“H”,每中断一次,“H”左移一次
#include
in0v() interrupt 0
{
P1>>=1;
if(P1==0x00)
{
P1=0x20;
P2=0x76;
}
}
main()
{
EA=1;
EX0=1;
IT0=1;
P1=0x20;
P2=0x76;
while(1);
}

七、利用8XX51并行口接的两个数码管显示中断次数
#include
#define uchar unsigned char uchar k;
unsigned char k;
unsigned char code tab[16]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};
void delay()
{
int i;
for(i=0;i<200;i++);
}
in0v()interrupt 0
{
k++;
if(k==255)
k=0;
}
main()
{
int a,b,c;
EA=1;EX0=1;IT0=1;
P1=0x00;
while(1)
{
a=k;
b=k%256 /16;
c=k%10;
P2=tab[b];
P1=0x01;
delay();
P2=tab[c];

P1=0x02;
delay();
}
}

相关文档
最新文档