AT89C51单片机开发板程序电子教案.docx
《AT89C51单片机开发板程序电子教案.docx》由会员分享,可在线阅读,更多相关《AT89C51单片机开发板程序电子教案.docx(39页珍藏版)》请在冰豆网上搜索。
AT89C51单片机开发板程序电子教案
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。
TH0=(65536-10000>/256。
TL0=(65536-10000>%256。
EA=1。
ET0=1。
TR0=1。
while(1>
{
}
}
voidtimer0(>interrupt1
{
TH0=(65536-10000>/256。
TL0=(65536-10000>%256。
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>
{
case0x0e:
key=0。
break。
case0x0d:
key=1。
break。
case0x0b:
key=2。
break。
case0x07:
key=3。
break。
default:
key=0xff。
}
}
}
}
voiddelay(uintz>
{
uintx,y。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->。
}
电子钟
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。
ucharcodewei[]={0xfe,0xfd,0xfb,0xf7}。
uchartt,i,sec,min。
ucharxianshi[4]。
voiddelay(uintz>。
voidinit(>。
voidmain(>
{
init(>。
while(1>
{
if(tt>=20>
{
tt=0。
sec++。
if(sec==60>
{
sec=0。
min++。
if(min==60>
{
min=0。
}
}
}
xianshi[0]=duan[sec%10]。
xianshi[1]=duan[sec/10]。
xianshi[2]=duan[min%10]。
xianshi[3]=duan[min/10]。
for(i=0。
i<4。
i++>
{
P2=xianshi[i]。
P0=wei[i]。
delay(5>。
}
}
}
voidinit(>
{
TMOD&=0XF1。
TMOD|=0X01。
TH0=(65536-50000>/256。
TL0=(65536-50000>%256。
EA=1。
ET0=1。
TR0=1。
}
voidtimer0(>interrupt1
{
TH0=(65536-50000>/256。
TL0=(65536-50000>%256。
tt++。
}
voiddelay(uintz>
{
uintx,y。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->。
}
交通灯
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodeduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}。
ucharcodeweitable[]={0xFE,0xFD,}。
ucharcodechushi[]={0x7e,15,0x7d,5,0xdb,15,0xbb,5}。
ucharxianshi[2]。
uinttime,tt。
voiddisplay(>。
voiddelay(uintz>。
voidinit(>。
voidmain(>
{
init(>。
while(1>
{
ucharj。
for(。
time==0&&j<8。
j=j+2>
{
time=chushi[j+1]。
P1=chushi[j]。
}
if(j==8>j=0。
if(tt>=10>
{
tt=0。
time--。
}
xianshi[0]=duan[time/10]。
xianshi[1]=duan[time%10]。
display(>。
}
}
voidinit(>
{
TMOD&=0xf1。
TMOD|=0x01。
TH0=(65536-50000>/256。
TL0=(35536-50000>%256。
EA=1。
ET0=1。
TR0=1。
}
voiddisplay(>
{
uchari。
for(i=0。
i<2。
i++>
{
P2=weitable[i]。
P0=xianshi[i]。
delay(5>。
}
}
voiddelay(uintz>
{
uintx。
uchary。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->。
}
voidtimer0(>interrupt1
{
TH0=(65536-50000>/256。
TL0=(35536-50000>%256。
tt++。
}
4个LED数码管动态显示<0-9)
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uintz>。
voidmain(>
{
P2=0xfe。
P0=0xc0。
delay(1000>。
P2=0xfd。
P0=0xf9。
delay(1000>。
P2=0xfb。
P0=0xa4。
delay(1000>。
P2=0xf7。
P0=0xb0。
delay(1000>。
P2=0xfe。
P0=0x99。
delay(1000>。
P2=0xfd。
P0=0x92。
delay(1000>。
P2=0xfb。
P0=0x82。
delay(1000>。
P2=0xf7。
P0=0xf8。
delay(1000>。
P2=0xfe。
P0=0x80。
delay(1000>。
P2=0xfd。
P0=0x90。
delay(1000>。
}
voiddelay(uintz>
{
uintx,y。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->。
}
4个LED数码管依次显示<0-9)
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uintz>。
voidmain(>
{
P2=0xf7。
P0=0xc0。
delay(1000>。
P2=0xf7。
P0=0xf9。
delay(1000>。
P2=0xf7。
P0=0xa4。
delay(1000>。
P2=0xf7。
P0=0xb0。
delay(1000>。
P2=0xf7。
P0=0x99。
delay(1000>。
P2=0xf7。
P0=0x92。
delay(1000>。
P2=0xf7。
P0=0x82。
delay(1000>。
P2=0xf7。
P0=0xf8。
delay(1000>。
P2=0xf7。
P0=0x80。
delay(1000>。
P2=0xf7。
P0=0x90。
delay(1000>。
P2=0xfb。
P0=0xf9。
delay(1000>。
P2=0xfb。
P0=0xa4。
delay(1000>。
P2=0xfb。
P0=0xb0。
delay(1000>。
P2=0xfb。
P0=0x99。
delay(1000>。
P2=0xfb。
P0=0x92。
delay(1000>。
P2=0xfb。
P0=0x82。
delay(1000>。
P2=0xfb。
P0=0xf8。
delay(1000>。
P2=0xfb。
P0=0x80。
delay(1000>。
P2=0xfb。
P0=0x90。
delay(1000>。
P2=0xfd。
P0=0xf9。
delay(1000>。
P2=0xfd。
P0=0xa4。
delay(1000>。
P2=0xfd。
P0=0xb0。
delay(1000>。
P2=0xfd。
P0=0x99。
delay(1000>。
P2=0xfd。
P0=0x92。
delay(1000>。
P2=0xfd。
P0=0x82。
delay(1000>。
P2=0xfd。
P0=0xf8。
delay(1000>。
P2=0xfd。
P0=0x80。
delay(1000>。
P2=0xfd。
P0=0x90。
delay(1000>。
P2=0xfe。
P0=0xf9。
delay(1000>。
P2=0xfe。
P0=0xa4。
delay(1000>。
P2=0xfe。
P0=0xb0。
delay(1000>。
P2=0xfe。
P0=0x99。
delay(1000>。
P2=0xfe。
P0=0x92。
delay(1000>。
P2=0xfe。
P0=0x82。
delay(1000>。
P2=0xfe。
P0=0xf8。
delay(1000>。
P2=0xfe。
P0=0x80。
delay(1000>。
P2=0xfe。
P0=0x90。
delay(1000>。
}
voiddelay(uintz>
{
uintx,y。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->。
}
LED单向流水灯<从右向左)
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uintz>。
voidmain(>
{
P2=0x7f。
delay(1000>。
P2=0xbf。
delay(1000>。
P2=0xdf。
delay(1000>。
P2=0xef。
delay(1000>。
P2=0xf7。
delay(1000>。
P2=0xfb。
delay(1000>。
P2=0xfd。
delay(1000>。
P2=0xfe。
delay(1000>。
}
voiddelay(uintz>
{
uintx,y。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->。
}
LED单向流水灯<从左向右)
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uintz>。
voidmain(>
{
P2=0xfe。
delay(1000>。
P2=0xfd。
delay(1000>。
P2=0xfb。
delay(1000>。
P2=0xf7。
delay(1000>。
P2=0xef。
delay(1000>。
P2=0xdf。
delay(1000>。
P2=0xbf。
delay(1000>。
P2=0x7f。
delay(1000>。
}
voiddelay(uintz>
{
uintx,y。
for(x=z。
x>0。
x-->
for(y=122。
y>0。
y-->
}
LED双向流水灯<从里向外)
#include
#