stcc单片机流水灯程序.docx
- 文档编号:4543978
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:10
- 大小:15.79KB
stcc单片机流水灯程序.docx
《stcc单片机流水灯程序.docx》由会员分享,可在线阅读,更多相关《stcc单片机流水灯程序.docx(10页珍藏版)》请在冰豆网上搜索。
stcc单片机流水灯程序
Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
stcc单片机流水灯程序
51单片机流水灯程序
程序一(用C语言编的最基础的程序)
#include<>
#include<>
sbitD0=P1^0;//位定义,把P1口的第一个管脚定义为D0
sbitD1=P1^1;//位定义,把P1口的第二个管脚定义为D1
sbitD2=P1^2;//位定义,把P1口的第3个管脚定义为D2
sbitD3=P1^3;//位定义,把P1口的第4个管脚定义为D3
sbitD4=P1^4;//位定义,把P1口的第5个管脚定义为D4
sbitD5=P1^5;//位定义,把P1口的第6个管脚定义为D5
sbitD6=P1^6;//位定义,把P1口的第7个管脚定义为D6
sbitD7=P1^7;//位定义,把P1口的第8个管脚定义为D7
voidmain()
{
while
(1)//建立大的死循环。
{
unsignedinti,j;
D0=0,D7=1;//亮灯1,关灯8
for(i=50;i>0;i--)
for(j=200;j>0;j--);//两个FOR组成的延时
D0=1,D1=0;//亮灯2,关灯1
for(i=50;i>0;i--)
for(j=200;j>0;j--);
D1=1,D2=0;
for(i=50;i>0;i--)
for(j=200;j>0;j--);
D2=1,D3=0;
for(i=50;i>0;i--)
for(j=200;j>0;j--);
D3=1,D4=0;
for(i=50;i>0;i--)
for(j=200;j>0;j--);
D4=1,D5=0;
for(i=50;i>0;i--)
for(j=200;j>0;j--);
D5=1,D6=0;
for(i=50;i>0;i--)
for(j=200;j>0;j--);
D6=1,D7=0;
for(i=50;i>0;i--)
for(j=200;j>0;j--);
}
}
程序二(用swichcase语句编的)
#include<>//51单片机的头文件。
sbitd1=P1^0;//
sbitd2=P1^1;
sbitd3=P1^2;
sbitd4=P1^3;
sbitd5=P1^4;
sbitd6=P1^5;
sbitd7=P1^6;
sbitd8=P1^7;
voidmain()
{
unsignedinti=1,a,b;
while
(1)//大循环
{
for(i=1;i<15;i++)
{
for(a=0;a<80;a++)//延时。
for(b=0;b<200;b++);
switch(i)
{
case1:
d2=1,d1=0,d8=1;
break;
case2:
d1=1,d2=0;
break;
case3:
d2=1,d3=0;
break;
case4:
d3=1,d4=0;
break;
case5:
d4=1,d5=0;
break;
case6:
d5=1,d6=0;
break;
case7:
d6=1,d7=0;
break;
case8:
d7=1,d8=0;
break;
case9:
d8=1,d7=0;
break;
case10:
d7=1,d6=0;
break;
case11:
d6=1,d5=0;
break;
case12:
d5=1,d4=0;
break;
case13:
d4=1,d3=0;
break;
case14:
d3=1,d2=0;
break;
}
};
}
}
程序三(最简洁的):
#include<>
#include<>//_crol_和_cror_的头文件。
voiddelay(unsignedintz)//建立延时子函数。
{
unsignedinti,j;
for(i=0;i for(j=0;j<200;j++); } voidmain() { unsignedchard; d=0xfe; while (1)// { for(;d>0x7f;) { P1=d; delay(100);//调用延时子函数延时。 d=_crol_(d,1);//循环左移。 } for(;d<0xfe;) { P1=d; delay(100); d=_cror_(d,1);//循环右移,让灯倒回去。 } } } 数码管流水灯: #include<> #include<> voiddelay(unsignedinta) { unsignedintb; b=a; while(b>0) b--; } voidmain() { unsignedinti,j; unsignedcodeA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0x3f: 为0,即数码管亮“0”。 P2=0;//打开数码管的第一个, P0=j;//对数码管进行赋值 while (1) { i=0; for(j=0;j<16;j++) { P2=i; P0=A[j]; delay(50000); i++; } } } 数码管程序二: #include<> voiddelay(unsignedinta) { unsignedintb; b=a; while(b>0) b--; } voidmain() { inti,j; unsignedcodeA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; P2=0; P0=j; while (1) { j=0; for(i=0;i<8;i++) { P2=i; P0=A[j]; delay(50000); j++; } for(i=7;i>=0;i--) { P2=i; P0=A[j]; delay(50000); j++; } } } 中断程序一 #include<> #include<> voiddelay(unsignedinta) { unsignedintb; b=a; while(b>0) b--; } voidmain() { inti,j; unsignedcodeA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; EA=1;//打开总中断 EX0=1;//打开外部中断0。 IT0=0;//选择其为低电平有效有效。 当CPU检测到引脚上出现有效的中断信号时,中断标志IE1置1,向CPU申请中断。 P2=0; P0=j; P1=0xfe; while (1) { j=0; for(i=0;i<8;i++) { P2=i; P0=A[j]; delay(50000); j++; } for(i=7;i>=0;i--) { P2=i; P0=A[j]; delay(50000); j++; } } } voidexist()interrupt0//中断子程序,其中“0”为外部中断的序号 { P1=_crol_(P1,1); delay(50000); } 定时程序; include<> unsignedinti=0,j=0,t; unsignedcodea[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; voidmain() { TMOD=0x01;//对TMOD赋值,以确定T0和T1的工作方式。 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。 对高8位和低8位赋值。 EA=1;//开总中断 ET0=1;//则对IE赋值,开放中断 TR0=1;//使TR0或TR1置位,启动定时/计数器定时。 while (1) { if(t==20) { t=0; if(j==8) j=0; if(i==16) i=0; P2=j; P0=a[i]; i++; j++; } } } voidtime()interrupt1//定时子程序,其中“1”为定时/计数器序号 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stcc 单片机 流水 程序