找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2174|回复: 4
打印 上一主题 下一主题
收起左侧

根据报警器功能编写程序

[复制链接]
跳转到指定楼层
楼主
ID:71870 发表于 2015-1-17 18:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;   
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2015-1-18 22:06 | 只看该作者
根据报警器功能编写程序?有电路图吗?
回复

使用道具 举报

板凳
ID:43559 发表于 2015-1-19 05:20 | 只看该作者
有个简单介绍或者加点注释或者有个图,比较好。也感谢分享了。
回复

使用道具 举报

地板
ID:192615 发表于 2017-5-1 18:04 | 只看该作者
有个简单介绍或者加点注释或者有个图
回复

使用道具 举报

5#
ID:185661 发表于 2017-5-1 21:08 | 只看该作者
单纯的程序,没有电路图吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表