一個51單片機做的看門狗報警系統,新人,我就試試發帖
數碼管倒數30秒,時間到報警
按下獨立按鍵復位
P3.5接霍爾3144E 輸出腳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar n3,n4;
- unsigned long int pinglv;
- void Delay(uint z);// 延時函數;
- sbit Show_LED1=P1^6;// 位選1
- sbit Show_LED2=P1^7;// 位選2
- sbit Show_LED3=P2^2;// 位選1
- sbit Show_LED4=P2^3;// 位選2
- sbit Show_LED5=P2^4;// 位選1
- sbit Show_LED6=P2^5;// 位選2
- sbit Show_LED7=P2^6;// 位選1
- sbit Show_LED8=P2^7;// 位選2
- sbit beep=P1^5;
- sbit k1=P1^0;
- uchar sec=30;
- uchar geshu;
- uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
- 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};// 數碼管0-F
- void Delay(uint z)// 延時函數;
- {
- uint a,b;
- for(a=z;a>0;a--)
- for(b=100;b>0;b--);
- }
- void Display(void) // 掃描顯示
- {
- P0=table[sec/10];//十位 //依次掃描4位數碼管
- Show_LED1=0; //P1^6
- Delay(1);
- Show_LED1=1; //P1^6
-
- P0=table[sec%10];//個位 //依次掃描5位數碼管
- Show_LED2=0; //P1^7
- Delay(1);
- Show_LED2=1; //P1^7
-
- /*
- P0=table[sec/10]; //依次掃描4位數碼管
- Show_LED3=0;
- Delay(1);
- Show_LED3=1;
-
- P0=table[sec%10]; //依次掃描5位數碼管
- Show_LED4=0;
- Delay(1);
- Show_LED4=1;
- */
- }
- void time0(void) interrupt 1 using 2
- {
- TH0=(65535-5000)/256;
- TL0=(65535-5000)%256;
- n3++;
- if(n3==200)//時間計數 1秒到
- {
- n3=0;
- if(sec>0)
- {
- sec--;
- }
-
- }
- }
- main()
- {
- uchar k;
- TMOD=0X11;//工作模式設置 T1計數 T0 定時
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
-
- TH1=0;
- TL1=0;
-
- ET0=1;//開定時器0中斷
- TR0=1;
- EA=1;//開總中斷
- while(1)
- {
- Display();// 掃描顯示
- if(P1!=0XFF)
- {
- sec=30;
- }
-
- if(sec==0)
- {
- beep=!beep;
- if(k++>30)
- {
- k=0;P3=~P3;
- }
-
- }
- else
- {
-
- beep=1;
- P3=0XFF;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
看門狗報警系統.rar
(96.26 KB, 下載次數: 26)
2018-4-28 22:03 上傳
點擊文件名下載附件
|