|
學(xué)習(xí)單片機(jī)有一段時(shí)間了,除了做幾個(gè)時(shí)鐘當(dāng)個(gè)擺設(shè)好像也沒什么作品了。家里有些電器充電時(shí)間不能太長(zhǎng),如現(xiàn)在的手機(jī)有閃充功能的一般100分鐘就能充滿電。這樣在晚上睡覺時(shí)讓手機(jī)滿血復(fù)活好像就有了困難(以前用的手機(jī)晚上總要充一晚上)。隨想做個(gè)定時(shí)插座吧,就在做單片機(jī)數(shù)碼管時(shí)鐘的基礎(chǔ)上改進(jìn)。由于初始功能還不太完善,特意外接了串口下載接口! 本以為有現(xiàn)成裝單片機(jī)的電路板能省點(diǎn)焊接功夫,沒想到要改線路造成很多飛線,所以看起來(lái)很亂。還不如用洞洞板好!
運(yùn)行過(guò)程:上電顯示12:00---通過(guò)調(diào)時(shí),調(diào)分按鍵設(shè)定時(shí)間---啟動(dòng)---開始倒計(jì)時(shí),繼電器吸合通電(運(yùn)行中按鍵失效)---時(shí)間到繼電器斷開,數(shù)碼管閃爍
1.jpg (276.27 KB, 下載次數(shù): 122)
下載附件
2017-4-23 15:41 上傳
2.jpg (243.49 KB, 下載次數(shù): 102)
下載附件
2017-4-23 15:41 上傳
3.jpg (253.37 KB, 下載次數(shù): 100)
下載附件
2017-4-23 15:41 上傳
4.jpg (202.81 KB, 下載次數(shù): 108)
下載附件
2017-4-23 15:41 上傳
5.jpg (197.79 KB, 下載次數(shù): 106)
下載附件
2017-4-23 15:41 上傳
6.jpg (172.22 KB, 下載次數(shù): 102)
下載附件
2017-4-23 15:41 上傳
單片機(jī)源程序:
- /********************************************************
- *********************************************************
- *********** 可編程定時(shí)插座 *****************
- *********** 初次完成程序日期:2017、3、28 ******
- 程序:上電-K1,K2按鍵進(jìn)行時(shí)分調(diào)整-K3啟動(dòng)(啟動(dòng)后按鍵將無(wú)效)
- -繼電器閉合通電-開始倒計(jì)時(shí)- 倒計(jì)時(shí)結(jié)束繼電器斷開-完成周期
- ********************************************************/
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit s1=P3^2;
- sbit s2=P3^3;
- sbit s3=P3^4; // 定義位使用端口 1,2,3,4段
- sbit s4=P3^5;
- sbit jd=P2^0; // 繼電器端口
- sbit k1=P1^1; // 調(diào)時(shí)
- sbit k2=P1^2; // 調(diào)分
- sbit k3=P1^3; // 啟動(dòng)
- sbit GGD=P1^0; // 按鍵公共端
- uchar code mum[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // 段碼0~9
- uchar code display1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf} ;
- uchar code display2[]={0xfe,0xbf,0xf7,0xbf,0xfe,0xbf,0xf7,0xbf} ;
- uchar code display3[]={0xcf,0xf9,0xcf,0xf9,0xcf,0xf9} ;
- uchar code display4[]={0xfe,0xdf,0xef,0xf7,0xfb,0xfd} ;
- char sec=59,min=0,hour=12; // 定義全局變量 有符號(hào)字符型
- uint cnt;
- /***************************************************************************
- *************** 函數(shù)名:delay ****************************
- *************** 函數(shù)功能:延時(shí)函數(shù) ****************************
- *************** 輸入: ****************************
- 輸出:
- ***************************************************************************/
- void delay(uchar x) // 延時(shí)函數(shù)
- {
- uchar i,j;
- for(;x>0;x--)
- for(i=20;i>0;i--)
- for(j=2;j>0;j--);
- }
- void delay1(uint x)
- {
- uchar i,j;
- for(;x>0;x--)
- for(i=20;i>0;i--)
- for(j=200;j>0;j--);
- }
- void shuma()
- {
- uchar a,b,n,m,j,k;
- s1=1;
- s2=1;
- s3=1;
- s4=0;
- while(1)
- {
-
- for(a=0;a<6;a++)
- {
- for(n=0;n<6;n++)
- {
- P0=display1[n];
- delay1(15);
- }
- }
- for(m=0;m<8;m++)
- {
- P0=display2[m];
- delay1(100);
- }
- for(j=0;j<6;j++)
- {
- P0=display3[j];
- delay1(30);
- }
- for(b=0;b<6;b++)
- {
- for(k=0;k<6;k++)
- {
- P0=display4[k];
- delay1(15);
- }
- }
-
-
- }
- }
- /***************************************************************************
- *************** 函數(shù)名:timeyx ****************************
- *************** 函數(shù)功能:時(shí)鐘運(yùn)行 ****************************
- *************** 輸入: ****************************
- 輸出:
- ***************************************************************************/
- void timeyx() // 時(shí)鐘運(yùn)行
- {
- GGD=1; // 按鍵公共端置高電平,運(yùn)行中按鍵無(wú)效
- sec--;
- if(sec<0)
- {
- sec=59;
- min--;
- if(min<0)
- {
- min=59;
- hour--;
-
- }
- }
- }
- /***************************************************************************
- *************** 函數(shù)名:stop ****************************
- *************** 函數(shù)功能:繼電器斷開 ****************************
- *************** 輸入: ****************************
- 輸出:
- ***************************************************************************/
- void stop() // 時(shí)間到繼電器斷開
- {
- if(hour==0&&min==0) // 判斷時(shí)分為0時(shí)
- {
- TR0=0; // 定時(shí)器停止
-
- jd=1;
- shuma(); // 繼電器斷開
- }
- }
-
- /***************************************************************************
- *************** 函數(shù)名:display ****************************
- *************** 函數(shù)功能:數(shù)碼管顯示 ****************************
- *************** 輸入: ****************************
- 輸出:
- ***************************************************************************/
- void display(uchar zm,uchar zh) // 顯示函數(shù)
- {
-
-
-
- P0=mum[zm%10];
- s1=0;
- delay(10);
- s1=1 ;
-
- P0=mum[zm/10];
- s2=0;
- delay(10);
- s2=1;
-
- P0=mum[zh%10];
- if(cnt>2000) // 小數(shù)點(diǎn)閃爍
- P0&=0x7f; // 增加小數(shù)點(diǎn)顯示
- s3=0;
- delay(10);
- s3=1;
-
- P0=mum[zh/10];
- s4=0;
- delay(10);
- s4=1 ;
- }
- /***************************************************************************
- *************** 函數(shù)名:timeset ****************************
- *************** 函數(shù)功能:時(shí)間設(shè)置 ****************************
- *************** 輸入: ****************************
- 輸出:
- ***************************************************************************/
- void timeset() // 時(shí)間設(shè)置
- {
- if(k1==0)
- {
- delay(50);
- if(k1==0)
- {
- hour--;
- if(hour<0)
- {
- hour=12;
-
- }
- while(k1==0)
- display(min,hour);
- }
- }
- if(k2==0)
- {
- delay(10);
- if(k2==0)
- {
- min--;
-
- if(min<0)
- {
- min=59;
- hour--;
-
- }
-
- while(k2==0)
- display(min,hour);
-
- }
- }
-
- display(min,hour);
-
-
- }
- /***************************************************************************
- *************** 函數(shù)名:main ****************************
- *************** 函數(shù)功能:主函數(shù) ****************************
- *************** 輸入: ****************************
- 輸出:
- ***************************************************************************/
- void main()
- {
-
- uchar end=1; // 時(shí)間預(yù)設(shè)單次循環(huán)
- TMOD=0x02; // 模式2 8位自動(dòng)重裝定時(shí)器
- TH0=0x06;
- TL0=0x06;
- EA=1;
- ET0=1;
- GGD=0; // 按鍵公共端
- jd=1; // 繼電器關(guān)閉
- TR0=0;
- P3=0xff;
- while(1)
- {
-
- timeset();
- stop();
-
- while(end) //上電未按K3啟動(dòng)前一直在循環(huán) 達(dá)到預(yù)設(shè)目的
- {
-
- timeset();
- if(k3==0)
- {
- delay(20);
- if(k3==0)
- {
- TR0=1;
- jd=0;
- end=0;
- }
- while(k3==0);
- }
-
-
- }
- }
- }
- …………限于本文篇幅 余下代碼請(qǐng)從51黑電子論壇下載附件…………
復(fù)制代碼
下載:
源代碼.rar
(1.9 KB, 下載次數(shù): 101)
2017-4-23 12:12 上傳
點(diǎn)擊文件名下載附件
源代碼 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|