|
3個(gè)led是共陽三色燈,我的原理是利用P1口的P1.0,P1.1,P1.2輸出000-111以到達(dá)一個(gè)燈顯示八種狀態(tài),用按鍵來控制
第一宗方案我用中斷,(其實(shí)我不會(huì)用中斷,改別人的程序的)
#include<reg52.h>
//庫文件
#define uchar unsigned char//宏定義無符號(hào)字符型
uchar dispcount=0; //計(jì)數(shù)初值
/********************************************************************
顯示函數(shù)
*********************************************************************/
void Led() //顯示函數(shù)
{
P1=dispcount;
}
/********************************************************************
中斷服務(wù)函數(shù)
*********************************************************************/
void ExtInt0() interrupt 0 //中斷服務(wù)程序
{
dispcount++; //每按一次中斷按鍵,計(jì)數(shù)加一
if (dispcount==8) //計(jì)數(shù)范圍0-8
{
dispcount=0;
}
}
/********************************************************************
主函數(shù)
*********************************************************************/
void main()
{
TCON=0x01; //中斷設(shè)置
IE=0x81;
while(1)
{
Led();
}
}
這里用的是中斷0,,按鍵要加P3.2我想問要接P3.3改真名改程序,我還不會(huì)用中斷
第二種方案我用了按鍵判斷,之前的沒加入延時(shí)去抖動(dòng),這次加了延時(shí)去抖動(dòng)
#include<reg52.h>
//庫文件
#define uchar unsigned char//宏定義無符號(hào)字符型
uchar dispcount=0; //計(jì)數(shù)初值
sbit BY1=P3^2; //定義按鍵的輸入端(為單片機(jī)P3口的P3.2按鍵)
/********************************************************************
顯示函數(shù)
*********************************************************************/
void Led() //顯示函數(shù)
{
P1=dispcount;
}
/********************************************************************
延時(shí)函數(shù)
*********************************************************************/
void delay10ms(void) //延時(shí)程序
{
uchar i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
/********************************************************************
按鍵判斷函數(shù)
*********************************************************************/
void key() //按鍵判斷程序
{
if(BY1==0) //判斷是否按下鍵盤
{
delay10ms(); //延時(shí),軟件去干擾
if(BY1==0) //確認(rèn)按鍵按下
{
dispcount++; //按鍵計(jì)數(shù)加1
if(dispcount==8) //計(jì)8次重新計(jì)數(shù)
{
dispcount=0;//將dispcoun 清零
}
}
while(BY1==0);//按鍵鎖定,每按一次dispcoun 只加1.
}
}
/********************************************************************
主函數(shù)
*********************************************************************/
void main()
{
while(1)
{
key();
Led();
}
}
|
|