找回密码
 立即注册

QQ登录

只需一步,快速开始

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

光电传感器计数程序源代码

[复制链接]
跳转到指定楼层
楼主
ID:168123 发表于 2017-3-4 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include < reg51.h >         // 实现光电门计数  
#include <intrins.h>

sbit LS138A=P2^2;  
sbit LS138B=P2^3;
sbit LS138C=P2^4;

unsigned int LedNumVal = -1 ,LedOut[8];
unsigned char code Disp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x80,0x7c,0x39,0x5e,0x79,0x71,0x00};

void display()
{  
        unsigned char i;
    unsigned int j;
        unsigned int v;
               
        v = LedNumVa;
       
        if (v>=1000) LedOut[4]=Disp_Tab[v%10000/1000];          
        if (v>=100)  LedOut[5]=Disp_Tab[v%1000/100];
        if (v>=10)   LedOut[6]=Disp_Tab[v%100/10];
        if (v>=0)    LedOut[7]=Disp_Tab[v%10];

        for( i=0; i<8; i++)
        {
               
                switch(i)                                          
                {            
                        case 0:LS138A=0; LS138B=0; LS138C=0; break;         
                        case 1:LS138A=1; LS138B=0; LS138C=0; break;                    
                        case 2:LS138A=0; LS138B=1; LS138C=0; break;
                        case 3:LS138A=1; LS138B=1; LS138C=0; break;
                        case 4:LS138A=0; LS138B=0; LS138C=1; break;
                        case 5:LS138A=1; LS138B=0; LS138C=1; break;
                        case 6:LS138A=0; LS138B=1; LS138C=1; break;
                        case 7:LS138A=1; LS138B=1; LS138C=1; break;
                }
                P0 = LedOut[i];                  //发送段码
                j=10;                                                 //扫描间隔时间设定
                while(j--);       
                P0 = 0x00;  //消隐
        }

}


void main(void)
{  
        P0=0xff;
        P1=0xff;
        P2=0xff;   
       
        // IT0=0;       //低电平触发
        IT0=1;       //下降沿触发
        EA=1;
        EX0=1;

        while(1)
        {  
             
           display();
          
        }
}
/********************************************************
* INT0中断函数                                          *
********************************************************/
void  counter(void) interrupt 0
{
        //   unsigned char  x;
        EX0=0;
        LedNumVal++;     //中断计数  
        EX0=1;
}
/********************************************************/




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

使用道具 举报

沙发
ID:926023 发表于 2021-6-8 14:16 | 只看该作者
v = LedNumVa;应该为v = LedNumVal;
不然运行有一处错误
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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