這是我花了兩個星期做的以單片機為核心的廚房定時器報警電路設計其實功能有 啟動 暫停 加一 減一
第一次發帖,希望大家體諒
timg (4).jpg (35.46 KB, 下載次數: 18)
下載附件
2018-6-11 10:10 上傳
電路原理圖如下:
015341l4we7e3a7el73979.png (14.58 KB, 下載次數: 20)
下載附件
2018-6-11 10:10 上傳
單片機源程序如下:
- /*
- 1、按鍵可以調整當時時間
- 2、按鍵可以調節定時時間
- 3、定時時間到繼電器吸合
- *8位數碼管顯示 時間格式格式 12-08-00 標示12點08分00秒
- S1 用于小時 加1操作
- S2 用于分鐘 加1操作
- S2 用于分鐘減1操作
- */
- #include <reg52.h>
- sbit KEY1=P3^2;
- sbit KEY2=P3^3;
- sbit KEY3=P3^4;
- sbit LED=P1^2;
- code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- //共陰數碼管 0-9
- unsigned char StrTab[8]; //定義緩沖區
- unsigned char minute=30,hour=12,second; //定義并且初始化值 12:30:00
- void delay(unsigned int cnt)//延時函數
- {
- while(--cnt);
- }
- void Displaypro(void)
- {
- StrTab[0]=tab[hour/10]; //顯示正常時間
- StrTab[1]=tab[hour%10];
- StrTab[2]=0x40;
- StrTab[3]=tab[minute/10];
- StrTab[4]=tab[minute%10];
- StrTab[5]=0x40;
- StrTab[6]=tab[second/10];
- StrTab[7]=tab[second%10];
-
- }
- main()//主函數
- {
-
- TMOD |=0x01;//定時器0 10ms in 12M crystal 用于計時
- TH0=0xd8;
- TL0=0xf0;
- ET0=1;
- TR0=1;
- TMOD |=0x10; //定時器1用于動態掃描
- TH1=0xF8;
- TL1=0xf0;
- ET1=1;
- TR1=1;
- EA =1;
-
- Displaypro();
- while(1)//主循環
- {
-
- /////////////////////////////////////////////////////////////////
- if(!KEY1) //按鍵1去抖以及動作
- {
- delay(10000);
- if(!KEY1)
- {
- hour++;if(hour==24)hour=0; //正常時間 小時 加1
- Displaypro();
- }
- }
- ////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////
- if(!KEY2) //按鍵去抖以及動作
- {
- delay(10000);
- if(!KEY2)
- {
- minute++;if(minute==59)minute=0;//分加1
- Displaypro();
- }
- }
- /////////////////////////////////////////////////////////////////
- if(!KEY3) //按鍵去抖以及動作
- {
- delay(10000);
- if(!KEY3)
- {
- minute--;if(minute==0)minute=59; //分減1
- Displaypro();
- }
- }
- }
- }
- ////////////////////////////////////////////////////////////////
- /********************************/
- /* 定時中斷1 */
- /********************************/
- void time1_isr(void) interrupt 3 using 0//定時器1用來動態掃描
- {
- static unsigned char num;
- TH1=0xF8;//重入初值
- TL1=0xf0;
- switch (num){
- case 0:P2=0;P0=StrTab[num];break; //分別調用緩沖區的值進行掃描
- case 1:P2=1;P0=StrTab[num];break;
- case 2:P2=2;P0=StrTab[num];break;
- case 3:P2=3;P0=StrTab[num];break;
- case 4:P2=4;P0=StrTab[num];break;
- case 5:P2=5;P0=StrTab[num];break;
- case 6:P2=6;P0=StrTab[num];break;
- case 7:P2=7;P0=StrTab[num];break;
- default:break;
- }
- num++; //掃描8次,使用8個數碼管
- if(num==8)
- num=0;
- }
- //////////////////////////////////////////////////////////////////
- /********************************/
- /* 定時中斷0 */
- /********************************/
- void tim(void) interrupt 1 using 1
- {
- static unsigned char count;//定義內部靜態變量
- TH0=0xd8;//重新賦值
- TL0=0xf0;
- count++;
- switch (count)
- {
- case 0:
- case 20:
- case 40:
- case 60:
- case 80:Displaypro(); //隔一定時間調用顯示處理
- break;
- case 50:LED=!LED; //半秒 LED閃爍
- break;
- default:break;
- }
- if (count==100)
- {
- count=0;
- second++;//秒加1
- if(second==60)
- {
- second=0;
- minute++; //分加1
- if(minute==60)
- {
- minute=0;
- hour++; //時加1
- if(hour==24)
- hour=0;
- }
-
- }
-
- }
-
- }
復制代碼
所有資料51hei提供下載:
203-普通定時器時鐘.zip
(26.33 KB, 下載次數: 19)
2018-6-11 09:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|