|
原理圖。仿真。都有。仿真需要用到8.6版本。實(shí)物親測可用。就是仿真因?yàn)樗⑿滤俣忍煲恢憋@示8888,更改一下延時(shí)就行了?梢詫(shí)現(xiàn)倒計(jì)時(shí)。到了報(bào)警?梢哉(jì)時(shí)。記錄過了多久時(shí)間。用12mhz晶振。時(shí)鐘比較準(zhǔn)確。
IMG_20200322_205917.jpg (4.25 MB, 下載次數(shù): 62)
下載附件
2020-3-22 21:03 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (21.72 KB, 下載次數(shù): 73)
下載附件
2020-3-23 23:20 上傳
單片機(jī)源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit s1=P1^0;
- sbit s2=P1^1;
- sbit s3=P1^2;
- sbit s4=P1^3;
- sbit key1=P3^4;
- sbit key2=P3^3;
- sbit key3=P3^2;
- sbit buzz=P1^4;
- uint time=6,time10ms;
- unsigned char table[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
- uchar flag;
-
- /*----------------------------
- 軟件延時(shí)
- ----------------------------*/
- void Delay(int n) //延時(shí)函數(shù)
- {
- int x;
- while (n--)
- {
- x = 50;
- while (x--);
- }
- }
- void InitTimer0(void)// 10ms
- {
- TMOD = 0x01;
- TH0 = 0x0D8;
- TL0 = 0x0F0;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void Timer0Interrupt(void) interrupt 1
- {
- TH0 = 0x0D8;
- TL0 = 0x0F0;
- time10ms++;
- if(time10ms>=100)
- { if(flag==2&&time>0) //開始倒計(jì)時(shí)
- { time--;
- if(time<=0)
- time=0;
- }
- if(flag==4&&flag<=999) //開始正計(jì)時(shí)
- time++;
-
- time10ms=0;
-
- }
-
- }
- void display(int hh)// int型函數(shù)只能取整數(shù),不能取小數(shù)。
- {
- s1=0;//因?yàn)槭枪碴枖?shù)碼管,就是正極連在一起。所以高電平就可以點(diǎn)亮他。 但是用的PNP三極管。低電平導(dǎo)通。所以是低電平。
- P2=table[hh/100]; // 假如是821,821/100=8.21,取整數(shù)部分就為8
- Delay(5);
- s1=1;
- P2=0xff;
-
-
-
- s2=0;
- P2=table[hh%100/10]; //%號是取余數(shù)的意思 821除以100的余數(shù)等于21,21除以10的整數(shù)部分為2
- Delay(5);
- s2=1;
- P2=0xff;
- s3=0;
- P2=table[hh%100%10]; //
- Delay(5);
- s3=1;
- P2=0xff;
-
- if(flag==0||flag==2) //表示倒計(jì)時(shí)開始
- { s4=0;
- P2=table[14];
- Delay(5);
- s4=1;
- P2=0xff; }
- else
- {
-
- if(flag==1) //這里設(shè)置倒計(jì)時(shí)時(shí)間
- {s4=0;
- P2=table[10];
- Delay(5);
- s4=1;
- P2=0xff; }
- if(flag==3) //
- {
- s4=0; //在進(jìn)行溫度上限設(shè)置的時(shí)候。最后一位就顯示B,表示在正計(jì)時(shí)
- P2=table[12];
- Delay(5);
- s4=1;
- P2=0xff;
-
-
-
- }
-
-
- }
- }
- void keycan()
- {
- if(key1==0&&flag==1)
- { Delay(100);
- if(key1==0&&flag==1)
- { time++;}
- }
-
- if(key2==0)
- { Delay(100);
- if(key2==0)
- flag++;
- if(flag==3)
- {time=0;buzz=1; }
-
-
- if(flag>4)
- {flag=0;
- time=6;
- }
- }
- if(key3==0&&flag==1)
- { Delay(100);
- if(key3==0&&flag==1)
- time--;
- }
-
-
- }
- main()
- {
- InitTimer0();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
秒表.rar
(1.15 MB, 下載次數(shù): 15)
2020-3-22 21:03 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|