洪嵐峰 發表於 2023-3-29 05:29:43

STC15F100W 製作小數點溫控器

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 = {
    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;
}
}

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微控制器和其他元器件的數據手冊,並進行必要的硬件連接和調試。
頁: [1]
查看完整版本: STC15F100W 製作小數點溫控器