欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
4位共陽數碼管電子鐘原理圖及單片機程序流程圖等
[打印本頁]
作者:
qixm1202
時間:
2019-5-25 15:30
標題:
4位共陽數碼管電子鐘原理圖及單片機程序流程圖等
原理圖用PROTEL99SE畫的,整點報時(倒數幾秒蜂鳴器響),4位數碼管顯示時和分,兩個發光二極管閃爍代表秒信號。詳細的程序清單和流程圖。
程序流程圖:
0.png
(64.48 KB, 下載次數: 66)
下載附件
2019-5-26 01:39 上傳
單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x00,0x7c,0x39,0x5e,
0x79,0x71};//共陰數碼管代碼
uint x,y,q,b,s,g,cunshi,cunfen,t0;
uchar sigh,sigh2=1,sigh3,banmiao,miaozt,nz;//banmiao是半秒標志位,miaozt是讓調時時小數點不閃
uint nshi,nfen;//鬧鐘時、分變量
int bxshi,bsshi;//報時時間段變量,上下限
int miao,fen,shi;
uchar count1,count2,count3,count4,count5;
sbit K1=P1^0;//位選0到3
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit deep=P2^0;
sbit an1=P0^0;
sbit an2=P0^1;
sbit an3=P0^2;
sbit an4=P0^3;
sbit hong=P2^2;
void init();
void display(int q,int b,int s,int g);
void ajcl();//按鍵及處理
void baoshiyf();//報時與否函數
void kaiji();//開機系統檢測
void nzzx();//鬧鐘執行
void main()
{
init();
while(1)
{
kaiji();
ajcl();
display(q,b,s,g);
baoshiyf();
nzzx();
}
}
void init()
{
hong=1;
P3=0xc0;
K1=0;K2=0;K3=0;K4=0;
P3=0xc0;
K1=1;K2=1;K3=1;K4=1;
TMOD=0x11;ET1=1;x=65000;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=65000/256;
TL1=65000%256;
EA=1;
ET0=1;
TR0=1;
deep=0;
nz=1;
bxshi=6;bsshi=22;
}
void ajcl() //按鍵及處理
{
if(an1==0) { y=200; while(y--); if(an1==0) count1++;
while(!an1) {display(q,b,s,g);} } //1鍵按鍵計數
if(an2==0) { y=200; while(y--); if(an2==0) count2++;
while(!an2) {display(q,b,s,g);} } //2鍵按鍵計數
if(count4==0)
{
if(an3==0) { y=200; while(y--); if(an3==0) count3++;
while(!an3) {display(q,b,s,g);} } //3鍵按鍵計數
}
if(count3==0 || count3==3)
{
count3=0;
if(an4==0) { y=200; while(y--); if(an4==0) count4++;
while(!an4) {display(q,b,s,g);}} //4鍵按鍵計數
}
P0=0xff;
q=cunshi/10; b=cunshi%10; s=cunfen/10; g=cunfen%10;
////////////////////////////////////////接下來按an4觸發可調時間
if (count4 && !count3)
{
cunshi = shi; cunfen = fen;
miaozt=1;
switch(count4)
{
case 1 : if((shi==0)&&count2) shi=24 ;
shi = shi+count1; count1=0;
shi = shi-count2; count2=0;
if(shi==24) shi=0;
if (banmiao) {q=10; b=10; }
else {q=shi/10; b=shi%10;} break;
case 2 : if((fen==0)&&count2) fen=60;
fen = fen+count1; count1=0;
fen = fen-count2; count2=0;
if(fen==60) fen=0;
if (banmiao) {s=10; g=10; }
else {s=fen/10; g=fen%10;} break;
case 3 : miao=0;count4=0; break;
}
}
////////////////////////////////////////接下來按an3觸發可定鬧鐘和報時時間段
if (count3 && (!count4))
{
cunshi = nshi; cunfen = nfen;
miaozt=1;
switch(count3)
{
case 1 : s=nfen/10; g=nfen%10;
if((nshi==0)&&count2) nshi=24;
nshi = nshi+count1; count1=0;
nshi = nshi-count2; count2=0;
if(nshi==24) nshi=0;
if (banmiao) {q=10; b=10; }
else {q=nshi/10; b=nshi%10;} break;
case 2 : q=nshi/10; b=nshi%10;
if((nfen==0)&&count2) nfen=60;
nfen = nfen+count1; count1=0;
nfen = nfen-count2; count2=0;
if(nfen==60) nfen=0;
if (banmiao) {s=10; g=10; }
else {s=nfen/10; g=nfen%10;} break;
case 3 : cunshi=shi; cunfen=fen; break;
case 4 : cunshi = bxshi; cunfen = bsshi;
s=bsshi/10; g=bsshi%10;
if((bxshi==0)&&count2) bxshi=24;
bxshi = bxshi+count1; count1=0;
bxshi = bxshi-count2; count2=0;
if(bxshi==24) bxshi=0;
if (banmiao) {q=10; b=10; }
else {q=bxshi/10; b=bxshi%10;} break;
case 5 : cunshi = bxshi; cunfen = bsshi;
q=bxshi/10; b=bxshi%10;
if((bsshi==0)&&count2) bsshi=24;
bsshi = bsshi+count1; count1=0;
bsshi = bsshi-count2; count2=0;
if(bsshi==24) bsshi=0;
if (banmiao) {s=10; g=10; }
else {s=bsshi/10; g=bsshi%10;} break;
case 6 : count3=0; cunshi=shi; cunfen=fen; break;
}
}
///////////////////////////////////////////時分 秒切換
if(count1 && (!count3) && (!count4) )
{
if(count1==1)
{ q=10; b=10; s=miao/10; g=miao%10; miaozt=1; }
else count1=0 ;
}
}
void timer0() interrupt 1
{
t0++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(t0==10) {banmiao=1;miaozt=1;}
if(t0==20) {banmiao=0;miaozt=0;t0=0;miao++;sigh=1;}
if(miao==11) {sigh2=0; }
if(miao==60) {miao=0;fen++;sigh3=1;}
if(fen==60) {fen=0;shi++; }
if(shi==24) {shi=0; }
cunshi=shi; cunfen=fen;
}
void timer1() interrupt 3
{
TH1=x/256;
TL1=x%256;
deep=~deep;
}
void display(int q,int b,int s,int g)
{
P3=~table[g];
K4=0; delay();
K4=1;
P3=~table[s];
K3=0; delay();
K3=1;
P3=t0<9?(P3=~(table[b]+0x80)):(P3=~table[b]);
K2=0; delay();
K2=1;
P3=~table[q];
K1=0; delay();
K1=1;
}
void baoshiyf()
{
if( ((shi+1) >= bxshi) && (shi < bsshi) )
{
if( fen==59 )
{
if(( (miao==56) || (miao==57) || (miao==58) || (miao==59) )&&(t0<8))
{x=65000;nz=0;TR1=1;}
if(( (miao==56) || (miao==57) || (miao==58) || (miao==59) )&&(t0>7)) TR1=0;nz=1;
}
if( sigh &&(fen==0) && (miao==0) && (t0<14) )
{
x=65150;
nz=0;TR1=1;
}
if( sigh&& (fen==0) && (miao==0) && (t0==14) )
TR1=0;nz=1;
}
if(shi==bsshi)
{
if(sigh &&(fen==0) && (miao==0) && (t0<14) )
{ x=65150; nz=0;TR1=1;}
if( sigh&& (fen==0) && (miao==0) && (t0==14) ) TR1=0;nz=1;
}
}
void kaiji()
{
if(sigh2)
{
if( (miao!=0) && (t0<5) )
{x=64800;nz=0;TR1=1;}
if( (miao!=0) && (t0>4) )
TR1=0;nz=1;
if (t0<13) hong=1;
else hong=0;
}
}
void delay()
{
uint x,y;
for(x=50;x>0;x--)
for(y=1;y>0;y--);
}
void nzzx()
{ if(sigh3)
{
if((nshi==shi)&&(nfen==fen)&&(miao<31))
{ x=65300; TR1=1; }
else
if(nz)
{ TR1=0; }
}
}
復制代碼
0.png
(5.21 KB, 下載次數: 60)
下載附件
2019-5-26 01:39 上傳
所有資料51hei提供下載:
電子鐘原理圖及程序(4位共陽數碼管).rar
(114.33 KB, 下載次數: 109)
2019-5-25 15:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
qerwaetsyrukyjm
時間:
2020-3-28 18:14
能問一下三極管用的什么型號嗎 9012和9013 還是9014和9015
作者:
whwitp
時間:
2020-5-19 17:44
感謝樓主分享4位共陽數碼管電子鐘原理圖
作者:
JasirJiang
時間:
2021-6-28 10:39
4位共陽數碼管電子鐘原理圖,下載看看
作者:
1015295845
時間:
2021-6-30 16:17
沒找到電路圖
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1