霹靂燈、繼電器、蜂鳴器等實驗程序
大小:0.15 MB 人氣: 2017-09-06 需要積分:0
1、霹靂燈實驗程序
/* ch03-3-3.c - 霹靂燈實驗程序? *///==聲明區(qū)============================================
#include?
#define?LED?P1???// 定義LED接至Port 1
void delay(int);??// 聲明延遲函數(shù)?
//==主程序============================================
main()?????// 主程序開始?
{?unsigned char i;? ?// 聲明無號數(shù)字元變數(shù)i(占1Bytes) ?
?LED=0xfe;???// 初值=1111 1110,只有最右1燈亮?
?while(1)???// 無窮循環(huán),程序一直跑?
?{?for(i=0;i<7;i++)// 左移7次?
??{?delay(100);?// 延遲100 5m=0.5s?
???LED=(LED<<1)|0x01;?// 左移1位,并設(shè)定最低位元為1?
??}????// 左移結(jié)束,只有最左1燈亮?
??for(i=0;i<7;i++)// 右移7次?
??{?delay(100);?// 延遲100 5m=0.5s?
???LED=(LED>>1)|0x80;?// 右移1位,并設(shè)定最高位元為1
??}????// 結(jié)束右移,只有最右1燈亮?
?}?????// while循環(huán)結(jié)束?
}??????// 主程序結(jié)束?
//==子程序=============================================
/* 延遲函數(shù),延遲約x 5ms */
void delay(int x)??// 延遲函數(shù)開始?
{?int i,j;???// 聲明整數(shù)變數(shù)i,j?
?for (i=0;i
}??????// 延遲函數(shù)結(jié)束?
?
2、繼電器實驗程序
/* ch03-3-2.c - 繼電器實驗程序? *///==聲明區(qū)========================================
#include?
sbit?buzzer = P3^7;??//?聲明蜂鳴器的位置?
sbit?relay = P3^6;??//?聲明繼電器的位置??
void delay(int);???//?聲明延遲函數(shù)?
void pulse_BZ(int,int,int);?//?聲明蜂鳴器發(fā)聲函數(shù)?
void pulse_RL(int,int,int);?//?聲明繼電器控制函數(shù)?
//==主程序========================================
main()??????//?主程序開始?
{?while(1)????//?無窮循環(huán),程序一直跑 */
?{?pulse_RL(10,2000,2000);?
??// 繼電器使燈亮滅各10次,各2000 0.5m=1s
??pulse_BZ(100,1,1);?
??// 蜂鳴器第1聲嗶,約100*(0.5m+0.5m)=0.1s
??delay(200);???//?延遲200 0.5ms=0.1s?
??pulse_BZ(100,1,1);?
??// 蜂鳴器第2聲嗶,約100*(0.5m+0.5m)=0.1s
??delay(200);???//?延遲200 0.5ms=0.1s?
?}??????//?while循環(huán)結(jié)束?
}???????//?主程序結(jié)束?
//==副程序=========================================
// 延遲函數(shù)開始,延遲約x*0.5ms/
void delay(int x)??//?延遲函數(shù)開始?
{?int i,j;???//?聲明整數(shù)變量i,j
?for (i=0;i
}?????//?延遲函數(shù)結(jié)束?
/* 蜂鳴器發(fā)聲函數(shù),count=計數(shù)次數(shù),TH=高態(tài)時間,TL=低態(tài)時間 */
void pulse_BZ(int count,int TH,int TL)?//?蜂鳴器發(fā)聲函數(shù)開始?
{?int i;???//?聲明整數(shù)變量i/
?for(i=0;i
??delay(TH);?//?延遲TH 0.5ms?
??buzzer=0;?//?輸出低態(tài)?
??delay(TL);?//?延遲TL 0.5ms?
?}????//?for循環(huán)結(jié)束?
}?????//?蜂鳴器發(fā)聲函數(shù)結(jié)束?
/* 繼電器控制函數(shù),count=計數(shù)次數(shù),TH=激磁時間,TL=消磁時間 */
void pulse_RL(int count,int TH,int TL)?//?繼電器控制函數(shù)開始?
{?int i;???//?聲明整數(shù)變量i?
?for(i=0;i
??delay(TH);?//?延遲TH 0.5ms?
??relay=0;?//?輸出低態(tài),繼電器消磁(燈滅)?
??delay(TL);?//?延遲TL 0.5ms?
?}????//?for循環(huán)結(jié)束?
}?????//?繼電器控制函數(shù)結(jié)束?
?
3、蜂鳴器實驗程序
/* ch03-3-1.c - 蜂鳴器實驗程序? *///==聲明區(qū)====================================
#include?
sbit buzzer = P3^7 ;?// 聲明蜂鳴器的位置為Port 3之bit 7
void delay(int);??//?聲明延遲函數(shù)?
void pulse_BZ(int,int,int);?//?聲明蜂鳴器發(fā)聲函數(shù)?
//==主程序====================================
main()?????//?主程序開始?
{?while(1)???//?無窮循環(huán),程序一直跑?
?{?pulse_BZ(100,1,1);?
??// 蜂鳴器發(fā)聲100 (0.5m+0.5m)=0.1s
??delay(1000);?//?延遲1000 0.5m=0.5秒?
?}?????//?while循環(huán)結(jié)束?
}??????//?主程序結(jié)束?
//==子程序=====================================
/* 延遲函數(shù)開始,延遲x 0.5ms */?
void delay(int x)??//?延遲函數(shù)開始?
{?int i,j;???//?聲明整數(shù)變量i,j
?for (i=0;i
}?????//?延遲函數(shù)結(jié)束?
/* 蜂鳴器發(fā)聲函數(shù),count=計數(shù)次數(shù),TH=高態(tài)時間,TL=低態(tài)時間 */
void pulse_BZ(int count,int TH,int TL)?//?蜂鳴器發(fā)聲函數(shù)開始?
{?int i;???//?聲明整數(shù)變數(shù)i
?for(i=0;i
??delay(TH);?//?延遲TH 0.5ms?
??buzzer=0;?//?輸出低態(tài)?
??delay(TL);?//?延遲TL 0.5ms?
?}????//?for循環(huán)結(jié)束?
}?????//?蜂鳴器發(fā)聲函數(shù)結(jié)束
?
4、秒表計C程序
//秒表程序#define XMS 2000? /* 定時中斷間隔 12MHz,1uS */?
#include
#include
#define uchar unsigned char
sbit?KEY1?=P3^3;? /* 啟動鍵 */
sbit?KEY2?=P3^4;? /* 停止鍵 */
sbit?KEY3?=P3^5;? /* 清除鍵*/
bit stop;
char buf[4]={0,0,0,0};
char low[4]={0xfe,0xfd,0xfb,0xf7};
char disppoint;
uchar ms;
code char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};? /* 顯示段表*/
void delayms(int t)
{
uchar i;
while(t--)
?{
?i=100;
?while(i--);?
?}
}
void put_num(char c)
{
P0=seg[c&0x0f];
}
void timer0( ) interrupt 1 using 1? /*定時器中斷程序*/
{
EA=0;
//顯示:
TH0=-(XMS/256);?
TL0=-(XMS%256);
disppoint&=3;
put_num(buf[disppoint]);
//if(disppoint==2)P0&=~0x20; /* 小數(shù)點*/
P1=low[disppoint];
disppoint++;
if(stop){EA=1;return;}
//----
ms--;
if(ms==0)
?{
?ms=100;
?buf[3]++;
?if(buf[3]>9)
??{buf[3]=0;
??buf[2]++;
??if(buf[2]>9)
???{buf[2]=0;
???buf[1]++;
???if(buf[1]>9)
????{buf[1]=0;
????buf[0]++;
????if(buf[0]>9)buf[0]=0;
????}
???}
??}
?}
EA=1;
}
main()
{
TMOD=0x01;
TH0=-(XMS/256);?/* 5ms */
TL0=-(XMS%256);
TR0=1;
EA=1;
while(1)
?{
?EA=1;
?ET0=1;
?if(!KEY1 && stop!=0){stop=0;delayms(100);}
?if(!KEY2 && stop==0){stop=1;delayms(100);}
?if(!KEY3)
??{buf[0]=buf[1]=buf[2]=buf[3]=0;
??stop=1;
??delayms(100);}
?}
}
?
5、AT89S5x看門狗
#include
#include
#include
sfr AUXR??? = 0x8E;??//定義AT89S51擴(kuò)展寄存器
sfr WDTRST? = 0xA6;
void clr_wdt();
main()
{
?AUXR = 0xff;??// 初始化看門狗相關(guān)寄存器
?while(1)???// 主循環(huán)
?{
??clr_wdt();??// 8191個機(jī)器周期內(nèi)必須至少調(diào)用此程序一次
??????// 否則看門狗會溢出
??
??// 其它子程序?
??// ?
?}
}
void clr_wdt()
{
?WDTRST = 0x1E;??// 清除看門狗指令
?WDTRST = 0xE1;??//?
}
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
霹靂燈、繼電器、蜂鳴器等實驗程序下載
相關(guān)電子資料下載
- 洲明UCine LED全系列產(chǎn)品獲TüV南德、美國UL“雙認(rèn)證” 123
- STM32基礎(chǔ)知識:GPIO(通用輸入輸出接口) 102
- 耐壓100V10A LED降壓恒流PWM調(diào)光芯片在汽車車燈調(diào)光電源的應(yīng)用 37
- 典型汽車網(wǎng)絡(luò)系統(tǒng)架構(gòu)設(shè)計盤點 28
- 三星宣布正開發(fā)RGB OLEDoS 蘋果考慮采用 249
- 方向繼電器是怎樣設(shè)置的?其作用是什么? 43
- 簡易LED恒流電路分析 43
- 單電池點亮白光LED電路分析 28
- 低電壓光控LED閃光燈電路原理圖講解 44
- LED三色流水燈(1亮2滅)電路原理圖講解 49