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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

簡(jiǎn)單的單片機(jī)電子鐘資料

[復(fù)制鏈接]
ID:41347 發(fā)表于 2022-8-19 16:00 | 顯示全部樓層 |閱讀模式
最簡(jiǎn)單的電子鐘全套資料,我就制作了一套,走時(shí)精準(zhǔn)。
/***************************************/
//clock.c
//單片機(jī)電子鐘C語(yǔ)言程序  XSCLK V1.0
//MCU:AT89C2051  晶振頻率:12MHZ
/***************************************/
//最簡(jiǎn)單的單片機(jī)電子鐘程序,學(xué)習(xí)單片機(jī)必經(jīng)之路
//***************************************/
#include <at89x51.h>                                                //頭文件包含
                                                                                                                                                               
#define uchar unsigned char                                        //宏定義
#define uint  unsigned int
#define ON  0                                                        //定義0為打開(kāi)
#define OFF 1                                                                //定義1為關(guān)閉
#define LEDBus P1                                                //定義p1口為數(shù)碼管段碼口
sbit MIAO =P1^2;                                                        //秒點(diǎn)
sbit HOU_S=P3^0;                                                        //時(shí)十位位選
sbit HOU_G=P3^1;                                                        //時(shí)個(gè)位位選
sbit MIN_S=P3^2;                                                        //分十位位選
sbit MIN_G=P3^3;                                                        //分個(gè)位位選
sbit H_KEY=P3^4;                                                        //時(shí)調(diào)整鍵
sbit M_KEY=P3^5;                                                //分調(diào)整鍵
bit  SHAN;                                                                //閃爍標(biāo)志位
uchar second,minute,hour;                                        //定義秒、分、時(shí)寄存器
uchar code LEDTab[]={0x14,0xd7,0x4c,                //數(shù)碼管段碼表0--9
0x45,0x87,0x25,0x24,0x57,0x04,0x05};
void delay(uchar t);                                                        //延時(shí)函數(shù)
void init();                                                                //初始化函數(shù)
void display();                                                                //顯示函數(shù)
void min_tiao();                                                        //分調(diào)整函數(shù)
void hou_tiao();                                                        //時(shí)調(diào)整函數(shù)
/***************************************
函 數(shù) 名:main
功    能:主函數(shù)
說(shuō)    明:
入口參數(shù):無(wú)
返 回 值:無(wú)
****************************************/
void main()
{
        init();                                                                //調(diào)用初始化函數(shù)
        while(1)                                                                //主程序循環(huán)
        {
                if(!H_KEY) hou_tiao();                                //如果時(shí)調(diào)整鍵按下(為0),調(diào)用時(shí)調(diào)整函數(shù)
                if(!M_KEY) min_tiao();                                //如果分調(diào)整鍵按下(為0),調(diào)用分調(diào)整函數(shù)
                display();                                                        //調(diào)用顯示函數(shù)
        }
}
/***************************************
函 數(shù) 名:init
功    能:初始化函數(shù)
說(shuō)    明:初始化定時(shí)器及中斷
入口參數(shù):無(wú)
返 回 值:無(wú)
***************************************/
void init()
{
        TMOD=1;TH0=0X3C;TL0=0XB0;                //定時(shí)器0模式1,50毫秒
        ET0=1;TR0=1;EA=1;                                        //開(kāi)定時(shí)器0中斷、啟動(dòng)定時(shí)器0、開(kāi)總中斷
}
/***************************************
函 數(shù) 名:display
功    能:顯示函數(shù)
說(shuō)    明:
入口參數(shù):無(wú)
返 回 值:無(wú)
***************************************/
void display()
{
        LEDBus=LEDTab[minute%10];                        //分個(gè)位送數(shù)碼管顯示
        MIAO=SHAN;                                                //秒點(diǎn)閃爍
        MIN_G=ON;                                                        //打開(kāi)分個(gè)位位選
        delay(1);                                                                //顯示1毫秒
        MIN_G=OFF;                                                        //關(guān)閉分個(gè)位位選
        LEDBus=LEDTab[minute/10];                        //分十位送數(shù)碼管顯示
        MIAO=SHAN;                                                //秒點(diǎn)閃爍
        MIN_S=ON;                                                        //打開(kāi)分十位位選
        delay(1);                                                                //顯示1毫秒
        MIN_S=OFF;                                                        //關(guān)閉分十位位選
        LEDBus=LEDTab[hour%10];                        //時(shí)個(gè)位送數(shù)碼管顯示
        HOU_G=ON;                                                        //打開(kāi)時(shí)個(gè)位位選
        delay(1);                                                                //顯示1毫秒
        HOU_G=OFF;                                                //關(guān)閉時(shí)個(gè)位位選
        if(hour/10)                                                        //如果時(shí)十位為0,不顯示十位數(shù)字
        {
                LEDBus=LEDTab[hour/10];                        //時(shí)十位送數(shù)碼管顯示
                HOU_S=ON;                                                //打開(kāi)時(shí)十位位選
                delay(1);                                                        //顯示1毫秒
                HOU_S=OFF;                                                //關(guān)閉時(shí)十位位選
        }
}
/***************************************
函 數(shù) 名:min_tiao
功    能:分調(diào)整
說(shuō)    明:
入口參數(shù):無(wú)
返 回 值:無(wú)
***************************************/
void min_tiao()
{
        while(!M_KEY) display();                                //等待分調(diào)整鍵松開(kāi)
        second=0;minute++;                                        //秒清零、分加1
        if(minute==60) minute=0;                                //如果分等于60,分變0
}
/***************************************
函 數(shù) 名:hou_tiao
功    能:時(shí)調(diào)整
說(shuō)    明:
入口參數(shù):無(wú)
返 回 值:無(wú)
***************************************/
void hou_tiao()
{
        while(!H_KEY) display();                                //等待時(shí)調(diào)整鍵松開(kāi)
        second=0;hour++;                                                //秒清零,時(shí)加1
        if(hour==24) hour=0;                                        //如果時(shí)等于24,時(shí)變0
}
/***************************************
函 數(shù) 名:delay
功    能:延時(shí)函數(shù)
說(shuō)    明:
入口參數(shù):t:延時(shí)時(shí)間長(zhǎng)短
返 回 值:無(wú)
***************************************/
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
功    能:定時(shí)器0中斷函數(shù)
說(shuō)    明:
入口參數(shù):無(wú)
返 回 值:無(wú)
***************************************/
void timer0() interrupt 1                                                //定時(shí)器0(中斷1)
{
        uchar tim1,tim2;                                                //定義臨時(shí)變量
        TL0=TL0+0XB0;TH0=0X3C;                        //重裝定時(shí)器初值
        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,時(shí)加1
                                        if(hour==24) hour=0;        //如果時(shí)到24,時(shí)變0
                                }
                        }
                }
        }
}
/***************************************
program end                                                                程序結(jié)束
***************************************/
原理圖.jpg
1660895825730.jpg

最簡(jiǎn)單的電子鐘全套資料.rar

769.15 KB, 下載次數(shù): 20, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产中文字幕 | 成人久久久| 日韩精品久久一区 | 精品综合 | 亚洲精品成人av久久 | 国产精品视频一区二区三区不卡 | 最新中文字幕第一页视频 | 国产精品毛片无码 | 午夜影院在线免费观看视频 | 国产精品久久久久久久久久久免费看 | 一级免费看 | 91色视频在线观看 | 五月婷婷色 | 欧美一区在线视频 | 亚洲视频在线观看一区二区三区 | a视频在线| 免费成人高清在线视频 | 在线小视频 | 日韩在线一区二区三区 | 四虎在线观看 | 日韩 国产 在线 | 欧美日韩高清在线一区 | 精品欧美一区二区三区免费观看 | 久草中文在线 | 精品国产一区二区三区免费 | 资源首页二三区 | 成人超碰 | 国产精品18毛片一区二区 | chengrenzaixian| 视频一区二区在线观看 | 欧美一区二不卡视频 | 国产一区二区三区色淫影院 | 日韩中文字幕视频在线 | 精品久久国产视频 | 中文字幕亚洲一区二区三区 | 黄色大片在线免费观看 | 成人在线视频一区 | 天天干,夜夜操 | 国产精品永久 | 91精品国产高清久久久久久久久 | 欧日韩不卡在线视频 |