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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求教!如何把倒計時60s的程序改成“00:00”用4位led顯示的2分鐘程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:72803 發表于 2015-1-26 10:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面是倒計時60s的程序
求大神改寫

#include<reg51.h>

sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
unsigned char j,k,a1,a0,s=60;
unsigned int m;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(unsigned char i)
{
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
void display(unsigned char sh_c,unsigned char g_c)
{
   dula=0;
   P0=table[sh_c];
   dula=1;
   dula=0;

   wela=0;
   P0=0xfe;
   wela=1;
   wela=0;
   delay(5);

   P0=table[g_c];
   dula=1;
   dula=0;

   P0=0xfd;
   wela=1;
   wela=0;
   delay(5);
}

void main()
{
        TMOD=0x01;
        TR0=1;
        TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數應為46080,計時器每隔50000微秒發起一次中斷。
        TL0=(65536-46080)%256;//46080的來歷,為50000*11.0592/12
        ET0=1;
        EA=1;
        while(1)
        {
                if(m==20)
                {        m=0;
                        s--;
                }
                a0=s%10;
                a1=s/10;
                display(a1,a0);
                if(s==0)
                {
                        TR0=0;//時間到,定時器關閉
                        beep=0;//蜂鳴器響,報時。
                }       
        }
}

void time0() interrupt 1
{TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        m++;
}


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

使用道具 舉報

沙發
ID:72751 發表于 2015-1-26 11:33 | 只看該作者
樓主有點不明白你的意思的,至少使用5位的數碼管才能顯示出你要的這種形式啊,前兩位是分鐘,后兩位代表秒,是這意思嗎?這個程序顯示的000:00,你可以自己把高位的0去掉,變成00:00
#include"reg52.h"

#define uchar unsigned char
#define uint unsigned int

sbit DULA = P2^6;  //74H573控制位,控制數碼管段碼輸出
sbit WELA = P2^7;  //74H573控制位,控制數碼管位碼輸出

uchar minute = 0;
uchar second = 0;
uchar T0RH = 0;         
uchar T0RL = 0;        
uint cnt = 0; //秒計數器
uchar LedBuff[6] = {0X00,0X00,0X00,0X00,0X00,0X00};        //數碼管顯示緩沖區
uchar code LedChar[] = { //數碼管顯示編碼表
        0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,  //0~7
        0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71,0X09 //8~15 :
};

void ConfigTimer0(uint ms);        //定時器0初始化,確定定時時間
void LedShow(uchar minute,uchar second);  

void main()
{
        EA = 1;
        ConfigTimer0(1); //初始化定時器0,定時時間1ms
        while(1)
        {
                if(cnt>=1000)
                {
                        cnt = 0;
                        second++;
                        if(second>=60)
                        {
                                second = 0;
                                minute++;
                                if(minute>=2)
                                {
                                        minute = 0;
                                }
                        }
                }
                LedShow(minute,second);
        }
}


void ConfigTimer0(uint ms)
{
        unsigned long temp;
        temp = 11059200/12;
        temp = temp*ms/1000;
        temp = 65536 - temp;
        T0RH = (uchar)(temp>>8);
        T0RL = (uchar)temp;
        TMOD &= 0XF0;
        TMOD |= 0X01;
        TH0 = T0RH;
        TL0 = T0RL;
        TR0 = 1;
        ET0 = 1;
}

void LedShow(uchar minute,uchar second)
{
        uchar buff[6];
        uchar i;
        buff[0] = second%10;
        buff[1] = second/10;
        buff[2] = 16;
        buff[3] = minute%10;
        buff[4] = minute/10;
        buff[5] = 0;
        for(i=0;i<6;i++)
        LedBuff[ i] = LedChar[buff[ i]];
        
}
void LedScanf()
{
        static uchar i = 0;
        P0 = 0X00;
        DULA = 1;
        P0 = LedBuff[ i];
        DULA = 0;
        P0 = 0XFF;
        WELA = 1;
        P0 = ~(0X20>>i);
        WELA = 0;
        i++;
        if(i>5)
        i = 0;
}

void interrupttimer0() interrupt 1
{
        TH0 = T0RH;
        TL0 = T0RL;
        LedScanf();
        cnt++;
}




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:1 發表于 2015-1-28 15:37 | 只看該作者
wind02072107 發表于 2015-1-26 11:33
樓主有點不明白你的意思的,至少使用5位的數碼管才能顯示出你要的這種形式啊,前兩位是分鐘,后兩位代表秒 ...

[ i ]導致了 斜體   現在已經修正了.
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色桃网| 毛片在线免费播放 | 成人免费视频 | 欧美男人的天堂 | 欧美男人天堂 | 在线日韩中文字幕 | av黄色免费在线观看 | 成人精品鲁一区一区二区 | 欧洲精品视频一区 | 日本高清不卡视频 | 国产一区二区自拍 | 亚洲精品乱码久久久久久久久 | 午夜精品一区二区三区免费视频 | 尤物在线视频 | 欧美www在线观看 | 久久久久久久国产精品影院 | 懂色av一区二区三区在线播放 | 久久久久亚洲国产| 特级特黄特色的免费大片 | 日韩欧美国产一区二区 | 91精品国产91久久久久久不卞 | 久久里面有精品 | 麻豆久久久9性大片 | 欧美 视频| 西西裸体做爰视频 | 精品一区免费 | 国产日韩欧美电影 | 欧美日韩专区 | 久久国产精品视频观看 | 中文字幕在线观看 | 久久伊人操 | 99精品免费久久久久久日本 | 日韩在线看片 | 紧缚调教一区二区三区视频 | 四虎影 | 综合网在线| 中文字幕第二十页 | 日韩三区在线观看 | 91亚洲国产成人久久精品网站 | 国产日韩欧美一区 | 我想看国产一级毛片 |