|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (27.17 KB, 下載次數(shù): 63)
下載附件
2020-11-13 21:59 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit wei=P2^7;
- sbit duan=P2^6;
- sbit P33=P3^3;
- sbit P32=P3^2;
- int count=0;
- uchar smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //數(shù)碼管的段碼值,0xbf對(duì)應(yīng)”—“
- uchar weixuan[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //數(shù)碼管的位選信號(hào)
- uchar tab[8]={0,0,10,0,0,10,0,0}; //8數(shù)碼管顯示值的8個(gè)值,10是對(duì)用顯示— ;
- void zhuanhuan(uchar shi,uchar fen,uchar miao);
- void delay_ms(uint i) //延時(shí)
- {
- uint j;
- for(;i>0;i--)
- for(j=120;j>0;j--);
- }
- void main()
- { uchar i=0,count=0; //count用來(lái)計(jì)量1S的時(shí)間
- uchar moshi=0;
- uchar shi=23,fen=59,miao=55; //定義時(shí)、分、秒變量
- bit flag=0; //正常走時(shí),flag=0;調(diào)節(jié)時(shí)分秒時(shí),flag=1;
- while(1)
- {
- zhuanhuan(shi,fen,miao); //從時(shí)分秒中分出十位,個(gè)位
- for(i=0;i<8;i++) //數(shù)碼管動(dòng)態(tài)掃描顯示
- { P0=weixuan[i];wei=1;wei=0;
- P0=~smg[tab[i]];duan=1;duan=0;delay_ms(1);
- }
-
- //時(shí)分秒根據(jù)時(shí)間變化
- if(flag==0) count++; //count記錄while循環(huán)的次數(shù),通過(guò)指令可以推斷出一次需要多少時(shí)間,次數(shù)乘以單次時(shí)間,以此計(jì)算1秒的時(shí)間
- if(count==105) {miao++;count=0;} //當(dāng)count==次時(shí),時(shí)間為1秒
- if(miao==60) {fen++;miao=0;} //60秒1分鐘,60分鐘1小時(shí),24小時(shí)歸零。
- if(fen ==60) {shi++;fen=0;}
- if(shi==24) {shi=0;}
-
- //按鍵調(diào)節(jié)時(shí)分秒
- if(P32==0) //10ms延時(shí),消抖處理
- {delay_ms(10);
- if(P32==0) {moshi++;flag=1;} //模式1對(duì)應(yīng)調(diào)時(shí),模式2對(duì)應(yīng)調(diào)分,模式3對(duì)應(yīng)調(diào)秒
- }
- if(P33==0) //10ms延時(shí),消抖處理
- {delay_ms(10);
- if((P33==0)&(moshi==1)) shi++; //模式1對(duì)應(yīng)調(diào)時(shí)。P33按鍵只做加法運(yùn)算
- if((P33==0)&(moshi==2)) fen++; //模式2對(duì)應(yīng)調(diào)分
- if((P33==0)&(moshi==3)) miao++;//模式3對(duì)應(yīng)調(diào)秒
- }
- if(moshi==4) {moshi=0;flag=0;}//第四次按下模式鍵,模式歸零
- while((P32==0)|(P33==0)); //等待按鍵釋放
- }
- }
- void zhuanhuan(uchar shi,uchar fen,uchar miao)
- {
- tab[0]=shi/10;
- tab[1]=shi%10;
- tab[3]=fen/10;
- tab[4]=fen%10;
- tab[6]=miao/10;
- tab[7]=miao%10;
- }
復(fù)制代碼
所有資料51hei提供下載:
利用數(shù)碼管的動(dòng)態(tài)顯示實(shí)現(xiàn)時(shí)鐘.rar
(85.69 KB, 下載次數(shù): 77)
2020-11-13 16:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|