|
單片機(jī)源程序如下:
/************************************************************************* ***
程序開(kāi)始運(yùn)行后,屏幕顯示00秒,每按一次按鍵,單片機(jī)計(jì)數(shù)一次,并實(shí)時(shí)將按鍵次數(shù)在兩位數(shù)碼管上顯示出來(lái)。
*************************************************************************/
//---庫(kù)函數(shù)聲明及相關(guān)定義---//
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define LED P0//段選線
sbit num0=P2^0;//位選線
sbit num1=P2^1;//位選線
uint num;
uchar f0;
sbit key=P1^0;//開(kāi)關(guān)
uchar code dis_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//段碼表0,1,2,3,4,5,6,7
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};//段碼表8,9,a,b,c,d,e,f,滅(16),-(17)
unsigned char SegBuf[2]={0};
//---延時(shí)函數(shù)---//
void delayled(uchar N)
{
uchar i,j;
for(i=0;i<N;i++)
for(j=0;j<125;j++);
}
//---填充顯示緩沖區(qū)函數(shù)---//
void convert(uint n)
{
SegBuf[0] =n%10;
SegBuf[1] =n/10%10;
}
//---顯示函數(shù)---//
void display(void)
{
LED=dis_code[SegBuf[0]];
num0=0;
delayled(3);
num0=1;
LED=dis_code[SegBuf[1]];
num1=0;
delayled(3);
num1=1;
}
//---顯示數(shù)據(jù)---//
void Disp(uint n)
{
convert(n);
display() ;
}
//---主函數(shù)---//
void main()
{
num=0;//開(kāi)始顯示的數(shù)字為0
f0=1;//f0為按鍵標(biāo)志位,如果按下鍵,f0=0,否則f0=1
while(1)
{
while (key==0)//鍵按下,顯示,標(biāo)志f0=0
{
Disp(num);
f0=0;
}
while (key==1)//鍵未按下,顯示
{
Disp(num);
if (f0==0)
{
num=num+1;
f0=1;
}
}
}
}
全部資料51hei下載地址:
LED動(dòng)態(tài)掃描顯示-計(jì)數(shù).zip
(30.9 KB, 下載次數(shù): 23)
2019-6-9 11:41 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|