欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3275|回復: 13
收起左側

51單片機怎么讓溫度控制燈亮的個數,求思路

  [復制鏈接]
ID:861942 發表于 2020-12-17 09:57 | 顯示全部樓層 |閱讀模式
led時鐘旁邊有一圈燈,燈里面有光控,如何讓溫度越高,亮燈的個數越多,溫度越低,亮燈的個數越少   求大佬解惑。
回復

使用道具 舉報

ID:844772 發表于 2020-12-17 10:28 | 顯示全部樓層
我剛弄了個led旋轉鐘跟你說的差不多,
回復

使用道具 舉報

ID:844772 發表于 2020-12-17 10:34 | 顯示全部樓層
void GetADCResult(unsigned char ch,unsigned int *value)
{
        ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();                        //Must wait before inquiry
    _nop_();
    _nop_();
    _nop_();
    _nop_();                        //Must wait before inquiry
    _nop_();
    while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC

        *value = 0;
        *value = ADC_RES;
        *value = ((*value)*4 + ADC_LOW2);                //Return ADC result
}

void ADC_convert(void)
{
        GetADCResult(0,&temp[0]);
        temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );
}
temp[0]就是溫度啊,你按比例去驅動燈亮就行啦。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:453198 發表于 2020-12-17 10:45 | 顯示全部樓層
1.寫一個led 燈的驅動函數,入口參數是led亮燈個數
2.獲取溫度值,然后做一個比例換算,換成具體的led亮燈個數
3.調用led驅動函數即可完成。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:223946 發表于 2020-12-17 16:41 | 顯示全部樓層
將溫度傳感器傳回來的溫度值做為一個變量,再用if去控制:
if(temp<30)
{led1=0;
led2=0;
led3=0;}
else if(temp>30&&temp<=35)
{
led1=1;
led2=1;
led3=0;
}
else
{
led1=1;
led2=1;
led3=1;}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:852300 發表于 2020-12-17 17:04 | 顯示全部樓層
首先確定你的溫度范圍,再確定增加一個燈亮要多少溫度,程序也不難了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:836944 發表于 2020-12-18 17:24 | 顯示全部樓層
我在想好像也不用走單片機,溫度影響電壓作用于燈列,電壓越高亮燈越多
回復

使用道具 舉報

ID:715195 發表于 2020-12-20 10:06 | 顯示全部樓層
1.需要一個溫度傳感器,實現把溫度轉換為數值,比如18b20  2.在單片機中實現根據溫度數值去控制多個LED點亮的邏輯和輸出控制(可以是直接輸出(如果單片機接口富余),也可以是串行輸出或者其他控制數據輸出,比如3bit),比如分成若干個閥值區間,每到不同區間,輸出不同的控制邏輯  3. 對于直接控制輸出,后接相應的驅動放大(需要時)就可以去控制LED啦,對于控制數據輸出,后接譯碼器,再接相應驅動放大去控制LED。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:861942 發表于 2020-12-22 18:39 | 顯示全部樓層
glinfei 發表于 2020-12-17 10:34
void GetADCResult(unsigned char ch,unsigned int *value)
{
        ADC_CONTR = ADC_POWER | ADC_SPEEDLL | c ...

比例怎么設置 不太懂 求解!
回復

使用道具 舉報

ID:861942 發表于 2020-12-22 18:40 | 顯示全部樓層
glinfei 發表于 2020-12-17 10:28
我剛弄了個led旋轉鐘跟你說的差不多,

我這個中間是lcd時鐘 旁邊的是led燈
回復

使用道具 舉報

ID:844772 發表于 2020-12-22 22:18 | 顯示全部樓層
怎么玩嘛 發表于 2020-12-22 18:39
比例怎么設置 不太懂 求解!

就是中間是LCD,一圈LED的鐘,你沒有原程序嗎?不要管溫度怎么取得的,看最后temp[0],這就是溫度啊。一共60個燈,一個一度,從-15到45度,去驅動燈亮就行啦。它本身有5種亮燈方式,你增加一種唄。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:861942 發表于 2020-12-26 13:45 | 顯示全部樓層
glinfei 發表于 2020-12-22 22:18
就是中間是LCD,一圈LED的鐘,你沒有原程序嗎?不要管溫度怎么取得的,看最后temp[0],這就是溫度啊。一 ...

謝謝      
回復

使用道具 舉報

ID:65179 發表于 2020-12-27 11:05 | 顯示全部樓層
其實你要的這種思路本論壇上面就有,記得我上次看到有一個例子,夏天用溫度控制電風扇自動從低到高,然后溫度下降從高到底跟你這思路差不多,你去找找應該找得到。
回復

使用道具 舉報

ID:737771 發表于 2021-6-20 12:20 | 顯示全部樓層
glinfei 發表于 2020-12-17 10:34
void GetADCResult(unsigned char ch,unsigned int *value)
{
        ADC_CONTR = ADC_POWER | ADC_SPEEDLL | c ...

temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );這個公式怎么的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表