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

標題: 自己寫的一個碼表程序 [打印本頁]

作者: 961042558    時間: 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);                                 //顯示
}

}










作者: admin    時間: 2018-12-23 00:46
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
作者: 961042558    時間: 2018-12-23 14:49
電路連接 就是單片機P0連接數碼管段選位 P1 的四個IO口 連接數碼管所選的位選位 四個按鍵連接P2口的7 6 5 4




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲一区久久 | 精品欧美一区二区在线观看欧美熟 | 在线观看中文字幕视频 | 国产伦精品一区二区三区高清 | 免费一区| 亚洲国产成人av好男人在线观看 | 全部免费毛片在线播放网站 | 亚洲人va欧美va人人爽 | 黄色片网此 | 一本大道久久a久久精二百 国产成人免费在线 | 综合久久av | 日日骚视频| 超碰免费在 | 欧美日韩一区不卡 | 欧美一级免费观看 | 国产精品久久久久久一区二区三区 | 久久精品一 | 五月婷婷激情网 | av一区二区在线观看 | 亚洲夜夜爽 | 免费看黄视频网站 | 91精品久久久久久久久久 | 我爱操 | 欧美黄色一区 | 亚洲视频精品 | 91看片在线观看 | av黄色在线 | 99精品视频在线 | 亚洲午夜三级 | 国产精品国产三级国产aⅴ无密码 | 蜜臀网| 久久国产精品无码网站 | 亚洲永久精品国产 | 国产有码 | 欧美三级视频在线观看 | 日韩高清国产一区在线 | 91精品国产综合久久久动漫日韩 | 精品久久香蕉国产线看观看亚洲 | 亚洲精品免费观看 | 亚洲伊人久久综合 | 亚洲一区中文字幕在线观看 |