AT89C51单片机开发板程序.docx
- 文档编号:2880852
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:31
- 大小:16.97KB
AT89C51单片机开发板程序.docx
《AT89C51单片机开发板程序.docx》由会员分享,可在线阅读,更多相关《AT89C51单片机开发板程序.docx(31页珍藏版)》请在冰豆网上搜索。
AT89C51单片机开发板程序
AT89C51单片机开发板程序
1个LED数码管静态显示(0-9)
include
#defineucharunsignedchar
#defineuintunsignedint
uchari;
ucharcodea[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelay(uintz);
voidmain()
{
while
(1)
{
for(i=0;i<10;i++)
{
P2=0xfe;
P0=a[i];
delay(1000);
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
LED数码管显示(0-99)
#include
unsignedcharcount,num;
unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voidmain()
{
P2=0xfe;
IE=0x82;
TMOD=0x01;
TCON=0x30;
while
(1);
}
voidTOINT()interrupt1
{
TH0=0xd8;TL0=0xf0;
if(P2&1)P1=table[num/10];elseP1=table[num%10];
P2^=3;
if(++count<100)return;
count=0;
if(++num>99)num=0;
}
定时控制一只闪亮的灯
#include
#defineucharunsignedchar
#defineuintunsignedint
uintn;
sbitled=P0^0;
voidmain()
{
TMOD&=0xf1;
TMOD|=0x01;
EA=1;
ET0=1;
TR0=1;
while
(1)
{
}
}
voidtimer0()interrupt1
{
n++;
if(n==100)
{
n=0;
led=~led;
}
}
用独立键盘显示LED数码管(1-4)
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodea[]={0xc0,0xf9,0xa4,0xb0,0x99,0xff};
voiddelay(uintz);
voidmain()
{
ucharb,c;
c=5;
while
(1)
{
P0|=0x0f;
b=P0;
b&=0x0f;
if(b!
=0x0f)
{
delay(20);
P0|=0x0f;
b=P0;
b&=0x0f;
if(b!
=0x0f)
{
switch(b)
{
case0x0e:
c=1;break;
case0x0d:
c=2;break;
case0x0b:
c=3;break;
case0x07:
c=4;break;
default:
c=0;
}
}
}
P1&=0xfe;
P2=a[c];
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x<0;x--)
for(y=122;y<0;y--);
}
用矩阵键盘显示LED数码管(0-9,A-F)
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodea[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
voiddelay(uintz);
sbithang1=P0^3;
sbithang2=P0^2;
sbithang3=P0^1;
sbithang4=P0^0;
voidmain()
{
ucharb,c;
c=16;
while
(1)
{
hang1=0;
hang2=1;
hang3=1;
hang4=1;
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
delay(10);
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
switch(b)
{
case0xe0:
c=0;break;
case0xd0:
c=1;break;
case0xb0:
c=2;break;
case0x70:
c=3;break;
default:
c=16;
}
}
}
P3&=0xf0;
P2=a[c];
hang1=1;
hang2=0;
hang3=1;
hang4=1;
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
delay(10);
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
switch(b)
{
case0xe0:
c=4;break;
case0xd0:
c=5;break;
case0xb0:
c=6;break;
case0x70:
c=7;break;
default:
c=16;
}
}
}
P3&=0xf0;
P2=a[c];
hang1=1;
hang2=1;
hang3=0;
hang4=1;
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
delay(10);
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
switch(b)
{
case0xe0:
c=8;break;
case0xd0:
c=9;break;
case0xb0:
c=10;break;
case0x70:
c=11;break;
default:
c=16;
}
}
}
P3&=0xf0;
P2=a[c];
hang1=1;
hang2=1;
hang3=1;
hang4=0;
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
delay(10);
P0|=0xf0;
b=P0;
b&=0xf0;
if(b!
=0xf0)
{
switch(b)
{
case0xe0:
c=12;break;
case0xd0:
c=13;break;
case0xb0:
c=14;break;
case0x70:
c=15;break;
default:
c=16;
}
}
}
P3&=0xf0;
P2=a[c];
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
一只闪亮的灯
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^0;
voiddelay(uintz);
voidmain()
{
led=0;
delay(1000);
led=1;
delay(1000);
}
voiddelay(uintz)
{
uintx;
uinty;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
中断控制流水灯(从右向左)
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharled,temp;
voiddelay(uintz);
voidmain()
{
EA=1;
EX1=1;
temp=0x7f;
while
(1)
{
P2=temp;
temp=_cror_(temp,1);
delay(1000);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
voidextern1()interrupt2
{
P2=0x00;
delay(2000);
P2=0xff;
delay(2000);
}
中断控制流水灯(从左向右)
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharled,temp;
voiddelay(uintz);
voidmain()
{
EA=1;
EX1=1;
temp=0xfe;
while
(1)
{
P2=temp;
temp=_crol_(temp,1);
delay(1000);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
voidextern1()interrupt2
{
P2=0x00;
delay(2000);
P2=0xff;
delay(2000);
}
1位密码锁
#include
#defineucharunsignedchar
#defineuintunsignedint
#definemima3
#defineduanmaP1
sbitweima=P3^0;
sbitredled=P0^5;
sbitgreenled=P0^6;
ucharkey=0xff;
voidscankey();
voiddelay(uintz);
voidmain()
{
weima=0;
while
(1)
{
duanma=0xbf;
redled=1;
greenled=1;
scankey();
if(key==mima)
{
duanma=0x8c;
greenled=0;
delay(3000);
key=0xff;
}
if(key!
=0xff)
{
duanma=0x86;
redled=0;
delay(3000);
key=0xff;
}
else
{
duanma=0xbf;
redled=1;
greenled=1;
}
}
}
voidscankey()
{
ucharkeyinput;
P0|=0x0f;
keyinput=P0;
keyinput&=0x0f;
if(keyinput!
=0x0f)
{
delay(10);
P0|=0x0f;
keyinput=P0;
keyinput&=0x0f;
if(keyinput!
=0x0f)
{
switch(keyinput)
{
case0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C51 单片机 开发 程序