『壹』 C51單片機程序設計題,要求用C語言做,模擬交通燈控制單片機電路,答案要詳細具體。
晚上隨手寫,也未調試,權當看看
程序有不嚴謹地方還得調試修改
#include<REGX51.H>
#defineSTATUS_1S 1
#defineSTATUS_2S 2
#defineSTATUS_3S 3
#defineSTATUS_4S 4
#defineSTATUS_5S 5
#defineSTATUS_15S 15
#defineSTATUS_28S 28
#defineSTATUS_29S 29
#defineSTATUS_30S 30
unsignedcharflag,status,status_temp=1,status_temp_;
sbitK1 = P0^0;
sbitK2 = P0^1;
sbitRLED = P0^2;
sbitYLED = P0^3;
sbitGLED = P0^4;
voidInit(void)
{
ET0=1;
TR0=1;
RLED=0; //亮
YLED=0;
GLED=0;
while(status_temp)
{
switch(status)
{
caseSTATUS_1S: //1S
{
RLED=1; //滅,閃一次
YLED=1;
GLED=1;
} break;
caseSTATUS_2S: //1S
{
RLED=0; //亮,閃一次
YLED=0;
GLED=0;
} break;
caseSTATUS_3S: //1S
{
RLED=1; //滅
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
voidInit_Timer0(void)
{
TMOD=0x01;
// ET0=1;
// TR0=1;
EA=1;
TH0=0X3C;
TL0=0XB0; //未計算,偷樓上的
}
voidM_Start(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //紅亮
while(status_temp)
{
switch(status)
{
caseSTATUS_1S:
{
if(status_temp_==1)
{
YLED=0;
}
} break;
caseSTATUS_2S:
{
if(status_temp_==1)
{
YLED=1;
}
} break;
caseSTATUS_3S:
{
if(status_temp_==1)
{
YLED=0;
status_temp_=0;
}
} break;
caseSTATUS_15S: //15S滅,綠亮
{
RLED=1;
GLED=0;
} break;
caseSTATUS_28S:
{
GLED=1;
} break;
caseSTATUS_29S:
{
GLED=0;
} break;
caseSTATUS_30S:
{
GLED=1;
status=0;
status_temp_=1;
} break;
}
}
ET0=0;
TR0=0;
status=0;
status_temp=1;
YLED=1;
}
voidM_End(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //亮1次
YLED=0;
GLED=0;
while(status_temp)
{
switch(status)
{
caseSTATUS_1S: //1S
{
RLED=1; //滅一次
YLED=1;
GLED=1;
} break;
caseSTATUS_2S: //1S
{
RLED=0; //亮二次
YLED=0;
GLED=0;
} break;
caseSTATUS_3S: //1S
{
RLED=1; ////滅二次
YLED=1;
GLED=1;
} break;
caseSTATUS_4S: //1S
{
RLED=0; ////亮三次
YLED=0;
GLED=0;
} break;
caseSTATUS_5S: //1S
{
RLED=1; ////滅三次
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
main()
{
Init();//單片機初始化
Init_Timer0();//定時器初始化
while(1)
{
if(K1==0)
M_Start();//模擬開始
if(K2==0)
M_End();//模擬結束
}
}
voidinterrupt_time0()interrupt1 //核對頭文件,一致就好
{
TH0=0X3C;
TL0=0XB0;
flag++;
if(flag==20)
{
status++;
flag=0;
}
}
『貳』 鍗曠墖鏈篊璇璦紼嬪簭璁捐
鐢–PU鍐呴儴瀹氭椂鍣═0涓鏂鏂瑰紡璁℃椂錛屼駭鐢熷懆鏈熶負2s,鍗犵┖姣斾負80%鐨勮剦鍐叉嘗褰錛屾樉紺哄湪P1.0鍙c
鐢–PU鍐呴儴璁℃暟鍣═1錛屾寜璁℃暟妯″紡宸ヤ綔錛屽筆1.0鍙h緭鍑虹殑鑴夊啿榪涜岃℃暟錛屽苟鏄劇ず鍦≒2鍙c侳OSC=6MHz.
璇蜂綘鍙傝冿細
#include<reg51.h>
sbitWAVE=P1^0;
unsignedcharcodesegCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsignedcharcount;
voidmain()
{
TMOD=0x51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IE|=0x82;
TR0=1;
TR1=1;
count=0;
while(1)
{
if(WAVE)
P2=segCode[TL1%10];
}
}
voidT0_INT()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count=++count%20;
WAVE=(count<4)?1:0;
}
甯屾湜鏄浣犺佺殑錛侊紒錛侊紒
『叄』 單片機c語言的一道簡單的題目,急求答案,要答題過程,在線等
#include<reg51.h>
sbitLED = P1^0;
voidTimer0Init(void)
{
AUXR&=0x7F;
TMOD&=0xF0;
TMOD|=0x01;
TL0=0xE0;
TH0=0xB1;
TF0=0;
TR0=1;
ET0=1;
}
voidmain(void)
{
EA=1;
Timer0Init();
}
voidtimer0_Isr()interrupt1
{
LED=~LED;
TL0=0xE0;
TH0=0xB1;
}
『肆』 單片機C語言程序設計題
這是兩個題啊。哈哈好做,第一個有C語言的冒泡法排序,第二個用中斷,讀,輸出就可以
『伍』 鍗曠墖鏈篊璇璦璁捐$粌涔犻
灝嗘墍鏈夋暟鎹鍙栧弽灝卞彲浠ヤ簡銆傛垨鑰呬笉鐢ㄤ慨鏀規暟鎹錛岀洿鎺ュ湪璋冪敤鏃跺彇鍙嶏細
P0=~led[n];
『陸』 一個單片機C語言程序設計
1)把這10個數放在數組中(你沒說數據寬度,就設定為位元組)
unsigned char shu[10]={};
2)定義變數
unsignedchar max=0;
unsignedchar min=255;
unsignedchar avg=0;
unsigned int tmp=0;
3)採用循環
main()
{ char i;
for(i=0,i<10;i++)
{
if(shu[i]>max)max=shu[i];
if(shu[i]<min)max=shu[i];
tmp+=shu[i];
}
tmp-=max;
tmp-=min;
avg=tmp/8;
while(1){}
}