|
呼吸燈+電路原理圖+程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (20.56 KB, 下載次數(shù): 139)
下載附件
2018-3-30 03:09 上傳
0.png (54.31 KB, 下載次數(shù): 108)
下載附件
2018-3-30 03:09 上傳
單片機(jī)源程序如下:
- #include <AT89X52.h>
- #define MAX 0x50 //定時(shí)上限定義
- #define MIN 0x00 //定時(shí)下限定義
- #define TIMELINE 11 //時(shí)間分頻常數(shù)
- #define TRUE 1
- #define FALSE 0 //標(biāo)志位常數(shù)
- unsigned int TimeCounter;
- bit ArrowFlg = 0; //方向標(biāo)志位
- unsigned char upCounter,downCounter; //增加計(jì)數(shù)器和減少計(jì)數(shù)器
- sbit LED=P2^0;
- //T0的中斷服務(wù)子函數(shù)
- void T0Deal() interrupt 1 using 0
- {
- TH0=0xf1;
- TL0=0xf1;
- TR0=1;
- TimeCounter++; //定時(shí)計(jì)數(shù)器增加
- if(TimeCounter == TIMELINE)
- {
- if((upCounter == MAX)&&(downCounter == MIN)) //計(jì)數(shù)方向標(biāo)志位切換
- {
- ArrowFlg = FALSE;
- }
- if((upCounter == MIN)&&(downCounter == MAX))
- {
- ArrowFlg= TRUE;
- }
- if(ArrowFlg == 1) //如果是增加計(jì)數(shù)
- {
- upCounter++;
- downCounter--;
- }
- else //如果是減少計(jì)數(shù)
- {
- upCounter--;
- downCounter++;
- }
- TimeCounter=0;
- }
- }
- //延時(shí)函數(shù)
- void Delay(unsigned int i)
- {
- unsigned int j;
- while(i--)
- {
- for(j=0;j<32;j++); //延時(shí)
- }
- }
- void main()
- {
- upCounter = MIN;
- downCounter = MAX; //計(jì)數(shù)器初始化
- TMOD = 0x01; //設(shè)置定時(shí)器工作方式
- TH0 = 0xF0;
- TL0 = 0xF0 ; //T0初始化值
- EA = 1;
- ET0 = 1; //開(kāi)中斷
- TR0 = 1; //啟動(dòng)T0
- while(1)
- {
- LED=0; //輸出變化的PWM波形
- Delay(downCounter);
- LED=1;
- Delay(upCounter);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
應(yīng)用實(shí)例1 呼吸燈.rar
(61.95 KB, 下載次數(shù): 265)
2018-3-28 16:15 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|