欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
51時(shí)鐘小制作
[打印本頁(yè)]
作者:
qhdfnftyzt
時(shí)間:
2015-7-10 19:25
標(biāo)題:
51時(shí)鐘小制作
以下是時(shí)鐘的程序,希望能幫助大家!
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit LS138A = P2^2; //定義138譯碼器的輸入A腳由P2.2控制
sbit LS138B = P2^3; //定義138譯碼器的輸入腳B由P2.3控制
sbit LS138C = P2^4; //定義138譯碼器的輸入腳C由P2.4控制
sbit k1=P2^0;
sbit k2=P2^1 ;
sbit k3=P2^5;
bit flag;
uchar sec=0,min=0,hour=12;
uchar count_10ms, DelayCNT; // 10ms計(jì)時(shí),延時(shí)
int m=1;
//此表為 LED 的字模, 共陰數(shù)碼管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
void delay(uint z)
{
int x,y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}
void timer()
{
TMOD=0x01; //定時(shí)器0的方式1
TH0=0xdc; //TH0初值 220
TL0=0x00; //TL0初值 0
EA=1; //開(kāi)總中斷
ET0=1; //打開(kāi)TO中斷
TR0=1; //運(yùn)行TO中斷
}
void key()
{ int t;
if(k1==0)
{
delay(30);
if(k1==0)
{ while(!k1);
t++;
m=t%2; //求余數(shù)運(yùn)算,不是1就是0;
}
}
}
/************主函數(shù)**********************/
main()
{ unsigned int i ;
unsigned int LedOut[10];
timer();
while(1) //進(jìn)入循環(huán)狀態(tài)
{
if(m==0)
{
if(k2==0)
{
delay(30);
if(k2==0)
while(!k2);
hour++;
}
if(hour>=24)
hour=0;
if(k3==0)
{
delay(30);
if(k3==0)
while(!k3);
min++;
}
if(min>=60)
min=0;
}
LedOut[0]=Disp_Tab[hour/10];
LedOut[1]=Disp_Tab[hour%10];
LedOut[2]=Disp_Tab[10];
LedOut[3]=Disp_Tab[min/10];
LedOut[4]=Disp_Tab[min%10];
LedOut[5]=Disp_Tab[10];
LedOut[6]=Disp_Tab[sec/10];
LedOut[7]=Disp_Tab[sec%10];
for( i=0; i<9; i++) //實(shí)現(xiàn)8位動(dòng)態(tài)掃描循環(huán)
{
P0 = LedOut[i]; //將字模送到P0口顯示
switch(i) //使用switch 語(yǔ)句控制位選 也可以是用查表的方式 學(xué)員可以試著自己修改
{
case 0:LS138A=0; LS138B=0; LS138C=0; break;
case 1:LS138A=1; LS138B=0; LS138C=0; break;
case 2:LS138A=0; LS138B=1; LS138C=0; break;
case 3:LS138A=1; LS138B=1; LS138C=0; break;
case 4:LS138A=0; LS138B=0; LS138C=1; break;
case 5:LS138A=1; LS138B=0; LS138C=1; break;
case 6:LS138A=0; LS138B=1; LS138C=1; break;
case 7:LS138A=1; LS138B=1; LS138C=1; break;
}
delay(10);
}
}
}
void timer1() interrupt 1 // 中斷函數(shù)
{
TH0=0xdc;
TH0=0x00;
key();
if(m)
{
{
count_10ms++;
}
if(count_10ms==10)
{
count_10ms=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
hour++;
if(hour>=24)
{
hour=0;sec=0;min=0;
}
}
}
}
}
}
作者:
admin
時(shí)間:
2015-7-10 19:40
很好,謝謝分享,能提供一下電路圖嗎?
作者:
hugonn
時(shí)間:
2017-10-15 22:02
樓主好,我自己有一個(gè)單片機(jī)開(kāi)發(fā)板,用你的程序燒錄了下去,現(xiàn)實(shí)完美,我想問(wèn)一下,下面代碼中bit flag的作用是什么?我把它刪掉了燒錄,也現(xiàn)實(shí)正常?
sbit k1=P2^0;
sbit k2=P2^1 ;
sbit k3=P2^5;
bit flag;
uchar sec=0,min=0,hour=12;
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1