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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4662|回復: 13
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
最近要求做一個51單片機的倒計時器程序,可是做了好久也做不出來,看了很多都不太符合要求,就請大家幫個忙。
要求用C語言做。
倒計時計時器
1、LCD1602顯示倒計時時間
2、時間到蜂鳴提醒
3、獨立按鍵設定時長(分鐘為單位)

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

使用道具 舉報

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

sbit Key_up=P3^4;        //分鐘調節按鍵+
sbit Key_down=P3^5;        //分鐘調節按鍵-
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; //中斷計數、分、秒
bit flag;                //開始位
uchar dsp[6];  //數碼管內容
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)        //秒計數
        {
                cnt=0;
                if(sec==0)  //分鐘計數
                {
                        sec=60;
                        if(min==0)        //分鐘復位
                        {
                                min=100;
                                flag=0; //停止運行
                                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;  //預置時間
}

//主函數
void main()
{
        init();
        while(1)
        {
                if(flag)
                        {run();}
                key();
                //數字拆分成個位和十位
                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動態掃描
timer1() interrupt 3  // 定時器1中斷是3號
{
        uchar wei; //數碼管顯示位計數

        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;        //第二位加點
        dula=0;

        wei++;
        wei=wei%4;
}
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

你做個定時器 比如每1s產生一次中斷 然后用一個變量做計數 在沖斷外的程序里 用一個變量紀錄倒計時的最大數 不斷用倒計時最大數-變量就是剩余時間 就相當于每s減一下
回復

使用道具 舉報

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

使用道具 舉報

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

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

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

使用道具 舉報

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

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

使用道具 舉報

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

謝謝了
回復

使用道具 舉報

11#
ID:105206 發表于 2017-6-7 20:23 | 只看該作者
我這里剛給別人做的,經過了仿真,做了實物。現成的
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品成人网 | 丁香婷婷在线视频 | 国产日韩欧美 | 亚洲美女网站 | 这里有精品 | 国产精品免费一区二区 | 亚洲欧美在线观看 | 久久国产精品免费一区二区三区 | 亚洲精品久久久一区二区三区 | 先锋资源吧 | 国产精品色一区二区三区 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久久不卡视频 | 日韩毛片在线免费观看 | 一级毛片色一级 | 日韩第一页| 国产精品伦一区二区三级视频 | 精品三级在线观看 | 久久久人成影片一区二区三区 | 日韩在线中文 | 91色在线 | 羞羞网站在线观看 | 中文字幕免费视频 | 一区二区av | 精品日韩一区二区 | 亚洲国产一区二区三区在线观看 | 毛片区 | 国产区在线免费观看 | 99久久久99久久国产片鸭王 | 久久久久久久久久久高潮一区二区 | 免费激情网站 | 久草在线| 欧美五月婷婷 | 影音先锋男 | 亚洲影音先锋 | 久久er精品 | 操操日 | 91精品成人久久 | 毛片一级网站 | 国产高清精品网站 | 一区二区免费 |