Ⅰ 用c51單片機控制一個閃光燈循環閃光5次以後熄滅不再閃光,用C語言編程,求程序……
用C語言編程,求程序的方法:
#include//包含單片機寄存器的頭文件
/****************************************函數功能:延遲一段時間
*****************************************/
Voiddelay(Void)螞肢//Void表示沒有返回值,也沒有傳遞參數。
{
Unsignedint我;定義一個最大值為65535的無符號整數。
For (I = 0;我< 20000;i++) //執行20000個空循環。
;//什麼也不做,等待一個機器周期。
}
/*******************************************************
函數函數:主函數(C語言規則必須有且只能有一個主函數)。
********************************************************/空白主要(空白)
{
而(1)//無限循環。
{
P0=0xfe;//P1=11111110B,P0.0輸出低電平。
延遲();//推遲一段時間。
P0=0XFF;//P1=11111111B,P0.0輸出高電平。
延遲();//推遲一段時間。
}
}
單片機驅動LED光源程序:
#include//頭文件。
定義uint無符號int
#定義uchar無符號字元
SbitLED1=P1^7;//定義。
空白delay_ms(單位);//帶參數的ms級延時函數。
Voidmain()
{
而(1)
{
LED1=0;
Delay_ms(1000);
LED1=1;
Delay_ms(1000);
}
}
Voiddelay_ms(uintz)//delay子常式
{
使用Uintx,y;
For (x = z;X > 0;X -)
For (y = 110;Y > 0;Y -);
}
(1)c51單片機編程實例擴展閱讀:
單片態盯機應用分類:
一般類型:
這是關於微控制器的。例如80C51通用型單片悶閉世機,它並不是為特定的目的而設計的;專用單片機是為某一類產品甚至某一種產品而設計生產的。例如,為了滿足電子體溫計的要求,晶元中集成了具有ADC介面的溫度測量控制電路等功能。
主線:
這是由微控制器是否提供並行匯流排來區分的。匯流排微控制器一般安裝有並行地址匯流排、數據匯流排、控制匯流排,這些引腳擴展並行外圍設備可以通過串口與單片機連接。
另外,很多單片機都需要將外圍設備和外圍設備的介面集成在一塊,所以在很多情況下不能並行擴展匯流排,大大降低了封裝成本和晶元體積,這種單片機被稱為非匯流排單片機。
控制類型:
這是關於微控制器的一般應用。一般來說,工業控制定址范圍大,計算能力強。家用電器的單片機大多是專用的。
它通常是小包裝、低價格、高集成的外圍設備和外圍介面。顯然,上述分類並不獨特和嚴格。例如,80C51類單片機既是通用的,又是匯流排的,還可以用於工業控制。
Ⅱ 求單片機c51的C語言編程:設當開關為1時,控制2個led交替閃爍,閃爍時間為5秒
#include#,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==0xff)l
Ⅲ C51單片機編程,按鍵控制流水燈
#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED燈的花樣數據
void delay(unsigned char time){ //延時函數
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //標志位定義及初始化
char i;
while(1){
switch (P0 & 0x0f){ //讀取鍵值
case 0x0e:run=1;break; //K1動作,設run=1
case 0x0d:run=0,dir=0;break; // K2動作,設run=dir=0
case 0x0b:dir=1;break; //K3動作,設dir=1
case 0x07:dir=0;break; //K4動作,設dir=0
}
if (run) //若run=dir=1,自上而下流動
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流動
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部燈滅
}
}
Ⅳ 求一個c51單片機的程序
很簡單,柄24個led接P0,P2,P3,三個口,佔24個io口,上面5個花狀因為同一圓圈led同時亮
可以並在一起,佔8個io口,剛好32個io口。
我們從下到上將led定義為1~24號,擴散從中心往外定義為25~32號led。
1~32號lde,分別接到P0,P2,P3,P1的P0_0~P0_7號腳,P2_0~P2_7號腳,P3_0~P3_7號腳,P1_0~P1_7號腳
下面給出程序:
#include<reg52.h>
unsignedinti=0;
unsignedcharcodedis1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//正向
unsignedcharcodedis2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//反向
voiddelay()//;//單個led延時
{unsignedintj,k;
for(j=0;j<400;j++)
for(k=0;k<20;k++);
}
voidmain()
{
while(1)
{
i=0;
for(i=0;i<7;i++)//最底8個逐個顯示
{P0=dis1[i];delay();}//單個延時
P0=255;//關閉
for(i=0;i<7;i++)//上移8個
{P2=dis1[i];delay();}
P2=255;
for(i=0;i<7;i++)//再上移8個
{P3=dis1[i];delay();}
P3=255;
for(i=0;i<7;i++)//中心向外擴散
{P1=dis1[i];//上面5組8個向外擴散
P3=dis2[i];//下面柄自中心向下擴散
delay();
}
P1=P3=255;//關閉
}
}
如果圖片看不清,點擊「查看大圖」,然後保存到你的電腦上,再查看更大的圖。