標(biāo)題:
89c51調(diào)光燈程序 復(fù)制他人的
[打印本頁]
作者:
鋒778
時(shí)間:
2021-6-26 12:19
標(biāo)題:
89c51調(diào)光燈程序 復(fù)制他人的
#include<reg52.h>
/*------------------------------------------------
MAIN C Function
------------------------------------------------*/
/******************************************************************/
//此文件中定義了單片機(jī)的一些特殊功能寄存器
sbit PWMOUT=P2^0; //PWM輸出
sbit Kjia=P3^0; //按鍵 加
sbit Kjian=P3^2; //按鍵 減
sbit K=P3^1; //按鍵 開關(guān)機(jī)
sbit ON_OFF=P2^7; //開關(guān)機(jī)狀態(tài)指示燈
bit kaiguan = 0; //開關(guān)機(jī)狀態(tài)位
unsigned int count=0,FLAG=0,stat;
unsigned char cnt = 0; // 檔位變量
//延時(shí)函數(shù)
void DELAY(unsigned int t)
{
while(t--);
}
//定時(shí)器 T0 初始化
void init_T0(void)
{
EA=1;
ET0=1;
IP=0x02;
TMOD=0x01;
TL0=(65535-100)%256;
TH0=(65535-100)/256;
TR0=1;
}
//按鍵掃描
void scan_key(void)
{
if(K==0)
{
DELAY(10000);
if(K==0)
{
kaiguan=~kaiguan;
ON_OFF=~ON_OFF;
if(ON_OFF==1)
// else
{
P0=0x00;
}
while(!K);
}
}
if(kaiguan==0) // 關(guān)機(jī)
{
cnt=0;
TR0=0;
}
if(kaiguan==1) //開機(jī)
{
if(Kjia==0)
{
DELAY(10000);
if(Kjia==0)
{
cnt=cnt+1;
if(cnt>=5) //加到5后不變
{
cnt=5;
}
}
}
if((Kjian==0)&&(cnt>0))
{
DELAY(10000);
if(Kjian==0)
{
cnt=cnt-1; //減到1后不變
}
}
}
// 檔位選擇
switch(cnt)
{
case 0:
TR0=0;PWMOUT=1;break;
case 1:
P0=0x06;TR0=1;FLAG=90;break;//FLAG = 90;亮度10%
case 2:
P0=0x5b;TR0=1;FLAG=70;break;
case 3:
P0=0x4f;TR0=1;FLAG=50;break;
case 4:
P0=0x66;TR0=1;FLAG=30;break;
case 5:
P0=0x6d;TR0=1;FLAG=10;break;//最亮
}
}
//主函數(shù)
void main()
{
init_T0();
PWMOUT=1; // 開發(fā)板P2^0高電平 燈不亮 代表關(guān)機(jī)狀態(tài) 實(shí)際應(yīng)用改成 0
ON_OFF = 0; // 關(guān)機(jī) P0=0x00;
cnt=0;
while(1)
{
scan_key();
}
}
// 定時(shí)器T0 中斷函數(shù)
void timer0() interrupt 1
{
TL0=(65535-100)%256;
TH0=(65535-100)/256;
if(count==FLAG)
{
PWMOUT=0;
}
count++;
if(count==100)
{
count=0;
if(FLAG==0)
PWMOUT=0;
else
PWMOUT=1;
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1