娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月26日(星期二)

正在發生

2019年11月26日 | 51單片機溫度控制報警和時間顯示程序+Proteus仿真

發布者:快樂舞步 來源: 51hei關鍵字:51單片機  溫度控制報警  時間顯示 手機看文章 掃描二維碼
隨時隨地手機看文章

本系統由AT89C51單片機、DS18B20溫度檢測部分、DS1302日期時間記錄部分、數碼管顯示部分、按鍵輸入部分和蜂鳴器報警部分組成。該系統通過按鍵一來調整模式,共五個模式。模式一是DS18B20采集環境溫度并保存在存儲器中通過單片機將溫度顯示在數碼管上,當溫度低于下限或高于上限時蜂鳴器報警;模式二是利用按鍵二和按鍵三調整報警的最高溫度加減;模式三是利用按鍵二和按鍵三調整報警的最低溫度加減;模式四是DS1302記錄的日期通過單片機顯示在數碼管上;模式五是DS1302記錄的時間通過單片機顯示在數碼管上。

仿真原理圖如下
 

單片機源程序如下:

#include

#include"intrins.h"

#define uchar unsigned char

#define uint  unsigned int 

sbit dula  = P2^0;        //數碼管引腳定義

sbit wela = P2^1; 


sbit DQ = P2^2;         //


sbit key1 = P2^5;

sbit key2 = P2^6;

sbit key3 = P2^7;


sbit buzz = P2^3;

sbit led = P3^7;


sbit RST=P1^0;                         

sbit DSIO=P1^1;                         

sbit SCLK=P1^2;                         //定義ds1302使用的IO口


int bai,shi,ge;

uchar fuhao,flag;

uint ff,Hff=50,Lff=10;


uchar count=0,t100ms=0,t500ms,t1s,t2s;

uchar cishu=0;

uchar jiange=0;

uchar biaozhi1=0;  //由低于下限到高于下限標志

uchar biaozhi2=0;  //有高于上限到低于上限標志

uchar biaozhi3=0;  //2s長鳴標志

uchar biaozhi4=0;


uchar TIMEBCD[7] = {0x00, 0x00, 0x12, 0x1, 0x01, 0x01, 0x18};

//存儲順序是秒分時日月周年,存儲格式是用BCD碼

uchar TIME[7] = {0}; //十進制時間

//DS1302時鐘初始化2018年1月1日星期一12點00分00秒。


uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; 

uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};

//DS1302寫入和讀取時分秒的地址命令(最低位控制讀寫)


unsigned char code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f, 0x6f};

unsigned char code table1[]={

0xbf,0x86,0xdb,0xcf,

0xe6,0xed,0xfd,0x87,

0xff, 0xef};

unsigned char code tablefu[]={

0x40, 0x76 , 0x38 , 0x39

};                        //數碼管符號 - H L C 

/*延時函數*/

void delayms(uint xms)

{

        uint i,j; 

        for(i=xms;i>0;i--)

        for(j=114;j>0;j--);

}

/*****溫度延時*****/

void Delaywendu(int num)

{

        while(num--) ;

}

/*****初始化DS18B20*****/

void Init_DS18B20()

{

        DQ = 1;         //DQ復位

        Delaywendu(8);    //稍做延時

        DQ = 0;         //單片機將DQ拉低

        Delaywendu(80);   //精確延時,大于480us

        DQ = 1;         //拉高總線

        Delaywendu(40);

}

/*****讀一個字節*****/

uchar ReadOneChar()

{

        uchar i=0;

        uchar dat = 0;

        for (i=8;i>0;i--)

        {

                DQ = 0;     // 給脈沖信號

                dat>>=1;

                DQ = 1;     // 給脈沖信號

                if(DQ)

                dat|=0x80; 

                Delaywendu(4);

        }

        return(dat);

}

/*****寫一個字節*****/

void WriteOneChar(uchar dat)

{

        uchar i=0;

        for (i=8; i>0; i--)

        {

                DQ = 0;

                DQ = dat&0x01;

                Delaywendu(5);

                DQ = 1;

                dat>>=1;

        }

}

/*****讀取溫度*****/

uint ReadTemperature()

{

  uint a=0,b=0; 

  int temp=0;

  float tt=0;

  Init_DS18B20();

  WriteOneChar(0xCC);  //跳過讀序號列號的操作  1100 1100

  WriteOneChar(0x44);  //啟動溫度轉換     0100 0100

  Init_DS18B20();

  WriteOneChar(0xCC);  //跳過讀序號列號的操作

  WriteOneChar(0xBE);  //讀取溫度寄存器  1011 1110

  a=ReadOneChar();     //讀低8位

  b=ReadOneChar();    //讀高8位

  temp=b;

  temp<<=8;

  temp=temp|a;

  if(temp&0xf800)

  {

        temp=~temp+1;

        fuhao=1;

  }

  else

  fuhao=0;

  tt=temp*0.0625;

  temp=tt*10+0.5;     //放大10倍輸出并四舍五入

  return(temp);

}


/*****讀取溫度*****/

void check_wendu()

{

        uint f;

        f=ReadTemperature();                          //獲取溫度值并減去DS18B20的溫漂誤差

        ff=f;

        bai=f/100;

    shi=f %100/10;

        ge= f%10;                                        

}

/****讀設定值*****/

void check_v_set(int v_set)

{

        int bb;

        bb=v_set*10;   

        bai=bb/100;

    shi=bb %100/10;

        ge= bb %10;                                                               

}

/*****顯示溫度子程序*****/

void display() 

{     


        P0=0xff;

        wela=1;

        P0=0xfb;

        wela=0;

        dula=1;

        P0=table[bai];

        dula=0;

        delayms(5);


        P0=0xff;

        wela=1;

        P0=0xf7;

        wela=0;

        dula=1;

        P0=table1[shi];

        dula=0;

        delayms(5);

        

        P0=0xff;

        wela=1;

        P0=0xef;

        wela=0;

        dula=1;

        P0=table[ge];

        dula=0;

        delayms(5);

                

        P0=0xff;

        wela=1;

        P0=0xdf;

        wela=0;

        dula=1;

        P0=tablefu[3];

        dula=0;

        delayms(5);

}

void keyscan()

{

        if(key1==0)

        {

                delayms(5);

                if(key1==0)

                {

                        flag++;

                        if(flag==5)

                                flag=0;

                        while(!key1);

                }

        }

int keyad(int num)

{

        if(flag!=0)

        {

                if(key2==0)

                {

                        delayms(5);

                        if(key2==0)

                        {

                                num++;

                                while(!key2);

                        }

                }

                if(key3==0)

                {

                        delayms(5);

                        if(key3==0)

                        {

                                num--;

                                while(!key3);

                        }

                }        

        }

        return num;

}

/**************************************************************/

/**************************日歷計時部分************************/

void Ds1302Write(uchar addr, uchar dat) //向DS1302發送命令(地址+數據)

{

        uchar n;

        RST = 0;

        _nop_();

        SCLK = 0;//先將SCLK置低電平。

        _nop_();

        RST = 1; //然后將RST(CE)置高電平。

        _nop_();


        for (n=0; n<8; n++)//開始傳送八位地址命令

        {

                DSIO = addr & 0x01;//數據從低位開始傳送

                addr >>= 1;

[1] [2] [3]
關鍵字:51單片機  溫度控制報警  時間顯示 引用地址:51單片機溫度控制報警和時間顯示程序+Proteus仿真

上一篇:ESP8266無線18B20溫度手機接收有源代碼和開源
下一篇:51單片機控制LCD12864顯示漢字

推薦閱讀

11月21日-23日,第四屆中國國際智慧酒店展覽會(SHE)在國家會展中心(上海)如期舉行。本屆展會匯聚了來自全國酒店行業的專家和企業家及服務于智慧酒店的科技企業代表,旨在在中國經濟轉型與消費升級的大背景下,為傳統酒店行業與科技企業之間搭建有效溝通橋梁,以科技力量助力酒店行業高效實現智慧升級。高仙作為致力于推動酒店服務機器人落地垂直實業...
當我們在電腦上玩賽車游戲時,玩家視角通常是在汽車上方或尾部,由此我們便能夠看到汽車的周邊環境。這樣的視角能夠幫助我們實時了解交通情況,從而更好的駕駛汽車。遺憾的是,我們在現實生活中駕駛汽車時并沒有這樣的視角。不過,隨著汽車環視系統(又稱為“鳥瞰視圖”或“環景”)的推出,這種情況如今正在逐步改變。環視是一種高級駕駛輔助系統 (ADAS)...
“英特爾&德晟達第三屆視頻會議行業研討會暨云會議終端參考設計發布會”通過線上線下結合會議的形式圓滿舉辦。此次發布會上,英特爾與合作伙伴深圳市德晟達電子科技有限公司(以下簡稱“德晟達”)、上海游密信息科技有限公司(以下簡稱“游密”)共同發布了能夠滿足多種視訊會議場景需求的云視頻會議終端軟硬件一體解決方案,并簽署了諒解備忘錄。隨著諒解備...
廣告摘要聲明廣告【文/sya】隨著先進制造技術的發展,實現焊接產品制造的自動化與智能化已成為必然趨勢。倍可機器人負責人分析,在現代化生產方式的發展下,傳統的電焊工技術已經逐漸淘汰,培養專業電焊工工人成本高、周期長,且難以達到持續穩定質量,并且新一代年輕人已經鮮有愿意從事電焊工這一行業。在工業自動化領域,焊接機器人高效、穩定、安全、可...

史海拾趣

問答坊 | AI 解惑

IT行業人才前景無可限量

隨著市場經濟的高速發展,中國IT業步入了一個人才稀缺的時代。作為最被看好的熱門專業,其迅猛發展有目共睹,從而導致IT人才的培養速度無法跟上IT行業的發展,每年的人才缺口就達數百萬人。為了在激烈的就業競爭中占領一席之地,減小就業壓力, ...…

查看全部問答∨

wince串口問題。系統忙數據就出錯

wince下串口問題,平時數據傳輸正常,但鼠標反復點擊移動有時就會使串口數據錯誤,或者是界面切換時。我感覺是系統忙了有時會影響串口讀取。波特率的57600,不算很高吧?緩沖區我也設置的很大了。數據沒有丟失,只是出現錯誤。例如我發送端發的全是 ...…

查看全部問答∨

請問EVC的這些錯誤是什么愿意

我在編譯、鏈接EVC程序時出現如下錯誤,不知如何解決,請高手指點,謝謝! (1)error C2011: \'_CPs_FileInfo\' : \'struct\' type redefinition (2)error C2440: \'=\' : cannot convert from \'void (__cdecl *)(struct _CPs_CoDecModule *) ...…

查看全部問答∨

簡談 TI Stellaris M3為啥不"火"?

前些天有朋友和我討論,"感覺TI的M3在網上討論的不多",下面是我的一些看法: 原來luminary平臺比較小,所以當年zlg想把它推廣起來,難度肯定是相當大的,這里面不只是技術問題,還涉及到渠道、產能、服務、信任、品牌等諸多因素,而在這方面l ...…

查看全部問答∨

這個程序哪錯了?

我承認我很菜,但很無奈 void Send(char val) { U1TXBUF=val;//寫數據 while(!(IFG2&UTXIFG1));//等待發送完畢 P1OUT^=0x03; } char Get_Char() { while(!(IFG2&URXIFG1));//等待數據接收 return U1RXBUF; } void Init_Sys ...…

查看全部問答∨

求助

用Basic Timer 定時器讓P2.0口上的LED每秒閃爍一次,其中中斷程序中寫道“P2OUT^=BIT0;  //P2.0取反”,這樣寫的話,執行完中斷后,LED是閃爍一次還是一直亮著呢?(我怎么覺得會一直亮著,因為P2.0一直置高呀,還是說P2.0只是在中斷時間內置 ...…

查看全部問答∨

dsp軟件仿真出現錯誤 請高手幫忙解決一下

Can\'t Run Target CPU: Can\'t write to data memory 0x950, check memory config [-2184] Can\'t Run Target CPU: Can\'t write to data memory 0x951, check memory config [-2184] …

查看全部問答∨

請問STM32F10X_MD和STM32F10X_MD_VL區別

請問STM32F10X_MD_VL和STM32F10X_MD有什么區別啊,網上查了查,有如下說明   cl:互聯型產品,stm32f105/107系列vl:超值型產品,stm32f100系列xl:超高密度產品,stm32f101/103系列ld:低密度產品,FLASH小于64Kmd:中等密度產品,FLASH=64 ...…

查看全部問答∨

請問有哪些性能比較好的集成運放呢?

本帖最后由 paulhyde 于 2014-9-15 04:04 編輯 本人是新手,將要參加比賽,請問各位好友有哪些性能比較好的集成運放啊,我之前用過LM324  …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 汾西县| 台北市| 响水县| 屏东县| 泽普县| 霍林郭勒市| 阜南县| 屏山县| 河池市| 千阳县| 黎平县| 彭泽县| 江源县| 蓝山县| 山东| 阜阳市| 东阿县| 苗栗县| 宁城县| 临颍县| 张北县| 调兵山市| 张掖市| 平乡县| 桐庐县| 长葛市| 奉节县| 潜江市| 巴塘县| 贵州省| 从江县| 兴业县| 枣阳市| 监利县| 修水县| 浦东新区| 梁山县| 鹤山市| 东平县| 江口县| 古田县|