找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机的光电传感器程序

[复制链接]
跳转到指定楼层
楼主
ID:359595 发表于 2018-6-26 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于51单片机的光电传感器程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管段码
sbit SPK=P3^7;
sbit key1=P1^0;
sbit key2=P1^1;
uchar n,a,b;
void delay(uchar z)        //延时函数
{
   uchar x,y;
   for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void scan()//按键模拟红外光电开关
{
if(key1==0) //计数
  {
   delay(10);
   if(key1==0)
   {
    while(!key1);
    n++;
    if(n==100)
    n=0;
   }
  }
if(key2==0)//清零
{
  delay(10);
  if(key2==0)
  {
   while(!key2);
   n=0;
  }
}
}
void display()//显示函数
{
a=n%10;
b=n/10;
P2=0xfe;  //数码管位选
P0=table[b];
delay(10);
P2=0xfd;
P0=table[a];
delay(10);      
}
void alarm(uchar t)//蜂鸣器报警函数        
{
uchar i,j;
for(i=0;i<200;i++)
{
  SPK=~SPK;
  for(j=0;j<t;j++);   
}
}
void main()//主函数
{
  while(1)
{
  scan();
  display();
  if((a==8)&&(b==0))//模拟产品报警个数(例如程序中的8)
  {
   alarm(30);
   alarm(50);
  }
}
}


评分

参与人数 1黑币 +5 收起 理由
啧啧啧啧啧啧啧 + 5 绝世好帖!

查看全部评分

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

使用道具 举报

沙发
ID:503018 发表于 2019-6-19 22:02 | 只看该作者
nice    非常感谢
回复

使用道具 举报

板凳
ID:820134 发表于 2020-11-2 22:06 | 只看该作者
楼主有仿真图吗
回复

使用道具 举报

地板
ID:1075596 发表于 2023-5-7 18:00 来自手机 | 只看该作者
星空丶懒惰的猫 发表于 2020-11-2 22:06
楼主有仿真图吗

楼主有仿真图吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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