本文目錄一覽:
c語言流水燈程序 求具體代碼
1滅)。編譯器keil
C代碼如下:
#include
#include
//包含循環左移函數
_cro_l頭文件
unsigned
char
tmp;
//中間變數
//////////////////////////////////////////////////////////////////////////////////////////////////
//
延時子程序
////////////////////////////////////////////////////////////////////////////////////////////////
void
delay(unsigned
int
cnt)
{
while(–cnt);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//
主函數
////////////////////////////////////////////////////////////////////////////////////////////////
main()
{
while(1)
//外層循環
{
tmp
=
0xfe;
P1
=
tmp;
while(1)
//內層循環,執行1、3、5、7亮燈循環
{
delay(30000);
//延時以便能觀察到燈亮移動,自己可以調整時間,由晶振和實參決定
tmp
=
_crol_(tmp,2);
P1
=
tmp;
if(tmp
==
0xbf)
//判斷是否已經點亮到第7燈。是,則退出進入2、4、6、8循環
{
break;
}
}
tmp
=
0xfd;
P1
=
tmp;
while(1)
//內層循環,執行2、4、6、8亮燈循環
{
delay(30000);
//延時以便能觀察到燈亮移動,自己可以調整時間,由晶振和實參決定
tmp
=
_crol_(tmp,2);
P1
=
tmp;
if(tmp
==
0x7f)
//判斷是否已經點亮到第8燈。是,則退出進入1、3、5、7循環
{
break;
}
}
}
}
keil軟體用單片機控制8個LED流水燈來回點亮(C語言程序)
#include “reg51.h”
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //點亮第一個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0xfd; //點亮第二個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0xfb; //點亮第三個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0xf7; //點亮第四個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0xef; //點亮第五個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0xdf; //點亮第六個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0xbf; //點亮第七個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
P1=0x7f; //點亮第八個LED
for(i=200;i0;i–)
for(j=500;j0;j–);
}
}
或:
#include “reg51.h”
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i0;i–)
for(j=110;j0;j–);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i8;i++)
{
P1=w; //循環點亮LED
w=1; //點亮燈的位置移動,最低位補0
w=w|0x01; //將最低位置1
delay(500); //延時
}
}
}
或:
#include “reg51.h”
//程序中使用_crol_函數,所以要包含頭文件”intrins.h”
#include “intrins.h”
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i0;i–)
for(j=110;j0;j–);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延時
temp=_crol_(temp,1); //點亮LED的位置循環左移一位
}
}
用keil寫的來迴流水燈程序,要求左右來回的
#include reg52.h
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar t;
while(x–)
{
for(t=120;t0;t–);
}
}
void main()
{
uchar i;
P2=0x01;
while(1)
{
for(i=7;i0;i–)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i0;i–)
{
P2=_cror_(P2,2);
DelayMS(150);
}
}
}
不懂就問,要根據你電路圖的連接來適當調整管腳定義。
keil c51單片機 流水燈。
#includereg51.h
unsigned int n;
unsigned char m = 0, temp = 254;
sbit SPK = P1^5;
main()
{
TMOD = 0x01;
TH0 = (65536 – 1000) / 256;
TL0 = (65536 – 1000) % 256;
TR0 = 1;
ET0 = 1;
EA = 1;
P2 = temp;
while(1);
}
void T0_INT() interrupt 1
{
TH0 = (65536 – 1000) / 256;
TL0 = (65536 – 1000) % 256;
n++;
if(n = 1000) {
n = 0;
m++;
if (m == 8) {m = 0; temp = 254;}
else {temp = 1; temp += 1;}
}
if(n 500) {SPK = ~SPK; P2 = temp;}
else P2 = 255;
}
以上程序已經實驗成功。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/253520.html