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

標題: 自己寫了一個單片機程序,用oled顯示溫度值,P2.5口輸出pwm。驅動部分令wen_du=tem... [打印本頁]

作者: Iamprejudice    時間: 2019-5-6 21:00
標題: 自己寫了一個單片機程序,用oled顯示溫度值,P2.5口輸出pwm。驅動部分令wen_du=tem...
自己寫了一個單片機程序,用oled顯示溫度值,P2.5口輸出pwm。驅動部分令wen_du=temper,但是這條指令沒用,temper的值并沒有附給wen_du,并且也不能直接使用temper跟設定值d1、d2、d3、d4比較,兩種方式執行的都是第一條if語句。拜托各位幫忙分析下!


#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);//冒號
        while(1)
        {
                temper = getTmpValue();                //獲取溫度
                ds18b20_sendChangeCmd();        //溫度轉換
                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;//關閉風扇
                        OLED_P16x16Ch(40,6,9); //風扇關閉
                        OLED_P16x16Ch(56,6,10);
                        OLED_P16x16Ch(72,6,11);
                        OLED_P16x16Ch(88,6,12);
                }

}

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









歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1