二极管作业.docx
- 文档编号:26996537
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:57
- 大小:21.36KB
二极管作业.docx
《二极管作业.docx》由会员分享,可在线阅读,更多相关《二极管作业.docx(57页珍藏版)》请在冰豆网上搜索。
二极管作业
二极管作业
1、将发光二极管的1、3、5、7点亮,5s钟以后点亮2、4、6、8个发光二极管,以此循环。
#include
sbitlead_choose=P2^2;
#defineuintunsignedint
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidmain()
{
P1=0X55;
while
(1)
{
P1=0x55;
delayl(2500);
P1=0xAA;
delayl(2500);
}
}
2、将发光二极管按二进制数从1依次递加,一直显示到32,并从头循环。
#include
#defineuintunsignedint
sbitlead_choose=P2^2;
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidmain()
{
P1=0x01;
while
(1)
{
P1=0x01;
delayl(300);
P1=0X02;
delayl(300);
P1=0X04;
delayl(300);
P1=0X08;
delayl(300);
P1=0X10;
delayl(300);
P1=0X20;
delayl(300);
P1=0X40;
delayl(300);
P1=0X80;
delayl(300);
}
}
3、点亮发光二极管的低四位,并每隔500ms的时间闪烁,高四位常亮。
#include
sbitlead_choose=P2^2;
#defineuintunsignedint
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidmain()
{
P1=0xFF;
while
(1)
{
P1=0xfF;
delayl(500);
P1=0xf0;
delayl(500);
}
}
4、让两端的发光二极管先亮,然后向内相向移动,最后再弹开,并依次循环。
即1、8亮,2、7亮,3、6亮,4、5亮,然后循环。
#include
sbitlead_choose=P2^2;
#defineuintunsignedint
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidmain()
{
P1=0x81;
while
(1)
{
P1=0x81;
delayl(300);
P1=0x42;
delayl(300);
P1=0x24;
delayl(300);
P1=0X18;
delayl(300);
}
}
5、点亮1、2个发光二极管,并两个一起向左移动,到达7、8后,再反向回移,最终循环.
#include
sbitlead_choose=P2^2;
#defineuintunsignedint
#include
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidmain()
{
uinti,j;
P1=0x03;
while
(1)
{
i=0x03;
for(j=0;j<7;j++)
{
P1=_crol_(i,j);
delayl(300);
}
i=0xc0;
for(j=0;j<7;j++)
{
P1=_cror_(i,j);
delayl(300);
}
}
}
数码管作业
1、让数码管的第2位显示出字符“H”延时2s后显示出字符“L”,再延时2s后显示字符“y”,并循环。
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^2;
sbitwei=P2^1;
sbitduan=P2^0;
ucharmazhi_wei[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
ucharhappy[]=
{0x76,0x77,0x73,0x73,0x6e};
ucharhello[]=
{0x76,0x79,0x38,0x38,0x3f};
ucharm;
uinti;
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidSTC_init()
{
P1=0x00;//关闭led
led=0;//锁存
wei=0;
duan=0;
}
voidmain()
{
STC_init();
while
(1)
{
wei=1;
P0=mazhi_wei[1];
wei=0;
duan=1;
P0=happy[0];
duan=0;
delayl(2000);
duan=1;
P0=hello[2];
duan=0;
delayl(2000);
duan=1;
P0=happy[4];
duan=0;
delayl(2000);
}
}
2、让数码管的1、3、5位显示出字符“0-9”,并循环,单个字符延时时间自定。
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^2;
sbitwei=P2^1;
sbitduan=P2^0;
ucharmazhi_duan[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
ucharmazhi_wei[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidSTC_init()
{
P1=0x00;//关闭led
led=0;//锁存
wei=0;
duan=0;
}
voiddisplay(ucharweil,ucharduanl,
bitdp)
{
wei=1;
P0=mazhi_wei[weil-1];
wei=0;
duan=1;
if(dp==1)
P0=(mazhi_duan[duanl]|0x80);
else
P0=mazhi_duan[duanl];
duan=0;
}
voidmain()
{
uchari,j;
STC_init();
while
(1)
{
for(i=0;i<10;i++)
{
for(j=57;j>0;j--)
{
display(1,i,0);
delayl
(2);
display(3,i,0);
delayl
(2);
display(5,i,0);
delayl
(2);
}
}
}
}
3、让第1个数码管显示1,延时1s后,第2个显示2,然后再延时1s……第6个显示6,延时1s后循环。
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^2;
sbitwei=P2^1;
sbitduan=P2^0;
ucharmazhi_duan[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
ucharmazhi_wei[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidSTC_init()
{
P1=0x00;//关闭led
led=0;//锁存
wei=0;
duan=0;
}
voiddisplay(ucharweil,ucharduanl,bitdp)
{
wei=1;
P0=mazhi_wei[weil-1];
wei=0;
duan=1;
if(dp==1)
P0=(mazhi_duan[duanl]|0x80);
else
P0=mazhi_duan[duanl];
duan=0;
}
voidmain()
{
uchari;
STC_init();
while
(1)
{
for(i=1;i<7;i++)
{
display(i,i,0);
delayl(1000);
}
}
}
4、点亮6个数码管,显示“654321”。
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitduan=P2^0;
sbitwei=P2^1;
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidmain()
{
P1=0x00;
wei=1;
P0=0xfe;
wei=0;
duan=1;
P0=0x7d;
duan=0;
delayl
(1);
wei=1;
P0=0xfd;
wei=0;
duan=1;
P0=0x6d;
duan=0;
delayl
(1);
wei=1;
P0=0xfb;
wei=0;
P0=0x66;
duan=1;
delayl
(1);
wei=1;
P0=0xf7;
wei=0;
duan=1;
P0=0x4f;
duan=0;
delayl
(1);
wei=1;
P0=0xef;
wei=0;
duan=1;
P0=0x5b;
duan=0;
delayl
(1);
wei=1;
P0=0xdf;
wei=0;
duan=1;
P0=0x06;
duan=0;
delayl
(1);
}
5、做一个30s的时钟,并显示在数码管上,到达30s后,数码管显示“HELLO”,延时2s再显示“HAPPY”。
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^2;
sbitwei=P2^1;
sbitduan=P2^0;
ucharmazhi_duan[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
ucharmazhi_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
ucharhappy[]={0x76,0x77,0x73,0x73,0x6e};
ucharhello[]={0x76,0x79,0x38,0x38,0x3f};
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidSTC_init()
{
P1=0x00;//关闭led
led=0;//锁存
wei=0;
duan=0;
}
voiddisplay(ucharweil,ucharduanl,bitdp)
{
wei=1;
P0=mazhi_wei[weil-1];
wei=0;
duan=1;
if(dp==1)
P0=(mazhi_duan[duanl]|0x80);
else
P0=mazhi_duan[duanl];
duan=0;
}
voiddisplay_hellohappy(ucharweil,ucharduanl,biti)
{
wei=1;
P0=mazhi_wei[weil-1];
wei=0;
duan=1;
if(i==0)
P0=hello[duanl];
else
P0=happy[duanl];
duan=0;
}
voidmain()
{
uchari,j;
STC_init();
while
(1)
{
j++;
if(j<=30)
{
for(i=250;i>0;i--)
{
display(1,j/10,0);
delayl
(2);
display(2,j%10,0);
delayl
(2);
}
}
else
{
j=0;
for(i=200;i>0;i--)
{display_hellohappy(1,0,0);
delayl
(2);
display_hellohappy(2,1,0);
delayl
(2);
display_hellohappy(3,2,0);
delayl
(2);
display_hellohappy(4,3,0);
delayl
(2);
display_hellohappy(5,4,0);
delayl
(2);
}
for(i=200;i>0;i--)
{
display_hellohappy(1,0,1);
delayl
(2);
display_hellohappy(2,1,1);
delayl
(2);
display_hellohappy(3,2,1);
delayl
(2);
display_hellohappy(4,3,1);
delayl
(2);
display_hellohappy(5,4,1);
delayl
(2);
}
}
}
}
键盘作业
一、扫描法键盘程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^2;
sbitwei=P2^1;
sbitduan=P2^0;
ucharmazhi_duan[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
ucharmazhi_wei[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidSTC_init()
{
P1=0x00;//关闭led
led=0;//锁存
wei=0;
duan=0;
}
voiddisplay(ucharweil,ucharduanl,
bitdp)
{
wei=1;
P0=mazhi_wei[weil-1];
wei=0;
duan=1;
if(dp==1)
P0=(mazhi_duan[duanl]|0x80);
else
P0=mazhi_duan[duanl];
duan=0;
}
ucharkeyscan()
{
ucharkeynum,temp;
keynum=0;
P1=0xfe;
delayl(5);//抗干扰
temp=P1&0xf0;
if(temp!
=0xf0)
{
P1=0xfe;
delayl(5);
temp=P1&0xf0;
if(temp!
=0xf0)
{
temp|=0x0e;
switch(temp)
{
case0xee:
keynum=1;break;
case0xde:
keynum=2;break;
case0xbe:
keynum=3;break;
case0x7e:
keynum=4;break;
default:
keynum=0;break;
}
}
}
P1=0xfd;
delayl(5);//抗干扰
temp=P1&0xf0;
if(temp!
=0xf0)
{
P1=0xfd;
delayl(5);
temp=P1&0xf0;
if(temp!
=0xf0)
{
temp|=0x0d;
switch(temp)
{
case0xed:
keynum=5;break;
case0xdd:
keynum=6;break;
case0xbd:
keynum=7;break;
case0x7d:
keynum=8;break;
default:
keynum=0;break;
}
}
}
P1=0xfb;
delayl(5);//抗干扰
temp=P1&0xf0;
if(temp!
=0xf0)
{
P1=0xfb;
delayl(5);
temp=P1&0xf0;
if(temp!
=0xf0)
{
temp|=0x0b;
switch(temp)
{
case0xeb:
keynum=9;break;
case0xdb:
keynum=10;break;
case0xbb:
keynum=11;break;
case0x7b:
keynum=12;break;
default:
keynum=0;break;
}
}
}
P1=0xf7;
delayl(5);//抗干扰
temp=P1&0xf0;
if(temp!
=0xf0)
{
P1=0xf7;
delayl(5);
temp=P1&0xf0;
if(temp!
=0xf0)
{
temp|=0x07;
switch(temp)
{
case0xe7:
keynum=13;break;
case0xd7:
keynum=14;break;
case0xb7:
keynum=15;break;
case0x77:
keynum=16;break;
default:
keynum=0;break;
}
}
}
returnkeynum;
}
voidmain()
{
ucharnum;
STC_init();
while
(1)
{
num=keyscan();
display(1,num,0);
delayl(50);
}
}
二、线反转法键盘程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitled=P2^2;
sbitwei=P2^1;
sbitduan=P2^0;
sbitxiang=P3^7;
ucharmazhi_duan[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
ucharmazhi_wei[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
voiddelayl(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=114;j>0;j--);
}
voidSTC_init()
{
P1=0x00;//关闭led
led=0;//锁存
wei=0;
duan=0;
}
voiddisplay(ucharweil,ucharduanl,bitdp)
{
wei=1;
P0=mazhi_wei[weil-1];
wei=0;
duan=1;
if(dp==1)
P0=(mazhi_duan[duanl]|0x80);
else
P0=mazhi_duan[duanl];
duan=0;
}
ucharkeyscan1()
{
ucharkeynum,temp;
keynum=0;
P1=0xf0;
delayl(5);
temp=P1&0xf0;
P1=0x0f;
delayl(5);
temp|=(P1&0x0f);
switch(temp)
{
case0xee:
keynum=1;break;
case0xde:
keynum=2;break;
case0xbe:
keynum=3;break;
case0x7e:
keynum=4;break;
case0xed:
keynum=5;break;
case0xdd:
keynum=6;break;
case0xbd:
keynum=7;break;
case0x7d:
keynum=8;break;
case0xeb:
keynum=9;break;
case0xdb:
keynum=10;break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二极管 作业