一个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)
|