陈.docx
- 文档编号:18404893
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:17
- 大小:16.44KB
陈.docx
《陈.docx》由会员分享,可在线阅读,更多相关《陈.docx(17页珍藏版)》请在冰点文库上搜索。
陈
流水灯1
#include
voiddelay(unsignedchari);
voidmain()
{unsignedcharl,w;
while
(1)
{
w=0xfe;
for(l=0;l<8;l++)
{P1=w;
delay(250);
w=w<<1|0x01;
}
}
}
voiddelay(unsignedchari)
{
unsignedj,k;
for(k=0;k
for(j=0;j<255;j++);
}
流水灯2
#include
voiddelay(unsignedchari);
voidmain()
{
unsignedcharu,w;
w=0xfe;
{while
(1)
for(u=0;u<8;u++)
{
P1=w;
delay(250);
w=w<<1|w>>7;
}
}
}
voiddelay(unsignedchari)
{
unsignedj,k;
for(k=0;k
for(j=0;j<255;j++);
}
流水灯3
//程序:
ex3_7
#include
voiddelay(unsignedchari);
voidmain()
{
unsignedcharnum=0xfe;
while
(1){
P1=num;
delay(250);
num=P1<<1|P1>>7;
}
}
voiddelay(unsignedchari)
{
unsignedcharj,k;
for(k=0;k
for(j=0;j<255;j++);
}
定时中断()
#include
#defineucharunsignedchar
sbitP1_0=P1^0;
voiddelay5ms();
voiddelay_t(uchart);
voidmain()
{
ucharn,w;
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
EX0=1;
IT0=1;
TR0=1;
while
(1)
{
w=0x01;
for(n=0;n<8;n++)
{
P1=~w;
w<<=1;
delay_t(2000);
}
}
}
voidint0()interrupt0
{
P1=0x00;
delay_t(1000);
P1=0xff;
delay_t(1000);
}
voiddelay5ms()
{
while(TF0)
{
TF0=0;
TR0=0;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
}
}
voiddelay_t(unsignedintt)
{
unsignedintnum;
for(num=0;num } #include sbitP1_0=P1^0; unsignedcharnum=0; voidmain() { TMOD=0x00; TH0=(8192-5000)/32; TL0=(8192-5000)%32; EA=1; ET0=1; TR0=1; while (1); } voidtimer0()interrupt1 { num++; if(num==200) {P1_0=~P1_0; num=0; } TH0=(8192-5000)/32; TL0=(8192-5000)%32; } #include #defineucharunsignedchar ucharnum; voidmain() {ucharnum1,w; TMOD=0x01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; EA=1; ET0=1; IT0=1; EX0=1; PT0=1; TR0=1; while (1) { w=0x01; for(num1=0;num1<8;num1++) {P1=~w; w<<=1; while(mun! =20); num=0; } } } voidint0()interrupt0using1 { uchartempt1,tempt2; tempt1=num; tempt2=P1; num=0; P1=0x00; while(num! =10); P1=0xff; while(num! =20); num=tempt1; P1=tempt2; } voidtimer0()interrupt1using1 {num++; TH0=(65536-5000)/256; TL0=(65536-5000)%256; } 轮流点亮 #include #include #defineucharunsignedchar #defineuintunsignedint bitstart,stop,left,right; ucharnum; voiddelayl0ms(); ucharkeyscan(void)//按键扫描子程序 { if((P1&0x0f)! =0x0f)//有键按下 { delayl0ms();//延时去抖 if((P1&0x0f)! =0x0f) return(P1&0x0f);//返回键值 } elsereturn(0);//无效按键 } voiddelayl0ms()//延时子程序 { uchara,b; for(a=50;a>0;a--) for(b=100;b>0;b--); } voidmain() { ucharkey; P2=0xfe; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; while (1) { key=keyscan(); switch(key) { case0x0e: start=1;stop=0;P2=0xfe;break; case0x0d: start=0;stop=1;left=0;right=0;break; case0x0b: left=1;right=0;break; case0x07: left=0;right=1;break; default: break; } if(start&(left|right))TR0=1; if(stop==1) { TR0=0; P2=0Xff; } } } voidtimer0()interrupt1 { num++; if(num==20) { if(start&left)P2=_crol_(P2,1); if(start&right)P2=_cror_(P2,1); num=0; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; } 阵列 #include #defineucharunsignedchar ucharcodedispcode[17]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; uchara,temp=16;//temp键号 voiddelayl0ms(); ucharkeyscan(); voidmain() { ucharkey; while (1) { key=keyscan();//得到键特征值 switch(key) { case0x11: temp=0;break;//0001,0001 case0x12: temp=1;break;//0001,0010 case0x14: temp=2;break;//0001,0100 case0x18: temp=3;break;//0001.1000 case0x21: temp=4;break; case0x22: temp=5;break; case0x24: temp=6;break; case0x28: temp=7;break; case0x41: temp=8;break; case0x42: temp=9;break; case0x44: temp=10;break; case0x48: temp=11;break; case0x81: temp=12;break; case0x82: temp=13;break; case0x84: temp=14;break; case0x88: temp=15;break; default: break; } P0=dispcode[temp];//字型码 P2=0x01;//位选 } } ucharkeyscan() { ucharxtemp,ytemp; P1=0xf0; if((P1&0xf0)! =0xf0) {delayl0ms();//去抖动 if((P1&0xf0)! =0xf0)//有效键 { xtemp=0xfe;//11111110 while((xtemp&0x10)! =0) { P1=xtemp; if((P1&0xf0)! =0xf0) { ytemp=(P1&0xf0)|0x0f; return((~xtemp)+(~ytemp));//得键值 } else xtemp=(xtemp<<1)|0x01; } } } return(0); } voiddelayl0ms() { for(a=200;a>0;a--); } 滚动 #include #defineucharunsignedchar ucharcodedispcode[21][6] ={0x3f,0x00,0x00,0x00,0x00,0x00, 0x06,0x3f,0x00,0x00,0x00,0x00, 0x5b,0x06,0x3f,0x00,0x00,0x00, 0x4f,0x5b,0x06,0x3f,0x00,0x00, 0x66,0x4f,0x5b,0x06,0x3f,0x00, 0x6d,0x66,0x4f,0x5b,0x06,0x3f, 0x7d,0x6d,0x66,0x4f,0x5b,0x06, 0x07,0x7d,0x6d,0x66,0x4f,0x5b, 0x7f,0x07,0x7d,0x6d,0x66,0x4f, 0x6f,0x7f,0x07,0x7d,0x6d,0x66, 0x77,0x6f,0x7f,0x07,0x7d,0x6d, 0x7c,0x77,0x6f,0x7f,0x07,0x7d, 0x39,0x7c,0x77,0x6f,0x7f,0x07, 0x5e,0x39,0x7c,0x77,0x6f,0x7f, 0x79,0x5e,0x39,0x7c,0x77,0x6f, 0x71,0x79,0x5e,0x39,0x7c,0x77, 0x00,0x71,0x79,0x5e,0x39,0x7c, 0x00,0x00,0x71,0x79,0x5e,0x39, 0x00,0x00,0x00,0x71,0x79,0x5e, 0x00,0x00,0x00,0x00,0x71,0x79, 0x00,0x00,0x00,0x00,0x00,0x71, }; ucharnum,second; voidmain() { ucharn,sel=0x01; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1; TR0=1; while (1) { for(n=0;n<6;n++) { P1=dispcode[1][n]; P2=sel; sel<<=1; if(sel==0x40)sel=0x01; } } } voidtimer()interrupt1 { num++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(num==20) { second++; num=0; } if(second==21)second=0; } 静态数码管 #include #defineucharunsignedchar ucharcodedispcode[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, 0x00}; sbitDIN=P1^0; sbitCLK=P1^1; uchardispb[5]; voidsent(ucharx) { uchari,ch; ch=x; for(i=0;i<8;i++) { ch=ch<<1; DIN=CY; CLK=0; CLK=1; } } voiddisplay(void) { uchara; for(a=0;a<5;a++) sent(dispb[4-a]); } main() { dispb[0]=dispcode[0]; dispb[1]=dispcode[1]; dispb[2]=dispcode[2]; dispb[3]=dispcode[3]; dispb[4]=dispcode[4]; display(); } 动态数码管程序 例: 按照图所示的电路,编写在六个数码管上分别显示012345。 #include #defineucharunsignedchar ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d}; unsignedcharsel=0x01; voiddisplay() { unsignedchari; for(i=0;i<6;i++) { P1=dispcode[i];//字型码 P2=sel;//位选 sel=sel<<1; if(sel==0x40)sel=0x01; } } voidmain(void) { while (1) { display(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- docx