|
基于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};//共陰極數(shù)碼管段碼
sbit SPK=P3^7;
sbit key1=P1^0;
sbit key2=P1^1;
uchar n,a,b;
void delay(uchar z) //延時函數(shù)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void scan()//按鍵模擬紅外光電開關(guān)
{
if(key1==0) //計數(shù)
{
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()//顯示函數(shù)
{
a=n%10;
b=n/10;
P2=0xfe; //數(shù)碼管位選
P0=table[b];
delay(10);
P2=0xfd;
P0=table[a];
delay(10);
}
void alarm(uchar t)//蜂鳴器報警函數(shù)
{
uchar i,j;
for(i=0;i<200;i++)
{
SPK=~SPK;
for(j=0;j<t;j++);
}
}
void main()//主函數(shù)
{
while(1)
{
scan();
display();
if((a==8)&&(b==0))//模擬產(chǎn)品報警個數(shù)(例如程序中的8)
{
alarm(30);
alarm(50);
}
}
}
|
評分
-
查看全部評分
|