#include "reg51.h"
unsigned char code disptab[] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
unsigned char code bittab[] =
{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsigned char hour=12,min=0,sec=0;//時分秒
unsigned int count;//定時1ms計數(shù)次數(shù)
unsigned char num=0;//數(shù)碼管序號
sbit K1=P3^4;//按鍵,接在P3-4567,你隨便接,記得改定義!
sbit K2=P3^5;
sbit K3=P3^6;
sbit K4=P3^7;
sbit bee=P3^3;//蜂鳴器
void disp() //顯示函數(shù)
{
num++;
if(num==2)num=0;//你說是秒表,分就沒用了
num=(num%6);
P2=0xff; //數(shù)碼管消影
P0=0xff;
P2=bittab[num];
switch(num)
{
case 0:P0=disptab[sec%10]; break;//秒個位
case 1:P0=disptab[sec/10]; break;//秒十位
case 2:P0=disptab[min%10]; break;//分個位
case 3:P0=disptab[min/10]; break;//分十位
case 4:P0=disptab[hour%10]; break;//時個位
case 5:P0=disptab[hour/10]; break;//時十位
default:;
}
//if(num==2||num==4)P0=P0&0x7f;
}
void t0() interrupt 1 //T0中斷函數(shù)
{
TL0=0x6c;//賦初值,重新定時1ms
TH0=0xfc;
count++;
if(count==1000)
{
count=0;
if(sec==0)sec=1;//防止在自減前就已經(jīng)是0了
sec=sec-1;//這里改成減!
// if(sec==60) {sec=0;min++;}
// if(min==60) {min=0;hour++;}你要的是秒表,這兩個就不要了
// if(hour==24) {hour=0;}
}
//disp();這個函數(shù)移動下位置,我要把它放在主函數(shù)里
}
void delayms(unsigned char t) //叫delayms其實被改過,并非延遲1ms
{
unsigned char k;
while (t--)
{
for (k = 0; k < 11; k++)
;
}
}
/*開關(guān)K4檢測函數(shù) /
uchar j_K3()
{
if(K3==0)
{
delayms(40);
if(K3==0)
{
while(1)
{
if(K3==1)
{
delayms(40);
if(K3==1)break;
}
}
return 1;
}
else return 0;
}
else return 0;
}
uchar j_K2()
{
if(K2==0)
{
delayms(40);
if(K2==0)
{
while(1)
{
if(K2==1)
{
delayms(40);
if(K2==1)break;
}
}
return 1;
}
else return 0;
}
else return 0;
}
uchar j_K1()
{
if(K1==0)
{
delayms(40);
if(K1==0)
{
while(1)
{
if(K1==1)
{
delayms(40);
if(K1==1)break;
}
}
return 1;
}
else return 0;
}
else return 0;
}
void beep()
{
unsiged char i,j;
for(i=0;i
關(guān)于MCS-51單片機(jī)、你們懂得!
關(guān)于MCS-51單片機(jī)、你們懂得!
以下是是MCS-51單片機(jī)的數(shù)字時鐘程序,
#include "reg51.h"
unsigned char code disptab[] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
unsigned char code bittab[] =
{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsigned char hour=12,min=0,sec=0;//時分秒
unsigned int count;//定時1ms計數(shù)次數(shù)
unsigned char num=0;//數(shù)碼管序號
void disp() //顯示函數(shù)
{
num++;
num=(num%6);
P2=0xff; //數(shù)碼管消影
P0=0xff;
P2=bittab[num];
switch(num)
{
case 0:P0=disptab[sec%10]; break;//秒個位
case 1:P0=disptab[sec/10]; break;//秒十位
case 2:P0=disptab[min%10]; break;//分個位
case 3:P0=disptab[min/10]; break;//分十位
case 4:P0=disptab[hour%10]; break;//時個位
case 5:P0=disptab[hour/10]; break;//時十位
default:;
}
//if(num==2||num==4)P0=P0&0x7f;
}
void t0() interrupt 1 //T0中斷函數(shù)
{
TL0=0x6c;//賦初值,重新定時1ms
TH0=0xfc;
count++;
if(count==1000)
{
count=0;
sec=sec+1;
if(sec==60) {sec=0;min++;}
if(min==60) {min=0;hour++;}
if(hour==24) {hour=0;}
}
disp();
}
void main() //主函數(shù)
{
TMOD=0x01; //T0工作方式1,定時
TH0=0xfc; //定時1ms,賦初值
TL0=0x6c;
ET0=1;
EA=1;
TR0=1;
while(1);
}
通過修改源程序設(shè)計一個可預(yù)置倒計時秒表!按鍵S1調(diào)節(jié)十位,按鍵S2調(diào)各位,預(yù)置范圍為(0-59),按鍵S3負(fù)責(zé)啟動S4暫停,暫停時現(xiàn)實最后記時值,當(dāng)?shù)褂嫊r進(jìn)行時s1和s2不起作用,倒計時到0時蜂鳴器報警1秒,又回到預(yù)置值準(zhǔn)備倒計時.
提示:通過定時和中斷記性數(shù)碼管動態(tài)掃描顯示,在主程序中判斷按鍵,通過一個位變量來表示倒計時的運行于暫停狀態(tài),在1s計時到的時候判斷標(biāo)識狀態(tài)以確定是否要對計數(shù)值減一
以下是是MCS-51單片機(jī)的數(shù)字時鐘程序,
#include "reg51.h"
unsigned char code disptab[] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
unsigned char code bittab[] =
{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsigned char hour=12,min=0,sec=0;//時分秒
unsigned int count;//定時1ms計數(shù)次數(shù)
unsigned char num=0;//數(shù)碼管序號
void disp() //顯示函數(shù)
{
num++;
num=(num%6);
P2=0xff; //數(shù)碼管消影
P0=0xff;
P2=bittab[num];
switch(num)
{
case 0:P0=disptab[sec%10]; break;//秒個位
case 1:P0=disptab[sec/10]; break;//秒十位
case 2:P0=disptab[min%10]; break;//分個位
case 3:P0=disptab[min/10]; break;//分十位
case 4:P0=disptab[hour%10]; break;//時個位
case 5:P0=disptab[hour/10]; break;//時十位
default:;
}
//if(num==2||num==4)P0=P0&0x7f;
}
void t0() interrupt 1 //T0中斷函數(shù)
{
TL0=0x6c;//賦初值,重新定時1ms
TH0=0xfc;
count++;
if(count==1000)
{
count=0;
sec=sec+1;
if(sec==60) {sec=0;min++;}
if(min==60) {min=0;hour++;}
if(hour==24) {hour=0;}
}
disp();
}
void main() //主函數(shù)
{
TMOD=0x01; //T0工作方式1,定時
TH0=0xfc; //定時1ms,賦初值
TL0=0x6c;
ET0=1;
EA=1;
TR0=1;
while(1);
}
通過修改源程序設(shè)計一個可預(yù)置倒計時秒表!按鍵S1調(diào)節(jié)十位,按鍵S2調(diào)各位,預(yù)置范圍為(0-59),按鍵S3負(fù)責(zé)啟動S4暫停,暫停時現(xiàn)實最后記時值,當(dāng)?shù)褂嫊r進(jìn)行時s1和s2不起作用,倒計時到0時蜂鳴器報警1秒,又回到預(yù)置值準(zhǔn)備倒計時.
提示:通過定時和中斷記性數(shù)碼管動態(tài)掃描顯示,在主程序中判斷按鍵,通過一個位變量來表示倒計時的運行于暫停狀態(tài),在1s計時到的時候判斷標(biāo)識狀態(tài)以確定是否要對計數(shù)值減一
其他人氣:199 ℃時間:2020-06-21 21:53:34
優(yōu)質(zhì)解答
我來回答
類似推薦
- My father has lunch at twelve o'clock.(對劃線部分提問)劃線部分是at twelve o'clock.
- 運動會開幕式現(xiàn)場放飛100個藍(lán)氣球、紅氣球、黃氣球,其中紅氣球比黃氣球多2個,藍(lán)氣球比黃氣球少1個,三種氣球各有多少個?
- What‘s your favorite TV show怎樣回答
- jony用英文怎么讀,最好把音標(biāo)寫出來,
- 描寫舞蹈的文章
- 學(xué)校要粉刷新教室學(xué)校要粉刷新教室,已知教室的長為12米,寬為6米,高為35米,除去門窗的面積18平方米,如
- 由FeO、Fe2O3、Fe3O4組成的混合物,測得其中鐵元素與氧元素的質(zhì)量比為21:8,則這種混合物中FeO、Fe2O3、Fe3O4的物質(zhì)的量之比可能為( ?。?A.1:2:1 B.2:1:1 C.1:1:1 D.1:1:38
- 二氧化碳與碳發(fā)生反應(yīng)生成一氧化碳的化學(xué)式
- 設(shè)a,b是互不相等的正數(shù),且a+b=1,分別用分析法、綜合法證明:a分之一加b分之一大于4
- 物理變化和化學(xué)變化生活中的例子各舉5個例子
- whenever you come whatever we talk and I'll right here waiting for you?
- 當(dāng)月球處在地球和太陽之間時,我們看到的月球是什么樣的?
猜你喜歡
- 1《畫蛇添足》的故事中,“為蛇足者”為什么“終亡其酒”?
- 2花費時間take和spend的區(qū)別
- 3醛可以生成醇
- 4一根鐵絲長24米,要把它圍成一個長方形,長是寬的1.4倍,這個長方形的面積是( )平方米?
- 5請教在五聲調(diào)式體系中,調(diào)號相同的調(diào)式稱為 ( ) A、同名調(diào) B、平行調(diào) C、同宮調(diào) D、同主音調(diào)
- 6圖書館有甲乙兩個書架,后來甲書添38本,乙書借出72本,這時甲架是乙架書的3倍,求甲乙書架各有書多少本?
- 7計算:1/(x+1)(x+2)+1/(x+2)(x+3)+1/(x+3)(x+4)+...+1/(x+2009)(x+2010)=1/2x+4020
- 8擴(kuò)建前的面積是605萬平方米,比擴(kuò)建后約少40分之27,擴(kuò)建后的面積約是多少萬平方米
- 9Nobody wants to eat them,__ __?怎么填
- 10a familiar visitor的意思!
- 11五年級下冊暑假作業(yè)(英語)
- 12千瓦和大卡怎么換算