標(biāo)題: 根據(jù)報警器功能編寫程序 [打印本頁]

作者: wq1260429171    時間: 2015-1-17 18:49
標(biāo)題: 根據(jù)報警器功能編寫程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^0;
sbit see=P2^2;
sbit smog=P2^3;
sbit lcden=P3^5;
sbit lcdrs=P3^4;
sbit lcdwr=P2^4;
uchar code table0[]=" S  I  F E ";
uchar code table1[]=" S  O  S !  ";
uchar code table2[]="  D  A  Y ";
uchar code table3[]="  N I G H T  ";
uchar num;
uchar i,j,mu,flag=1;
void dsp();
void action0();
void action1();
void delay(uint z)
{
       uint x,y;
       for(x=z;x>0;x--)
              for(y=110;y>0;y--);
}
void write_com(uchar com)
{
       lcdrs=0;
       P0=com;
       delay(5);
       lcden=1;
       delay(5);
       lcden=0;
}
void write_data(uchar date)
{
       lcdrs=1;
       P0=date;
       delay(5);
       lcden=1;
       delay(5);
       lcden=0;
}
void init()
{
       lcdwr=0;
       lcden=0;
       write_com(0x38);
       write_com(0x0e);
       write_com(0x06);
       write_com(0x01);
       write_com(0x80+0x10);
}
void dsp()
{
       init();
       if(mu==1)
       {
              for(num=0;num<12;num++)
              {
                     write_data(table1[num]);
                     delay(20);
              }
       }
       else
       {
              for(num=0;num<11;num++)
              {
                     write_data(table0[num]);
                     delay(20);
              }
       }
       if(see==0)
       {
              write_com(0xc0+17);
              delay(50);
              for(num=0;num<10;num++)
              {
                     write_data(table2[num]);
                     delay(40);            
              }
   }
       else
       {
              write_com(0xc0+17);
              delay(50);
              for(num=0;num<13;num++)
              {
                     write_data(table3[num]);
                     delay(40);
              }
       }
       for(num=0;num<16;num++)
       {
              write_com(0x18);
              delay(20);
       }
}
void main()
{
       j=1;
       EA=1;
       EX0=1;
       IT0=1;
       while(1)
       {
              dsp;
              if(smog==1) mu=1;
              if(mu==1) action1();  
       }
}
void action0()
{
       dsp();
       for(i=0;i<2;i++)
       {
              P1=0xfd;
              beep=1;
              delay(50);
              if(flag==0)break;
              P1=0xf7;
              beep=0;
              delay(50);
              if(flag==0)break;
              flag=1;
       }
}
void action1()
{
       dsp();
       for(i=0;i<100;i++)
       {
              P1=0xff;
              beep=1;
              delay(50);
              if(flag==0)break;
              P1=0xf0;
              beep=0;
              delay(50);
              if(flag==0)break;
              mu=0;
              flag=1;
       }
}
void enter0() interrupt 0
{
       flag=0;   
}

作者: admin    時間: 2015-1-18 22:06
根據(jù)報警器功能編寫程序?有電路圖嗎?
作者: mybigapple    時間: 2015-1-19 05:20
有個簡單介紹或者加點(diǎn)注釋或者有個圖,比較好。也感謝分享了。

作者: miu    時間: 2017-5-1 18:04
有個簡單介紹或者加點(diǎn)注釋或者有個圖
作者: jamyg    時間: 2017-5-1 21:08
單純的程序,沒有電路圖嗎




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1