欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4896|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

哪位大佬幫做一下倒計時器的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:202435 發(fā)表于 2017-5-19 10:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
最近要求做一個51單片機(jī)的倒計時器程序,可是做了好久也做不出來,看了很多都不太符合要求,就請大家?guī)蛡忙。
要求用C語言做。
倒計時計時器
1、LCD1602顯示倒計時時間
2、時間到蜂鳴提醒
3、獨(dú)立按鍵設(shè)定時長(分鐘為單位)

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

使用道具 舉報

沙發(fā)
ID:202435 發(fā)表于 2017-5-19 10:45 | 只看該作者
像這個好像是數(shù)碼管顯示的,怎么改成LCD1602顯示啊,有人幫改一下代碼嗎?
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int

sbit Key_up=P3^4;        //分鐘調(diào)節(jié)按鍵+
sbit Key_down=P3^5;        //分鐘調(diào)節(jié)按鍵-
sbit Key_enter=P3^6;//開始、暫停按鍵
sbit Key_esc=P3^7;        //清除按鍵
sbit beep=P2^3;                //蜂鳴器
sbit wela=P2^7;                //位鎖存器
sbit dula=P2^6;                //段鎖存器

uint cnt,min,sec; //中斷計數(shù)、分、秒
bit flag;                //開始位
uchar dsp[6];  //數(shù)碼管內(nèi)容
uchar dsp_du[17]={0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
                                  0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,
                                  0x39 , 0x5e , 0x79 , 0x71 , 0x00};//段編碼
uchar dsp_we[6]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf};//位編號

//延時
void delay(uint z)
{
        uint t1,y;
        for(t1=z;t1>0;t1--)
                for(y=110;y>0;y--);
}

//鍵盤控制
void key()
{
        if(!Key_up) //向上
        {
                delay(200);
                if(!Key_up)        min++;
                min=min%100;
        }

        if(!Key_down) //向下
        {
                delay(200);
                if(!Key_down) min--;
                min=min%100;
        }

        if(!Key_enter) //開始位
        {
                delay(50);
                if(!Key_enter) flag=~flag;
                while(!Key_enter);
        }

        if(!Key_esc) //停止位
        {
                flag=0;
                min=0;
                sec=0;
        }

}

void run()
{
        if(cnt>199)        //秒計數(shù)
        {
                cnt=0;
                if(sec==0)  //分鐘計數(shù)
                {
                        sec=60;
                        if(min==0)        //分鐘復(fù)位
                        {
                                min=100;
                                flag=0; //停止運(yùn)行
                                beep=0;//響聲提示
                                delay(2000);
                                beep=1;
                        }
                        min--;
                 }
                sec--;
        }
}

//定時器初始化
void init()
{
        TMOD=0x11;
        TR0=1;        //啟動定時器0
        ET0=1;        //打開定時器0中斷
        TR1=1;        //啟動定時器1
        ET1=1;        //打開定時器1中斷
        TH1=0xfd; //寫入定時器1初始值
        TL1=0x77;                 
        TH0=0xee;
        TL0=0;                 
        EA=1;        //打開總中斷
        min=20;  //預(yù)置時間
}

//主函數(shù)
void main()
{
        init();
        while(1)
        {
                if(flag)
                        {run();}
                key();
                //數(shù)字拆分成個位和十位
                dsp[0]=min/10;
                dsp[1]=min%10;
                dsp[2]=sec/10;
                dsp[3]=sec%10;

        }
}

//定時器0,用于計時
timer0() interrupt 1  // 定時器0中斷是1號
{
        TH0=0xee;        //5ms
        TL0=0;
        cnt++;                 
}

//定時器1,用于LED動態(tài)掃描
timer1() interrupt 3  // 定時器1中斷是3號
{
        uchar wei; //數(shù)碼管顯示位計數(shù)

        TH1=0xf0; //定時器初始值
        TL1=0x00;
        wela=1;
        P0=dsp_we[wei];
        wela=0;

        dula=1;
        P0=dsp_du[dsp[wei]];
        if(wei==1) P0=P0|0x80;        //第二位加點(diǎn)
        dula=0;

        wei++;
        wei=wei%4;
}
回復(fù)

使用道具 舉報

板凳
ID:202435 發(fā)表于 2017-5-19 13:54 | 只看該作者
有哪位會的大神幫忙嗎?
回復(fù)

使用道具 舉報

地板
ID:202435 發(fā)表于 2017-6-3 15:16 | 只看該作者
看起來沒人了
回復(fù)

使用道具 舉報

5#
ID:208017 發(fā)表于 2017-6-5 15:56 | 只看該作者
這些都是最基本的網(wǎng)上找找例程就好了
回復(fù)

使用道具 舉報

6#
ID:47286 發(fā)表于 2017-6-5 16:50 | 只看該作者
本帖最后由 dzbj 于 2017-6-5 20:42 編輯

你做個定時器 比如每1s產(chǎn)生一次中斷 然后用一個變量做計數(shù) 在沖斷外的程序里 用一個變量紀(jì)錄倒計時的最大數(shù) 不斷用倒計時最大數(shù)-變量就是剩余時間 就相當(dāng)于每s減一下
回復(fù)

使用道具 舉報

7#
ID:208172 發(fā)表于 2017-6-5 21:00 | 只看該作者
有沒有這個的仿真圖分享一下  剛好也是做這個
回復(fù)

使用道具 舉報

8#
ID:111634 發(fā)表于 2017-6-5 21:20 | 只看該作者
本帖最后由 zl2168 于 2017-6-5 21:21 編輯

介紹你一個案例,顯示方式有些不同,供你參考。
實例96  能預(yù)置初值的倒計時秒表
Proteus仿真一下,確認(rèn)有效。
實例96 能設(shè)置初值的倒計時秒表.rar (40 KB, 下載次數(shù): 12)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計實例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實驗操作,書中電路和程序設(shè)計有詳細(xì)說明,電路與程序真實可靠可信可行,程序語句條條有注解。若需99.99秒,硬件電路增加一位595軟件程序增加0.01s10ms)計數(shù)器,并修改相應(yīng)計數(shù)顯示程序。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報

9#
ID:202435 發(fā)表于 2017-6-6 18:12 | 只看該作者
a11123 發(fā)表于 2017-6-5 21:00
有沒有這個的仿真圖分享一下  剛好也是做這個

你有這個的代碼嗎?可以分享一下嗎?
回復(fù)

使用道具 舉報

10#
ID:202435 發(fā)表于 2017-6-6 18:15 | 只看該作者
zl2168 發(fā)表于 2017-6-5 21:20
介紹你一個案例,顯示方式有些不同,供你參考。
實例96  能預(yù)置初值的倒計時秒表
先Proteus仿真一下,確 ...

謝謝了
回復(fù)

使用道具 舉報

11#
ID:105206 發(fā)表于 2017-6-7 20:23 | 只看該作者
我這里剛給別人做的,經(jīng)過了仿真,做了實物。現(xiàn)成的
回復(fù)

使用道具 舉報

12#
ID:105206 發(fā)表于 2017-6-7 20:24 | 只看該作者
加QQ:2279196123
回復(fù)

使用道具 舉報

13#
ID:151834 發(fā)表于 2017-6-8 20:14 | 只看該作者
采用了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表