電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

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

單片機(jī)C語言實(shí)例-331-數(shù)碼秒表設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-3-29 10:12:29 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)C語言實(shí)例-331-數(shù)碼秒表設(shè)計(jì)

//實(shí)例65:數(shù)碼秒表設(shè)計(jì)
#include<reg51.h>  //  包含51單片機(jī)寄存器定義的頭文件
unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//數(shù)碼管顯示0~9的段碼表
unsigned char int_time;        //記錄中斷次數(shù)
unsigned char second;        //儲(chǔ)存秒
/***********************************************************************
函數(shù)功能:快速動(dòng)態(tài)掃描延時(shí),延時(shí)約0.6毫秒
************************************************************************/
void delay(void)
{
  unsigned char i;
  for(i=0;i<200;i++)
        ;
}
/***********************************************************************
函數(shù)功能:顯示秒
入口參數(shù):k
出口參數(shù):無
************************************************************************/
void DisplaySecond(unsigned char k)
{

   P2=0xfb;        //P2.6引腳輸出低電平, DS6點(diǎn)亮
   P0=Tab[k/10];          //顯示十位
   delay();

   P2=0xf7;       //P2.7引腳輸出低電平, DS7點(diǎn)亮
   P0=Tab[k%10];         //顯示個(gè)位
        delay();
        P2=0xff;     //關(guān)閉所有數(shù)碼管



}
  void main(void)      //主函數(shù)
   {
          TMOD=0x01;                 //使用定時(shí)器T0
          TH0=(65536-46083)/256;    //將定時(shí)器計(jì)時(shí)時(shí)間設(shè)定為46083×1.085微秒
//=50000微秒=50毫秒
           TL0=(65536-46083)%256;
                EA=1;                    //開啟總中斷
                ET0=1;                   //定時(shí)器T0中斷允許
                TR0=1;                   //啟動(dòng)定時(shí)器T0開始運(yùn)行
                int_time=0;     //中斷次數(shù)初始化
                second=0;           //秒初始化               
        while(1)
                {
               DisplaySecond(second);        //調(diào)用秒的顯示子程序
                 }
    }  
//********************************************************
//函數(shù)功能:定時(shí)器T0的中斷服務(wù)程序
//*******************************************************
  void interserve(void ) interrupt 1 using 1  
  {
    TR0=0;    //關(guān)閉定時(shí)器T0
    int_time ++;        //每來一次中斷,中斷次數(shù)int_time自加1       
         if(int_time==20)   //夠20次中斷,即1秒鐘進(jìn)行一次檢測(cè)結(jié)果采樣
          {
        int_time=0;    //中斷次數(shù)清0
            second++;    //秒加1
            if(second==60)
              second =0; //秒等于60就返回0
          }                     
          TH0=(65536-46083)/256;   //重新給計(jì)數(shù)器T0賦初值
        TL0=(65536-46083)%256;
        TR0=1;     //啟動(dòng)定時(shí)器T0
}  

更多詳情參考附件文檔


游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)

發(fā)表回復(fù)

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表