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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有沒有大佬幫忙看看這個單片機程序我寫的是用tcs230然后用數碼管顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:1121149 發表于 2024-5-17 13:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我現在為了測試我上面的tcs傳感器的程序簡便使用數碼管檢驗我的顏色傳感器是否可以識別,我結果無論是什么顏色都顯示1,但是我的數碼管直接不亮,有大佬可以幫我看一下是單片機程序的問題還是我傳感器的問題?

#include <reg52.h>
#include<math.h>       //Keil library  
#include<stdio.h>      //Keil library        
#include<INTRINS.H>
#define uchar unsigned char

sbit S2 = P0^0;
sbit S3 = P0^1;
sbit OUT = P0^2;
sbit S0 = P0^3;
sbit S1 = P0^4;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
int white_balance_red,white_balance_green,white_balance_blue;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
                        0xf8,0x80,0x90};

void delay(unsigned int t) {
    unsigned int i, j;
    for (i = 0; i < t; i++)
        for (j = 0; j < 125; j++);
}


unsigned int read_pulse() {
          return 100;
}


void perform_white_balance() {

    S2 = 0;
    S3 = 0;
    delay(100);
    white_balance_red = read_pulse();
    S2 = 1;
    S3 = 1;
    delay(100);
    white_balance_green = read_pulse();
    S2 = 0;
    S3 = 1;
    delay(100);
    white_balance_blue = read_pulse();
}
unsigned char recognize_color() {
    unsigned int red_pulse, green_pulse, blue_pulse;
    red_pulse = read_pulse();
    green_pulse = read_pulse();
    blue_pulse = read_pulse();
    red_pulse -= white_balance_red;
    green_pulse -= white_balance_green;
    blue_pulse -= white_balance_blue;
    if (red_pulse > 200 && green_pulse > 200 && blue_pulse > 200) {
        return 'W';
    } else if (red_pulse > green_pulse && red_pulse > blue_pulse) {
        return 'R';
    } else if (green_pulse > red_pulse && green_pulse > blue_pulse) {
        return 'G';
    } else if (blue_pulse > red_pulse && blue_pulse > green_pulse) {
        return 'B';
    } else if (red_pulse > 150 && green_pulse > 100 && blue_pulse < 100) {
        return 'Y';
    } else if (red_pulse < 50 && green_pulse < 50 && blue_pulse < 50) {
        return 'K';
    } else {
        return 'U';
    }
}



void main() {
    unsigned char color;
    perform_white_balance();
    while (1) {   
        color = recognize_color_with_white_balance();
        switch (color) {
            case 'W':   
                                                                  P0=table[0];
                                                                  P2_0 = 0;
                                                                  delay(5);
                                                                  P2_0 = 1;
                break;
            case 'R':   P0=table[0];
                        P2_0 = 0;
                        delay(5);
                        P2_0 = 1;
                break;
            case 'G':   P0=table[0];
                                                                                                P2_0 = 0;
                                                                                                delay(5);
                                                                                                P2_0 = 1;
                break;
            case 'B':   P0=table[0];
                                                                                                P2_0 = 0;
                                                                                                delay(5);
                                                                                                P2_0 = 1;
               break;
            case 'Y':   P0=table[0];
                                                                                                P2_0 = 0;
                                                                                                delay(5);
                                                                                                P2_0 = 1;

                                OLED_Clear();
                break;
            case 'K':   P0=table[0];
   P2_0 = 0;
   delay(5);
   P2_0 = 1;

                break;
        }
    }
}



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

使用道具 舉報

沙發
ID:879809 發表于 2024-5-17 14:30 | 只看該作者
white_balance_red這幾個變量名字太長了吧,標準c語言支持31字符長度變量,這么寫沒問題。但是C51他不標準啊!查下最多支持幾個字符?
回復

使用道具 舉報

板凳
ID:384109 發表于 2024-5-17 15:33 | 只看該作者
編譯沒報錯嗎
回復

使用道具 舉報

地板
ID:161164 發表于 2024-5-17 17:57 | 只看該作者
你這代碼只會顯示0,絕不會顯示1
看不到哪里有讀取tcs230的代碼
回復

使用道具 舉報

5#
ID:1121149 發表于 2024-5-17 19:08 | 只看該作者
發表于 2024-5-17 14:30
white_balance_red這幾個變量名字太長了吧,標準c語言支持31字符長度變量,這么寫沒問題。但是C51他不標準 ...

他可以支持255個但是前32個有效,但是我在keil上可以編譯但燒入到單片機上我的顏色傳感器沒反應
回復

使用道具 舉報

6#
ID:1121149 發表于 2024-5-17 19:29 | 只看該作者
發表于 2024-5-17 14:30
white_balance_red這幾個變量名字太長了吧,標準c語言支持31字符長度變量,這么寫沒問題。但是C51他不標準 ...

我現在把變量名改短了但是我的數碼管還是不會顯示
回復

使用道具 舉報

7#
ID:1121149 發表于 2024-5-17 21:14 | 只看該作者
lkc8210 發表于 2024-5-17 17:57
你這代碼只會顯示0,絕不會顯示1
看不到哪里有讀取tcs230的代碼

打錯了是0,我的目的就是為了檢驗我的tcs230能不能用
回復

使用道具 舉報

8#
ID:1121149 發表于 2024-5-17 21:22 | 只看該作者

沒有報錯就是用不了
回復

使用道具 舉報

9#
ID:1121149 發表于 2024-5-17 21:57 | 只看該作者
lkc8210 發表于 2024-5-17 17:57
你這代碼只會顯示0,絕不會顯示1
看不到哪里有讀取tcs230的代碼

怎么提取呀我不太會
回復

使用道具 舉報

10#
ID:384109 發表于 2024-5-17 22:15 | 只看該作者
recognize_color_with_white_balance();這個代碼在哪里
回復

使用道具 舉報

11#
ID:1121149 發表于 2024-5-17 23:30 | 只看該作者
人中狼 發表于 2024-5-17 22:15
recognize_color_with_white_balance();這個代碼在哪里

好像沒有那是用recognize_color就好了嘛
回復

使用道具 舉報

12#
ID:384109 發表于 2024-5-18 19:03 | 只看該作者
forky 發表于 2024-5-17 23:30
好像沒有那是用recognize_color就好了嘛

while (1) {   
        color = recognize_color_with_white_balance();
        switch (color) {
感覺你的問題很隨意,答復的也很隨意
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级精品毛片 | 欧美在线一区二区三区 | 中文字幕国产精品视频 | 午夜视频在线免费观看 | 一区二区中文 | 狠狠婷婷综合久久久久久妖精 | 欧美激情久久久 | 国产综合第一页 | 欧美视频一区二区三区 | 91精品久久久久久久久久入口 | 国产一区二区三区视频免费观看 | 成人午夜电影在线观看 | 婷婷色在线播放 | 日日操操 | 91大神在线看 | 伊人在线视频 | 少妇午夜一级艳片欧美精品 | 亚洲精品视频导航 | 国产一级片免费视频 | 中文字幕 国产 | 美女福利视频 | 中文在线视频观看 | 精品国产一区二区国模嫣然 | 香蕉视频91 | 欧美在线a | 欧美极品在线 | 成人一区在线观看 | 国产美女在线观看 | 亚洲精品丝袜日韩 | 日日骚视频 | 国产毛片久久久久久久久春天 | 欧美天天视频 | 超碰国产在线 | 亚洲大片在线观看 | 国产精品自产拍 | 日本久久网站 | 黄色在线观看国产 | 国产精品国产三级国产aⅴ中文 | 91久久国产综合久久 | 精精国产xxxx视频在线野外 | 成人午夜激情 |