當前位置:首頁 » 編程語言 » 新c語言精確延時亮一秒滅2秒
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

新c語言精確延時亮一秒滅2秒

發布時間: 2023-02-12 16:59:56

⑴ 利用51單片機定時器編寫一個c語言程序,實現一個發光二極體定時亮、滅,要求亮一秒、滅一秒交替閃爍不

利用51單片機定時器編寫一個C語言程序,實現一個發光二極體定時亮、滅,

要求亮一秒、滅一秒交替閃爍不止。最好有硬體電路簡圖

電路與程序如下:

晶振頻率,採用 12MHz。

定時器 0,定時 8ms。

中斷 125 次,即為一秒。令 IO 介面取反即可。

⑵ 用c語言模擬一個數字時鍾,要求延時一秒運行

1、用sleep延時刷新並獲取系統時間來顯示。

2、常式:

#include<graphics.h>
#include<math.h>
#include<dos.h>
#definePI3.1415926
//屏幕中心的坐標(640X480模式下)
#definemid_x320
#definemid_y240
intmain()
{intgraphdriver=DETECT,graphmode;
intend_x,end_y;
structtimecurtime;
floatth_hour,th_min,th_sec;
initgraph(&graphdriver,&graphmode,"C:\TC2");//初始化VGA屏幕模式
setbkcolor(BLACK);//使用黑色的背景色
while(!kbhit(0))//若有鍵盤輸入,則跳出,即是結束程序
{setcolor(GREEN);//把畫筆設為綠色
circle(mid_x,mid_y,180);//鍾的外圓
circle(mid_x,mid_y,150);//鍾的內圓
circle(mid_x,mid_y,1);//畫出鍾的圓心
gettime(&curtime);//取得系統當前時間
th_sec=(float)curtime.ti_sec*0.1047197551;//把秒針的角度化為弧度,為以後繪制時方便,下同
th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;//分針的弧度
th_hour=(float)curtime.ti_hour*0.5235987755+th_min/12.0;//時度的弧度,注意整時是12等分的,所時乘的是3.14/180*5
//計算出時針的尾的坐標(時針長70)
end_x=mid_x+70*sin(th_hour);
end_y=mid_y-70*cos(th_hour);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y);//用紅色線畫出時針
//計算出分針坐標(分針長110)
end_x=mid_x+110*sin(th_min);
end_y=mid_y-110*cos(th_min);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y);//用紅色畫出分針
end_x=mid_x+140*sin(th_sec);
end_y=mid_y-140*cos(th_sec);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y);//同上,畫出秒針,長為140
//畫出鍾盤上的刻度,刻度長20
line(140,240,160,240);//9點對應的大刻度
line(320,60,320,80);//12點對應的大刻度
line(500,240,480,240);//3點的刻度
line(320,420,320,400);//6點的刻度
line(410,395.7,400,378.4);//5點
line(475.7,330,458.4,320);//4點
line(475.7,150,458.4,160);//2點
line(410,84.3,400,101.6);//1點
line(230,84.3,240,101.6);//11點
line(164.3,150,181.6,160);//10點
line(164.3,330,181.6,320);//8點
line(230,395.7,240,378.4);//7點
sleep(BLUE);//這里應該是打錯,停止一秒,應為sleep(1000)
cleardevice();//清除屏幕上的顯示
}
closegraph();//關閉VGA屏幕,即返迴文本方式
return0;
}

⑶ 提問a,b按鈕按下,a啟動c延時1秒啟動。關閉時a立即關閉c延時2秒關閉,用c語言怎麼寫

你的描述不是非常清楚,這是按照我的理解給你寫的代碼
#include <stdio.h>
//按鈕最終狀態,按下為1,懸空為0
int key_a;
int key_b;
int key_c;
int main(int argc,char**argv)
{
int key_a_statu = key_a; //按鈕的狀態記錄
int key_b_statu = key_b; //按鈕的狀態記錄
int key_c_statu = key_c; //按鈕的狀態記錄
while(1)
{
if(key_a_statu != key_a)//A狀態變化
{
key_a_statu = key_a;//狀態更新
if(key_a && key_b) //a,b同時啟動
{
sleep(1);
key_c = 1; //C開啟
}

if(!key_a)//a關閉
{
sleep(2);
key_c = 0; //C關閉
}
}
usleep(1000*20);
}
return 0;
}

⑷ 用c語言實現演算法led0亮2秒,led1亮3秒,led1滅2秒,led0滅5秒程序

貌似是考多線程,你這裡面沒說明同步規則,就分開寫吧:
void led0thread()
{
while(1)

{

led0.light();

Sleep(2000);

led0.turnoff();

Sleep(5000);

}

}

void led1thread()
{
while(1)

{

led0.light();

Sleep(3000);

led0.turnoff();

Sleep(2000);

}

}

⑸ C語言中,讓4個流水燈全部亮滅,第一次時間間隔1秒,第二次0.5秒,第三次0.2秒

單片機吧

例如定義的是 P1口4個燈 就是
int LED1 = P1^0;
int LED2= P1^1;
int LED3 = P1^2;
int LED4 = P1^3;

LED1 = 0; 開啟
delay(1秒)延時函數
LED1 = 1; 滅
delay(1秒)延時函數

LED2 = 0; 開啟
delay(0.5秒)延時函數
LED2 = 1; 滅
delay(0.5秒)延時函數

LED3 = 0; 開啟
delay(0.2秒)延時函數
LED3 = 1; 滅
delay(0.2秒)延時函數

你也可以 使用
P1= 0xfe;
delay()延時函數
P1= 0XFF;
以此類推

⑹ 共陽連接,用定時器t1讓小的滅一秒亮兩秒接到p1.2口上。求單片機C語言程序

可以這樣做


光用定時器T1還不行,定不了1秒的時間。你得先用定時器T1產生20ms的定時中斷,然後在用軟體累計中斷次數50次,即可實現1秒定時。而後按照此時間使用CPLP1.7指令即可!

⑺ 如何用C語言編寫一個LED熄滅後延遲4秒後再亮1秒,再熄滅的程序,不用循環執行,

首先要將你的單片機或者dsp的時鍾轉化成1秒或者1毫秒,轉換的方法很多最簡單的就是分頻,這樣做了之後寫一個簡單的程序使得某個變數比如說M即時一秒之後將你接的那個引腳的電平拉高或清零,使得led亮一秒。看得你接法怎麼接的。然後第二步就是M大於1的時候將led熄滅(電平高低看你的接法而定)然後將m的值大於5時請一次零就ok了

⑻ 單片機C語言數碼管編寫亮了後過幾秒在滅呢

一般是1—2ms,for延時
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);//延時1ms
}

⑼ c語言控制一個led亮兩秒,滅一秒

while(1)
{
LEDON;
Delay(2000);//延時2S
LEDOFF;
Delay(1000);//延時1S
}
程序大體就是這個樣子。

⑽ C語言實現精確延時,實現類似sleep功能

這個可以
#include<stdio.h>
#include<time.h>
main()
{
void sleep(long wait);
int n;
printf("輸入延時秒數:")
scanf("%d",&n);
sleep(n*1000);
printf("hello!");
return 0;
}
void sleep(long wait)
{
long goal=clock()+wait;
while(goal>clock());
}

送個定時器給你看看精確不,復制下面代碼看看吧,看的時候請輸入准確的時間格式時:分:秒
如果現在12::00,可以輸入12:1:00測試下

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
main()
{
void sleep(long wait);
int h,m,s,sum;
char n[128];
time_t timer;
printf("輸入准確時間格式(時:分:秒)\t");
scanf("%d:%d:%d",&h,&m,&s);
time(&timer);
tm* t=localtime(&timer);
sum=((h-(t->tm_hour))*3600+(m-(t->tm_min))*60+s-(t->tm_sec));
for(int i=sum,j=59;i>=1;i--,j--)
{
system("cls");
_strtime(n);
printf("%s\n",n);
for(int k=1;k<=j;k++)
{
printf(" ");
}
printf("This is a c program!");
sleep(1000);
}
system("cls");
_strtime(n);
printf("%s",n);
printf("\nGame over!\n");
return 0;
}
void sleep(long wait)
{
long goal=clock()+wait;
while(goal>clock());
}