久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1390|回復: 1
打印 上一主題 下一主題
收起左側

單片機+光纖傳感器程序,識別不準確,求分析

[復制鏈接]
跳轉到指定樓層
樓主
ID:803579 發表于 2020-8-11 13:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近想玩一個識別卡片的小玩具,在卡片上排列兩行排列不同的激光點,光纖有信號時輸出高電平。char  ah,al;
int temp;
temp=(ah<<4)|al;
總是識別不準確,不知道有沒有大神指導指導。

單片機源程序如下:識別不準確
void        LIGHT(void)
{
//        short flag_key;  
        unsigned char xms=20;
        if(LIGHT_G1==0)
        {
                while(1)
                {
                        LIGHT_LNF=0;
                        while(LIGHT_G1==0&&LIGHT_G2==1)
                                {
                                        if(LIGHT_L1==1&&LIGHT_L2==1)
                                                {
                                                        delay_ms(xms);
                                                        if(LIGHT_L1==1&&LIGHT_L2==1)
                                                                {
                                                                        while(LIGHT_L1==1);
                                                                        lig1=1;
                                                                        lig2=1;BEEP=1;
                                                                        break;
                                                                }
                                                }                                                        
                                        else if(LIGHT_L1==1&&LIGHT_L2==0)
                                                {
                                                        delay_ms(xms);
                                                        if(LIGHT_L1==1&&LIGHT_L2==0)
                                                                {
                                                                        while(LIGHT_L1==1);
                                                                        lig1++;
                                                                        break;
                                                                }
                                                }
                                        else if(LIGHT_L1==0&&LIGHT_L2==1)
                                                {
                                                        delay_ms(xms);
                                                        if(LIGHT_L1==0&&LIGHT_L2==1)
                                                                {
                                                                        while(LIGHT_L2==1);
                                                                        lig2++;
                                                                        break;
                                                                }               
                                        }                                                
                                        else if(LIGHT_L1==0&&LIGHT_L2==0&&u==0)
                                        {
                                                delay_ms(xms);
                                                if(LIGHT_L1==0&&LIGHT_L2==0&&u==0)
                                                        {
                                                                lig1=0;
                                                                lig2=0;
                                                                u=1;
                                                        }
                                        }
                                }
                                while(LIGHT_G1==0&&LIGHT_G2==0)
                                        {
                                                if(LIGHT_L1==1&&LIGHT_L2==1)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1==1&&LIGHT_L2==1)
                                                                        {
                                                                                        while(LIGHT_L1==1);
                                                                                        lig1++;
                                                                                        lig2++;
                                                                                        break;
                                                                        }
                                                        }
                                                else if(LIGHT_L1==0&&LIGHT_L2==1)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1==0&&LIGHT_L2==1)
                                                                        {
                                                                                        while(LIGHT_L2==1);
                                                                                        lig2++;
                                                                                        break;
                                                                        }
                                                        }
                                                else if(LIGHT_L1==1&&LIGHT_L2==0)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1==1&&LIGHT_L2==0)
                                                                        {
                                                                                        while(LIGHT_L1==1);
                                                                                        lig1++;
                                                                                        break;
                                                                        }
                                                        }
                                                else if(LIGHT_L1==0&&LIGHT_L2==0&&u==1)
                                                        {
                                                                                lig1 <<= 1;
                                                                                lig2 <<= 1;
                                                                                u=2;
                                                        }
                                        }
                                while(LIGHT_G2==0&&LIGHT_G1==1)
                                        {
                                                if(LIGHT_L1==1&&LIGHT_L2==1)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1==1&&LIGHT_L2==1)
                                                                        {
                                                                                while(LIGHT_L1==1);
                                                                                lig1++;
                                                                                lig2++;
                                                                                break;
                                                                        }        
                                                        }
                                                else if(LIGHT_L1==1&&LIGHT_L2==0)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1==1&&LIGHT_L2==0)
                                                                        {
                                                                                while(LIGHT_L1==1);
                                                                                lig1++;
                                                                                break;
                                                                        }
                                                        }
                                                else if(LIGHT_L1==0&&LIGHT_L2==1)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1==0&&LIGHT_L2==1)
                                                                        {
                                                                                while(LIGHT_L2==1);
                                                                                lig2++;
                                                                                break;
                                                                        }
                                                        }
                                                else if(LIGHT_L1==0&&LIGHT_L2==0&&u==2)
                                                        {
                                                                lig1 <<= 1;
                                                                lig2 <<= 1;
                                                                u=0;
                                                        }
                                        }
                        if(LIGHT_G2==1&&LIGHT_G1==1)   
                                {
                                        LIGHT_LNF=1;
                                        lig3=(lig1<<4)|lig2;
                                        LM_Cler();
                                        LM_ShowNum(15,0,lig1,3,16);
                                        LM_ShowNum(15,2,lig2,3,16);
                                        sprintf((char*)LIG1,"%x",lig3);
                                        LM_ShowString(0,2, LIG1);
                                        lig3=lig1=lig2=0;BEEP=0;
                                        break;
                                }
                }
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:803579 發表于 2020-8-12 16:38 | 只看該作者
識別的過程比較快,所以導致上述不準,有什么辦法優化一下程序嘛,例如不要死循環等待光纖經過
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区夜夜夜 | 国产在线一区二区三区 | 狠狠爱视频 | 中文字幕日韩在线 | 日韩在线 | 色综合天天综合网国产成人网 | 国产免费看 | 欧美日韩国产一区二区三区 | 日本成年免费网站 | 久久一区 | 色婷婷婷婷色 | 欧美黄在线观看 | 福利在线看 | 国产一二区免费视频 | 2019天天操 | 亚洲电影成人 | 精品1区2区 | 一级做a爰片性色毛片视频停止 | 国产精品一区在线观看 | 国产精品美女久久久久aⅴ国产馆 | 成人在线免费观看av | 久久99精品久久久久久狂牛 | 色综久久| 国产精品久久久久久模特 | 久久久久国产一区二区三区四区 | 国产98色在线 | 中文字幕中文字幕 | 久久不射电影网 | 国产一区二区 | 欧美亚洲一区二区三区 | 91亚洲国产成人久久精品网站 | av成年人网站 | 在线亚洲免费视频 | 欧美日韩不卡合集视频 | 精品欧美一区二区三区久久久 | 午夜私人影院在线观看 | 最新中文在线视频 | 免费国产一区 | 91亚洲精品国偷拍自产在线观看 | 一区二视频| 国产高清视频在线观看播放 |