QQ圖片20190609113617.png (50.1 KB, 下載次數: 22)
下載附件
2019-6-9 11:38 上傳
單片機源程序如下:
/************************************************************************* ***
程序開始運行后,屏幕顯示00秒,每按一次按鍵,單片機計數一次,并實時將按鍵次數在兩位數碼管上顯示出來。
*************************************************************************/
//---庫函數聲明及相關定義---//
#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;//開關
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};
//---延時函數---//
void delayled(uchar N)
{
uchar i,j;
for(i=0;i<N;i++)
for(j=0;j<125;j++);
}
//---填充顯示緩沖區函數---//
void convert(uint n)
{
SegBuf[0] =n%10;
SegBuf[1] =n/10%10;
}
//---顯示函數---//
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;
}
//---顯示數據---//
void Disp(uint n)
{
convert(n);
display() ;
}
//---主函數---//
void main()
{
num=0;//開始顯示的數字為0
f0=1;//f0為按鍵標志位,如果按下鍵,f0=0,否則f0=1
while(1)
{
while (key==0)//鍵按下,顯示,標志f0=0
{
Disp(num);
f0=0;
}
while (key==1)//鍵未按下,顯示
{
Disp(num);
if (f0==0)
{
num=num+1;
f0=1;
}
}
}
}
全部資料51hei下載地址:
LED動態掃描顯示-計數.zip
(30.9 KB, 下載次數: 23)
2019-6-9 11:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|