㈠ 51單片機設計呼吸燈
#include "reg51.h" //掘段包含頭文件
#define uchar unsigned char
#define uint unsigned int
//**************************************************************************************************
//延時函判缺譽數
//**************************************************************************************************
delay(uint time) //int型數據為16位,所以最大值為65535
{
uint i,j; //定義變數i,j,用於循環語句
for(i=0;i<time;i++) //for循環,循環50*time次
for(j=0;j<50;j++); //for循環,循環50次
}
//**************************************************************************************************
//主函數
//**************************************************************************************************
void main() //主函數
{
uint i; //定義變亮i
while(1) //進入while死循環
{
for(i=0;i<200;i++) //for循環,實現LED由亮逐漸變暗
{
P0=0xff; //熄滅8位發光二極體
delay(i); //延時保持熄滅狀態i個時間單位
P0=0x00; //點亮8位發光二極體
delay(200-i); //延時保持點亮狀態200-i個時間單位
}
P0=0xff; //熄滅8位發光二極體
delay(5000); //延時保持熄滅狀態5000個時間單位,使現象更明顯
for(i=0;i<200;i++) //for循環,實現LED由暗逐漸變亮
{
P0=0x00; //點亮8位發光二極體
delay(i); //延時保持熄滅狀態i個時間單位
P0=0xff; //熄滅8位發光二極體
delay(200-i); //延時保持點亮狀態200-i個時間單位扮伍
}
}
}
㈡ 單片機製作呼吸燈的C語言程序怎樣編寫
#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定義周期並賦值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循環
{
LED0=1;
Delay(150000); //特意加延時,可以看到熄滅的過程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
㈢ 呼吸燈 沒有效果。C語言 程序 有問題 求找錯!
void Display (a) //顯示函數 顯示256幀中的一幀
{ //PORTA = 0x08; //亮(PA3高對應著發亮) //這里注釋掉,看下你的LED燈會不會亮,如果不亮就是設備的派冊啟問題了,看下這個變數哪裡用塵如到了。
Delay (a); //延時a的長度
PORTA = 0x00; //暗
Delay (255-a);//延時姿蠢總PWM長度減a
}
㈣ STC12C5A60S2製作呼吸燈C語言程序怎麼寫
呼吸燈的程序:
/****************************************************************************
功能:LED燈慢慢變暗,再慢慢變亮。
用定時器模擬的PWM調制。
單片機:AT89S52
******************************************************************************/
#include<reg52.h>
#defineV_TH00XFF//設定定時器0,高8位的初值
#defineV_TL00XF6//設定定時器0,低8位的初值
#defineV_TMOD0X01//設定定時器0的工作方式為:方式1(計數位數是16位//,由TL0作為低8位、TH0作為高8位)
#defineucharunsignedchar
#defineuintunsignedint
voidinit_sys();知握叢//系統初始化函數
voiddelay(uint);//延時函數
unsignedcharZKB;//占空比
voidmain(void)
{
init_sys();//初始化
while(1)
{
for(ZKB=5;ZKB<40;ZKB=ZKB+2)//每調節一次占空比,就延時大概8ms左右,這使得LED現象更明顯
{
delay(8);
}
for(ZKB=40;ZKB>5;ZKB=ZKB-2)
皮芹{
delay(8);
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
voidinit_sys()/*系統初始化函數*/
{
/*定時器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
voidtimer0(void)interrupt1using2
{
staticucharclick=0;//中斷次數計數器變數
TH0=V_TH0;//重新恢復定時器初始值
TL0=V_TL0;
++click;//每計數10次,產生一個中斷,並且click增加一個
if(click>=100)
搭櫻click=0;//計滿一百次,這重新計數。
/*因為計一次數的時間是1us,10次產生一個中斷,也就是一個中斷10us。100個中斷為1ms。
則,可以在這100個數中隨便取值,用於表示占空比的多少,占空比的范圍為(1~100)*/
if(click<=ZKB)//當小於占空比值時輸出低電平,高於時是高電平,從而實現占空比的調整
P1=0x00;//P1口接的是LED燈
else
P1=0xff;
}
此程序的總中斷時間為100ms,即頻率為:100KHZ,占空比從5變為40(即5%~25%)。
㈤ 呼吸燈延時程序C語言單片機製作呼吸燈的C語言程序怎麼寫,不要用定時器,用延時程序
一.51沒有這樣的功能,STC12單片機才有這樣的功能,不過你可以用延時函數來產生PWM波形,但比喊配較浪費CPU時間。二.還有一種畝森方法可以用51來實現,但要消耗兩個定時器,一個T0定時器控制PWM周期,另一個T1定時器控制PWM占空比。(T0裝的初值要大於T1的初值)在定時器中斷的時候都是對I/O口進行取反就可以了。一個定時器產迅滲畝生PWM波形,做不出來,要兩個的(不過只賞0分太少了吧!!!)
㈥ 利用pwm做出呼吸燈(用定時器)並用串口每隔一秒列印亮度(百分比)於電腦上C語言程序怎麼寫
通過PWM占空比調節LED亮度,占空比的值就是亮度值(0%--100%)
定時器蠢廳基定時帶謹1s,在定時器中斷中使用串口發送數伏虛據
㈦ 單片機呼吸燈加流水燈C語言編程
做8個流水燈加一個呼吸燈比較容易,P1口接8個流水燈,察侍物8個LED負極接P1口,則P1口輸出低電平有效。P3.7腳接一個開關作切換。談念模擬圖如下敗液所示。