找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1692|回復(fù): 0
收起左側(cè)

自己寫了一個(gè)單片機(jī)程序,用oled顯示溫度值,P2.5口輸出pwm。驅(qū)動(dòng)部分令wen_du=tem...

[復(fù)制鏈接]
ID:516467 發(fā)表于 2019-5-6 21:00 | 顯示全部樓層 |閱讀模式
自己寫了一個(gè)單片機(jī)程序,用oled顯示溫度值,P2.5口輸出pwm。驅(qū)動(dòng)部分令wen_du=temper,但是這條指令沒(méi)用,temper的值并沒(méi)有附給wen_du,并且也不能直接使用temper跟設(shè)定值d1、d2、d3、d4比較,兩種方式執(zhí)行的都是第一條if語(yǔ)句。拜托各位幫忙分析下!


#include <reg52.h>
#include "oled.h"
#include "ds18b20.h"

uint temper;                        //存放溫度值
uint wen_du;
uint d4=34;
uint d3=31;
uint d2=28;
uint d1=25;

sbit motor=P2^5;
void wen_kong();
void output(char);
void delay1ms(int);
void main()
{
        OLED_Init();                 //OLED初始化
        OLED_P16x16Ch(0,2,3);//溫
        OLED_P16x16Ch(16,2,4);//度
        OLED_P16x16Ch(80,2,5);//℃
        OLED_P8x16Ch(32,2,13);//冒號(hào)
        while(1)
        {
                temper = getTmpValue();                //獲取溫度
                ds18b20_sendChangeCmd();        //溫度轉(zhuǎn)換
                dis_temper(48, 2, temper);        //顯示溫度
                wen_kong();//溫控模式
        }
}

void wen_kong()
{               
                if(wen_du>=d4)
                {
                        output(96);//
                        OLED_P8x16Ch(48,6,4);
                        OLED_P16x16Ch(56,6,0); //4檔
                }
                else if(wen_du>=d3)
                {
                        output(72);//
                        OLED_P8x16Ch(48,6,3);
                        OLED_P16x16Ch(56,6,0); //3檔
                }
                else if(wen_du>=d2)
                {
                        output(48);//
                        OLED_P8x16Ch(48,6,2);
                        OLED_P16x16Ch(56,6,0); //2檔
                }
                else if(wen_du>=d1)
                {
                        output(24);//
                        OLED_P8x16Ch(48,6,1);
                        OLED_P16x16Ch(56,6,0); //1檔'
                }
                else
                {
                        motor=0;//關(guān)閉風(fēng)扇
                        OLED_P16x16Ch(40,6,9); //風(fēng)扇關(guān)閉
                        OLED_P16x16Ch(56,6,10);
                        OLED_P16x16Ch(72,6,11);
                        OLED_P16x16Ch(88,6,12);
                }

}

//--------------------輸出函數(shù)---------------
void output(char on)
{
        char i;
        for(i=0;i<10;i++)//循環(huán)
        {
                motor=1;//輸出高電平
                delay1ms(on);//延遲on時(shí)間
                motor=0;//輸出低電平
                delay1ms(100-on);//延遲100-on時(shí)間
        }
}
//-------------------延遲函數(shù)-------------
void delay1ms(int a)
{
        int i,j;
        for(i=0;i<a;i++)//外循環(huán)
       
                for(j=0;j<120;j++);//內(nèi)循環(huán)
       
}                                                   //延遲函數(shù)結(jié)束




回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表