冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 470|回覆: 0
打印 上一主題 下一主題

[討論] STC15F100W 製作小數點溫控器

[複製鏈接]

2609

主題

0

好友

945

積分

高級會員

Rank: 4

UID
373967
帖子
7402
主題
2609
精華
0
積分
945
楓幣
1002
威望
925
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
405 小時
註冊時間
2023-1-12
最後登入
2024-4-29

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-3-29 05:29:43 |只看該作者 |倒序瀏覽
STC15F100W 製作小數點溫控器有   所需材料  連接腳位  程式碼

材料:
STC15F100W微控制器
溫度傳感器(例如DS18B20)
繼電器模塊
LED數碼管
數碼管驅動芯片(例如74HC595)
電阻
電容
電源
麵包板和杜邦線等
連接腳位:

STC15F100W 微控制器有40個引腳,根據您的需求和選擇的元器件,您需要將它們連接在正確的引腳上。以下是一些常用的連接引腳:

溫度傳感器(DS18B20):連接到P3.7引腳
繼電器模塊:連接到P2.0引腳
LED數碼管:根據您的數碼管引腳分配連接到STC15F100W的多個引腳。例如,如果您使用的是共陽極LED數碼管,則可以將數碼管的每個陽極引腳連接到P0.0-P0.7引腳,而將每個陰極引腳連接到74HC595芯片的相應引腳。
74HC595芯片:將其引腳連接到STC15F100W的多個引腳。例如,將74HC595的SDI引腳連接到P1.0引腳,將74HC595的SCK引腳連接到P1.1引腳,將74HC595的RCK引腳連接到P1.2引腳。
請注意,在連接引腳之前,請仔細查閱每個元器件的數據手冊以獲取正確的引腳連接方式。

程式碼:

以下是一個基於STC15F100W微控制器的小數點溫度控制器的示例程序。此程序可以讀取溫度傳感器的值,並在LED數碼管上顯示溫度,並根據溫度控制繼電器模塊的狀態以控制溫度。


#include <reg51.h>

#define TEMP_SENSOR_PIN P3_7
#define RELAY_PIN P2_0

sbit Relay = RELAY_PIN;

unsigned char Disp[10] = {
    0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
};

void Delay(unsigned int time)
{
    unsigned int i,j;
    for(i=0;i<time;i++)
        for(j=0;j<100;j++);
}

void InitTempSensor()
{
    EA = 1;
    ES = 1;
}

void InitTimer()
{
    TMOD = 0x01;
    TH0 = 0x4C;
    TL0 = 0x00;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
}

void SendData(unsigned char dat)
{
    unsigned char i;

    for(i=0;i<8;i++)
{
if(dat & 0x80)
P1 = P1 & 0xFE;
else
P1 = P1 | 0x01;
P1 = P1 | 0x02;
P1 = P1 & 0xFD;
dat <<= 1;
}
}

void Display(unsigned char num)
{
unsigned char i;

for(i=0;i<8;i++)
{
    SendData(Disp[num%10]);
    num /= 10;
}
}

void Timer0Isr() interrupt 1
{
static unsigned int count = 0;

TH0 = 0x4C;
TL0 = 0x00;

if(++count >= 500)
{
    count = 0;

    unsigned char temp;
    temp = ReadTemp();

    Display(temp);

    if(temp > 25)
        Relay = 0;
    else
        Relay = 1;
}
}

void main()
{
InitTempSensor();
InitTimer();
while(1);
}

说明:
此程序中使用了以下函數和變量:

- `InitTempSensor()`:初始化温度传感器。
- `InitTimer()`:初始化定时器0以进行循环扫描和显示温度。
- `SendData()`:将数据发送到74HC595芯片以驱动LED数码管。
- `Display()`:将数值显示在LED数码管上。
- `Timer0Isr()`:定时器0中断服务程序,用于定期读取温度、显示温度和控制继电器模块状态。
- `ReadTemp()`:读取温度传感器的值。

在此程序中,將定時器0設置為1ms計時器,並使用Timer0中斷服務程序來循環掃描和顯示溫度。如果溫度高於25度,則控制繼電器模塊關閉,否則打開。

請注意,此程序中使用的數字顯示方式為共陽極。如果您使用的是共陰極LED數碼管,則需要相應地修改代碼以正確驅動數碼管。

在編寫和調試此程序時,請務必參考STC15F100W微控制器和其他元器件的數據手冊,並進行必要的硬件連接和調試。
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-4-29 16:56

回頂部