找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神指教,我想在計(jì)時器到10時讓燈光閃爍可是

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:354237 發(fā)表于 2018-6-19 13:31 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
2黑幣
#include <reg51.h>
#define uchar unsigned char //宏定義?
#define uint unsigned int
void delay (uchar n );
sfr p0 = 0x80;
sfr p2 = 0xA0;
sfr p1 = 0x90;
sbit dula = P2^6;  //段選,申明U1鎖存器的鎖存端,鎖存器使用的是74HC573?
sbit wela = P2^7;  //位選,申明U2鎖存器的鎖存端,鎖存器使用的是74HC573?
sbit beep = p2^3;
sbit led1=p1^0;
uchar DisBuf[4];
uchar Minute,Second,Counter;
uint Count=0;
int num=0;
int flag=1;
int frq;
int i,j ;
uchar code SegCode[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //數(shù)組,用于數(shù)碼管顯示數(shù)字的數(shù)字集,從0
uchar code BitCode[]=
{0xfe,0xfd,0xfb,0xf7};
void BufToSeg(void)
{
uchar i;
for(i=0;i<4;i++) {
if(i==2)
{
        dula = 1;
  P0 = SegCode[DisBuf[ i]];
  dula = 0;

}

dula = 1; //打開U1鎖存器,用于控制顯示的數(shù)據(jù)?
P0 = SegCode[DisBuf[ i]]; //送入數(shù)據(jù)到鎖存器U1,送入段選信號,顯示什么數(shù)字?
dula = 0; //關(guān)閉U1鎖存器?
P0 = 0xff; //消影,因?yàn)镻0口任然保持上次的數(shù)據(jù)?
wela = 1; //打開U2鎖存器,用于控制哪個數(shù)碼管亮?
P0 = BitCode[ i];
wela = 0; //關(guān)閉U1鎖存器?
delay(3); //延時五個毫秒?
}
}
void delay (uchar n )
{
  uchar j;
while(n--)
{
  for(j=0;j<113;j++);
}
}
void NumToBuf(void)
{
DisBuf[0]=Minute/10;
DisBuf[1]=Minute%10;
DisBuf[2]=Second/10;
DisBuf[3]=Second%10;

}

void main()
{
if(flag==1)
{
TMOD = 0x01; //設(shè)置定時器0在工作方式1?
TH0 = (65536-45872)/256; //裝初值,50ms申請一次中斷?
TL0 = (65536-45872)%256;
EA  = 1; //開總中斷?
ET0 = 1; //開定時器0中斷?
TR0 = 1; //啟動定時器0?
}

while(1)

{        
        NumToBuf();
        BufToSeg();
                delay(1);
                led1=1;
                beep=1;
                if(Minute==10)
              {
                              
                                 TR0=0;
                                 delay(30);
                                 led1=~led1;  結(jié)果是燈和倒計(jì)時的前三位一起閃爍,希望大神可以指點(diǎn),
                                                                           我想只讓燈閃,或者就讓燈和倒計(jì)時的四位一起閃,小白求指點(diǎn)
                                 delay(30);
                                 beep=~beep;
                                 
                      }
                           
                 

         
   }
}

void T0_time() interrupt 1  //1號中斷,定時器0的中斷號?
{
        
                TH0 = (65536-45872)/256; //裝初值,50ms申請一次中斷?
                TL0 = (65536-45872)%256;
                Counter++; //申請一次中斷num加1一次?
                if(Counter==1) //num加到20時,50*20=1000ms,說明一秒鐘到了?
                {
                Counter=0;
                Second++;
                if(Second==60)
                   {
                     Second=0;
                         Minute++;
                         num++;        
                        }
                  }
                 
                 
                 
                 
}
        

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

使用道具 舉報

沙發(fā)
ID:354521 發(fā)表于 2018-6-19 17:59 | 只看該作者
程序?qū)懙貌粚?/td>
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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