欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1890|回復: 0
打印 上一主題 下一主題
收起左側

做了一個單片機秒表,第一次發帖子

[復制鏈接]
跳轉到指定樓層
樓主
ID:812531 發表于 2020-9-16 21:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void display(uchar ,uchar );
void key();
sbit dx=P2^6;//段選
sbit jp=P3^4;//位選
sbit jp1=P3^5;//清零
sbit jp2=P3^6;//暫停
sbit wx=P2^7;//位選
sbit led=P1^0;
uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};//段碼從0~f

uint num,num1,shi,ge,num2;
void delayms(unsigned int xms)//延時函數
{
  unsigned i,j;
         for(i=xms;i>0;i--)
            for(j=110;j>0;j--);
}

void init()
{
TMOD=0X01;
         TH0=0X4C;//計時50ms
         TL0=0X00;
         EA=1;//打開總中斷
         ET0=1;//定時器0的中斷允許開關
         TR0=1;//打開計時器
}
void chushi()    //初始的時候顯示00
{
dx=1;
         P0=0X3F;
         dx=0;
         P0=0xff;
         wx=1;
         P0=0Xfe;
         wx=0;
         delayms(5);

          dx=1;
         P0=0X3F;
         dx=0
         P0=0xff;
         wx=1;
         P0=0Xfd;
         wx=0;
         delayms(5);


}

void main()
{
init();

         while(1)
         {
                   chushi();
                   TR0=0;//顯示0的時候停止計時
                   while(1)
                   {
                   key();//不斷地掃描key()函數
          display(shi,ge);      
                   }
  }
}
void display(uchar shi,uchar ge)
{

         shi=num1/10;
         ge=num1%10;
dx=1;
         P0=table[shi];
         dx=0;
         P0=0xff;
         wx=1;
         P0=0Xfe;
         wx=0;
         delayms(5);

          dx=1;
         P0=table[ge];
         dx=0;
         P0=0xff;
         wx=1;
         P0=0Xfd;
         wx=0;
         delayms(5);


}
void key()
{
if(jp==0)
         {
                   led=0;//led=0
                   while(!jp);//等待鍵盤松開
         TR0=~TR0;//按第一下的時候開始計時 再按一下停止計數 以此類推
         }
          if(jp1==0)
         {
           num1=0;//清零函數
                   TR0=0;//并且停止計數
                   while(!jp1);//等待鍵盤松開
         }

}
void Timer() interrupt 1
{

         TH0=0X4C;
TL0=0X00;
num++;
   if(num==20)//定時器計時50ms,但是經過num1經過20次之后,正好計時1s
            {
             num=0;
                             led=~led;l//led燈閃爍

                             num1++;
                             if(num1==60)//從0顯示到60
                             {
                                      num1=0;//數碼管顯示59后 直接顯示0
                             }

                             }
    }      

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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