找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1539|回復: 0
收起左側(cè)

單片機秒表的程序設(shè)計

[復制鏈接]
ID:778990 發(fā)表于 2020-6-16 13:03 | 顯示全部樓層 |閱讀模式
#include<reg51.h>
typedef unsigned char uint8;
typedef unsigned int  uint16;

/*七段共陰管顯示定義*/
uint8 code dispcode[ ]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

/*定義并初始化變量*/
uint8 seconde=0;// second 調(diào)整定義
uint16  mstcnt=0;//minite調(diào)整定義
sbit key1=P1^6;        //定義P1.6端口為按鍵1
sbit key2=P1^7;//定義p1.7端口為按鍵2

/*函數(shù)聲明*/
void delay(uint8 k ); //延時子程序
void time_pro( ); //時間處理子程序
void display( ); //顯示子程序
void keyscan( ); //鍵盤掃描子程序

/*延時子程序*/
void delay (uint8 k)
{
uint8 j;
while((k--)!=0)
{
for(j=0;j<125;j++)
{;}
}
}

/*時間處理子程序*/
void time_pro(void)
{
if(seconde==99)//秒鐘設(shè)為99進制
{
seconde=0;
}
}

/* 顯示子程序*/
void display(void)
{
P0=dispcode[seconde/10]; //顯示秒的十位
delay(4);
P3=dispcode[seconde%10]; //顯示秒的個位
delay(4);
}

/*鍵盤掃描子程序*/
void keyscan (void)
{
if(key1==0) //按鍵1為開始鍵
{
delay(60);
if(key1==0)
EA=1;
delay(60);
seconde++;
}
if(seconde==99)
{seconde=0;
}
if(key2==0) //按鍵2為復位鍵
{
delay(60);
if(key2==0)
{      
delay(60);
seconde=0;
delay(60);
EA=0;
}
}
}

/*1s定時子程序 */
void timer0(void) interrupt 1 using 0
{
TH0=0xff;
TL0=0x19;
TMOD = 0x01;//定時器0方式1,250us中斷一次
mstcnt++;
if(mstcnt==4000)
{
seconde++;
mstcnt=0; //對計數(shù)單元的清零
}
}

/*主函數(shù)*/
void main(void)
{     
P0=0xff; //初始化p0口,全設(shè)為1使數(shù)碼管
TMOD = 0x01; //time0為定時器,方式1
TH0=0xff; //預置計數(shù)初值
TL0=0x19;
EA=0;
ET0=1;
TR0=1;
while (1)
{
keyscan( ); //按鍵掃描
time_pro( ); //時間處理
display( ); //顯示時間
}
}

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表