久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自己寫的一個碼表程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:442350 發表于 2018-12-22 20:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
四個按鍵控制,可以實現暫停開始 加一 歸零
#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int  u16;
sbit start=P2^7;
sbit stop=P2^6;
sbit plus_one=P2^5;
sbit resert=P2^4;
#define dpick P0
#define wpick P1
u16 num1=0;                                                               //1s的次數的計數值
u16 num60=0;                                                        //1min的次數的計數值
u16 zd_num=0;                 //進入中斷次數的計數值

                    //子函數

void delay(u16 num)                                                         //延時函數
{
               u16 x,y;
               for(x=num;x>0;x--)
               for(y=110;y>0;y--)
               {
               ;                     
               }
}
u8 code table[]={0x3f,0x06 ,0x5b ,0x4f, 0x66, 0x6d, 0x7d ,0x07, 0x7f,
                 0x6f,0x77 ,0x7c, 0x39, 0x5e, 0x79, 0x71};
void Display(u16 a,u16 b,u16 c,u16 d)                                      //定義顯示函數  
{
    dpick=table[a];                                              //秒的個位的段選
wpick=0x7f;                                                         //秒的個位的位選
delay(5);   

dpick=table[b];                                                        //秒的十位的段選
wpick=0xbf;                                                         //秒的十位的位選
delay(5);

dpick=table[c]+0x80;                                                   //分的個位的段選(帶小數點)
wpick=0xdf;                                                      //分的個位的位選
delay(5);
  
dpick=table[d];                                                     //分的十位的段選
wpick=0xef;                                                   //分的十位的位選
delay(5);      
}
void InitTimer0()                                                         //定時器初始化函數
{

TMOD=0x01;                                                            //選擇定時器0的工作方式1
TH0=(65535-50000) / 256;                            //計算初值 (定時50ms)
    TL0=(65535-50000) % 256;
EA=1;                                                            //打開總中斷
ET0=1;                                                               //打開定時器中斷
TR0=0;
}
void TIMER0()  interrupt 1                                                //定時器中斷服務函數
{
TH0=(65535-50000) / 256;                                              //手動填充
TL0=(65535-50000) % 256;
zd_num++;                                                        //讓進入中斷次數值加1,用于判斷是否達到1s
}
            //主函數
void main()
{
    u16 s1,s10,min1,min10;                                     //秒的個位,秒的十位,分的個位,分的十位
InitTimer0();                                            //初始化定時器
while(1)  
{
if(start==0)                                                   //檢測啟動
{
    delay(20);                                   
if(start==0)  
{               
   TR0=1;                                              //定時器打開
   while(!start);                                 
}
}
if(stop==0)                                                     //檢測啟動
{
  delay(20);
  if(stop==0)  
  {
TR0=0;                                                  //定時器關閉
while(!stop);                                 
  }
}
if(plus_one==0)                                                
{
  delay(20);                                      
  if(plus_one==0)  
  {
zd_num=zd_num+20;                                    
while(!plus_one);                                 
  }
}
if(resert==0)                                             
{
  delay(20);                                       
  if(resert==0)  
  {
    zd_num=0;
TR0=0;
num1=0;
num60=0;            
  }
  while(!resert);
}  

if(zd_num>=20)                                                     
{
   zd_num=0;                                                              
   num1++;                                                     
  if(num1>=60)                                                           
    {
        num1=0;                                                         
     num60++;
     if(num60>=60)
      {
     TR0=0;   
     num1=0;
     num60=0;
     zd_num=0;
   }
    }
}

s1=num1%10;                                               //從秒的計數值里面分離秒的個位
s10=num1/10;                                                //從秒的計數值里面分離秒的十位
min1=num60%10;                                             //從分的計數值里面分離分的個位
min10=num60/10;                                             //從分的計數值里面分離分的十位

Display(s1,s10,min1,min10);                                 //顯示
}

}









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

使用道具 舉報

沙發
ID:1 發表于 2018-12-23 00:46 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:442350 發表于 2018-12-23 14:49 | 只看該作者
電路連接 就是單片機P0連接數碼管段選位 P1 的四個IO口 連接數碼管所選的位選位 四個按鍵連接P2口的7 6 5 4
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费福利小视频 | 久久在线 | 精品久久久久久久久久久久 | 99久视频| 欧美日韩亚洲在线 | 亚洲精品久久久久久久久久吃药 | www.色.com | 亚洲免费片 | 国产精品视频一区二区三区不卡 | 日韩aⅴ在线观看 | 欧美午夜视频 | 国产在线观看一区二区三区 | 欧美激情一区二区三级高清视频 | 午夜精品 | 91免费看片| 国产精品美女久久久 | 亚洲二区在线 | 国产一区在线免费 | 爱爱免费视频 | 久久精品 | 在线观看亚洲 | 中文字幕日韩一区 | 国产精品欧美一区二区三区不卡 | 欧美a区 | 国产免费一区 | 在线观看日本网站 | 狠狠爱视频 | 国产黄视频在线播放 | 婷婷综合激情 | 日韩欧美一区二区三区 | 日韩福利在线观看 | 日韩欧美专区 | 中文字幕久久精品 | 91av亚洲| 国产高潮av | 精品一级电影 | 欧美一区二区免费 | 婷婷中文在线 | 国产蜜臀97一区二区三区 | 国产国产精品 | 欧美成人高清视频 |