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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)數(shù)字時鐘程序,請參考

[復(fù)制鏈接]
ID:462655 發(fā)表于 2019-1-5 19:30 | 顯示全部樓層 |閱讀模式
#include <at89x51.h>          //頭文件包含

#define uchar unsigned char       //宏定義
#define uint  unsigned int
#define ON  0              //定義0為打開
#define OFF 1              //定義1為關(guān)閉
#define LEDBus P1            //定義p1口為數(shù)碼管段碼口
sbit MIAO =P1^2;             //秒點(diǎn)
sbit HOU_S=P3^0;            //時十位位選
sbit HOU_G=P3^1;            //時個位位選
sbit MIN_S=P3^2;            //分十位位選
sbit MIN_G=P3^3;            //分個位位選
sbit H_KEY=P3^4;            //時調(diào)整鍵
sbit M_KEY=P3^5;            //分調(diào)整鍵
bit  SHAN;               //閃爍標(biāo)志位
uchar second,minute,hour;        //定義秒、分、時寄存器
uchar code LEDTab[]={0x14,0xd7,0x4c,  //數(shù)碼管段碼表0--9
0x45,0x87,0x25,0x24,0x57,0x04,0x05};
void delay(uchar t);          //延時函數(shù)
void init();              //初始化函數(shù)
void display();             //顯示函數(shù)
void min_tiao();            //分調(diào)整函數(shù)
void hou_tiao();            //時調(diào)整函數(shù)
/***************************************
函 數(shù) 名:main
功    能:主函數(shù)
說    明:
入口參數(shù):無
返 回 值:無
****************************************/
void main()
{
init();                //調(diào)用初始化函數(shù)
while(1)               //主程序循環(huán)
{
  if(!H_KEY) hou_tiao();       //如果時調(diào)整鍵按下(為0),調(diào)用時調(diào)整函數(shù)
  if(!M_KEY) min_tiao();       //如果分調(diào)整鍵按下(為0),調(diào)用分調(diào)整函數(shù)
  display();             //調(diào)用顯示函數(shù)
}
}
/***************************************
函 數(shù) 名:init
功    能:初始化函數(shù)
說    明:初始化定時器及中斷
入口參數(shù):無
返 回 值:無
***************************************/
void init()
{
TMOD=1;TH0=0X3C;TL0=0XB0;       //定時器0模式1,50毫秒
ET0=1;TR0=1;EA=1;           //開定時器0中斷、啟動定時器0、開總中斷
}
/***************************************
函 數(shù) 名:display
功    能:顯示函數(shù)
說    明:
入口參數(shù):無
返 回 值:無
***************************************/
void display()
{
LEDBus=LEDTab[minute%10];       //分個位送數(shù)碼管顯示
MIAO=SHAN;              //秒點(diǎn)閃爍
MIN_G=ON;               //打開分個位位選
delay(1);               //顯示1毫秒
MIN_G=OFF;              //關(guān)閉分個位位選
LEDBus=LEDTab[minute/10];       //分十位送數(shù)碼管顯示
MIAO=SHAN;              //秒點(diǎn)閃爍
MIN_S=ON;               //打開分十位位選
delay(1);               //顯示1毫秒
MIN_S=OFF;              //關(guān)閉分十位位選
LEDBus=LEDTab[hour%10];        //時個位送數(shù)碼管顯示
HOU_G=ON;               //打開時個位位選
delay(1);               //顯示1毫秒
HOU_G=OFF;              //關(guān)閉時個位位選
if(hour/10)              //如果時十位為0,不顯示十位數(shù)字
{
  LEDBus=LEDTab[hour/10];       //時十位送數(shù)碼管顯示
  HOU_S=ON;              //打開時十位位選
  delay(1);              //顯示1毫秒
  HOU_S=OFF;             //關(guān)閉時十位位選
}
}
/***************************************
函 數(shù) 名:min_tiao
功    能:分調(diào)整
說    明:
入口參數(shù):無
返 回 值:無
***************************************/
void min_tiao()
{
while(!M_KEY) display();       //等待分調(diào)整鍵松開
second=0;minute++;          //秒清零、分加1
if(minute==60) minute=0;       //如果分等于60,分變0
}
/***************************************
函 數(shù) 名:hou_tiao
功    能:時調(diào)整
說    明:
入口參數(shù):無
返 回 值:無
***************************************/
void hou_tiao()
{
while(!H_KEY) display();       //等待時調(diào)整鍵松開
second=0;hour++;           //秒清零,時加1
if(hour==24) hour=0;         //如果時等于24,時變0
}
/***************************************
函 數(shù) 名:delay
功    能:延時函數(shù)
說    明:
入口參數(shù):t:延時時間長短
返 回 值:無
***************************************/
void delay(uchar t)
{
uchar i;               //定義變量
for(;t>0;t--)             //如果t大于0,t減1(外層循環(huán))
  for(i=124;i>0;i--);         //i等于124,如果i大于0,i減1
}



/***************************************
函 數(shù) 名:timer0
功    能:定時器0中斷函數(shù)
說    明:
入口參數(shù):無
返 回 值:無
***************************************/
void timer0() interrupt 1        //定時器0(中斷1)
{
uchar tim1,tim2;           //定義臨時變量
TL0=TL0+0XB0;TH0=0X3C;        //重裝定時器初值
tim1++;                //每中斷一次tim1加1
if(tim1==10)             //中斷10(0.5秒)
{                  
  SHAN=!SHAN;             //閃爍標(biāo)志取反
  tim1=0;tim2++;           //tim1清零,tim2加1
  if(tim2==2)             //到了1秒
  {
   tim2=0;second++;         //tim2清零,秒加1
   if(second==60)          //如果秒到60
   {                 
    second=0;minute++;       //秒變0,分加1
    if(minute==60)         //如果分到60
    {
     minute=0;hour++;       //分變0,時加1
     if(hour==24) hour=0;     //如果時到24,時變0
    }
   }
  }
}
}
/***************************************
program end               程序結(jié)束
***************************************/

回復(fù)

使用道具 舉報

ID:462655 發(fā)表于 2019-1-5 19:31 | 顯示全部樓層
你好,非常有用
回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2019-1-6 00:21 | 顯示全部樓層
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久婷婷国产香蕉 | 精产国产伦理一二三区 | 久久久毛片| 久久国产电影 | 91精品国产综合久久久动漫日韩 | 亚洲精品九九 | 7777奇米影视 | 国产精品国产精品国产专区不蜜 | 在线一区 | 一级特黄色毛片 | 日韩精品一区二区三区 | 中文字幕日韩专区 | 中文字幕在线一区 | 国产成人免费一区二区60岁 | 中文字幕免费在线 | 国产精品日韩欧美一区二区三区 | 日韩不卡在线观看 | 在线观看亚洲专区 | 日韩精品一区二区三区在线播放 | 国产精品不卡一区 | 成人久久| 日韩精品一区二区三区在线观看 | 日本高清aⅴ毛片免费 | 最新国产在线 | 国产一级免费在线观看 | 亚洲欧美在线免费观看 | 成年人网站国产 | 亚洲天堂精品一区 | 亚洲啊v在线| 一区二区三区韩国 | 日韩欧美国产一区二区三区 | 高清不卡毛片 | 国产亚洲精品久久yy50 | 天天操天天干天天曰 | 国产一区中文字幕 | 亚洲一区二区三区四区五区中文 | 国产一区二区三区四区五区加勒比 | 精品日韩一区二区 | 成人h电影在线观看 | 在线视频a| 精品福利在线视频 |