基于單片機的定時鬧鐘設計仿真圖
51hei圖片20210329101032.png (148.09 KB, 下載次數: 106)
下載附件
2021-3-29 10:10 上傳
程序設計:
- #include "reg52.h"
- #include "intrins.h"
- #include <stdio.h>
- sbit j=P3^0;
- sbit s1=P3^2;
- sbit s2=P3^3;
- sbit s3=P3^4;
- sbit s4=P3^5;
- void Timer0Init();
- void Delay10ms();
- void shumaguan();
- void shijianxianshi();
- void naozhongxianshi();
- void bao();
- void tiao();
- unsigned char code xu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xbf};
- unsigned char zhongjian[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
- int i,shi,fen,miao,n,nmia,nshi=0,nfen=0,nmiao=10,t,a;
- void main()
- {
- Timer0Init();
- while(1)
- {
- shumaguan();
- tiao();
- if(t==0) shijianxianshi();
- if(t==1) naozhongxianshi();
- bao();
- }
- }
- void tiao()
- {
- if(s1==0)
- {
- Delay10ms();
- if(s1==0)
- {
- t++;
- if(t==2) t=0;
- }
- while(!s1);
- }
- if(s2==0)
- {
- Delay10ms();
- if(s2==0)
- {
- a++;
- if(a>2) a=0;
- }
- while(!s2);
- }
- if(s3==0)
- {
- Delay10ms();
- if(s3==0)
- {
- if(a==0)
- {
- nmiao++;
- if(nmiao>59) nmiao=0;
- }
- if(a==1)
- {
- nfen++;
- if(nfen>59) nfen=0;
- }
- if(a==2)
- {
- nshi++;
- if(nshi>23) nshi=0;
- }
- }
- while(!s3);
- }
- if(s4==0)
- {
- Delay10ms();
- if(s4==0)
- {
- if(a==0)
- {
- nmiao--;
- if(nmiao<0) nmiao=59;
- }
- if(a==1)
- {
- nfen--;
- if(nfen<0) nfen=59;
- }
- if(a==2)
- {
- nshi--;
- if(nshi<0) nshi=23;
- }
- }
- while(!s4);
- }
- }
- void bao()
- {
- nmia=nmiao+1;
- if(shi==nfen&fen==nfen&miao==nmiao) j=0;
- if(shi==nfen&fen==nfen&miao==nmia) j=1;
- }
- void naozhongxianshi()
- {
- zhongjian[0]=xu[nshi/10];
- zhongjian[1]=xu[nshi%10];
- zhongjian[2]=0xbf;
- zhongjian[3]=xu[nfen/10];
- zhongjian[4]=xu[nfen%10];
- zhongjian[5]=0xbf;
- zhongjian[6]=xu[nmiao/10];
- zhongjian[7]=xu[nmiao%10];
- }
- void shijianxianshi()
- {
- zhongjian[0]=xu[shi/10];
- zhongjian[1]=xu[shi%10];
- zhongjian[2]=0xbf;
- zhongjian[3]=xu[fen/10];
- zhongjian[4]=xu[fen%10];
- zhongjian[5]=0xbf;
- zhongjian[6]=xu[miao/10];
- zhongjian[7]=xu[miao%10];
- }
- void Timer0Init() //5毫秒@11.0592MHz
- {
- TMOD &= 0xF0; //設置定時器模式
- TL0 = 0x00; //設置定時初值
- TH0 = 0x28; //設置定時初值
- TF0 = 0; //清除TF0標志
- TR0 = 1; //定時器0開始計時
- EA=1;ET0=1;
- }
- void Timer0() interrupt 1
- {
- n++;
- if(n>200)
- {
- miao++;
- n=0;
- }
- if(miao>59)
- {
- fen++;
- miao=0;
- }
- if(fen>59)
- {
- shi++;
- fen=0;
- }
- if(shi>23)
- {
- shi=0;
- }
- }
- void shumaguan()
- {
- P2=0x00;
- P1=0xff;
- P2=1<<i;
- P1=zhongjian[i];
- i++;
- if(i>7)
- i=0;
- }
- void Delay10ms() //@11.0592MHz
- {
- unsigned char i, j;
- i = 108;
- j = 145;
- do
- {
- while (--j);
- } while (--i);
- }
復制代碼
51hei圖片文件夾.png (83 KB, 下載次數: 93)
下載附件
2021-3-29 10:15 上傳
基于單片機的定時鬧鐘設計.zip
(76.42 KB, 下載次數: 102)
2021-3-29 10:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|